You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/03/24 14:12:03 UTC

[13/50] [abbrv] ignite git commit: Merge branch ignite-1.7.9 into ignite-2.0

Merge branch ignite-1.7.9 into ignite-2.0


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/99bb87ae
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/99bb87ae
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/99bb87ae

Branch: refs/heads/ignite-3477-master
Commit: 99bb87ae97153c3d2965ef8573b9efaf8b3e639a
Parents: 67bd32c bcb1398
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Mon Mar 20 18:22:03 2017 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Mon Mar 20 18:22:35 2017 +0300

----------------------------------------------------------------------
 .../internal/managers/GridManagerAdapter.java   |   4 +
 .../cache/DynamicCacheChangeBatch.java          |  14 ++
 .../processors/query/GridQueryProcessor.java    |   3 +
 .../service/GridServiceProcessor.java           |  50 +++--
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |   5 +
 .../org/apache/ignite/spi/IgniteSpiContext.java |   6 +
 .../ignite/spi/discovery/tcp/ClientImpl.java    |  32 +++-
 .../ignite/spi/discovery/tcp/ServerImpl.java    |  19 ++
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |   5 +
 .../tcp/internal/TcpDiscoveryNode.java          |   6 +-
 .../GridServiceContinuousQueryRedeployTest.java | 167 +++++++++++++++++
 ...veryNodeAttributesUpdateOnReconnectTest.java | 110 +++++++++++
 .../TcpDiscoverySslSecuredUnsecuredTest.java    | 185 +++++++++++++++++++
 .../tcp/TestReconnectPluginProvider.java        | 111 +++++++++++
 .../discovery/tcp/TestReconnectProcessor.java   |  93 ++++++++++
 .../testframework/GridSpiTestContext.java       |   5 +
 .../testsuites/IgniteKernalSelfTestSuite.java   |   2 +
 .../IgniteSpiDiscoverySelfTestSuite.java        |   5 +
 .../org.apache.ignite.plugin.PluginProvider     |   1 +
 .../processors/query/h2/IgniteH2Indexing.java   |   1 +
 parent/pom.xml                                  |   1 +
 21 files changed, 795 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index a58ca53,0a0d166..47341da
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@@ -29,8 -42,11 +29,11 @@@ import java.util.concurrent.ConcurrentM
  import javax.cache.Cache;
  import javax.cache.CacheException;
  import org.apache.ignite.IgniteCheckedException;
 +import org.apache.ignite.IgniteDataStreamer;
  import org.apache.ignite.IgniteException;
+ import org.apache.ignite.binary.BinaryField;
+ import org.apache.ignite.binary.BinaryObject;
+ import org.apache.ignite.binary.BinaryType;
  import org.apache.ignite.binary.Binarylizable;
  import org.apache.ignite.cache.CacheTypeMetadata;
  import org.apache.ignite.cache.QueryEntity;

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index a680a88,4eeafed..84fb8e3
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@@ -65,12 -65,12 +65,14 @@@ import org.apache.ignite.internal.proce
  import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
  import org.apache.ignite.internal.processors.cache.CacheEntryImpl;
  import org.apache.ignite.internal.processors.cache.CacheIteratorConverter;
+ import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
  import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
 +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
  import org.apache.ignite.internal.processors.cache.query.CacheQuery;
  import org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager;
 -import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 +import org.apache.ignite.internal.processors.marshaller.MappingAcceptedMessage;
 +import org.apache.ignite.internal.processors.marshaller.MappingProposedMessage;
+ import org.apache.ignite.internal.processors.continuous.AbstractContinuousMessage;
  import org.apache.ignite.internal.processors.task.GridInternal;
  import org.apache.ignite.internal.processors.timeout.GridTimeoutObject;
  import org.apache.ignite.internal.util.GridEmptyIterator;
@@@ -1586,21 -1576,19 +1576,24 @@@ public class GridServiceProcessor exten
                          if (!((CacheAffinityChangeMessage)msg).exchangeNeeded())
                              return;
                      }
