public MapReduceService(NodeEngine nodeEngine) { this.config = nodeEngine.getConfig(); this.nodeEngine = (NodeEngineImpl) nodeEngine; this.clusterService = nodeEngine.getClusterService(); this.partitionService = nodeEngine.getPartitionService(); this.jobTrackers = new ConcurrentHashMap<String, NodeJobTracker>(); this.jobSupervisors = new ConcurrentHashMap<JobSupervisorKey, JobSupervisor>(); }
@Override public void shutdown() { NodeEngine nodeEngine = getNodeEngine(); Collection<Member> members = nodeEngine.getClusterService().getMembers(); OperationService operationService = nodeEngine.getOperationService(); Collection<Future> calls = new LinkedList<Future>(); for (Member member : members) { Future f = submitShutdownOperation(operationService, member); calls.add(f); } waitWithDeadline(calls, 3, TimeUnit.SECONDS, shutdownExceptionHandler); }
private void sendReplicationOperation(boolean isRemove, String name, Data key, Data value, long ttl, VersionResponsePair response) { Collection<Member> members = nodeEngine.getClusterService().getMembers(MemberSelectors.DATA_MEMBER_SELECTOR); for (Member member : members) { invoke(isRemove, member.getAddress(), name, key, value, ttl, response); } }
protected boolean isClusterVersionUnknown() { Version clusterVersion = getNodeEngine().getClusterService().getClusterVersion(); return clusterVersion.isUnknown(); } }
@Override public <T> Map<Member, Future<T>> submitToAllMembers(Callable<T> task) { NodeEngine nodeEngine = getNodeEngine(); return submitToMembers(task, nodeEngine.getClusterService().getMembers()); }
@Override protected boolean requiresExplicitServiceName() { // RU_COMPAT_3_10 // We are not checking target member version here since this requires // the operation to be target-aware and that breaks the multi-member // broadcast serialization optimization in OperationBackupHandler. It's // cheaper just to transfer an additional service name string in // mixed-version clusters than serializing the operation for each member // individually. Version clusterVersion = getNodeEngine().getClusterService().getClusterVersion(); return clusterVersion.isUnknownOrLessThan(Versions.V3_11); }
public LocalMapStatsProvider(MapServiceContext mapServiceContext) { this.mapServiceContext = mapServiceContext; this.nodeEngine = mapServiceContext.getNodeEngine(); this.logger = nodeEngine.getLogger(getClass()); this.mapNearCacheManager = mapServiceContext.getMapNearCacheManager(); this.clusterService = nodeEngine.getClusterService(); this.partitionService = nodeEngine.getPartitionService(); this.localAddress = clusterService.getThisAddress(); }
public PartitionScanRunner(MapServiceContext mapServiceContext) { this.mapServiceContext = mapServiceContext; this.nodeEngine = mapServiceContext.getNodeEngine(); this.serializationService = (InternalSerializationService) nodeEngine.getSerializationService(); this.partitionService = nodeEngine.getPartitionService(); this.logger = nodeEngine.getLogger(getClass()); this.operationService = nodeEngine.getOperationService(); this.clusterService = nodeEngine.getClusterService(); }
private boolean canPublishLoadEvent() { // RU_COMPAT_3_10 NodeEngine nodeEngine = mapServiceContext.getNodeEngine(); ClusterService clusterService = nodeEngine.getClusterService(); boolean version311OrLater = clusterService.getClusterVersion().isGreaterOrEqual(Versions.V3_11); boolean addEventPublishingEnabled = mapContainer.isAddEventPublishingEnabled(); return version311OrLater && !addEventPublishingEnabled; }
public NearCachedMapProxyImpl(String name, MapService mapService, NodeEngine nodeEngine, MapConfig mapConfig) { super(name, mapService, nodeEngine, mapConfig); clusterService = nodeEngine.getClusterService(); NearCacheConfig nearCacheConfig = mapConfig.getNearCacheConfig(); cacheLocalEntries = nearCacheConfig.isCacheLocalEntries(); invalidateOnChange = nearCacheConfig.isInvalidateOnChange(); serializeKeys = nearCacheConfig.isSerializeKeys(); }
public ICompletableFuture<Object> broadcastConfigAsync(IdentifiedDataSerializable config) { checkConfigVersion(config); // we create a defensive copy as local operation execution might use a fast-path // and avoid config serialization altogether. // we certainly do not want the dynamic config service to reference object a user can mutate IdentifiedDataSerializable clonedConfig = cloneConfig(config); ClusterService clusterService = nodeEngine.getClusterService(); return invokeOnStableClusterSerial(nodeEngine, new AddDynamicConfigOperationSupplier(clusterService, clonedConfig), CONFIG_PUBLISH_MAX_ATTEMPT_COUNT); }
@Override protected boolean requiresExplicitServiceName() { // RU_COMPAT_3_10 Member member = getNodeEngine().getClusterService().getMember(target); if (member == null) { return false; } Version memberVersion = member.getVersion().asVersion(); return memberVersion.isLessThan(Versions.V3_11); }
public String addNearCacheInvalidationListener(InvalidationListener listener) { // local member UUID may change after a split-brain merge String localMemberUuid = getNodeEngine().getClusterService().getLocalMember().getUuid(); EventFilter eventFilter = new UuidFilter(localMemberUuid); return mapServiceContext.addEventListener(listener, eventFilter, name); }
@Override protected boolean requiresExplicitServiceName() { // RU_COMPAT_3_10 Member member = getNodeEngine().getClusterService().getMember(target); if (member == null) { return false; } Version memberVersion = member.getVersion().asVersion(); return memberVersion.isLessThan(Versions.V3_11); }
private void destroyCacheOnAllMembers(String name, String callerUuid) { NodeEngine nodeEngine = getNodeEngine(); OperationService operationService = nodeEngine.getOperationService(); Collection<Member> members = nodeEngine.getClusterService().getMembers(); for (Member member : members) { if (!member.localMember() && !member.getUuid().equals(callerUuid)) { CacheDestroyOperation op = new CacheDestroyOperation(name, true); operationService.invokeOnTarget(ICacheService.SERVICE_NAME, op, member.getAddress()); } } }
@Override public void increasePermits(int increase) { if (getNodeEngine().getClusterService().getClusterVersion().isLessThan(Versions.V3_10)) { throw new UnsupportedOperationException("Increasing permits is available when cluster version is 3.10 or higher"); } checkNotNegative(increase, "increase can't be negative"); Operation operation = new IncreaseOperation(name, increase) .setPartitionId(partitionId); InternalCompletableFuture<Object> future = invokeOnPartition(operation); future.join(); }
@Override public Map<Member, IScheduledFuture<?>> scheduleOnAllMembers(Runnable command, long delay, TimeUnit unit) { checkNotNull(command, "Command is null"); checkNotNull(unit, "Unit is null"); initializeManagedContext(command); return scheduleOnMembers(command, getNodeEngine().getClusterService().getMembers(), delay, unit); }
public static JobProcessInformationImpl createJobProcessInformation(JobTaskConfiguration configuration, JobSupervisor supervisor) { NodeEngine nodeEngine = configuration.getNodeEngine(); if (configuration.getKeyValueSource() instanceof PartitionIdAware) { int partitionCount = nodeEngine.getPartitionService().getPartitionCount(); return new JobProcessInformationImpl(partitionCount, supervisor); } else { int partitionCount = nodeEngine.getClusterService().getSize(DATA_MEMBER_SELECTOR); return new MemberAssigningJobProcessInformationImpl(partitionCount, supervisor); } }
public ReplicatedMapService(NodeEngine nodeEngine) { this.nodeEngine = nodeEngine; this.config = nodeEngine.getConfig(); this.partitionService = (InternalPartitionServiceImpl) nodeEngine.getPartitionService(); this.clusterService = nodeEngine.getClusterService(); this.operationService = nodeEngine.getOperationService(); this.partitionContainers = new PartitionContainer[nodeEngine.getPartitionService().getPartitionCount()]; this.eventPublishingService = new ReplicatedMapEventPublishingService(this); this.splitBrainHandlerService = new ReplicatedMapSplitBrainHandlerService(this); this.quorumService = nodeEngine.getQuorumService(); this.mergePolicyProvider = new MergePolicyProvider(nodeEngine); }
private void updateCacheListenerConfigOnOtherNodes(CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration, boolean isRegister) { OperationService operationService = getNodeEngine().getOperationService(); Collection<Member> members = getNodeEngine().getClusterService().getMembers(); for (Member member : members) { if (!member.localMember()) { Operation op = new CacheListenerRegistrationOperation(getDistributedObjectName(), cacheEntryListenerConfiguration, isRegister); operationService.invokeOnTarget(CacheService.SERVICE_NAME, op, member.getAddress()); } } }