Skip to content

Commit 2a24eda

Browse files
committed
JAVA-1645: Don't log stack traces at WARN level
1 parent af75775 commit 2a24eda

19 files changed

Lines changed: 113 additions & 35 deletions

File tree

changelog/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### 4.0.0-alpha3 (in progress)
66

7+
- [improvement] JAVA-1645: Don't log stack traces at WARN level
78
- [new feature] JAVA-1524: Add query trace API
89
- [improvement] JAVA-1646: Provide a more readable error when connecting to Cassandra 2.0 or lower
910
- [improvement] JAVA-1662: Raise default request timeout

core/src/main/java/com/datastax/oss/driver/api/core/uuid/Uuids.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.datastax.oss.driver.api.core.uuid;
1717

1818
import com.datastax.oss.driver.internal.core.os.Native;
19+
import com.datastax.oss.driver.internal.core.util.Loggers;
1920
import com.google.common.annotations.VisibleForTesting;
2021
import com.google.common.base.Charsets;
2122
import java.lang.management.ManagementFactory;
@@ -159,7 +160,7 @@ private static String getProcessPiece() {
159160
pid = Native.getProcessId();
160161
LOG.info("PID obtained through native call to getpid(): {}", pid);
161162
} catch (Exception e) {
162-
LOG.warn("Native call to getpid() failed", e);
163+
Loggers.warnWithException(LOG, "Native call to getpid() failed", e);
163164
}
164165
}
165166
if (pid == null) {
@@ -168,7 +169,7 @@ private static String getProcessPiece() {
168169
pid = Integer.parseInt(pidJmx);
169170
LOG.info("PID obtained through JMX: {}", pid);
170171
} catch (Exception e) {
171-
LOG.warn("Failed to obtain PID from JMX", e);
172+
Loggers.warnWithException(LOG, "Failed to obtain PID from JMX", e);
172173
}
173174
}
174175
if (pid == null) {

core/src/main/java/com/datastax/oss/driver/internal/core/DefaultCluster.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@
2121
import com.datastax.oss.driver.api.core.ProtocolVersion;
2222
import com.datastax.oss.driver.api.core.config.CoreDriverOption;
2323
import com.datastax.oss.driver.api.core.context.DriverContext;
24+
import com.datastax.oss.driver.api.core.cql.CqlSession;
2425
import com.datastax.oss.driver.api.core.metadata.Metadata;
2526
import com.datastax.oss.driver.api.core.metadata.NodeState;
2627
import com.datastax.oss.driver.api.core.metadata.NodeStateListener;
2728
import com.datastax.oss.driver.api.core.metadata.schema.SchemaChangeListener;
28-
import com.datastax.oss.driver.api.core.cql.CqlSession;
2929
import com.datastax.oss.driver.api.core.session.Session;
3030
import com.datastax.oss.driver.internal.core.context.InternalDriverContext;
3131
import com.datastax.oss.driver.internal.core.control.ControlConnection;
3232
import com.datastax.oss.driver.internal.core.metadata.MetadataManager;
3333
import com.datastax.oss.driver.internal.core.metadata.NodeStateEvent;
3434
import com.datastax.oss.driver.internal.core.metadata.NodeStateManager;
3535
import com.datastax.oss.driver.internal.core.session.DefaultSession;
36+
import com.datastax.oss.driver.internal.core.util.Loggers;
3637
import com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures;
3738
import com.datastax.oss.driver.internal.core.util.concurrent.RunOrSchedule;
3839
import com.google.common.collect.ImmutableList;
@@ -432,8 +433,11 @@ private void warnIfFailed(CompletionStage<Void> stage) {
432433
CompletableFuture<Void> future = stage.toCompletableFuture();
433434
assert future.isDone();
434435
if (future.isCompletedExceptionally()) {
435-
LOG.warn(
436-
"[{}] Unexpected error while closing", logPrefix, CompletableFutures.getFailed(future));
436+
Loggers.warnWithException(
437+
LOG,
438+
"[{}] Unexpected error while closing",
439+
logPrefix,
440+
CompletableFutures.getFailed(future));
437441
}
438442
}
439443

@@ -449,7 +453,7 @@ private void closePolicies() {
449453
try {
450454
closeable.close();
451455
} catch (Throwable t) {
452-
LOG.warn("[{}] Error while closing {}", logPrefix, closeable, t);
456+
Loggers.warnWithException(LOG, "[{}] Error while closing {}", logPrefix, closeable, t);
453457
}
454458
}
455459
}

