Search in sources :

Example 26 with ClientProxyMembershipID

use of org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID in project geode by apache.

the class CacheServerBridge method getUniqueClientIds.

private Map<String, ClientConnInfo> getUniqueClientIds() {
    Map<String, ClientConnInfo> uniqueIds = null;
    ServerConnection[] serverConnections = acceptor.getAllServerConnectionList();
    Collection<CacheClientProxy> clientProxies = acceptor.getCacheClientNotifier().getClientProxies();
    if (clientProxies.size() > 0) {
        uniqueIds = new HashMap<String, ClientConnInfo>();
        for (CacheClientProxy p : clientProxies) {
            ClientConnInfo clientConInfo = new ClientConnInfo(p.getProxyID(), p.getSocketHost(), p.getRemotePort(), p.isPrimary());
            uniqueIds.put(p.getProxyID().getDSMembership(), clientConInfo);
        }
    }
    if (serverConnections != null && serverConnections.length > 0) {
        if (uniqueIds == null) {
            uniqueIds = new HashMap<String, ClientConnInfo>();
        }
        for (ServerConnection conn : serverConnections) {
            ClientProxyMembershipID clientId = conn.getProxyID();
            if (clientId != null) {
                // Check added to fix bug 51987
                if (uniqueIds.get(clientId.getDSMembership()) == null) {
                    ClientConnInfo clientConInfo = new ClientConnInfo(conn.getProxyID(), conn.getSocketHost(), conn.getSocketPort(), false);
                    uniqueIds.put(clientId.getDSMembership(), clientConInfo);
                }
            }
        }
    }
    if (uniqueIds == null) {
        return Collections.emptyMap();
    }
    return uniqueIds;
}
Also used : CacheClientProxy(org.apache.geode.internal.cache.tier.sockets.CacheClientProxy) ClientProxyMembershipID(org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID) ServerConnection(org.apache.geode.internal.cache.tier.sockets.ServerConnection)

Example 27 with ClientProxyMembershipID

use of org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID in project geode by apache.

the class CacheServerBridge method getClientQueueDetail.

private ClientQueueDetail getClientQueueDetail(CacheClientProxy p) {
    ClientQueueDetail queueDetail = new ClientQueueDetail();
    ClientProxyMembershipID proxyID = p.getProxyID();
    if (!p.isConnected() && !proxyID.isDurable()) {
        return null;
    }
    queueDetail.setClientId(CliUtil.getClientIdFromCacheClientProxy(p));
    HARegionQueue queue = p.getHARegionQueue();
    if (queue == null) {
        return queueDetail;
    }
    queueDetail.setQueueSize(p.getQueueSizeStat());
    queueDetail.setEventsConflated(queue.getStatistics().getEventsConflated());
    queueDetail.setEventsEnqued(queue.getStatistics().getEventsEnqued());
    queueDetail.setEventsExpired(queue.getStatistics().getEventsExpired());
    queueDetail.setEventsRemoved(queue.getStatistics().getEventsRemoved());
    queueDetail.setEventsRemovedByQrm(queue.getStatistics().getEventsRemovedByQrm());
    queueDetail.setEventsTaken(queue.getStatistics().getEventsTaken());
    queueDetail.setMarkerEventsConflated(queue.getStatistics().getMarkerEventsConflated());
    queueDetail.setNumVoidRemovals(queue.getStatistics().getNumVoidRemovals());
    return queueDetail;
}
Also used : ClientProxyMembershipID(org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID) ClientQueueDetail(org.apache.geode.management.ClientQueueDetail) HARegionQueue(org.apache.geode.internal.cache.ha.HARegionQueue)

Example 28 with ClientProxyMembershipID

use of org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID in project geode by apache.

the class CqQueryUsingPoolDUnitTest method testFilterRegistrationDuringGII.

/**
   * Test Filter registration during GII. Bug fix 39014
   */
