fix: 修复队列已满导致 Task 添加失败后仍判定为加入队列成功的问题.
This commit is contained in:
parent
b8f7340d5f
commit
376113a0b6
@ -29,11 +29,9 @@ import java.util.concurrent.*
|
|||||||
object OneDriveTransferCenter {
|
object OneDriveTransferCenter {
|
||||||
|
|
||||||
val executor =
|
val executor =
|
||||||
OneDriveTransferTaskExecutor(1, DefaultOneDriveTransferCallback, ArrayBlockingQueue(100))
|
OneDriveTransferTaskExecutor(1, DefaultOneDriveTransferCallback, ArrayBlockingQueue(Integer.MAX_VALUE))
|
||||||
|
|
||||||
fun submitUploadTask(task: OneDriveTransferTask) {
|
fun submitUploadTask(task: OneDriveTransferTask): Boolean = executor.submitTransferTask(task)
|
||||||
executor.submitTransferTask(task)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun cancelUploadTask(task: OneDriveTransferTask): Boolean = executor.cancelTransferTask(task)
|
fun cancelUploadTask(task: OneDriveTransferTask): Boolean = executor.cancelTransferTask(task)
|
||||||
|
|
||||||
@ -291,9 +289,12 @@ class OneDriveTransferTaskExecutor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun submitTransferTask(task: OneDriveTransferTask) {
|
fun submitTransferTask(task: OneDriveTransferTask): Boolean {
|
||||||
callback.onTransferTaskCreated(task)
|
if (taskQueue.remainingCapacity() > 0) {
|
||||||
taskQueue.offer(task)
|
callback.onTransferTaskCreated(task)
|
||||||
|
return taskQueue.offer(task)
|
||||||
|
}
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun cancelTransferTask(task: OneDriveTransferTask): Boolean {
|
fun cancelTransferTask(task: OneDriveTransferTask): Boolean {
|
||||||
@ -348,9 +349,13 @@ class OneDriveTransferTaskExecutor(
|
|||||||
}
|
}
|
||||||
logger.warn(e) { "OneDrive 中转任务执行失败: ${e.message}" }
|
logger.warn(e) { "OneDrive 中转任务执行失败: ${e.message}" }
|
||||||
progress.status = OneDriveTransferStatus.FAILURE
|
progress.status = OneDriveTransferStatus.FAILURE
|
||||||
callback.onTransferFailure(task, progress.apply {
|
try {
|
||||||
this.exception = e
|
callback.onTransferFailure(task, progress.apply {
|
||||||
})
|
this.exception = e
|
||||||
|
})
|
||||||
|
} catch (e: Exception) {
|
||||||
|
logger.warn(e) { "OneDrive 中转任务失败回调失败: ${e.message}" }
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
logger.info { "线程 $id 任务执行完毕: ${task.document.fileName}" }
|
logger.info { "线程 $id 任务执行完毕: ${task.document.fileName}" }
|
||||||
threadStatusMap.remove(id)
|
threadStatusMap.remove(id)
|
||||||
|
@ -109,19 +109,21 @@ class OneDriveTransferService(
|
|||||||
fun submitUploadDocumentTask(userId: Long, messageId: Int, document: Document) {
|
fun submitUploadDocumentTask(userId: Long, messageId: Int, document: Document) {
|
||||||
val transferSetting =
|
val transferSetting =
|
||||||
accountManager.getTransferSetting(userId) ?: throw OneDriveNotLoginException()
|
accountManager.getTransferSetting(userId) ?: throw OneDriveNotLoginException()
|
||||||
OneDriveTransferCenter.submitUploadTask(
|
val task = OneDriveTransferTask(
|
||||||
OneDriveTransferTask(
|
userId,
|
||||||
userId,
|
bot,
|
||||||
bot,
|
this,
|
||||||
this,
|
document,
|
||||||
document,
|
transferSetting.driveId,
|
||||||
transferSetting.driveId,
|
transferSetting.storagePath,
|
||||||
transferSetting.storagePath,
|
).apply {
|
||||||
).apply {
|
extra["chatId"] = userId
|
||||||
extra["chatId"] = userId
|
extra["messageId"] = messageId
|
||||||
extra["messageId"] = messageId
|
}
|
||||||
}.also { tasks.add(it) }
|
val submitted = OneDriveTransferCenter.submitUploadTask(task)
|
||||||
)
|
if (submitted) {
|
||||||
|
tasks.add(task)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun cancelTask(userId: Long, replyMessageId: Int): Boolean {
|
fun cancelTask(userId: Long, replyMessageId: Int): Boolean {
|
||||||
|
Loading…
Reference in New Issue
Block a user