|
@@ -52,7 +52,7 @@ public class TransportGetSnapshotsAction extends TransportMasterNodeOperationAct
|
|
|
|
|
|
@Override
|
|
|
protected String executor() {
|
|
|
- return ThreadPool.Names.SNAPSHOT;
|
|
|
+ return ThreadPool.Names.GENERIC;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -72,26 +72,35 @@ public class TransportGetSnapshotsAction extends TransportMasterNodeOperationAct
|
|
|
|
|
|
@Override
|
|
|
protected void masterOperation(final GetSnapshotsRequest request, ClusterState state, final ActionListener<GetSnapshotsResponse> listener) throws ElasticsearchException {
|
|
|
- SnapshotId[] snapshotIds = new SnapshotId[request.snapshots().length];
|
|
|
- for (int i = 0; i < snapshotIds.length; i++) {
|
|
|
- snapshotIds[i] = new SnapshotId(request.repository(), request.snapshots()[i]);
|
|
|
- }
|
|
|
-
|
|
|
try {
|
|
|
ImmutableList.Builder<SnapshotInfo> snapshotInfoBuilder = ImmutableList.builder();
|
|
|
- if (snapshotIds.length > 0) {
|
|
|
- for (SnapshotId snapshotId : snapshotIds) {
|
|
|
- snapshotInfoBuilder.add(new SnapshotInfo(snapshotsService.snapshot(snapshotId)));
|
|
|
- }
|
|
|
- } else {
|
|
|
+ if (isAllSnapshots(request.snapshots())) {
|
|
|
ImmutableList<Snapshot> snapshots = snapshotsService.snapshots(request.repository());
|
|
|
for (Snapshot snapshot : snapshots) {
|
|
|
snapshotInfoBuilder.add(new SnapshotInfo(snapshot));
|
|
|
}
|
|
|
+ } else if (isCurrentSnapshots(request.snapshots())) {
|
|
|
+ ImmutableList<Snapshot> snapshots = snapshotsService.currentSnapshots(request.repository());
|
|
|
+ for (Snapshot snapshot : snapshots) {
|
|
|
+ snapshotInfoBuilder.add(new SnapshotInfo(snapshot));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (int i = 0; i < request.snapshots().length; i++) {
|
|
|
+ SnapshotId snapshotId = new SnapshotId(request.repository(), request.snapshots()[i]);
|
|
|
+ snapshotInfoBuilder.add(new SnapshotInfo(snapshotsService.snapshot(snapshotId)));
|
|
|
+ }
|
|
|
}
|
|
|
listener.onResponse(new GetSnapshotsResponse(snapshotInfoBuilder.build()));
|
|
|
} catch (Throwable t) {
|
|
|
listener.onFailure(t);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private boolean isAllSnapshots(String[] snapshots) {
|
|
|
+ return (snapshots.length == 0) || (snapshots.length == 1 && GetSnapshotsRequest.ALL_SNAPSHOTS.equalsIgnoreCase(snapshots[0]));
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isCurrentSnapshots(String[] snapshots) {
|
|
|
+ return (snapshots.length == 1 && GetSnapshotsRequest.CURRENT_SNAPSHOT.equalsIgnoreCase(snapshots[0]));
|
|
|
+ }
|
|
|
}
|