有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Apache Ignite客户端重启场景

情况就是这样

  1. 我启动了服务器节点
  2. 我启动了ClientIgnite节点,它将通过一个Java应用程序来完成,比如“X”
  3. 在visor中,当给定命令“node”时,我可以看到两个节点,一个是客户端,一个是服务器
  4. 我通过执行“kill-9PID”杀死了Java应用程序“X”
  5. 现在,当我进入visor终端并输入“节点”时,列表中仍然显示“客户端”和“服务器”节点。当被问及客户端节点的详细信息时,它显然会抛出错误
  6. 现在,当我重新启动Java应用程序“X”时,在该Java代码中,将再次尝试连接到Ignite服务器。但它没有连接,而是多次打印这些日志

"org.apache.ignite.logger.java.JavaLogger" "info" "INFO" "" "284" "Accepted incoming communication connection [locAddr=/0:0:0:0:0:0:0:1:47101, rmtAddr=/0:0:0:0:0:0:0:1:62856]" "" "" "" "" "" "" "1587013526124" "" "" "" "" "" "" "ROOT" "{""service"":"""",""logger_name"":""org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi""}"

  1. 它没有连接并继续在Java中执行代码。所以申请没有恢复。我发现这是Ignite服务器日志

[10:37:57]根据配置的处理程序[hnd=StopNodeOrHaltFailureHandler[tryStop=false,timeout=0,super=AbstractFailureHandler[ignoredFailureTypes=UnmodifiableSet[SYSTEM_WORKER_BLOCKED,SYSTEM_CRITICAL_OPERATION_timeout]]抑制可能的故障,failureCtx=FailureContext[type=SYSTEM_CRITICAL_OPERATION_TIMEOUT,err=class o.a.i.IgniteException:检查点读锁获取已超时。]] [10:37:57739][severy][exchange worker-#46][GridCacheDatabaseSharedManager]检查点读取锁获取已超时。 班级组织。阿帕奇。燃烧内部的处理器。隐藏物坚持不懈GridCacheDatabaseSharedManager$CheckpointReadLockTimeoutException:检查点读锁获取已超时。 在org。阿帕奇。燃烧内部的处理器。隐藏物坚持不懈GridCacheDatabaseSharedManager。failCheckpointReadLock(GridCacheDatabaseSharedManager.java:1708) 在org。阿帕奇。燃烧内部的处理器。隐藏物坚持不懈GridCacheDatabaseSharedManager。checkpointReadLock(GridCacheDatabaseSharedManager.java:1640) 在org。阿帕奇。燃烧内部的处理器。隐藏物分发。dht。预装。GridDhtPartitionsXchangeFuture。InitTopologys(GridDhtPartitionsExchangeFuture.java:1078) 在org。阿帕奇。燃烧内部的处理器。隐藏物分发。dht。预装。GridDhtPartitionsXchangeFuture。init(GridDhtPartitionsExchangeFuture.java:944) 在org。阿帕奇。燃烧内部的处理器。隐藏物GridCachePartitionExchangeManager$ExchangeWorker。body0(GridCachePartitionExchangeManager.java:3258) 在org。阿帕奇。燃烧内部的处理器。隐藏物GridCachePartitionExchangeManager$ExchangeWorker。正文(GridCachePartitionExchangeManager.java:3104) 在org。阿帕奇。燃烧内部的util。工人网格工人。run(GridWorker.java:119) 在爪哇。朗。丝线。run(Thread.java:748) [10:39:21547][Severy][tcp disco msg worker-[693d29cd 0:0:0:0:0:0:0:0:1%lo0:47501 crd]#2][G]已检测到被阻止的系统关键线程。这可能会导致集群范围内的未定义行为[workerName=db checkpoint thread,threadName=db checkpoint thread-#59,blockedFor=209s]

我在这里假设,由于我强制关闭启动Ignite客户端节点的Java应用程序,可能会出现一些拓扑不平衡

是否有人建议,如果我强制关闭客户端应用程序,是否有正确的方法重新启动客户端应用程序,以便它继续与Ignite server重新建立连接并继续工作


共 (1) 个答案

  1. # 1 楼答案

    当您有很长的超时时间时,这种情况是可能的

    在所有超时(例如网络超时、套接字写入超时、故障检测超时)结束之前,您不应该期望节点被删除,并加入一个新节点。除非你这么做