Skip to content

Commit 6da721e

Browse files
authored
Assert TaskTransportChannel completed once (#94598)
1 parent cc6eb5b commit 6da721e

File tree

40 files changed

+108
-41
lines changed

40 files changed

+108
-41
lines changed

server/src/main/java/org/elasticsearch/Assertions.java renamed to libs/core/src/main/java/org/elasticsearch/core/Assertions.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,16 @@
66
* Side Public License, v 1.
77
*/
88

9-
package org.elasticsearch;
9+
package org.elasticsearch.core;
1010

1111
/**
1212
* Provides a static final field that can be used to check if assertions are enabled. Since this field might be used elsewhere to check if
1313
* assertions are enabled, if you are running with assertions enabled for specific packages or classes, you should enable assertions on this
14-
* class too (e.g., {@code -ea org.elasticsearch.Assertions -ea org.elasticsearch.cluster.service.MasterService}).
14+
* class too (e.g., {@code -ea org.elasticsearch.core.Assertions -ea org.elasticsearch.cluster.service.MasterService}).
1515
*/
1616
public final class Assertions {
1717

18-
private Assertions() {
19-
20-
}
18+
private Assertions() {}
2119

2220
public static final boolean ENABLED;
2321

libs/core/src/main/java/org/elasticsearch/core/Releasables.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,31 @@ public String toString() {
117117
}
118118
};
119119
}
120+
121+
public static Releasable assertOnce(final Releasable delegate) {
122+
if (Assertions.ENABLED) {
123+
return new Releasable() {
124+
// if complete, records the stack trace which first completed it
125+
private final AtomicReference<Exception> firstCompletion = new AtomicReference<>();
126+
127+
private void assertFirstRun() {
128+
var previousRun = firstCompletion.compareAndExchange(null, new Exception(delegate.toString()));
129+
assert previousRun == null : previousRun; // reports the stack traces of both completions
130+
}
131+
132+
@Override
133+
public void close() {
134+
assertFirstRun();
135+
delegate.close();
136+
}
137+
138+
@Override
139+
public String toString() {
140+
return delegate.toString();
141+
}
142+
};
143+
} else {
144+
return delegate;
145+
}
146+
}
120147
}

modules/legacy-geo/src/main/java/org/elasticsearch/legacygeo/builders/ShapeBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010

1111
import org.apache.logging.log4j.LogManager;
1212
import org.apache.logging.log4j.Logger;
13-
import org.elasticsearch.Assertions;
1413
import org.elasticsearch.common.Strings;
1514
import org.elasticsearch.common.io.stream.NamedWriteable;
1615
import org.elasticsearch.common.io.stream.StreamInput;
1716
import org.elasticsearch.common.io.stream.StreamOutput;
17+
import org.elasticsearch.core.Assertions;
1818
import org.elasticsearch.legacygeo.GeoShapeType;
1919
import org.elasticsearch.legacygeo.parsers.GeoWKTParser;
2020
import org.elasticsearch.xcontent.ToXContentObject;

qa/evil-tests/src/test/java/org/elasticsearch/index/store/LuceneFilesExtensionsTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
package org.elasticsearch.index.store;
1010

11-
import org.elasticsearch.Assertions;
11+
import org.elasticsearch.core.Assertions;
1212
import org.elasticsearch.core.SuppressForbidden;
1313
import org.elasticsearch.test.ESTestCase;
1414

server/src/main/java/org/elasticsearch/Version.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.elasticsearch.common.Strings;
1212
import org.elasticsearch.common.io.stream.StreamInput;
1313
import org.elasticsearch.common.io.stream.StreamOutput;
14+
import org.elasticsearch.core.Assertions;
1415
import org.elasticsearch.core.RestApiVersion;
1516
import org.elasticsearch.core.SuppressForbidden;
1617
import org.elasticsearch.monitor.jvm.JvmInfo;

server/src/main/java/org/elasticsearch/action/ActionListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88

99
package org.elasticsearch.action;
1010

11-
import org.elasticsearch.Assertions;
1211
import org.elasticsearch.ElasticsearchException;
1312
import org.elasticsearch.ExceptionsHelper;
1413
import org.elasticsearch.common.CheckedSupplier;
14+
import org.elasticsearch.core.Assertions;
1515
import org.elasticsearch.core.CheckedConsumer;
1616
import org.elasticsearch.core.CheckedFunction;
1717
import org.elasticsearch.core.CheckedRunnable;

server/src/main/java/org/elasticsearch/action/bulk/TransportBulkAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.apache.logging.log4j.LogManager;
1212
import org.apache.logging.log4j.Logger;
1313
import org.apache.lucene.util.SparseFixedBitSet;
14-
import org.elasticsearch.Assertions;
1514
import org.elasticsearch.ElasticsearchParseException;
1615
import org.elasticsearch.ExceptionsHelper;
1716
import org.elasticsearch.ResourceAlreadyExistsException;
@@ -48,6 +47,7 @@
4847
import org.elasticsearch.cluster.service.ClusterService;
4948
import org.elasticsearch.common.inject.Inject;
5049
import org.elasticsearch.common.util.concurrent.AtomicArray;
50+
import org.elasticsearch.core.Assertions;
5151
import org.elasticsearch.core.Releasable;
5252
import org.elasticsearch.core.TimeValue;
5353
import org.elasticsearch.index.Index;

server/src/main/java/org/elasticsearch/action/support/replication/TransportReplicationAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
package org.elasticsearch.action.support.replication;
1010

1111
import org.apache.lucene.store.AlreadyClosedException;
12-
import org.elasticsearch.Assertions;
1312
import org.elasticsearch.ElasticsearchException;
1413
import org.elasticsearch.ExceptionsHelper;
1514
import org.elasticsearch.action.ActionListener;
@@ -39,6 +38,7 @@
3938
import org.elasticsearch.common.settings.Setting;
4039
import org.elasticsearch.common.settings.Settings;
4140
import org.elasticsearch.common.util.concurrent.AbstractRunnable;
41+
import org.elasticsearch.core.Assertions;
4242
import org.elasticsearch.core.Nullable;
4343
import org.elasticsearch.core.Releasable;
4444
import org.elasticsearch.core.Releasables;

server/src/main/java/org/elasticsearch/cluster/routing/RoutingNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import org.apache.logging.log4j.Logger;
1212
import org.apache.lucene.util.CollectionUtil;
13-
import org.elasticsearch.Assertions;
1413
import org.elasticsearch.cluster.ClusterState;
1514
import org.elasticsearch.cluster.metadata.IndexMetadata;
1615
import org.elasticsearch.cluster.metadata.Metadata;
@@ -20,6 +19,7 @@
2019
import org.elasticsearch.cluster.routing.allocation.ExistingShardsAllocator;
2120
import org.elasticsearch.common.collect.Iterators;
2221
import org.elasticsearch.common.util.Maps;
22+
import org.elasticsearch.core.Assertions;
2323
import org.elasticsearch.core.Nullable;
2424
import org.elasticsearch.core.Tuple;
2525
import org.elasticsearch.index.Index;

server/src/main/java/org/elasticsearch/common/compress/DeflateCompressor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
package org.elasticsearch.common.compress;
1010

11-
import org.elasticsearch.Assertions;
1211
import org.elasticsearch.common.bytes.BytesReference;
1312
import org.elasticsearch.common.io.stream.BytesStreamOutput;
13+
import org.elasticsearch.core.Assertions;
1414
import org.elasticsearch.core.Releasable;
1515
import org.elasticsearch.core.Streams;
1616

0 commit comments

Comments
 (0)