@Override public void destroyDistributedObject(String objectName) { int partitionId = nodeEngine.getPartitionService().getPartitionId(objectName); Container container = containers[partitionId]; container.destroy(objectName); }
@Override public int getPartitionCount() { return partitionService.getPartitionCount(); } }
private BitSet getLocalPartitionIds() { int partitionCount = partitionService.getPartitionCount(); BitSet partitionIds = new BitSet(partitionCount); BitSetUtils.setBits(partitionIds, partitionService.getMemberPartitions(nodeEngine.getThisAddress())); return partitionIds; }
private boolean isOwn(Data key) { int partitionId = partitionService.getPartitionId(key); return partitionService.isPartitionOwner(partitionId); }
private Collection<Integer> getPartitionsForKeys(Collection<Data> keys) { int partitions = partitionService.getPartitionCount(); // TODO: is there better way to estimate the size? int capacity = min(partitions, keys.size()); Set<Integer> partitionIds = createHashSet(capacity); Iterator<Data> iterator = keys.iterator(); while (iterator.hasNext() && partitionIds.size() < partitions) { Data key = iterator.next(); partitionIds.add(partitionService.getPartitionId(key)); } return partitionIds; }
/** * {@inheritDoc} * <p> * The method will set the owned partition set in a CAS loop because * this method can be called concurrently. */ @Override public void reloadOwnedPartitions() { final IPartitionService partitionService = nodeEngine.getPartitionService(); for (; ; ) { final Collection<Integer> expected = ownedPartitions.get(); final Collection<Integer> partitions = partitionService.getMemberPartitions(nodeEngine.getThisAddress()); final Set<Integer> newSet = Collections.unmodifiableSet(new LinkedHashSet<Integer>(partitions)); if (ownedPartitions.compareAndSet(expected, newSet)) { return; } } }
private boolean isLocalPartition(int partitionId) { return partitionService.isPartitionOwner(partitionId); }
/** * Calculates and returns the role for the map key loader on this partition */ private Role calculateRole() { boolean isPartitionOwner = partitionService.isPartitionOwner(partitionId); boolean isMapNamePartition = partitionId == mapNamePartition; boolean isMapNamePartitionFirstReplica = false; if (hasBackup && isMapNamePartition) { IPartition partition = partitionService.getPartition(partitionId); Address firstReplicaAddress = partition.getReplicaAddress(1); Member member = clusterService.getMember(firstReplicaAddress); if (member != null) { isMapNamePartitionFirstReplica = member.localMember(); } } return assignRole(isPartitionOwner, isMapNamePartition, isMapNamePartitionFirstReplica); }
@Override protected Object call() throws Exception { final IPartitionService partitionService = getService(getServiceName()); final PartitionLostListener listener = new PartitionLostListener() { @Override public void partitionLost(PartitionLostEvent event) { if (endpoint.isAlive()) { ClientMessage eventMessage = ClientAddPartitionLostListenerCodec.encodePartitionLostEvent(event.getPartitionId(), event.getLostBackupCount(), event.getEventSource()); sendClientMessage(null, eventMessage); } } }; String registrationId; if (parameters.localOnly) { registrationId = partitionService.addLocalPartitionLostListener(listener); } else { registrationId = partitionService.addPartitionLostListener(listener); } endpoint.addListenerDestroyAction(getServiceName(), PARTITION_LOST_EVENT_TOPIC, registrationId); return registrationId; }
private void registerPartitionListener() { this.partitionLostRegistration = getNodeEngine().getPartitionService().addPartitionLostListener(new PartitionLostListener() { @Override public void partitionLost(final PartitionLostEvent event) { // use toArray before iteration since it is done under mutex ScheduledFutureProxy[] futures = lossListeners.toArray(new ScheduledFutureProxy[0]); for (ScheduledFutureProxy future : futures) { future.notifyPartitionLost(event); } } }); }
private boolean isOwn(Data key) { int partitionId = partitionService.getPartitionId(key); return partitionService.isPartitionOwner(partitionId); }
private Collection<Integer> getPartitionsForKeys(Collection<Data> keys) { int partitions = partitionService.getPartitionCount(); // TODO: is there better way to estimate the size? int capacity = min(partitions, keys.size()); Set<Integer> partitionIds = createHashSet(capacity); Iterator<Data> iterator = keys.iterator(); while (iterator.hasNext() && partitionIds.size() < partitions) { Data key = iterator.next(); partitionIds.add(partitionService.getPartitionId(key)); } return partitionIds; }
/** * {@inheritDoc} * <p> * The method will set the owned partition set in a CAS loop because * this method can be called concurrently. */ @Override public void reloadOwnedPartitions() { final IPartitionService partitionService = nodeEngine.getPartitionService(); for (; ; ) { final Collection<Integer> expected = ownedPartitions.get(); final Collection<Integer> partitions = partitionService.getMemberPartitions(nodeEngine.getThisAddress()); final Set<Integer> newSet = Collections.unmodifiableSet(new LinkedHashSet<Integer>(partitions)); if (ownedPartitions.compareAndSet(expected, newSet)) { return; } } }
private boolean isLocalPartition(int partitionId) { return partitionService.isPartitionOwner(partitionId); }
/** * Calculates and returns the role for the map key loader on this partition */ private Role calculateRole() { boolean isPartitionOwner = partitionService.isPartitionOwner(partitionId); boolean isMapNamePartition = partitionId == mapNamePartition; boolean isMapNamePartitionFirstReplica = false; if (hasBackup && isMapNamePartition) { IPartition partition = partitionService.getPartition(partitionId); Address firstReplicaAddress = partition.getReplicaAddress(1); Member member = clusterService.getMember(firstReplicaAddress); if (member != null) { isMapNamePartitionFirstReplica = member.localMember(); } } return assignRole(isPartitionOwner, isMapNamePartition, isMapNamePartitionFirstReplica); }
@Override protected Object call() throws Exception { final IPartitionService partitionService = getService(getServiceName()); final PartitionLostListener listener = new PartitionLostListener() { @Override public void partitionLost(PartitionLostEvent event) { if (endpoint.isAlive()) { ClientMessage eventMessage = ClientAddPartitionLostListenerCodec.encodePartitionLostEvent(event.getPartitionId(), event.getLostBackupCount(), event.getEventSource()); sendClientMessage(null, eventMessage); } } }; String registrationId; if (parameters.localOnly) { registrationId = partitionService.addLocalPartitionLostListener(listener); } else { registrationId = partitionService.addPartitionLostListener(listener); } endpoint.addListenerDestroyAction(getServiceName(), PARTITION_LOST_EVENT_TOPIC, registrationId); return registrationId; }
private void registerPartitionListener() { this.partitionLostRegistration = getNodeEngine().getPartitionService().addPartitionLostListener(new PartitionLostListener() { @Override public void partitionLost(final PartitionLostEvent event) { // use toArray before iteration since it is done under mutex ScheduledFutureProxy[] futures = lossListeners.toArray(new ScheduledFutureProxy[0]); for (ScheduledFutureProxy future : futures) { future.notifyPartitionLost(event); } } }); }
@Override public int getPartitionId(Object object) { assert object != null; if (object instanceof Data) { nodeEngine.getPartitionService().getPartitionId((Data) object); } return nodeEngine.getPartitionService().getPartitionId(object); }
@Override public int getPartitionCount() { return partitionService.getPartitionCount(); } }
public boolean isLocalKey(Object key) { int partId = nodeEngine.getPartitionService().getPartitionId(key); return nodeEngine.getPartitionService().isPartitionOwner(partId); }