Skip to content

Commit 25db88e

Browse files
committed
修复okhttp socketConnect timeout导致的部分问题
1 parent d5497eb commit 25db88e

File tree

5 files changed

+36
-61
lines changed

5 files changed

+36
-61
lines changed

app/src/main/java/me/teble/xposed/autodaily/hook/CoreServiceHook.kt

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -223,45 +223,5 @@ class CoreServiceHook : BaseHook() {
223223
return
224224
}
225225
})
226-
// findMethod(Service::class.java) {
227-
// name == "onStartCommand"
228-
// }.hookAfter {
229-
// if (it.thisObject::class.java != cCoreService || wakeLockInit) {
230-
// return@hookAfter
231-
// }
232-
// val args = it.args
233-
// val service = it.thisObject as Service
234-
// val intent = args[0] as Intent?
235-
// if (intent?.hasExtra(CORE_SERVICE_FLAG) != true) {
236-
// return@hookAfter
237-
// }
238-
// if (intent.hasExtra(CORE_SERVICE_TOAST_FLAG)) {
239-
// LogUtil.d("onStartCommand")
240-
// LogUtil.d(intent.extras.toMap().toString())
241-
// ToastUtil.send(service, "唤醒测试: true")
242-
// } else {
243-
// handler.sendEmptyMessage(START_CRON)
244-
// }
245-
// return@hookAfter
246-
// }
247-
248-
// findMethod(KernelService) {
249-
// name == "onStartCommand"
250-
// }.hookReplace {
251-
// val args = it.args
252-
// val service = it.thisObject as Service
253-
// val intent = args[0] as Intent?
254-
// if (intent?.hasExtra(CORE_SERVICE_FLAG) != true) {
255-
// return@hookReplace XposedBridge.invokeOriginalMethod(it.method, it.thisObject, it.args)
256-
// }
257-
// if (intent.hasExtra(CORE_SERVICE_TOAST_FLAG)) {
258-
// LogUtil.d("onStartCommand")
259-
// LogUtil.d(intent.extras.toMap().toString())
260-
// ToastUtil.send(service, "唤醒测试: true")
261-
// } else {
262-
// handler.sendEmptyMessage(START_CRON)
263-
// }
264-
// return@hookReplace 2
265-
// }
266226
}
267227
}

app/src/main/java/me/teble/xposed/autodaily/task/filter/GroupTaskFilterChain.kt

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.teble.xposed.autodaily.task.filter
22

3+
import me.teble.xposed.autodaily.hook.notification.XANotification
34
import me.teble.xposed.autodaily.task.filter.chain.GroupTaskCheckExecuteFilter
45
import me.teble.xposed.autodaily.task.filter.chain.GroupTaskExecuteBasicFilter
56
import me.teble.xposed.autodaily.task.filter.chain.GroupTaskPreFilter
@@ -9,9 +10,11 @@ import me.teble.xposed.autodaily.task.model.TaskGroup
910
import me.teble.xposed.autodaily.task.request.enum.ReqType
1011
import me.teble.xposed.autodaily.task.util.TaskUtil
1112
import me.teble.xposed.autodaily.task.util.formatDate
13+
import me.teble.xposed.autodaily.ui.errCount
1214
import me.teble.xposed.autodaily.ui.taskExceptionFlag
1315
import me.teble.xposed.autodaily.utils.LogUtil
1416
import me.teble.xposed.autodaily.utils.TimeUtil
17+
import java.net.SocketTimeoutException
1518
import java.util.*
1619

