This is an automated email from the ASF dual-hosted git repository.

edimitrova pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 0b60c8f  Fix timestamp issue in SinglePartitionSliceCommandTest 
testPartitionDeletionRowDeletionTie
0b60c8f is described below

commit 0b60c8f37694d44482768ebc327989f7a42c8c08
Author: Benjamin Lerer <b.le...@gmail.com>
AuthorDate: Fri Feb 19 18:00:13 2021 +0100

    Fix timestamp issue in SinglePartitionSliceCommandTest 
testPartitionDeletionRowDeletionTie
    
    Patch by Benjamin Lerer; reviewed by Ekaterina Dimitrova and Berenguer 
Blasi for CASSANDRA-16443
---
 CHANGES.txt                                        |  1 +
 .../org/apache/cassandra/cql3/QueryProcessor.java  | 22 +++++++++++++++++++---
 .../db/SinglePartitionSliceCommandTest.java        | 12 ++++++++++--
 3 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index c2abba7..dbfa272 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.0-beta5
+ * Fix timestamp issue in SinglePartitionSliceCommandTest 
testPartitionD…eletionRowDeletionTie (CASSANDRA-16443)
  * Promote protocol V5 out of beta (CASSANDRA-14973)
  * Fix incorrect encoding for strings can be UTF8 (CASSANDRA-16429)
  * Fix node unable to join when RF > N in multi-DC with added warning 
(CASSANDRA-16296)
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java 
b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index c92718d..87829ab 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -368,9 +368,25 @@ public class QueryProcessor implements QueryHandler
      */
     public static UntypedResultSet executeOnceInternal(String query, Object... 
values)
     {
-        CQLStatement statement = parseStatement(query, 
internalQueryState().getClientState());
-        statement.validate(internalQueryState().getClientState());
-        ResultMessage result = statement.executeLocally(internalQueryState(), 
makeInternalOptions(statement, values));
+        return executeOnceInternal(internalQueryState(), query, values);
+    }
+
+    /**
+     * Execute an internal query with the provided {@code nowInSec} and {@code 
timestamp} for the {@code QueryState}.
+     * <p>This method ensure that the statement will not be cached in the 
prepared statement cache.</p>
+     */
+    @VisibleForTesting
+    public static UntypedResultSet executeOnceInternalWithNowAndTimestamp(int 
nowInSec, long timestamp, String query, Object... values)
+    {
+        QueryState queryState = new 
QueryState(InternalStateInstance.INSTANCE.clientState, timestamp, nowInSec);
+        return executeOnceInternal(queryState, query, values);
+    }
+
+    private static UntypedResultSet executeOnceInternal(QueryState queryState, 
String query, Object... values)
+    {
+        CQLStatement statement = parseStatement(query, 
queryState.getClientState());
+        statement.validate(queryState.getClientState());
+        ResultMessage result = statement.executeLocally(queryState, 
makeInternalOptions(statement, values));
         if (result instanceof ResultMessage.Rows)
             return 
UntypedResultSet.create(((ResultMessage.Rows)result).result);
         else
diff --git 
a/test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java 
b/test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java
index 12168ec..102eb90 100644
--- a/test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java
+++ b/test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java
@@ -343,10 +343,18 @@ public class SinglePartitionSliceCommandTest
         BiFunction<Boolean, Boolean, List<Unfiltered>> tester = (flush, 
multiSSTable)->
         {
             cfs.truncateBlocking();
-            QueryProcessor.executeOnceInternal("DELETE FROM 
ks.partition_row_deletion USING TIMESTAMP 10 WHERE k=1");
+
+            final long timestamp = FBUtilities.timestampMicros();
+            final int nowInSec = FBUtilities.nowInSeconds();
+
+            QueryProcessor.executeOnceInternalWithNowAndTimestamp(nowInSec,
+                                                                  timestamp,
+                                                                  "DELETE FROM 
ks.partition_row_deletion USING TIMESTAMP 10 WHERE k=1");
             if (flush && multiSSTable)
                 cfs.forceBlockingFlush();
-            QueryProcessor.executeOnceInternal("DELETE FROM 
ks.partition_row_deletion USING TIMESTAMP 10 WHERE k=1 and c=1");
+            QueryProcessor.executeOnceInternalWithNowAndTimestamp(nowInSec,
+                                                                  timestamp,
+                                                                  "DELETE FROM 
ks.partition_row_deletion USING TIMESTAMP 10 WHERE k=1 and c=1");
             if (flush)
                 cfs.forceBlockingFlush();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to