This is an automated email from the ASF dual-hosted git repository.
bbotella pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-sidecar.git
The following commit(s) were added to refs/heads/trunk by this push:
new db336d976 CASSSIDECAR-502: Connected client stats endpoint returns 500
when sidecar schema is disabled (#387)
db336d976 is described below
commit db336d9764e16efd99bf5491f9c46c2794864063
Author: Arvind Kandpal <[email protected]>
AuthorDate: Wed Oct 7 13:50:32 2026 +0530
CASSSIDECAR-502: Connected client stats endpoint returns 500 when sidecar
schema is disabled (#387)
---
.../base/db/ConnectedClientStatsDatabaseAccessor.java | 15 +++++++++++++--
.../adapters/base/CassandraMetricsOperationsTest.java | 14 ++++++++++++++
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git
a/adapters/adapters-base/src/main/java/org/apache/cassandra/sidecar/adapters/base/db/ConnectedClientStatsDatabaseAccessor.java
b/adapters/adapters-base/src/main/java/org/apache/cassandra/sidecar/adapters/base/db/ConnectedClientStatsDatabaseAccessor.java
index f465c9d4f..3c44b9258 100644
---
a/adapters/adapters-base/src/main/java/org/apache/cassandra/sidecar/adapters/base/db/ConnectedClientStatsDatabaseAccessor.java
+++
b/adapters/adapters-base/src/main/java/org/apache/cassandra/sidecar/adapters/base/db/ConnectedClientStatsDatabaseAccessor.java
@@ -24,6 +24,7 @@ import java.util.stream.StreamSupport;
import com.datastax.driver.core.BoundStatement;
import com.datastax.driver.core.ResultSet;
import
org.apache.cassandra.sidecar.adapters.base.db.schema.ConnectedClientsSchema;
+import
org.apache.cassandra.sidecar.adapters.base.exception.OperationUnavailableException;
import org.apache.cassandra.sidecar.common.server.ICassandraAdapter;
import org.apache.cassandra.sidecar.common.utils.Preconditions;
import org.apache.cassandra.sidecar.db.LocalDatabaseAccessor;
@@ -45,7 +46,7 @@ public class ConnectedClientStatsDatabaseAccessor extends
LocalDatabaseAccessor<
*/
public ConnectedClientStatsSummary summary()
{
- Preconditions.checkState(tableSchema.isInitialized(), () ->
tableSchema.getClass().getSimpleName() + " is not initialized yet");
+ ensureSchemaAvailable();
BoundStatement statement = tableSchema.connectionsByUser().bind();
ResultSet resultSet = execute(statement);
return ConnectedClientStatsSummary.from(resultSet);
@@ -57,10 +58,20 @@ public class ConnectedClientStatsDatabaseAccessor extends
LocalDatabaseAccessor<
*/
public Stream<ConnectedClientStats> stats()
{
- Preconditions.checkState(tableSchema.isInitialized(), () ->
tableSchema.getClass().getSimpleName() + " is not initialized yet");
+ ensureSchemaAvailable();
BoundStatement statement = tableSchema.stats().bind();
ResultSet resultSet = execute(statement);
return StreamSupport.stream(resultSet.spliterator(), false)
.map(ConnectedClientStats::from);
}
+
+ private void ensureSchemaAvailable()
+ {
+ // Null when sidecar schema is disabled
+ if (tableSchema == null)
+ {
+ throw new OperationUnavailableException("Sidecar schema is
required for the operation but it is disabled");
+ }
+ Preconditions.checkState(tableSchema.isInitialized(), () ->
tableSchema.getClass().getSimpleName() + " is not initialized yet");
+ }
}
diff --git
a/adapters/adapters-base/src/test/java/org/apache/cassandra/sidecar/adapters/base/CassandraMetricsOperationsTest.java
b/adapters/adapters-base/src/test/java/org/apache/cassandra/sidecar/adapters/base/CassandraMetricsOperationsTest.java
index 08a2d751d..d153f8191 100644
---
a/adapters/adapters-base/src/test/java/org/apache/cassandra/sidecar/adapters/base/CassandraMetricsOperationsTest.java
+++
b/adapters/adapters-base/src/test/java/org/apache/cassandra/sidecar/adapters/base/CassandraMetricsOperationsTest.java
@@ -21,6 +21,7 @@ package org.apache.cassandra.sidecar.adapters.base;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import
org.apache.cassandra.sidecar.adapters.base.exception.OperationUnavailableException;
import
org.apache.cassandra.sidecar.adapters.base.jmx.CounterMetricsJmxOperations;
import
org.apache.cassandra.sidecar.adapters.base.jmx.GaugeMetricsJmxOperations;
import
org.apache.cassandra.sidecar.adapters.base.jmx.MeterMetricsJmxOperations;
@@ -123,4 +124,17 @@ class CassandraMetricsOperationsTest
.isInstanceOf(RuntimeException.class)
.hasMessage("JMX connection failed");
}
+
+ @Test
+ void testConnectedClientStatsFailureSchemaDisabled()
+ {
+ // TableSchemaFetcher mock returns a null schema, as when sidecar
schema is disabled
+ assertThatThrownBy(() -> metricsOperations.connectedClientStats(true))
+ .isInstanceOf(OperationUnavailableException.class)
+ .hasMessage("Sidecar schema is required for the operation but it is
disabled");
+
+ assertThatThrownBy(() -> metricsOperations.connectedClientStats(false))
+ .isInstanceOf(OperationUnavailableException.class)
+ .hasMessage("Sidecar schema is required for the operation but it is
disabled");
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]