You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2021/10/11 17:08:48 UTC

[cassandra] branch cassandra-3.11 updated (939ab71 -> 9d28beb)

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

brandonwilliams pushed a change to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git.


    from 939ab71  Merge branch 'cassandra-3.0' into cassandra-3.11
     new 0e12b8d  Don't take snapshots when truncating system tables
     new 9d28beb  Merge branch 'cassandra-3.0' into cassandra-3.11

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGES.txt                                             |  1 +
 src/java/org/apache/cassandra/db/ColumnFamilyStore.java | 17 ++++++++++++++---
 src/java/org/apache/cassandra/db/SystemKeyspace.java    |  6 +++---
 3 files changed, 18 insertions(+), 6 deletions(-)

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


[cassandra] 01/01: Merge branch 'cassandra-3.0' into cassandra-3.11

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brandonwilliams pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 9d28bebde8028c506bb521a7beec7db60f0b9918
Merge: 939ab71 0e12b8d
Author: Brandon Williams <br...@apache.org>
AuthorDate: Mon Oct 11 12:00:46 2021 -0500

    Merge branch 'cassandra-3.0' into cassandra-3.11

 CHANGES.txt                                             |  1 +
 src/java/org/apache/cassandra/db/ColumnFamilyStore.java | 17 ++++++++++++++---
 src/java/org/apache/cassandra/db/SystemKeyspace.java    |  6 +++---
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --cc CHANGES.txt
index a40b226,ae88aaa..d43066e
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,15 -1,5 +1,16 @@@
 -3.0.26:
 +3.11.12
 + * Add key validation to ssstablescrub (CASSANDRA-16969)
 + * Update Jackson from 2.9.10 to 2.12.5 (CASSANDRA-16851)
 + * Include SASI components to snapshots (CASSANDRA-15134)
 + * Make assassinate more resilient to missing tokens (CASSANDRA-16847)
 + * Exclude Jackson 1.x transitive dependency of hadoop* provided dependencies (CASSANDRA-16854)
 + * Validate SASI tokenizer options before adding index to schema (CASSANDRA-15135)
 + * Fixup scrub output when no data post-scrub and clear up old use of row, which really means partition (CASSANDRA-16835)
 + * Fix ant-junit dependency issue (CASSANDRA-16827)
 + * Reduce thread contention in CommitLogSegment and HintsBuffer (CASSANDRA-16072)
 + * Avoid sending CDC column if not enabled (CASSANDRA-16770)
 +Merged from 3.0:
+  * Don't take snapshots when truncating system tables (CASSANDRA-16839)
   * Make -Dtest.methods consistently optional in all Ant test targets (CASSANDRA-17014)
   * Immediately apply stream throughput, considering negative values as unthrottled (CASSANDRA-16959)
   * Do not release new SSTables in offline transactions (CASSANDRA-16975)
diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 30cb400,e7c1868..4a74a2f
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@@ -2238,9 -2068,9 +2249,9 @@@ public class ColumnFamilyStore implemen
          viewManager.stopBuild();
  
          final long truncatedAt;
 -        final ReplayPosition replayAfter;
 +        final CommitLogPosition replayAfter;
  
