MCPcopy Create free account
hub / github.com/e2wugui/zeze / cancel

Method cancel

ZezeJava/ZezeJava/src/main/java/Zeze/Component/Timer.java:739–779  ·  view source on GitHub ↗

取消一个具体的Timer实例。 需要在事务内调用。

(@Nullable String timerId)

Source from the content-addressed store, hash-verified

737 * 需要在事务内调用。
738 */
739 public void cancel(@Nullable String timerId) {
740 if (timerId == null)
741 return; // 忽略没有初始化的timerId。
742 /*
743 try {
744 // XXX 统一通过这里取消定时器,可能会浪费一次内存表查询。
745 // 还是让账户相关Timer自己取消吧。
746 if (null != timerRole && timerRole.cancel(timerId))
747 return; // done
748
749 if (null != timerAccount && timerAccount.cancel(timerId))
750 return; // done
751
752 } catch (Exception ex) {
753 logger.error("ignore cancel error.", ex);
754 return; // done;
755 }
756 */
757 var index = _tIndexs.get(timerId);
758 if (index != null) {
759 int serverId = index.getServerId();
760 if (serverId != zeze.getConfig().getServerId())
761 Transaction.whileCommit(() -> tryRedirectCancel(serverId, timerId));
762 TimerHandle handle = null;
763 var nodeId = index.getNodeId();
764 var node = _tNodes.get(nodeId);
765 if (node != null) {
766 var timer = node.getTimers().get(timerId);
767 if (timer != null) {
768 var handleName = timer.getHandleName();
769 try {
770 handle = findTimerHandle(handleName);
771 } catch (Exception e) {
772 logger.error("cancel: findTimerHandle({}) exception:", handleName, e);
773 }
774 }
775 }
776 cancel(serverId, timerId, nodeId, node, handle);
777 } else // 定时器数据已经不存在了,尝试移除future
778 Transaction.whileCommit(() -> cancelFuture(timerId));
779 }
780
781 @NotNull tAccountTimers tAccountTimers() {
782 return _tAccountTimers;

Callers 3

scheduleNamedMethod · 0.95
fireSimpleMethod · 0.95
fireCronMethod · 0.95

Calls 15

whileCommitMethod · 0.95
tryRedirectCancelMethod · 0.95
findTimerHandleMethod · 0.95
cancelFutureMethod · 0.95
callMethod · 0.95
getTimersMethod · 0.80
delayRemoveMethod · 0.80
onTimerCancelMethod · 0.80
getMethod · 0.65
getServerIdMethod · 0.65
getNodeIdMethod · 0.65
getHandleNameMethod · 0.65

Tested by

no test coverage detected