@@ -87,25 +87,25 @@ public AliasCandidates getRelevantCandidates(String alias) {
87
87
88
88
public boolean release (@ NonNull AliasRequest aliasRequest ) {
89
89
val alias = aliasRequest .getAlias ();
90
+ val releases = getReleasesFromRequest (aliasRequest );
91
+ val shards = getShardsFromRequest (aliasRequest );
90
92
91
93
// First identify candidates and check existence of at least one.
92
- val candidates = this . getRelevantCandidates (alias );
94
+ val candidates = getRelevantCandidates (alias );
93
95
94
96
// Now do a pre-flight check to see if target indices exist and resolve correctly before continuing.
95
- val indicesToRelease = getIndicesForRelease (candidates , aliasRequest . getRelease (). toLowerCase (). split ( "_" ), getShardsFromRequest ( aliasRequest ) );
97
+ val indicesToRelease = getIndicesForRelease (candidates , releases , shards );
96
98
if (indicesToRelease .size () != aliasRequest .getShards ().size ()) {
97
99
throw new ReleaseIntegrityException (aliasRequest .getRelease (), aliasRequest .getShards (), indicesToRelease );
98
100
}
99
101
100
- val removed = remove (aliasRequest );
101
- if (!removed ) {
102
- throw new IllegalStateException ("Failed to remove alias" );
103
- }
102
+ val indicesToRemoveFromAlias = getIndicesToRemoveFromAlias (aliasRequest );
104
103
105
- return addAliasToIndices (aliasRequest , candidates );
104
+ repository .makeIndicesReadOnly (indicesToRelease );
105
+ return repository .updateIndicesAliases (alias , indicesToRelease , indicesToRemoveFromAlias );
106
106
}
107
107
108
- public boolean remove (@ NonNull AliasRequest aliasRequest ) {
108
+ public List < String > getIndicesToRemoveFromAlias (@ NonNull AliasRequest aliasRequest ) {
109
109
val alias = aliasRequest .getAlias ();
110
110
val shards = getShardsFromRequest (aliasRequest );
111
111
@@ -120,6 +120,12 @@ public boolean remove(@NonNull AliasRequest aliasRequest) {
120
120
.map (ResolvedIndex ::getIndexName )
121
121
.collect (toList ());
122
122
123
+ return indices ;
124
+ }
125
+
126
+ public boolean remove (@ NonNull AliasRequest aliasRequest ) {
127
+ val alias = aliasRequest .getAlias ();
128
+ val indices = getIndicesToRemoveFromAlias (aliasRequest );
123
129
return repository .removeAlias (alias , indices );
124
130
}
125
131
@@ -128,15 +134,6 @@ public boolean removeAliasFromAllIndices(@NonNull String alias) {
128
134
return repository .removeAlias (alias , existing );
129
135
}
130
136
131
- private boolean addAliasToIndices (AliasRequest aliasRequest , AliasCandidates candidates ) {
132
- val release = aliasRequest .getRelease ().toLowerCase ().split ("_" );
133
- val shards = getShardsFromRequest (aliasRequest );
134
-
135
- val indices = getIndicesForRelease (candidates , release , shards );
136
-
137
- return repository .makeReadonlyThenAddAlias (aliasRequest .getAlias (), indices );
138
- }
139
-
140
137
private static List <Shard > getShardsFromRequest (AliasRequest aliasRequest ) {
141
138
return aliasRequest .getShards ().stream ()
142
139
.map (String ::toLowerCase )
@@ -145,6 +142,10 @@ private static List<Shard> getShardsFromRequest(AliasRequest aliasRequest) {
145
142
.collect (toList ());
146
143
}
147
144
145
+ private static String [] getReleasesFromRequest (AliasRequest aliasRequest ) {
146
+ return aliasRequest .getRelease ().toLowerCase ().split ("_" );
147
+ }
148
+
148
149
private List <String > getIndicesWithAlias (String alias ) {
149
150
val state = repository .getAliasState ();
150
151
0 commit comments