Skip to content

Commit 8a6c047

Browse files
committed
Assert no thread context pollution in InternalClusterInfoService
1 parent 2c432a4 commit 8a6c047

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

server/src/main/java/org/elasticsearch/cluster/InternalClusterInfoService.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,15 +181,29 @@ void execute() {
181181
logger.trace("starting async refresh");
182182

183183
try (var ignoredRefs = fetchRefs) {
184+
185+
assert assertEmptySystemContext();
184186
try (var ignored = threadPool.getThreadContext().clearTraceContext()) {
185187
fetchNodeStats();
188+
assert assertEmptySystemContext();
186189
}
187190
try (var ignored = threadPool.getThreadContext().clearTraceContext()) {
188191
fetchIndicesStats();
192+
assert assertEmptySystemContext();
189193
}
190194
}
191195
}
192196

197+
private boolean assertEmptySystemContext() {
198+
final var threadContext = threadPool.getThreadContext();
199+
final var headers = threadContext.getHeaders();
200+
assert headers.isEmpty() : headers;
201+
final var transientHeaders = threadContext.getTransientHeaders();
202+
assert transientHeaders.isEmpty() : transientHeaders;
203+
assert threadContext.isSystemContext();
204+
return true;
205+
}
206+
193207
private void fetchIndicesStats() {
194208
final IndicesStatsRequest indicesStatsRequest = new IndicesStatsRequest();
195209
indicesStatsRequest.clear();
@@ -205,6 +219,7 @@ private void fetchIndicesStats() {
205219
ActionListener.releaseAfter(new ActionListener<>() {
206220
@Override
207221
public void onResponse(IndicesStatsResponse indicesStatsResponse) {
222+
assert assertEmptySystemContext();
208223
logger.trace("received indices stats response");
209224

210225
if (indicesStatsResponse.getShardFailures().length > 0) {
@@ -289,6 +304,7 @@ private void fetchNodeStats() {
289304
client.admin().cluster().nodesStats(nodesStatsRequest, ActionListener.releaseAfter(new ActionListener<>() {
290305
@Override
291306
public void onResponse(NodesStatsResponse nodesStatsResponse) {
307+
assert assertEmptySystemContext();
292308
logger.trace("received node stats response");
293309

294310
for (final FailedNodeException failure : nodesStatsResponse.failures()) {
@@ -321,6 +337,7 @@ public void onFailure(Exception e) {
321337

322338
private void callListeners() {
323339
try {
340+
assert assertEmptySystemContext();
324341
logger.trace("stats all received, computing cluster info and notifying listeners");
325342
final ClusterInfo clusterInfo = getClusterInfo();
326343
boolean anyListeners = false;
@@ -339,6 +356,7 @@ private void callListeners() {
339356
listener.onResponse(clusterInfo);
340357
}
341358
} finally {
359+
assert assertEmptySystemContext();
342360
onRefreshComplete(this);
343361
}
344362
}

0 commit comments

Comments
 (0)