1720
class GroupTaskFilterChain(
@@ -46,30 +49,21 @@ class GroupTaskFilterChain(
4649
LogUtil.d("当前filter -> ${filter.TAG}")
4750
filter.doFilter(relayTaskMap, taskList, env, this)
4851
} else {
49-
val reqType = ReqType.getType(taskGroup.type.split("|")[0])
50-
val currentDate = Date(TimeUtil.localTimeMillis()).formatDate()
52+
val reqType = ReqType.getType(taskGroup.type.split("|").first())
5153
for (task in taskList) {
52-
var errCount = 0
53-
var date = ""
54-
task.taskExceptionFlag.let {
55-
it?.let {
56-
try {
57-
val arr = it.split("|")
58-
date = arr[0]
59-
errCount = arr[1].toInt()
60-
} catch (e: Throwable) {}
61-
}
62-
}
63-
if (errCount >= 3 && date == currentDate) {
64-
// TODO 判定存在问题
54+
var errCount = task.errCount
55+
if (errCount >= 3) {
6556
LogUtil.i("任务${task.id}今日执行错误次数超过3次,跳过执行")
6657
continue
6758
}
6859
try {
6960
// 进行异常计数,超过一定次数,当天不再执行该任务
7061
TaskUtil.execute(reqType, task, relayTaskMap, env.toMutableMap())
62+
} catch (e: SocketTimeoutException) {
63+
LogUtil.e(e, "执行任务${task.id}异常: ")
7164
} catch (e: Throwable) {
7265
LogUtil.e(e, "执行任务${task.id}异常: ")
66+
val currentDate = Date(TimeUtil.localTimeMillis()).formatDate()
7367
task.taskExceptionFlag = "$currentDate|${++errCount}"
7468
}
7569
}

app/src/main/java/me/teble/xposed/autodaily/task/filter/chain/GroupTaskCheckExecuteFilter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import me.teble.xposed.autodaily.task.filter.GroupTaskFilter
55
import me.teble.xposed.autodaily.task.filter.GroupTaskFilterChain
66
import me.teble.xposed.autodaily.task.model.Task
77
import me.teble.xposed.autodaily.task.util.ConfigUtil
8+
import me.teble.xposed.autodaily.ui.errCount
89
import me.teble.xposed.autodaily.utils.LogUtil
910

1011
class GroupTaskCheckExecuteFilter : GroupTaskFilter(
@@ -19,7 +20,7 @@ class GroupTaskCheckExecuteFilter : GroupTaskFilter(
1920
) {
2021
val taskGroup = (chain as GroupTaskFilterChain).taskGroup
2122
taskGroup.tasks.forEach {
22-
if (ConfigUtil.checkExecuteTask(it)) {
23+
if (ConfigUtil.checkExecuteTask(it) && it.errCount < 3) {
2324
LogUtil.d("task -> ${it.id} 将被执行")
2425
taskList.add(it)
2526
}

app/src/main/java/me/teble/xposed/autodaily/task/request/impl/HttpTaskReqUtil.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ import me.teble.xposed.autodaily.task.util.ConfigUtil
1111
import me.teble.xposed.autodaily.task.util.EnvFormatUtil
1212
import me.teble.xposed.autodaily.utils.LogUtil
1313
import me.teble.xposed.autodaily.utils.toJsonString
14+
import okhttp3.*
1415
import okhttp3.MediaType.Companion.toMediaTypeOrNull
15-
import okhttp3.OkHttpClient
16-
import okhttp3.Request
17-
import okhttp3.RequestBody
1816
import okhttp3.RequestBody.Companion.toRequestBody
1917
import okio.Buffer
2018
import java.io.IOException
@@ -27,8 +25,13 @@ import java.util.concurrent.TimeUnit
2725
object HttpTaskReqUtil : ITaskReqUtil {
2826

2927
private val client = OkHttpClient.Builder()
30-
.connectTimeout(10, TimeUnit.SECONDS)
31-
.readTimeout(20, TimeUnit.SECONDS)
28+
.connectTimeout(30, TimeUnit.SECONDS)
29+
.readTimeout(30, TimeUnit.SECONDS)
30+
.writeTimeout(30, TimeUnit.SECONDS)
31+
.connectionPool(ConnectionPool(32, 5, TimeUnit.SECONDS))
32+
.dispatcher(Dispatcher().apply {
33+
maxRequestsPerHost = 10
34+
})
3235
.build()
3336

3437
object METHOD {

app/src/main/java/me/teble/xposed/autodaily/ui/ConfUnit.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ import me.teble.xposed.autodaily.task.util.Const.SHOW_TASK_TOAST
2020
import me.teble.xposed.autodaily.task.util.Const.SIGN_STAY_AWAKE
2121
import me.teble.xposed.autodaily.task.util.Const.TASK_EXCEPTION_COUNT
2222
import me.teble.xposed.autodaily.task.util.Const.USED_THREAD_POOL
23+
import me.teble.xposed.autodaily.task.util.formatDate
24+
import me.teble.xposed.autodaily.utils.TimeUtil
25+
import java.util.*
2326

2427
object ConfUnit {
2528
var needUpdate: Boolean = false
@@ -82,6 +85,20 @@ var Task.taskExceptionFlag: String?
8285
get() = accountConfig.getString("${this.id}#${TASK_EXCEPTION_COUNT}")
8386
set(value) = accountConfig.putString("${this.id}#${TASK_EXCEPTION_COUNT}", value)
8487

88+
val Task.errCount: Int get() {
89+
this.taskExceptionFlag.let {
90+
it?.let {
91+
try {
92+
val arr = it.split("|")
93+
if (arr[0] == Date(TimeUtil.localTimeMillis()).formatDate()) {
94+
return arr[1].toInt()
95+
}
96+
} catch (e: Throwable) {}
97+
}
98+
}
99+
return 0
100+
}
101+
85102
fun Task.getVariable(name: String, default: String): String
86103
= accountConfig.getString("${this.id}#${ENV_VARIABLE}#${name}", default)
87104

0 commit comments

Comments
 (0)