From f21dff0d0345cc49759083d62bc8388d98440728 Mon Sep 17 00:00:00 2001 From: Dmitry Kropachev Date: Mon, 7 Apr 2025 07:55:05 -0400 Subject: [PATCH] Fix metadata events for case when tablet map is empty Tablet map could be empty, we need to address these cases. --- .../oss/driver/internal/core/metadata/AddTabletRefresh.java | 4 +++- .../oss/driver/internal/core/metadata/RemoveNodeRefresh.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/AddTabletRefresh.java b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/AddTabletRefresh.java index 92f6463f60e..a53d0a5b154 100644 --- a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/AddTabletRefresh.java +++ b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/AddTabletRefresh.java @@ -20,7 +20,9 @@ public AddTabletRefresh(CqlIdentifier keyspace, CqlIdentifier table, Tablet tabl @Override public Result compute( DefaultMetadata oldMetadata, boolean tokenMapEnabled, InternalDriverContext context) { - oldMetadata.tabletMap.addTablet(keyspace, table, tablet); + if (oldMetadata.tabletMap != null) { + oldMetadata.tabletMap.addTablet(keyspace, table, tablet); + } return new Result(oldMetadata); } } diff --git a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/RemoveNodeRefresh.java b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/RemoveNodeRefresh.java index 63ffd33b5c4..993f304716f 100644 --- a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/RemoveNodeRefresh.java +++ b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/RemoveNodeRefresh.java @@ -67,7 +67,9 @@ public Result compute( return new Result(oldMetadata); } else { LOG.debug("[{}] Removing node {}", logPrefix, removedNode); - oldMetadata.tabletMap.removeByNode(removedNode); + if (oldMetadata.tabletMap != null) { + oldMetadata.tabletMap.removeByNode(removedNode); + } return new Result( oldMetadata.withNodes(newNodesBuilder.build(), tokenMapEnabled, false, null, context), ImmutableList.of(NodeStateEvent.removed((DefaultNode) removedNode)));