예제 #1
0
 public void commitMigration(PartitionMigrationEvent event) {
   migrateIndex(event);
   if (event.getMigrationEndpoint() == MigrationEndpoint.SOURCE) {
     clearPartitionData(event.getPartitionId());
   }
   ownedPartitions.set(getMemberPartitions());
 }
예제 #2
0
 private void migrateIndex(PartitionMigrationEvent event) {
   final PartitionContainer container = partitionContainers[event.getPartitionId()];
   for (RecordStore recordStore : container.getMaps().values()) {
     final MapContainer mapContainer = getMapContainer(recordStore.getName());
     final IndexService indexService = mapContainer.getIndexService();
     if (indexService.hasIndex()) {
       for (Record record : recordStore.getReadonlyRecordMap().values()) {
         if (event.getMigrationEndpoint() == MigrationEndpoint.SOURCE) {
           indexService.removeEntryIndex(record.getKey());
         } else {
           Object value = record.getValue();
           if (value != null) {
             indexService.saveEntryIndex(
                 new QueryEntry(
                     getSerializationService(), record.getKey(), record.getKey(), value));
           }
         }
       }
     }
   }
 }
예제 #3
0
 public void rollbackMigration(PartitionMigrationEvent event) {
   if (event.getMigrationEndpoint() == MigrationEndpoint.DESTINATION) {
     clearPartitionData(event.getPartitionId());
   }
   ownedPartitions.set(getMemberPartitions());
 }