[ https://issues.apache.org/jira/browse/IGNITE-13348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17951377#comment-17951377 ]
Ignite TC Bot commented on IGNITE-13348: ---------------------------------------- {panel:title=Branch: [pull/12058/head] Base: [master] : No blockers found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel} {panel:title=Branch: [pull/12058/head] Base: [master] : New Tests (2)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1} {color:#00008b}Basic 1{color} [[tests 2|https://ci2.ignite.apache.org/viewLog.html?buildId=8428979]] * {color:#013220}IgniteBasicTestSuite: ClusterStateChangeOnNodeJoinTest.testJoiningServerNodeToClusterInTransitionState - PASSED{color} * {color:#013220}IgniteBasicTestSuite: ClusterStateChangeOnNodeJoinTest.testJoiningClientNodeToClusterInTransitionState - PASSED{color} {panel} [TeamCity *--> Run :: All* Results|https://ci2.ignite.apache.org/viewLog.html?buildId=8429094&buildTypeId=IgniteTests24Java8_RunAll] > Creating IgniteAtomicLong from the client node may hang. > -------------------------------------------------------- > > Key: IGNITE-13348 > URL: https://issues.apache.org/jira/browse/IGNITE-13348 > Project: Ignite > Issue Type: Bug > Reporter: Vyacheslav Koptilin > Assignee: Vyacheslav Koptilin > Priority: Major > Attachments: DataStructuresInitializationTest.java > > Time Spent: 40m > Remaining Estimate: 0h > > It looks like, the data structure processor is not properly initialized when > a client node connects to a cluster that changes its own state (state > transition from the inactive state to active). > reproducer attached. > *UPDATE* > It seems to me, the root cause of the issue is that {{joinFut}} is always > completed with {{{}false{}}}. > {code:java|title=GridClusterStateProcessor.java} > /** {@inheritDoc} */ > @Override public void onStateFinishMessage(ChangeGlobalStateFinishMessage > msg) { > DiscoveryDataClusterState discoClusterState = globalState; > if (msg.requestId().equals(discoClusterState.transitionRequestId())) { > ... > TransitionOnJoinWaitFuture joinFut = this.joinFut; > if (joinFut != null) > joinFut.onDone(false); > ... > } > else > U.warn(log, "Received state finish message with unexpected ID: " > + msg); > } > {code} > On the other hand, this value is used to determine the state of the cluster > when a new node joins the cluster > {code:java|title=IgniteKernal.java} > public void start( > DiscoveryLocalJoinData joinData = ctx.discovery().localJoin(); > IgniteInternalFuture<Boolean> transitionWaitFut = > joinData.transitionWaitFuture(); > ... > boolean active; > if (transitionWaitFut != null) { > if (log.isInfoEnabled()) { > log.info("Join cluster while cluster state transition is > in progress, waiting when transition finish."); > } > active = transitionWaitFut.get(); > } > else > active = joinData.active(); > startTimer.finishGlobalStage("Await transition"); > ... > } > {code} > User list discussion: > [http://apache-ignite-users.70518.x6.nabble.com/Ignite-client-node-hangs-while-IgniteAtomicLong-is-created-tp33537.html] -- This message was sent by Atlassian Jira (v8.20.10#820010)