|
@@ -207,6 +207,10 @@ public class IndexReshardingMetadata implements ToXContentFragment, Writeable {
|
|
|
return new IndexReshardingMetadata(IndexReshardingState.Split.newSplitByMultiple(shardCount, multiple));
|
|
|
}
|
|
|
|
|
|
+ public static boolean isSplitSource(ShardId shardId, @Nullable IndexReshardingMetadata reshardingMetadata) {
|
|
|
+ return reshardingMetadata != null && reshardingMetadata.isSplit() && reshardingMetadata.getSplit().isSourceShard(shardId.id());
|
|
|
+ }
|
|
|
+
|
|
|
public static boolean isSplitTarget(ShardId shardId, @Nullable IndexReshardingMetadata reshardingMetadata) {
|
|
|
return reshardingMetadata != null && reshardingMetadata.isSplit() && reshardingMetadata.getSplit().isTargetShard(shardId.id());
|
|
|
}
|
|
@@ -221,6 +225,16 @@ public class IndexReshardingMetadata implements ToXContentFragment, Writeable {
|
|
|
return new IndexReshardingMetadata(builder.build());
|
|
|
}
|
|
|
|
|
|
+ public IndexReshardingMetadata transitionSplitSourceToNewState(
|
|
|
+ ShardId shardId,
|
|
|
+ IndexReshardingState.Split.SourceShardState newSourceState
|
|
|
+ ) {
|
|
|
+ assert state instanceof IndexReshardingState.Split;
|
|
|
+ IndexReshardingState.Split.Builder builder = new IndexReshardingState.Split.Builder((IndexReshardingState.Split) state);
|
|
|
+ builder.setSourceShardState(shardId.getId(), newSourceState);
|
|
|
+ return new IndexReshardingMetadata(builder.build());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @return the split state of this metadata block, or throw IllegalArgumentException if this metadata doesn't represent a split
|
|
|
*/
|