Fixed NPE on node stop when SSL is used.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/132ec3fa Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/132ec3fa Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/132ec3fa Branch: refs/heads/ignite-zk Commit: 132ec3fa4f3e55f001899f4eef3cdf3786cefa41 Parents: 250ceb7 Author: amashenkov <andrey.mashen...@gmail.com> Authored: Mon Nov 13 10:26:53 2017 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Mon Nov 13 10:26:53 2017 +0300 ---------------------------------------------------------------------- .../ignite/internal/util/nio/GridNioServer.java | 8 ++++-- .../IgniteCommunicationBalanceTest.java | 13 +++++++++ .../IgniteCommunicationSslBalanceTest.java | 28 ++++++++++++++++++++ .../ignite/testsuites/IgniteCacheTestSuite.java | 2 ++ 4 files changed, 49 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/132ec3fa/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java index 0dd7dd6..1d595d2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java @@ -3371,8 +3371,12 @@ public class GridNioServer<T> { GridSelectorNioSessionImpl ses0 = (GridSelectorNioSessionImpl)ses; - if (!ses0.procWrite.get() && ses0.procWrite.compareAndSet(false, true)) - ses0.worker().registerWrite(ses0); + if (!ses0.procWrite.get() && ses0.procWrite.compareAndSet(false, true)) { + GridNioWorker worker = ses0.worker(); + + if (worker != null) + worker.registerWrite(ses0); + } return null; } http://git-wip-us.apache.org/repos/asf/ignite/blob/132ec3fa/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java index 37a307f..666bc1d 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java @@ -72,10 +72,20 @@ public class IgniteCommunicationBalanceTest extends GridCommonAbstractTest { cfg.setClientMode(client); + if (sslEnabled()) + cfg.setSslContextFactory(GridTestUtils.sslFactory()); + return cfg; } /** + * @return {@code True} to enable SSL. + */ + protected boolean sslEnabled() { + return false; + } + + /** * @return Value for {@link TcpCommunicationSpi#setUsePairedConnections(boolean)}. */ protected boolean usePairedConnections() { @@ -100,6 +110,9 @@ public class IgniteCommunicationBalanceTest extends GridCommonAbstractTest { * @throws Exception If failed. */ public void testBalance1() throws Exception { + if (sslEnabled()) + return; + System.setProperty(IgniteSystemProperties.IGNITE_IO_BALANCE_PERIOD, "5000"); try { http://git-wip-us.apache.org/repos/asf/ignite/blob/132ec3fa/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationSslBalanceTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationSslBalanceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationSslBalanceTest.java new file mode 100644 index 0000000..68094e2 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationSslBalanceTest.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.managers.communication; + +/** + * + */ +public class IgniteCommunicationSslBalanceTest extends IgniteCommunicationBalanceTest { + /** {@inheritDoc} */ + @Override protected boolean sslEnabled() { + return true; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/132ec3fa/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java index 047550d..e3ebbc1 100755 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java @@ -38,6 +38,7 @@ import org.apache.ignite.internal.managers.IgniteDiagnosticMessagesTest; import org.apache.ignite.internal.managers.communication.IgniteCommunicationBalanceMultipleConnectionsTest; import org.apache.ignite.internal.managers.communication.IgniteCommunicationBalancePairedConnectionsTest; import org.apache.ignite.internal.managers.communication.IgniteCommunicationBalanceTest; +import org.apache.ignite.internal.managers.communication.IgniteCommunicationSslBalanceTest; import org.apache.ignite.internal.managers.communication.IgniteIoTestMessagesTest; import org.apache.ignite.internal.managers.communication.IgniteVariousConnectionNumberTest; import org.apache.ignite.internal.processors.cache.CacheAffinityCallSelfTest; @@ -309,6 +310,7 @@ public class IgniteCacheTestSuite extends TestSuite { suite.addTestSuite(IgniteCommunicationBalanceTest.class); suite.addTestSuite(IgniteCommunicationBalancePairedConnectionsTest.class); suite.addTestSuite(IgniteCommunicationBalanceMultipleConnectionsTest.class); + suite.addTestSuite(IgniteCommunicationSslBalanceTest.class); suite.addTestSuite(IgniteIoTestMessagesTest.class); suite.addTestSuite(IgniteDiagnosticMessagesTest.class); suite.addTestSuite(IgniteDiagnosticMessagesMultipleConnectionsTest.class);