maedhroz commented on code in PR #2961:
URL: https://github.com/apache/cassandra/pull/2961#discussion_r1420774687


##########
src/java/org/apache/cassandra/service/reads/thresholds/WarningsSnapshot.java:
##########
@@ -83,58 +98,79 @@ WarningsSnapshot merge(WarningsSnapshot other)
     {
         if (other == null || other == EMPTY)
             return this;
-        return WarningsSnapshot.create(tombstones.merge(other.tombstones), 
localReadSize.merge(other.localReadSize), 
rowIndexReadSize.merge(other.rowIndexReadSize));
+        return WarningsSnapshot.create(tombstones.merge(other.tombstones),
+                                       
localReadSize.merge(other.localReadSize),
+                                       
rowIndexReadSize.merge(other.rowIndexReadSize),
+                                       
indexReadSSTablesCount.merge(other.indexReadSSTablesCount));
     }
 
     public void maybeAbort(ReadCommand command, ConsistencyLevel cl, int 
received, int blockFor, boolean isDataPresent, Map<InetAddressAndPort, 
RequestFailureReason> failureReasonByEndpoint)
     {
         if (!tombstones.aborts.instances.isEmpty())
-            throw new 
TombstoneAbortException(tombstones.aborts.instances.size(), 
tombstones.aborts.maxValue, command.toCQLString(), isDataPresent,
+            throw new 
TombstoneAbortException(tombstoneAbortMessage(tombstones.aborts.instances, 
tombstones.aborts.maxValue, command.toCQLString()), 
tombstones.aborts.instances.size(), tombstones.aborts.maxValue, isDataPresent,
                                               cl, received, blockFor, 
failureReasonByEndpoint);
 
         if (!localReadSize.aborts.instances.isEmpty())
-            throw new 
ReadSizeAbortException(localReadSizeAbortMessage(localReadSize.aborts.instances.size(),
 localReadSize.aborts.maxValue, command.toCQLString()),
+            throw new 
ReadSizeAbortException(localReadSizeAbortMessage(localReadSize.aborts.instances,
 localReadSize.aborts.maxValue, command.toCQLString()),
                                              cl, received, blockFor, 
isDataPresent, failureReasonByEndpoint);
 
         if (!rowIndexReadSize.aborts.instances.isEmpty())
-            throw new 
ReadSizeAbortException(rowIndexReadSizeAbortMessage(rowIndexReadSize.aborts.instances.size(),
 rowIndexReadSize.aborts.maxValue, command.toCQLString()),
+            throw new 
ReadSizeAbortException(rowIndexReadSizeAbortMessage(rowIndexReadSize.aborts.instances,
 rowIndexReadSize.aborts.maxValue, command.toCQLString()),
                                              cl, received, blockFor, 
isDataPresent, failureReasonByEndpoint);
+
+        if (!indexReadSSTablesCount.aborts.instances.isEmpty())
+            throw new 
QueryReferencesTooManyIndexesAbortException(tooManyIndexesReadAbortMessage(indexReadSSTablesCount.aborts.instances,
 indexReadSSTablesCount.aborts.maxValue, command.toCQLString()),
+                                                                  cl, 
received, blockFor, isDataPresent, failureReasonByEndpoint);
     }
 
     @VisibleForTesting
-    public static String tombstoneAbortMessage(int nodes, long tombstones, 
String cql)
+    public static String 
tombstoneAbortMessage(ImmutableSet<InetAddressAndPort> nodes, long tombstones, 
String cql)
     {
         return String.format("%s nodes scanned over %s tombstones and aborted 
the query %s (see tombstone_failure_threshold)", nodes, tombstones, cql);
     }
 
     @VisibleForTesting
-    public static String tombstoneWarnMessage(int nodes, long tombstones, 
String cql)
+    public static String tombstoneWarnMessage(ImmutableSet<InetAddressAndPort> 
nodes, long tombstones, String cql)
     {
-        return String.format("%s nodes scanned up to %s tombstones and issued 
tombstone warnings for query %s  (see tombstone_warn_threshold)", nodes, 
tombstones, cql);
+        return String.format("%s nodes scanned up to %s tombstones and issued 
tombstone warnings for query %s (see tombstone_warn_threshold)", nodes, 
tombstones, cql);
     }
 
     @VisibleForTesting
-    public static String localReadSizeAbortMessage(long nodes, long bytes, 
String cql)
+    public static String 
localReadSizeAbortMessage(ImmutableSet<InetAddressAndPort> nodes, long bytes, 
String cql)
     {
         return String.format("%s nodes loaded over %s bytes and aborted the 
query %s (see local_read_size_fail_threshold)", nodes, bytes, cql);
     }
 
     @VisibleForTesting
-    public static String localReadSizeWarnMessage(int nodes, long bytes, 
String cql)
+    public static String 
localReadSizeWarnMessage(ImmutableSet<InetAddressAndPort> nodes, long bytes, 
String cql)
     {
-        return String.format("%s nodes loaded over %s bytes and issued local 
read size warnings for query %s  (see local_read_size_warn_threshold)", nodes, 
bytes, cql);
+        return String.format("%s nodes loaded over %s bytes and issued local 
read size warnings for query %s (see local_read_size_warn_threshold)", nodes, 
bytes, cql);
     }
 
     @VisibleForTesting
-    public static String rowIndexReadSizeAbortMessage(long nodes, long bytes, 
String cql)
+    public static String 
rowIndexReadSizeAbortMessage(ImmutableSet<InetAddressAndPort> nodes, long 
bytes, String cql)
     {
         return String.format("%s nodes loaded over %s bytes in RowIndexEntry 
and aborted the query %s (see row_index_size_fail_threshold)", nodes, bytes, 
cql);
     }
 
     @VisibleForTesting
-    public static String rowIndexSizeWarnMessage(int nodes, long bytes, String 
cql)
+    public static String 
rowIndexSizeWarnMessage(ImmutableSet<InetAddressAndPort> nodes, long bytes, 
String cql)
+    {
+        return String.format("%s nodes loaded over %s bytes in RowIndexEntry 
and issued warnings for query %s (see row_index_size_warn_threshold)", nodes, 
bytes, cql);
+    }
+
+    @VisibleForTesting
+    public static String 
tooManyIndexesReadWarnMessage(ImmutableSet<InetAddressAndPort> nodes, long 
value, String cql)

Review Comment:
   see https://github.com/apache/cassandra/pull/2961#discussion_r1420774359



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to