core/src/main/java/com/datastax/oss/driver/internal/core/channel/InFlightHandler.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.datastax.oss.driver.internal.core.channel.DriverChannel.RequestMessage;
2626
import com.datastax.oss.driver.internal.core.channel.DriverChannel.SetKeyspaceEvent;
2727
import com.datastax.oss.driver.internal.core.protocol.FrameDecodingException;
28+
import com.datastax.oss.driver.internal.core.util.Loggers;
2829
import com.datastax.oss.protocol.internal.Frame;
2930
import com.datastax.oss.protocol.internal.Message;
3031
import com.datastax.oss.protocol.internal.request.Query;
@@ -213,7 +214,8 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
213214
try {
214215
eventCallback.onEvent(event);
215216
} catch (Throwable t) {
216-
LOG.warn("[{}] Unexpected error while invoking event handler", logPrefix, t);
217+
Loggers.warnWithException(
218+
LOG, "[{}] Unexpected error while invoking event handler", logPrefix, t);
217219
}
218220
}
219221
} else {
@@ -234,7 +236,8 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
234236
try {
235237
responseCallback.onResponse(responseFrame);
236238
} catch (Throwable t) {
237-
LOG.warn("[{}] Unexpected error while invoking response handler", logPrefix, t);
239+
Loggers.warnWithException(
240+
LOG, "[{}] Unexpected error while invoking response handler", logPrefix, t);
238241
}
239242
}
240243
}
@@ -252,10 +255,12 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable exception) thro
252255
try {
253256
responseCallback.onFailure(exception.getCause());
254257
} catch (Throwable t) {
255-
LOG.warn("[{}] Unexpected error while invoking failure handler", logPrefix, t);
258+
Loggers.warnWithException(
259+
LOG, "[{}] Unexpected error while invoking failure handler", logPrefix, t);
256260
}
257261
} else {
258-
LOG.warn(
262+
Loggers.warnWithException(
263+
LOG,
259264
"[{}] Unexpected error while decoding incoming event frame",
260265
logPrefix,
261266
exception.getCause());
@@ -384,7 +389,8 @@ void fail(String message, Throwable cause) {
384389
// keyspace switch fails, this could be due to a schema disagreement or a more serious
385390
// error. Rescheduling the switch is impractical, we can't do much better than closing the
386391
// channel and letting it reconnect.
387-
LOG.warn("[{}] Unexpected error while switching keyspace", logPrefix, setKeyspaceException);
392+
Loggers.warnWithException(
393+
LOG, "[{}] Unexpected error while switching keyspace", logPrefix, setKeyspaceException);
388394
abortAllInFlight(setKeyspaceException, this);
389395
ctx.channel().close();
390396
}

core/src/main/java/com/datastax/oss/driver/internal/core/config/typesafe/TypeSafeDriverConfig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.datastax.oss.driver.api.core.config.DriverConfig;
1919
import com.datastax.oss.driver.api.core.config.DriverConfigProfile;
2020
import com.datastax.oss.driver.api.core.config.DriverOption;
21+
import com.datastax.oss.driver.internal.core.util.Loggers;
2122
import com.google.common.base.Preconditions;
2223
import com.google.common.collect.ImmutableList;
2324
import com.google.common.collect.ImmutableMap;
@@ -94,7 +95,7 @@ public boolean reload(Config config) {
9495
}
9596
return true;
9697
} catch (Throwable t) {
97-
LOG.warn("Error reloading configuration, keeping previous one", t);
98+
Loggers.warnWithException(LOG, "Error reloading configuration, keeping previous one", t);
9899
return false;
99100
}
100101
}

core/src/main/java/com/datastax/oss/driver/internal/core/control/ControlConnection.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.datastax.oss.driver.internal.core.metadata.NodeStateEvent;
3030
import com.datastax.oss.driver.internal.core.metadata.TopologyEvent;
3131
import com.datastax.oss.driver.internal.core.metadata.TopologyMonitor;
32+
import com.datastax.oss.driver.internal.core.util.Loggers;
3233
import com.datastax.oss.driver.internal.core.util.concurrent.Reconnection;
3334
import com.datastax.oss.driver.internal.core.util.concurrent.RunOrSchedule;
3435
import com.datastax.oss.driver.internal.core.util.concurrent.UncaughtExceptions;
@@ -340,7 +341,8 @@ private void connect(
340341
onSuccess.run();
341342
}
342343
} catch (Exception e) {
343-
LOG.warn(
344+
Loggers.warnWithException(
345+
LOG,
344346
"[{}] Unexpected exception while processing channel init result",
345347
logPrefix,
346348
e);
@@ -366,7 +368,8 @@ private void onSuccessfulReconnect() {
366368
context.metadataManager().refreshSchema(null, false, true);
367369
// TODO avoid refreshing the token map twice
368370
} catch (Throwable t) {
369-
LOG.warn("[{}] Unexpected error on control connection reconnect", logPrefix, t);
371+
Loggers.warnWithException(
372+
LOG, "[{}] Unexpected error on control connection reconnect", logPrefix, t);
370373
}
371374
}
372375
});

