@Override public LogClient newClient(PartitionService partitionService) { Collection<LogSession> partitions = partitionService.getPartitionGroup(this) .getPartitions() .stream() .map(partition -> ((LogPartition) partition).getClient().logSessionBuilder().build()) .collect(Collectors.toList()); return new DistributedLogClient(this, partitions, config.getPartitioner()); }
/** * Returns the first partition group that matches the given primitive protocol. * * @param protocol the primitive protocol * @return the first partition group that matches the given primitive protocol */ @SuppressWarnings("unchecked") default PartitionGroup getPartitionGroup(ProxyProtocol protocol) { if (protocol.group() != null) { PartitionGroup group = getPartitionGroup(protocol.group()); if (group != null) { return group; } PartitionGroup systemGroup = getSystemPartitionGroup(); if (systemGroup != null && systemGroup.name().equals(protocol.group())) { return systemGroup; } return null; } for (PartitionGroup partitionGroup : getPartitionGroups()) { if (partitionGroup.protocol().name().equals(protocol.type().name())) { return partitionGroup; } } return null; }
@Override public <S> ProxyClient<S> newProxy(String primitiveName, PrimitiveType primitiveType, Class<S> serviceType, ServiceConfig serviceConfig, PartitionService partitionService) { PartitionGroup partitionGroup = partitionService.getPartitionGroup(this); if (partitionGroup == null) { throw new ConfigurationException("No Raft partition group matching the configured protocol exists"); } Collection<SessionClient> partitions = partitionGroup.getPartitions().stream() .map(partition -> ((PrimaryBackupPartition) partition).getClient() .sessionBuilder(primitiveName, primitiveType, serviceConfig) .withConsistency(config.getConsistency()) .withReplication(config.getReplication()) .withRecovery(config.getRecovery()) .withNumBackups(config.getBackups()) .withMaxRetries(config.getMaxRetries()) .withRetryDelay(config.getRetryDelay()) .build()) .collect(Collectors.toList()); return new DefaultProxyClient<>(primitiveName, primitiveType, this, serviceType, partitions, config.getPartitioner()); }
@Override public <S> ProxyClient<S> newProxy(String primitiveName, PrimitiveType primitiveType, Class<S> serviceType, ServiceConfig serviceConfig, PartitionService partitionService) { PartitionGroup partitionGroup = partitionService.getPartitionGroup(this); if (partitionGroup == null) { throw new ConfigurationException("No Raft partition group matching the configured protocol exists"); } Collection<SessionClient> partitions = partitionGroup.getPartitions().stream() .map(partition -> ((RaftPartition) partition).getClient() .sessionBuilder(primitiveName, primitiveType, serviceConfig) .withMinTimeout(config.getMinTimeout()) .withMaxTimeout(config.getMaxTimeout()) .withReadConsistency(config.getReadConsistency()) .withCommunicationStrategy(config.getCommunicationStrategy()) .withRecoveryStrategy(config.getRecoveryStrategy()) .withMaxRetries(config.getMaxRetries()) .withRetryDelay(config.getRetryDelay()) .build()) .collect(Collectors.toList()); return new DefaultProxyClient<>(primitiveName, primitiveType, this, serviceType, partitions, config.getPartitioner()); } }
partitionGroup = managementService.getPartitionService().getPartitionGroup(protocolType); } else { partitionGroup = managementService.getPartitionService().getPartitionGroup(participantInfo.group());
@Override public LogClient newClient(PartitionService partitionService) { Collection<LogSession> partitions = partitionService.getPartitionGroup(this) .getPartitions() .stream() .map(partition -> ((LogPartition) partition).getClient().logSessionBuilder().build()) .collect(Collectors.toList()); return new DistributedLogClient(this, partitions, config.getPartitioner()); }
partitionGroup = managementService.getPartitionService().getPartitionGroup(protocolType); } else { partitionGroup = managementService.getPartitionService().getPartitionGroup(participantInfo.group());