Skip to content

Commit 75214e9

Browse files
committed
Make schem agreement query pull only columns that are used
Currently schema agreement logic run `select * from system.peers`, while only `schema_version` is used, it creates excessive load on cluster and driver side.
1 parent cf9f8f0 commit 75214e9

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

core/src/main/java/com/datastax/oss/driver/internal/core/metadata/SchemaAgreementChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ private void sendQueries() {
108108
} else {
109109
CompletionStage<AdminResult> localQuery =
110110
query("SELECT schema_version FROM system.local WHERE key='local'");
111-
CompletionStage<AdminResult> peersQuery = query("SELECT * FROM system.peers");
111+
CompletionStage<AdminResult> peersQuery = query("SELECT schema_version FROM system.peers");
112112

113113
localQuery
114114
.thenCombine(peersQuery, this::extractSchemaVersions)

core/src/test/java/com/datastax/oss/driver/internal/core/metadata/SchemaAgreementCheckerTest.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public void should_succeed_if_only_one_node() {
139139
new StubbedQuery(
140140
"SELECT schema_version FROM system.local WHERE key='local'",
141141
mockResult(mockLocalRow(VERSION1))),
142-
new StubbedQuery("SELECT * FROM system.peers", mockResult(/*empty*/ )));
142+
new StubbedQuery("SELECT schema_version FROM system.peers", mockResult(/*empty*/ )));
143143

144144
// When
145145
CompletionStage<Boolean> future = checker.run();
@@ -156,7 +156,8 @@ public void should_succeed_if_versions_match_on_first_try() {
156156
new StubbedQuery(
157157
"SELECT schema_version FROM system.local WHERE key='local'",
158158
mockResult(mockLocalRow(VERSION1))),
159-
new StubbedQuery("SELECT * FROM system.peers", mockResult(mockValidPeerRow(VERSION1))));
159+
new StubbedQuery(
160+
"SELECT schema_version FROM system.peers", mockResult(mockValidPeerRow(VERSION1))));
160161

161162
// When
162163
CompletionStage<Boolean> future = checker.run();
@@ -174,7 +175,8 @@ public void should_ignore_down_peers() {
174175
new StubbedQuery(
175176
"SELECT schema_version FROM system.local WHERE key='local'",
176177
mockResult(mockLocalRow(VERSION1))),
177-
new StubbedQuery("SELECT * FROM system.peers", mockResult(mockValidPeerRow(VERSION2))));
178+
new StubbedQuery(
179+
"SELECT schema_version FROM system.peers", mockResult(mockValidPeerRow(VERSION2))));
178180

179181
// When
180182
CompletionStage<Boolean> future = checker.run();
@@ -210,7 +212,7 @@ public void should_ignore_malformed_rows(AdminRow malformedPeer) {
210212
new StubbedQuery(
211213
"SELECT schema_version FROM system.local WHERE key='local'",
212214
mockResult(mockLocalRow(VERSION1))),
213-
new StubbedQuery("SELECT * FROM system.peers", mockResult(malformedPeer)));
215+
new StubbedQuery("SELECT schema_version FROM system.peers", mockResult(malformedPeer)));
214216

215217
// When
216218
CompletionStage<Boolean> future = checker.run();
@@ -228,13 +230,15 @@ public void should_reschedule_if_versions_do_not_match_on_first_try() {
228230
new StubbedQuery(
229231
"SELECT schema_version FROM system.local WHERE key='local'",
230232
mockResult(mockLocalRow(VERSION1))),
231-
new StubbedQuery("SELECT * FROM system.peers", mockResult(mockValidPeerRow(VERSION2))),
233+
new StubbedQuery(
234+
"SELECT schema_version FROM system.peers", mockResult(mockValidPeerRow(VERSION2))),
232235

233236
// Second round
234237
new StubbedQuery(
235238
"SELECT schema_version FROM system.local WHERE key='local'",
236239
mockResult(mockLocalRow(VERSION1))),
237-
new StubbedQuery("SELECT * FROM system.peers", mockResult(mockValidPeerRow(VERSION1))));
240+
new StubbedQuery(
241+
"SELECT schema_version FROM system.peers", mockResult(mockValidPeerRow(VERSION1))));
238242

239243
// When
240244
CompletionStage<Boolean> future = checker.run();
@@ -253,7 +257,8 @@ public void should_fail_if_versions_do_not_match_after_timeout() {
253257
new StubbedQuery(
254258
"SELECT schema_version FROM system.local WHERE key='local'",
255259
mockResult(mockLocalRow(VERSION1))),
256-
new StubbedQuery("SELECT * FROM system.peers", mockResult(mockValidPeerRow(VERSION1))));
260+
new StubbedQuery(
261+
"SELECT schema_version FROM system.peers", mockResult(mockValidPeerRow(VERSION1))));
257262

258263
// When
259264
CompletionStage<Boolean> future = checker.run();

0 commit comments

Comments
 (0)