@Test
public void testFilterRegistrationDuringGII() throws Exception {
    final Host host = Host.getHost(0);
    VM server1 = host.getVM(0);
    VM server2 = host.getVM(1);
    VM client1 = host.getVM(2);
    VM client2 = host.getVM(3);
    Wait.pause(3 * 1000);
    createServer(server1);
    final int port1 = server1.invoke(() -> CqQueryUsingPoolDUnitTest.getCacheServerPort());
    final String host0 = NetworkUtils.getServerHostName(server1.getHost());
    final int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(1);
    String poolName = "testFilterRegistrationDuringGII";
    createPool(client1, poolName, new String[] { host0, host0 }, new int[] { port1, ports[0] }, "-1");
    createPool(client2, poolName, new String[] { host0, host0 }, new int[] { port1, ports[0] }, "-1");
    createClient(client1, new int[] { port1, ports[0] }, host0, "-1", poolName);
    createClient(client2, new int[] { port1, ports[0] }, host0, "-1", poolName);
    // Create CQs.
    final int numCQs = 2;
    for (int i = 0; i < numCQs; i++) {
        // Create CQs.
        createCQ(client1, poolName, "client1_" + i, cqs[i]);
        executeCQ(client1, "client1_" + i, false, null);
        createCQ(client2, poolName, "client2_" + i, cqs[i]);
        executeCQ(client2, "client2_" + i, false, null);
    }
    final int interestSize = 20;
    registerInterestListCQ(client1, regions[0], interestSize, false);
    registerInterestListCQ(client2, regions[0], 0, true);
    Wait.pause(1 * 1000);
    // CREATE.
    createValues(server1, regions[0], 100);
    createValues(server1, regions[1], 10);
    waitForCreated(client1, "client1_0", KEY + 10);
    // Create server2.
    server2.invoke(new CacheSerializableRunnable("Create Cache Server") {

        @Override
        public void run2() throws CacheException {
            LogWriterUtils.getLogWriter().info("### Create Cache Server. ###");
            AttributesFactory factory = new AttributesFactory();
            factory.setScope(Scope.DISTRIBUTED_ACK);
            factory.setMirrorType(MirrorType.KEYS_VALUES);
            for (int i = 0; i < regions.length; i++) {
                createRegion(regions[i], factory.createRegionAttributes());
            }
            InitialImageOperation.slowImageProcessing = 100;
            try {
                try {
                    startBridgeServer(ports[0], true);
                } catch (Exception ex) {
                    Assert.fail("While starting CacheServer", ex);
                }
                while (true) {
                    if (InitialImageOperation.slowImageSleeps > 0) {
                        // Create events while GII for HARegion is in progress.
                        LocalRegion region1 = (LocalRegion) getRootRegion().getSubregion(regions[0]);
                        for (int i = 90; i <= 120; i++) {
                            region1.put(KEY + i, new Portfolio(i, i));
                        }
                        break;
                    }
                    Wait.pause(20);
                }
            } finally {
                InitialImageOperation.slowImageProcessing = 0;
            }
        }
    });
    Wait.pause(3 * 1000);
    // Check if CQs are registered as part of GII.
    server2.invoke(new CacheSerializableRunnable("Create values") {

        @Override
        public void run2() throws CacheException {
            DefaultQueryService qs = (DefaultQueryService) getCache().getQueryService();
            Collection<CacheClientProxy> proxies = CacheClientNotifier.getInstance().getClientProxies();
            Iterator iter = proxies.iterator();
            try {
                for (CacheClientProxy p : proxies) {
                    ClientProxyMembershipID clientId = p.getProxyID();
                    List cqs = qs.getCqService().getAllClientCqs(clientId);
                    getCache().getLogger().fine("Number of CQs found for client :" + clientId + " are :" + cqs.size());
                    if (cqs.size() != numCQs) {
                        fail("Number of CQs registerted by the client is :" + cqs.size() + " less than expected : " + numCQs);
                    }
                    CqQuery cq = (CqQuery) cqs.get(0);
                    LocalRegion region1 = (LocalRegion) getRootRegion().getSubregion(regions[0]);
                    if (cq.getName().startsWith("client1_")) {
                        if (region1.getFilterProfile().getKeysOfInterest(clientId) == null || region1.getFilterProfile().getKeysOfInterest(clientId).size() != interestSize) {
                            fail("Interest registartion during Secondary HARegion creation has failed.");
                        }
                    } else {
                        if (!region1.getFilterProfile().isInterestedInAllKeys(clientId)) {
                            fail("Interest registartion during Secondary HARegion creation has failed.");
                        }
                    }
                }
            } catch (Exception ex) {
                fail("Exception while validating filter count. ", ex);
            }
        }
    });
    // Close.
    closeClient(client1);
    closeClient(client2);
    closeServer(server1);
    closeServer(server2);
}
Also used : CacheClientProxy(org.apache.geode.internal.cache.tier.sockets.CacheClientProxy) CacheException(org.apache.geode.cache.CacheException) Portfolio(org.apache.geode.cache.query.data.Portfolio) Host(org.apache.geode.test.dunit.Host) LocalRegion(org.apache.geode.internal.cache.LocalRegion) CqExistsException(org.apache.geode.cache.query.CqExistsException) IgnoredException(org.apache.geode.test.dunit.IgnoredException) RMIException(org.apache.geode.test.dunit.RMIException) IOException(java.io.IOException) CacheException(org.apache.geode.cache.CacheException) ClientProxyMembershipID(org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID) AttributesFactory(org.apache.geode.cache.AttributesFactory) CqAttributesFactory(org.apache.geode.cache.query.CqAttributesFactory) PartitionAttributesFactory(org.apache.geode.cache.PartitionAttributesFactory) CacheSerializableRunnable(org.apache.geode.cache30.CacheSerializableRunnable) VM(org.apache.geode.test.dunit.VM) Iterator(java.util.Iterator) Collection(java.util.Collection) List(java.util.List) ArrayList(java.util.ArrayList) CqQuery(org.apache.geode.cache.query.CqQuery) DefaultQueryService(org.apache.geode.cache.query.internal.DefaultQueryService) DistributedTest(org.apache.geode.test.junit.categories.DistributedTest) Test(org.junit.Test)

