Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 f967257e4 -> 270e98626


Avoid building PartitionUpdate in toString()

Patch by Tyler Hobbs; reviewed by Benjamin Lerer for CASSANDRA-10897


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/270e9862
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/270e9862
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/270e9862

Branch: refs/heads/cassandra-3.0
Commit: 270e986264392b1ea10689768dcbb9403e449fd9
Parents: f967257
Author: Tyler Hobbs <[email protected]>
Authored: Tue Dec 22 10:46:26 2015 -0600
Committer: Tyler Hobbs <[email protected]>
Committed: Tue Dec 22 10:46:26 2015 -0600

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../db/partitions/PartitionUpdate.java          | 22 ++++++++++++++++++++
 2 files changed, 23 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/270e9862/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ff139c4..e83e46e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * Avoid building PartitionUpdate in toString (CASSANDRA-10897)
  * Reduce heap spent when receiving many SSTables (CASSANDRA-10797)
  * Add back support for 3rd party auth providers to bulk loader 
(CASSANDRA-10873)
  * Eliminate the dependency on jgrapht for UDT resolution (CASSANDRA-10653)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/270e9862/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java 
b/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
index 52f8f67..f10b3b6 100644
--- a/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
+++ b/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java
@@ -581,6 +581,28 @@ public class PartitionUpdate extends AbstractBTreePartition
         isBuilt = true;
     }
 
+    @Override
+    public String toString()
+    {
+        if (isBuilt)
+            return super.toString();
+
+        // We intentionally override AbstractBTreePartition#toString() to 
avoid iterating over the rows in the
+        // partition, which can result in build() being triggered and lead to 
errors if the PartitionUpdate is later
+        // modified.
+
+        StringBuilder sb = new StringBuilder();
+        sb.append(String.format("[%s.%s] key=%s columns=%s",
+                                metadata.ksName,
+                                metadata.cfName,
+                                
metadata.getKeyValidator().getString(partitionKey().getKey()),
+                                columns()));
+
+        sb.append("\n    deletionInfo=").append(deletionInfo);
+        sb.append(" (not built)");
+        return sb.toString();
+    }
+
     public static class PartitionUpdateSerializer
     {
         public void serialize(PartitionUpdate update, DataOutputPlus out, int 
version) throws IOException

Reply via email to