Skip to content

Commit 49cbf52

Browse files
Remove commons-collections 3.2.2 (opensearch-project#2924)
Signed-off-by: Andrey Pleskach <ples@aiven.io>
1 parent 092e8f5 commit 49cbf52

File tree

3 files changed

+66
-23
lines changed

3 files changed

+66
-23
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ dependencies {
533533
implementation "org.opensaml:opensaml-storage-api:${open_saml_version}"
534534

535535
implementation "com.nulab-inc:zxcvbn:1.7.0"
536-
implementation 'commons-collections:commons-collections:3.2.2'
536+
537537
implementation 'com.jayway.jsonpath:json-path:2.4.0'
538538
implementation 'net.minidev:json-smart:2.4.10'
539539
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.10.8'

src/integrationTest/java/org/opensearch/test/framework/log/LogCapturingAppender.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,8 @@
99
*/
1010
package org.opensearch.test.framework.log;
1111

12-
import java.io.Serializable;
13-
import java.util.ArrayList;
14-
import java.util.Arrays;
15-
import java.util.Collections;
16-
import java.util.HashSet;
17-
import java.util.List;
18-
import java.util.Set;
19-
import java.util.stream.Collectors;
20-
21-
import org.apache.commons.collections.Buffer;
22-
import org.apache.commons.collections.BufferUtils;
23-
import org.apache.commons.collections.buffer.CircularFifoBuffer;
12+
import com.google.common.collect.EvictingQueue;
13+
import com.google.common.collect.Queues;
2414
import org.apache.logging.log4j.core.Appender;
2515
import org.apache.logging.log4j.core.Core;
2616
import org.apache.logging.log4j.core.Filter;
@@ -32,6 +22,15 @@
3222
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
3323
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
3424

25+
import java.io.Serializable;
26+
import java.util.ArrayList;
27+
import java.util.Arrays;
28+
import java.util.List;
29+
import java.util.Queue;
30+
import java.util.Set;
31+
import java.util.concurrent.ConcurrentHashMap;
32+
import java.util.stream.Collectors;
33+
3534
import static org.opensearch.test.framework.log.LogCapturingAppender.PLUGIN_NAME;
3635

3736
/**
@@ -56,12 +55,12 @@ public class LogCapturingAppender extends AbstractAppender {
5655
/**
5756
* Buffer for captured log messages
5857
*/
59-
private static final Buffer messages = BufferUtils.synchronizedBuffer(new CircularFifoBuffer(MAX_SIZE));
58+
private static final Queue<LogMessage> messages = Queues.synchronizedQueue(EvictingQueue.create(MAX_SIZE));
6059

6160
/**
6261
* Log messages are stored in buffer {@link #messages} only for classes which are added to the {@link #activeLoggers} set.
6362
*/
64-
private static final Set<String> activeLoggers = Collections.synchronizedSet(new HashSet<>());
63+
private static final Set<String> activeLoggers = ConcurrentHashMap.newKeySet();
6564

6665
protected LogCapturingAppender(
6766
String name,

src/main/java/org/opensearch/security/resolver/IndexResolverReplacer.java

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@
3535
import java.util.List;
3636
import java.util.ListIterator;
3737
import java.util.Map;
38+
import java.util.Objects;
3839
import java.util.Set;
3940
import java.util.regex.PatternSyntaxException;
4041
import java.util.stream.Collectors;
4142

4243
import com.google.common.collect.ImmutableSet;
43-
import org.apache.commons.collections.keyvalue.MultiKey;
4444
import org.apache.logging.log4j.LogManager;
4545
import org.apache.logging.log4j.Logger;
4646
import org.greenrobot.eventbus.Subscribe;
@@ -112,7 +112,7 @@ public IndexResolverReplacer(IndexNameExpressionResolver resolver, ClusterServic
112112
this.clusterInfoHolder = clusterInfoHolder;
113113
}
114114

115-
private static final boolean isAllWithNoRemote(final String... requestedPatterns) {
115+
private static boolean isAllWithNoRemote(final String... requestedPatterns) {
116116

117117
final List<String> patterns = requestedPatterns == null ? null : Arrays.asList(requestedPatterns);
118118

@@ -131,11 +131,11 @@ private static final boolean isAllWithNoRemote(final String... requestedPatterns
131131
return false;
132132
}
133133

134-
private static final boolean isLocalAll(String... requestedPatterns) {
134+
private static boolean isLocalAll(String... requestedPatterns) {
135135
return isLocalAll(requestedPatterns == null ? null : Arrays.asList(requestedPatterns));
136136
}
137137

138-
private static final boolean isLocalAll(Collection<String> patterns) {
138+
private static boolean isLocalAll(Collection<String> patterns) {
139139
if (IndexNameExpressionResolver.isAllIndices(patterns)) {
140140
return true;
141141
}
@@ -158,9 +158,49 @@ private class ResolvedIndicesProvider implements IndicesProvider {
158158
private final ImmutableSet.Builder<String> remoteIndices;
159159
// set of previously resolved index requests to avoid resolving
160160
// the same index more than once while processing bulk requests
161-
private final Set<MultiKey> alreadyResolved;
161+
private final Set<AlreadyResolvedKey> alreadyResolved;
162162
private final String name;
163163

164+
private final class AlreadyResolvedKey {
165+
166+
private final IndicesOptions indicesOptions;
167+
168+
private final boolean enableCrossClusterResolution;
169+
170+
private final String[] original;
171+
172+
private AlreadyResolvedKey(final IndicesOptions indicesOptions, final boolean enableCrossClusterResolution) {
173+
this(indicesOptions, enableCrossClusterResolution, null);
174+
}
175+
176+
private AlreadyResolvedKey(
177+
final IndicesOptions indicesOptions,
178+
final boolean enableCrossClusterResolution,
179+
final String[] original
180+
) {
181+
this.indicesOptions = indicesOptions;
182+
this.enableCrossClusterResolution = enableCrossClusterResolution;
183+
this.original = original;
184+
}
185+
186+
@Override
187+
public boolean equals(Object o) {
188+
if (this == o) return true;
189+
if (o == null || getClass() != o.getClass()) return false;
190+
AlreadyResolvedKey that = (AlreadyResolvedKey) o;
191+
return enableCrossClusterResolution == that.enableCrossClusterResolution
192+
&& Objects.equals(indicesOptions, that.indicesOptions)
193+
&& Arrays.equals(original, that.original);
194+
}
195+
196+
@Override
197+
public int hashCode() {
198+
int result = Objects.hash(indicesOptions, enableCrossClusterResolution);
199+
result = 31 * result + Arrays.hashCode(original);
200+
return result;
201+
}
202+
}
203+
164204
ResolvedIndicesProvider(Object request) {
165205
aliases = ImmutableSet.builder();
166206
allIndices = ImmutableSet.builder();
@@ -336,9 +376,13 @@ public String[] provide(String[] original, Object localRequest, boolean supports
336376
|| localRequest instanceof SearchRequest
337377
|| localRequest instanceof ResolveIndexAction.Request;
338378
// skip the whole thing if we have seen this exact resolveIndexPatterns request
339-
if (alreadyResolved.add(
340-
new MultiKey(indicesOptions, enableCrossClusterResolution, (original != null) ? new MultiKey(original, false) : null)
341-
)) {
379+
final AlreadyResolvedKey alreadyResolvedKey;
380+
if (original != null) {
381+
alreadyResolvedKey = new AlreadyResolvedKey(indicesOptions, enableCrossClusterResolution, original);
382+
} else {
383+
alreadyResolvedKey = new AlreadyResolvedKey(indicesOptions, enableCrossClusterResolution);
384+
}
385+
if (alreadyResolved.add(alreadyResolvedKey)) {
342386
resolveIndexPatterns(localRequest.getClass().getSimpleName(), indicesOptions, enableCrossClusterResolution, original);
343387
}
344388
return IndicesProvider.NOOP;

0 commit comments

Comments
 (0)