Example 29 with ClientProxyMembershipID

use of org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID in project geode by apache.

the class CqServiceUnitTest method constructCqServerNameShouldReturnSameResultRegardlessOfOptimizedCacheNames.

@Test
public void constructCqServerNameShouldReturnSameResultRegardlessOfOptimizedCacheNames() {
    CqServiceImpl cqService = new CqServiceImpl(Fakes.cache());
    ClientProxyMembershipID proxyMembershipID = new ClientProxyMembershipID(Fakes.cache().getDistributedSystem().getDistributedMember());
    String name1 = cqService.constructServerCqName("myCq", proxyMembershipID);
    String name2 = cqService.constructServerCqName("myCq", proxyMembershipID);
    assertEquals(name1, name2);
}
Also used : ClientProxyMembershipID(org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID) UnitTest(org.apache.geode.test.junit.categories.UnitTest) Test(org.junit.Test)

Example 30 with ClientProxyMembershipID

use of org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID in project geode by apache.

the class CqServiceImpl method getAllClientCqs.

@Override
public List<ServerCQ> getAllClientCqs(ClientProxyMembershipID clientProxyId) {
    Collection<? extends InternalCqQuery> cqs = getAllCqs();
    ArrayList<ServerCQ> clientCqs = new ArrayList<>();
    for (InternalCqQuery cq : cqs) {
        ServerCQImpl cQuery = (ServerCQImpl) cq;
        ClientProxyMembershipID id = cQuery.getClientProxyId();
        if (id != null && id.equals(clientProxyId)) {
            clientCqs.add(cQuery);
        }
    }
    return clientCqs;
}
Also used : ClientProxyMembershipID(org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID) ArrayList(java.util.ArrayList)

Aggregations

ClientProxyMembershipID (org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID)30 Test (org.junit.Test)10 IOException (java.io.IOException)7 CacheClientProxy (org.apache.geode.internal.cache.tier.sockets.CacheClientProxy)7 CqException (org.apache.geode.cache.query.CqException)6 ArrayList (java.util.ArrayList)5 Set (java.util.Set)5 CqService (org.apache.geode.cache.query.internal.cq.CqService)5 EventID (org.apache.geode.internal.cache.EventID)5 CachedRegionHelper (org.apache.geode.internal.cache.tier.CachedRegionHelper)5 AcceptorImpl (org.apache.geode.internal.cache.tier.sockets.AcceptorImpl)5 CacheServerStats (org.apache.geode.internal.cache.tier.sockets.CacheServerStats)5 AuthorizeRequest (org.apache.geode.internal.security.AuthorizeRequest)5 UnitTest (org.apache.geode.test.junit.categories.UnitTest)5 Iterator (java.util.Iterator)4 DefaultQueryService (org.apache.geode.cache.query.internal.DefaultQueryService)4 VersionTag (org.apache.geode.internal.cache.versions.VersionTag)4 HashSet (java.util.HashSet)3 CacheException (org.apache.geode.cache.CacheException)3 ServerCQ (org.apache.geode.cache.query.internal.cq.ServerCQ)3