core/src/main/java/com/datastax/oss/driver/internal/core/cql/CqlPrepareHandlerBase.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.datastax.oss.driver.internal.core.channel.ResponseCallback;
3636
import com.datastax.oss.driver.internal.core.context.InternalDriverContext;
3737
import com.datastax.oss.driver.internal.core.session.DefaultSession;
38+
import com.datastax.oss.driver.internal.core.util.Loggers;
3839
import com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures;
3940
import com.datastax.oss.protocol.internal.Frame;
4041
import com.datastax.oss.protocol.internal.Message;
@@ -122,7 +123,7 @@ protected CqlPrepareHandlerBase(
122123
cancelTimeout();
123124
}
124125
} catch (Throwable t2) {
125-
LOG.warn("[{}] Uncaught exception", logPrefix, t2);
126+
Loggers.warnWithException(LOG, "[{}] Uncaught exception", logPrefix, t2);
126127
}
127128
return null;
128129
});
@@ -419,7 +420,7 @@ public void cancel() {
419420
this.channel.cancel(this);
420421
}
421422
} catch (Throwable t) {
422-
LOG.warn("[{}] Error cancelling", logPrefix, t);
423+
Loggers.warnWithException(LOG, "[{}] Error cancelling", logPrefix, t);
423424
}
424425
}
425426

core/src/main/java/com/datastax/oss/driver/internal/core/cql/CqlRequestHandlerBase.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import com.datastax.oss.driver.internal.core.context.InternalDriverContext;
4444
import com.datastax.oss.driver.internal.core.session.DefaultSession;
4545
import com.datastax.oss.driver.internal.core.session.RepreparePayload;
46+
import com.datastax.oss.driver.internal.core.util.Loggers;
4647
import com.datastax.oss.protocol.internal.Frame;
4748
import com.datastax.oss.protocol.internal.Message;
4849
import com.datastax.oss.protocol.internal.ProtocolConstants;
@@ -150,7 +151,7 @@ protected CqlRequestHandlerBase(
150151
cancelScheduledTasks();
151152
}
152153
} catch (Throwable t2) {
153-
LOG.warn("[{}] Uncaught exception", logPrefix, t2);
154+
Loggers.warnWithException(LOG, "[{}] Uncaught exception", logPrefix, t2);
154155
}
155156
return null;
156157
});
@@ -559,7 +560,7 @@ public void cancel() {
559560
this.channel.cancel(this);
560561
}
561562
} catch (Throwable t) {
562-
LOG.warn("[{}] Error cancelling", logPrefix, t);
563+
Loggers.warnWithException(LOG, "[{}] Error cancelling", logPrefix, t);
563564
}
564565
}
565566

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata;
2323
import com.datastax.oss.driver.internal.core.metadata.token.DefaultTokenMap;
2424
import com.datastax.oss.driver.internal.core.metadata.token.TokenFactory;
25+
import com.datastax.oss.driver.internal.core.util.Loggers;
2526
import com.datastax.oss.driver.internal.core.util.NanoTime;
2627
import com.google.common.collect.ImmutableMap;
2728
import java.net.InetSocketAddress;
@@ -148,7 +149,8 @@ private Optional<TokenMap> rebuildTokenMap(
148149
return Optional.of(oldTokenMap.refresh(newNodes.values(), newKeyspaces.values()));
149150
}
150151
} catch (Throwable t) {
151-
LOG.warn(
152+
Loggers.warnWithException(
153+
LOG,
152154
"[{}] Unexpected error while refreshing token map, keeping previous version",
153155
logPrefix,
154156
t);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.datastax.oss.driver.internal.core.metadata.schema.queries.SchemaQueriesFactory;
2828
import com.datastax.oss.driver.internal.core.metadata.schema.queries.SchemaRows;
2929
import com.datastax.oss.driver.internal.core.metadata.schema.refresh.SchemaRefresh;
30+
import com.datastax.oss.driver.internal.core.util.Loggers;
3031
import com.datastax.oss.driver.internal.core.util.NanoTime;
3132
import com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures;
3233
import com.datastax.oss.driver.internal.core.util.concurrent.Debouncer;
@@ -370,7 +371,8 @@ private void startSchemaRequest(CompletableFuture<Metadata> future) {
370371
.whenComplete(
371372
(v, error) -> {
372373
if (error != null) {
373-
LOG.warn(
374+
Loggers.warnWithException(
375+
LOG,
374376
"[{}] Unexpected error while refreshing schema, skipping",
375377
logPrefix,
376378
error);

0 commit comments

Comments
 (0)