-         if (keyspace.getMetadata().params.durableWrites || DatabaseDescriptor.isAutoSnapshot())
+         if (!noSnapshot && (keyspace.getMetadata().params.durableWrites || DatabaseDescriptor.isAutoSnapshot()))
          {
              replayAfter = forceBlockingFlush();
              viewManager.forceBlockingFlush();
@@@ -2270,8 -2100,8 +2281,8 @@@
              logger.debug("Discarding sstable data for truncated CF + indexes");
              data.notifyTruncated(truncatedAt);
  
-             if (DatabaseDescriptor.isAutoSnapshot())
+             if (!noSnapshot && DatabaseDescriptor.isAutoSnapshot())
 -                snapshot(Keyspace.getTimestampedSnapshotName(name));
 +                snapshot(Keyspace.getTimestampedSnapshotNameWithPrefix(name, SNAPSHOT_TRUNCATE_PREFIX));
  
              discardSSTables(truncatedAt);
  
diff --cc src/java/org/apache/cassandra/db/SystemKeyspace.java
index 4ab81ae,dc550df..ec26a69
--- a/src/java/org/apache/cassandra/db/SystemKeyspace.java
+++ b/src/java/org/apache/cassandra/db/SystemKeyspace.java
@@@ -1387,43 -1346,10 +1387,43 @@@ public final class SystemKeyspac
  
      public static void resetAvailableRanges()
      {
 -        ColumnFamilyStore availableRanges = Keyspace.open(NAME).getColumnFamilyStore(AVAILABLE_RANGES);
 +        ColumnFamilyStore availableRanges = Keyspace.open(SchemaConstants.SYSTEM_KEYSPACE_NAME).getColumnFamilyStore(AVAILABLE_RANGES);
-         availableRanges.truncateBlocking();
+         availableRanges.truncateBlockingWithoutSnapshot();
      }
  
 +    public static synchronized void updateTransferredRanges(String description,
 +                                                         InetAddress peer,
 +                                                         String keyspace,
 +                                                         Collection<Range<Token>> streamedRanges)
 +    {
 +        String cql = "UPDATE system.%s SET ranges = ranges + ? WHERE operation = ? AND peer = ? AND keyspace_name = ?";
 +        Set<ByteBuffer> rangesToUpdate = new HashSet<>(streamedRanges.size());
 +        for (Range<Token> range : streamedRanges)
 +        {
 +            rangesToUpdate.add(rangeToBytes(range));
 +        }
 +        executeInternal(String.format(cql, TRANSFERRED_RANGES), rangesToUpdate, description, peer, keyspace);
 +    }
 +
 +    public static synchronized Map<InetAddress, Set<Range<Token>>> getTransferredRanges(String description, String keyspace, IPartitioner partitioner)
 +    {
 +        Map<InetAddress, Set<Range<Token>>> result = new HashMap<>();
 +        String query = "SELECT * FROM system.%s WHERE operation = ? AND keyspace_name = ?";
 +        UntypedResultSet rs = executeInternal(String.format(query, TRANSFERRED_RANGES), description, keyspace);
 +        for (UntypedResultSet.Row row : rs)
 +        {
 +            InetAddress peer = row.getInetAddress("peer");
 +            Set<ByteBuffer> rawRanges = row.getSet("ranges", BytesType.instance);
 +            Set<Range<Token>> ranges = Sets.newHashSetWithExpectedSize(rawRanges.size());
 +            for (ByteBuffer rawRange : rawRanges)
 +            {
 +                ranges.add(byteBufferToRange(rawRange, partitioner));
 +            }
 +            result.put(peer, ranges);
 +        }
 +        return ImmutableMap.copyOf(result);
 +    }
 +
      /**
       * Compare the release version in the system.local table with the one included in the distro.
       * If they don't match, snapshot all tables in the system keyspace. This is intended to be
@@@ -1558,37 -1482,4 +1558,37 @@@
          }
      }
  
 +    public static void writePreparedStatement(String loggedKeyspace, MD5Digest key, String cql)
 +    {
 +        executeInternal(String.format("INSERT INTO %s.%s"
 +                                      + " (logged_keyspace, prepared_id, query_string) VALUES (?, ?, ?)",
 +                                      SchemaConstants.SYSTEM_KEYSPACE_NAME, PREPARED_STATEMENTS),
 +                        loggedKeyspace, key.byteBuffer(), cql);
 +        logger.debug("stored prepared statement for logged keyspace '{}': '{}'", loggedKeyspace, cql);
 +    }
 +
 +    public static void removePreparedStatement(MD5Digest key)
 +    {
 +        executeInternal(String.format("DELETE FROM %s.%s"
 +                                      + " WHERE prepared_id = ?",
 +                                      SchemaConstants.SYSTEM_KEYSPACE_NAME, PREPARED_STATEMENTS),
 +                        key.byteBuffer());
 +    }
 +
 +    public static void resetPreparedStatements()
 +    {
-         ColumnFamilyStore availableRanges = Keyspace.open(SchemaConstants.SYSTEM_KEYSPACE_NAME).getColumnFamilyStore(PREPARED_STATEMENTS);
-         availableRanges.truncateBlocking();
++        ColumnFamilyStore preparedStatements = Keyspace.open(SchemaConstants.SYSTEM_KEYSPACE_NAME).getColumnFamilyStore(PREPARED_STATEMENTS);
++        preparedStatements.truncateBlockingWithoutSnapshot();
 +    }
 +
 +    public static List<Pair<String, String>> loadPreparedStatements()
 +    {
 +        String query = String.format("SELECT logged_keyspace, query_string FROM %s.%s", SchemaConstants.SYSTEM_KEYSPACE_NAME, PREPARED_STATEMENTS);
 +        UntypedResultSet resultSet = executeOnceInternal(query);
 +        List<Pair<String, String>> r = new ArrayList<>();
 +        for (UntypedResultSet.Row row : resultSet)
 +            r.add(Pair.create(row.has("logged_keyspace") ? row.getString("logged_keyspace") : null,
 +                              row.getString("query_string")));
 +        return r;
 +    }
  }

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