- 
-                     if (msg instanceof MappingProposedMessage || msg instanceof MappingAcceptedMessage)
+                     else if (msg instanceof DynamicCacheChangeBatch) {
+                         if (!((DynamicCacheChangeBatch)msg).exchangeNeeded())
+                             return;
+                     }
+                     else
                          return;
 +
 +                    topVer = ((DiscoveryCustomEvent)evt).affinityTopologyVersion();
                  }
                  else
 -                    topVer = new AffinityTopologyVersion(((DiscoveryEvent)evt).topologyVersion(), 0);
 +                    topVer = new AffinityTopologyVersion((evt).topologyVersion(), 0);
  
 -                depExe.submit(new BusyRunnable() {
 +                depExe.execute(new BusyRunnable() {
                      @Override public void run0() {
 -                        ClusterNode oldest = ctx.discovery().oldestAliveCacheServerNode(topVer);
 +                        // In case the cache instance isn't tracked by DiscoveryManager anymore.
 +                        discoCache.updateAlives(ctx.discovery());
 +
 +                        ClusterNode oldest = discoCache.oldestAliveServerNodeWithCache();
  
                          if (oldest != null && oldest.isLocal()) {
                              final Collection<GridServiceDeployment> retries = new ConcurrentLinkedQueue<>();

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
index 5c13449,95e2cda..04b076d
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
@@@ -629,11 -632,9 +633,11 @@@ class ClientImpl extends TcpDiscoveryIm
                      TcpDiscoveryNode node = locNode;
  
                      if (locNode.order() > 0)
-                         node = locNode.clientReconnectNode();
+                         node = locNode.clientReconnectNode(spi.spiCtx.nodeAttributes());
  
 -                    msg = new TcpDiscoveryJoinRequestMessage(node, spi.collectExchangeData(getLocalNodeId()));
 +                    msg = new TcpDiscoveryJoinRequestMessage(
 +                            node,
 +                            spi.collectExchangeData(new DiscoveryDataPacket(getLocalNodeId())));
                  }
                  else
                      msg = new TcpDiscoveryClientReconnectMessage(getLocalNodeId(), rmtNodeId, lastMsgId);

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceContinuousQueryRedeployTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceContinuousQueryRedeployTest.java
index 0000000,0000000..2437b47
new file mode 100644
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceContinuousQueryRedeployTest.java
@@@ -1,0 -1,0 +1,167 @@@
++/*
++ * 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.processors.service;
++
++import java.util.ArrayList;
++import java.util.Collections;
++import java.util.List;
++import java.util.UUID;
++import java.util.concurrent.Callable;
++import javax.cache.event.CacheEntryEvent;
++import javax.cache.event.CacheEntryListenerException;
++import javax.cache.event.CacheEntryUpdatedListener;
++import org.apache.ignite.Ignite;
++import org.apache.ignite.IgniteCache;
++import org.apache.ignite.cache.query.ContinuousQuery;
++import org.apache.ignite.cache.query.QueryCursor;
++import org.apache.ignite.cluster.ClusterNode;
++import org.apache.ignite.internal.IgniteInternalFuture;
++import org.apache.ignite.internal.util.typedef.internal.U;
++import org.apache.ignite.lang.IgnitePredicate;
++import org.apache.ignite.resources.IgniteInstanceResource;
++import org.apache.ignite.services.Service;
++import org.apache.ignite.services.ServiceConfiguration;
++import org.apache.ignite.services.ServiceContext;
++import org.apache.ignite.testframework.GridTestUtils;
++import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
++
++/**
++ * Tests whether concurrent service cancel and registering ContinuousQuery doesn't causes
++ * service redeployment.
++ */
++public class GridServiceContinuousQueryRedeployTest extends GridCommonAbstractTest {
++    /** */
++    private static final String CACHE_NAME = "TEST_CACHE";
++
++    /** */
++    private static final String TEST_KEY = "TEST_KEY";
++
++    /** */
++    private static final String SERVICE_NAME = "service1";
++
++    /** {@inheritDoc} */
++    @Override protected void afterTest() throws Exception {
++        stopAllGrids();
++    }
++
++    /**
++     * @throws Exception If failed.
++     */
++    public void testServiceRedeploymentAfterCancel() throws Exception {
++        final Ignite ignite = startGrid(0);
++
++        final IgniteCache<Object, Object> managementCache = ignite.getOrCreateCache(CACHE_NAME);
++
++        final ContinuousQuery<Object, Object> qry = new ContinuousQuery<>();
++        final List<Object> evts = Collections.synchronizedList(new ArrayList<>());
++
++        qry.setLocalListener(new CacheEntryUpdatedListener<Object, Object>() {
++            @Override public void onUpdated(
++                Iterable<CacheEntryEvent<?, ?>> iterable) throws CacheEntryListenerException {
++                for (CacheEntryEvent<?, ?> event : iterable)
++                    evts.add(event);
++            }
++        });
++
++        int iterations = 100;
++
++        while (iterations-- > 0) {
++            QueryCursor quorumCursor = managementCache.query(qry);
++
++            IgniteInternalFuture<?> fut1 = GridTestUtils.runAsync(new Callable<Object>() {
++                @Override public Object call() throws Exception {
++                    System.out.println("Deploy " + SERVICE_NAME);
++                    deployService(ignite);
++
++                    return null;
++                }
++            });
++
++            IgniteInternalFuture<?> fut2 = GridTestUtils.runAsync(new Callable<Object>() {
++                @Override public Object call() throws Exception {
++                    System.out.println("Undeploy " + SERVICE_NAME);
++                    ignite.services().cancel(SERVICE_NAME);
++
++                    return null;
++                }
++            });
++
++            fut1.get();
++            fut2.get();
++
++            U.sleep(100);
++
++            assert evts.size() <= 1 : evts.size();
++
++            ignite.services().cancel("service1");
++
++            evts.clear();
++
++            quorumCursor.close();
++        }
++
++    }
++
++    /**
++     * @param ignite Ignite.
++     */
++    private void deployService(final Ignite ignite) {
++        ServiceConfiguration svcCfg = new ServiceConfiguration();
++
++        svcCfg.setService(new ManagementService());
++        svcCfg.setName(SERVICE_NAME);
++        svcCfg.setTotalCount(1);
++        svcCfg.setMaxPerNodeCount(1);
++        svcCfg.setNodeFilter(new IgnitePredicate<ClusterNode>() {
++            @Override public boolean apply(ClusterNode node) {
++                return !node.isClient();
++            }
++        });
++
++        ignite.services().deploy(svcCfg);
++    }
++
++    /**
++     *
++     */
++    public static class ManagementService implements Service {
++        /** */
++        private final String name = UUID.randomUUID().toString();
++
++        /** */
++        @IgniteInstanceResource
++        private Ignite ignite;
++
++        /** {@inheritDoc} */
++        @Override public void cancel(ServiceContext ctx) {
++            System.out.println(name + " shutdown.");
++        }
++
++        /** {@inheritDoc} */
++        @Override public synchronized void init(ServiceContext ctx) throws Exception {
++            System.out.println(name + " initializing.");
++
++            ignite.cache(CACHE_NAME).put(TEST_KEY, name + " init");
++        }
++
++        /** {@inheritDoc} */
++        @Override public void execute(ServiceContext ctx) throws Exception {
++            // No-op
++        }
++    }
++}

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/test/java/org/apache/ignite/testframework/GridSpiTestContext.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
index 41035ec,5977702..a0d37e9
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
@@@ -49,6 -50,7 +49,7 @@@ import org.apache.ignite.internal.proce
  import org.apache.ignite.internal.processors.cluster.GridUpdateNotifierSelfTest;
  import org.apache.ignite.internal.processors.port.GridPortProcessorSelfTest;
  import org.apache.ignite.internal.processors.service.GridServiceClientNodeTest;
 -import org.apache.ignite.internal.processors.service.GridServiceContinuousQueryRedeploy;
++import org.apache.ignite.internal.processors.service.GridServiceContinuousQueryRedeployTest;
  import org.apache.ignite.internal.processors.service.GridServicePackagePrivateSelfTest;
  import org.apache.ignite.internal.processors.service.GridServiceProcessorMultiNodeConfigSelfTest;
  import org.apache.ignite.internal.processors.service.GridServiceProcessorMultiNodeSelfTest;
@@@ -141,7 -144,7 +142,8 @@@ public class IgniteKernalSelfTestSuite 
          suite.addTestSuite(GridServiceProxyClientReconnectSelfTest.class);
          suite.addTestSuite(IgniteServiceReassignmentTest.class);
          suite.addTestSuite(IgniteServiceProxyTimeoutInitializedTest.class);
 -        suite.addTestSuite(GridServiceContinuousQueryRedeploy.class);
 +        suite.addTestSuite(IgniteServiceDynamicCachesSelfTest.class);
++        suite.addTestSuite(GridServiceContinuousQueryRedeployTest.class);
  
          suite.addTestSuite(IgniteServiceDeploymentClassLoadingDefaultMarshallerTest.class);
          suite.addTestSuite(IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.class);

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 6e75fd2,62b47b8..b0d3850
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@@ -84,9 -80,7 +84,10 @@@ import org.apache.ignite.internal.proce
  import org.apache.ignite.internal.processors.cache.QueryCursorImpl;
  import org.apache.ignite.internal.processors.cache.query.GridCacheQueryMarshallable;
  import org.apache.ignite.internal.processors.cache.query.GridCacheTwoStepQuery;
 +import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
 +import org.apache.ignite.internal.processors.query.GridQueryCacheObjectsIterator;
 +import org.apache.ignite.internal.processors.query.GridRunningQueryInfo;
+ import org.apache.ignite.internal.processors.query.GridRunningQueryInfo;
  import org.apache.ignite.internal.processors.query.GridQueryCancel;
  import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
  import org.apache.ignite.internal.processors.query.GridQueryFieldsResult;

http://git-wip-us.apache.org/repos/asf/ignite/blob/99bb87ae/parent/pom.xml
----------------------------------------------------------------------