This is an automated email from the ASF dual-hosted git repository.
kenhuuu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master by this push:
new 8425f2d24c Improve logging in server and Java driver CTR.
8425f2d24c is described below
commit 8425f2d24c498662a1ddeef282996d40d470577b
Author: Ken Hu <[email protected]>
AuthorDate: Fri Jul 17 16:37:22 2026 -0700
Improve logging in server and Java driver CTR.
Assisted-by: Claude Code:claude-opus-4-8
---
.../gremlin/driver/handler/HttpStreamingResponseHandler.java | 3 +++
.../tinkerpop/gremlin/driver/remote/HttpRemoteTransaction.java | 2 +-
.../gremlin/server/handler/HttpBasicAuthorizationHandler.java | 2 ++
.../gremlin/server/handler/HttpGremlinEndpointHandler.java | 4 +++-
.../tinkerpop/gremlin/server/handler/HttpHandlerUtil.java | 10 +++++++++-
.../gremlin/server/transaction/TransactionManager.java | 6 ++++--
.../gremlin/server/transaction/UnmanagedTransaction.java | 6 ++++--
7 files changed, 26 insertions(+), 7 deletions(-)
diff --git
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/HttpStreamingResponseHandler.java
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/HttpStreamingResponseHandler.java
index b433bf8bf8..8a56186d4a 100644
---
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/HttpStreamingResponseHandler.java
+++
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/handler/HttpStreamingResponseHandler.java
@@ -141,6 +141,9 @@ public class HttpStreamingResponseHandler extends
MessageToMessageDecoder<HttpOb
try {
readerPool.submit(streamReader::run);
} catch (RejectedExecutionException e) {
+ logger.warn("Failed to schedule streaming response
reader for channel {} with status {} " +
+ "and content type {}",
+ ctx.channel().id().asShortText(),
responseStatus, contentType, e);
queueInputStream.signalEndOfStream();
rs.markError(e);
pendingResultSet.compareAndSet(rs, null);
diff --git
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/HttpRemoteTransaction.java
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/HttpRemoteTransaction.java
index 5b12b84e1f..b8b7c2f710 100644
---
a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/HttpRemoteTransaction.java
+++
b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/HttpRemoteTransaction.java
@@ -211,7 +211,7 @@ public class HttpRemoteTransaction implements
RemoteTransaction {
submitInternal(closeScript).all().get(CLOSING_MAX_WAIT_MS,
TimeUnit.MILLISECONDS);
cleanUp();
} catch (Exception e) {
- logger.warn("Failed to {} transaction on {}", closeScript,
pinnedHost);
+ logger.warn("Failed to {} transaction {} on {}", closeScript,
transactionId, pinnedHost, e);
throw new TransactionException("Failed to " + closeScript, e);
}
}
diff --git
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpBasicAuthorizationHandler.java
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpBasicAuthorizationHandler.java
index f63fd82c84..30787e9fed 100644
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpBasicAuthorizationHandler.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpBasicAuthorizationHandler.java
@@ -84,6 +84,8 @@ public class HttpBasicAuthorizationHandler extends
ChannelInboundHandlerAdapter
} catch (Exception ex) {
final String message = String.format(
"%s is not ready to handle requests - unknown error",
authorizer.getClass().getSimpleName());
+ logger.error("Unexpected error authorizing HTTP request for
user {} with {}", user.getName(),
+ authorizer.getClass().getSimpleName(), ex);
HttpHandlerUtil.sendError(ctx, INTERNAL_SERVER_ERROR, message);
ReferenceCountUtil.release(msg);
}
diff --git
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
index 01df7e9297..42a4fe2ad3 100644
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
@@ -432,7 +432,7 @@ public class HttpGremlinEndpointHandler extends
SimpleChannelInboundHandler<Requ
return GremlinError.parsing((GremlinParserException) t);
}
- logger.warn(String.format("Exception processing request [%s].",
requestMessage));
+ logger.warn("Exception processing request [{}].", requestMessage, t);
return GremlinError.general(t);
}
@@ -543,6 +543,8 @@ public class HttpGremlinEndpointHandler extends
SimpleChannelInboundHandler<Requ
} catch (UnsupportedOperationException uoe) {
throw new
ProcessingException(GremlinError.transactionNotSupported(uoe));
} catch (ExecutionException | TimeoutException e) {
+ logger.warn("Unable to start transaction {} for source {}",
+ txCtx == null ? "<unassigned>" : txCtx.getTransactionId(),
traversalSourceName, e);
throw new
ProcessingException(GremlinError.transactionUnableToStart(e.getMessage()));
} finally {
if (closeTransactionOnFailure && txCtx != null) txCtx.close(false);
diff --git
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpHandlerUtil.java
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpHandlerUtil.java
index 8a4d5e316a..372596be45 100644
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpHandlerUtil.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpHandlerUtil.java
@@ -62,7 +62,15 @@ public class HttpHandlerUtil {
*/
public static void sendError(final ChannelHandlerContext ctx, final
HttpResponseStatus status, final String message,
final CharSequence... headers) {
- logger.warn(String.format("Invalid request - responding with %s and
%s", status, message));
+ // Server errors (5xx) are logged at WARN since they signal a problem
with the server itself. Client errors
+ // (4xx and other non-5xx) are expected during normal operation - bad
credentials, favicon probes, unsupported
+ // methods, malformed requests - so they log at DEBUG to avoid
flooding the log with routine client mistakes
+ // while remaining available for diagnosis when needed.
+ if (status.code() >= 500) {
+ logger.warn("Invalid request - responding with {} and {}", status,
message);
+ } else if (logger.isDebugEnabled()) {
+ logger.debug("Invalid request - responding with {} and {}",
status, message);
+ }
errorMeter.mark();
final ObjectNode node = mapper.createObjectNode();
diff --git
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/TransactionManager.java
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/TransactionManager.java
index 50c9952f32..40f228398f 100644
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/TransactionManager.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/TransactionManager.java
@@ -92,6 +92,8 @@ public class TransactionManager {
*/
public UnmanagedTransaction create(final String traversalSourceName) {
if (transactions.size() >= maxConcurrentTransactions) {
+ logger.warn("Rejecting new transaction for source {} because
active transaction count {} reached max {}",
+ traversalSourceName, transactions.size(),
maxConcurrentTransactions);
throw new IllegalStateException(
"Maximum concurrent transactions exceeded (" +
maxConcurrentTransactions + ")");
}
@@ -195,8 +197,8 @@ public class TransactionManager {
try {
transaction.close(false);
} catch (Exception e) {
- logger.warn("Error rolling back transaction {} during
shutdown: {}",
- transaction.getTransactionId(), e.getMessage());
+ logger.warn("Error rolling back transaction {} during
shutdown",
+ transaction.getTransactionId(), e);
}
});
diff --git
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/UnmanagedTransaction.java
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/UnmanagedTransaction.java
index 852d9ba997..d49fe1dc03 100644
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/UnmanagedTransaction.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/transaction/UnmanagedTransaction.java
@@ -239,7 +239,8 @@ public class UnmanagedTransaction {
idleFuture.updateAndGet(future -> {
if (future != null) future.cancel(false);
return scheduledExecutorService.schedule(() -> {
- logger.info("Transaction {} timed out after {} ms of
inactivity", transactionId, idleTimeout);
+ logger.info("Transaction {} for source {} timed out after {}
ms of inactivity",
+ transactionId, traversalSourceName, idleTimeout);
close(false);
}, idleTimeout, TimeUnit.MILLISECONDS);
});
@@ -273,7 +274,8 @@ public class UnmanagedTransaction {
running.future.cancel(true);
// interrupt only the running op
}
- logger.warn("Transaction {} exceeded its maximum lifetime and is being
closed", transactionId);
+ logger.warn("Transaction {} for source {} exceeded its maximum
lifetime and is being closed",
+ transactionId, traversalSourceName);
close(false);
}