You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ty...@apache.org on 2016/05/18 20:18:26 UTC
[1/3] cassandra git commit: Freeze UDTs and nested UDTs/collections
during schema upgrade
Repository: cassandra
Updated Branches:
refs/heads/trunk 0f483d8ff -> 5bdf3184b
Freeze UDTs and nested UDTs/collections during schema upgrade
Patch by Tyler Hobbs; reviewed by Benjamin Lerer for CASSANDRA-11613
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dee84ccc
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dee84ccc
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dee84ccc
Branch: refs/heads/trunk
Commit: dee84ccc59bc5ce76e568bf94ab70c772c079041
Parents: c17cbe1
Author: Tyler Hobbs <ty...@gmail.com>
Authored: Wed May 18 15:15:35 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Wed May 18 15:15:35 2016 -0500
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../org/apache/cassandra/db/marshal/AbstractType.java | 8 ++++----
src/java/org/apache/cassandra/db/marshal/ListType.java | 11 +++++++----
src/java/org/apache/cassandra/db/marshal/MapType.java | 13 ++++++++-----
src/java/org/apache/cassandra/db/marshal/SetType.java | 11 +++++++----
src/java/org/apache/cassandra/db/marshal/UserType.java | 5 ++++-
.../apache/cassandra/schema/LegacySchemaMigrator.java | 9 ++++++---
7 files changed, 38 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dee84ccc/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 1690e09..a2b472a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
3.6
+ * Correctly migrate schema for frozen UDTs during 2.x -> 3.x upgrades
+ (does not affect any released versions) (CASSANDRA-11613)
* Allow server startup if JMX is configured directly (CASSANDRA-11725)
* Prevent direct memory OOM on buffer pool allocations (CASSANDRA-11710)
* Enhanced Compaction Logging (CASSANDRA-10805)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dee84ccc/src/java/org/apache/cassandra/db/marshal/AbstractType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/AbstractType.java b/src/java/org/apache/cassandra/db/marshal/AbstractType.java
index fc4ec3b..af2cc07 100644
--- a/src/java/org/apache/cassandra/db/marshal/AbstractType.java
+++ b/src/java/org/apache/cassandra/db/marshal/AbstractType.java
@@ -333,14 +333,14 @@ public abstract class AbstractType<T> implements Comparator<ByteBuffer>
}
/**
- * Returns an AbstractType instance that is equivalent to this one, but with all nested UDTs explicitly frozen and
- * all collections in UDTs explicitly frozen.
+ * Returns an AbstractType instance that is equivalent to this one, but with all nested UDTs and collections
+ * explicitly frozen.
*
* This is only necessary for {@code 2.x -> 3.x} schema migrations, and can be removed in Cassandra 4.0.
*
- * See CASSANDRA-11609
+ * See CASSANDRA-11609 and CASSANDRA-11613.
*/
- public AbstractType<?> freezeNestedUDTs()
+ public AbstractType<?> freezeNestedMulticellTypes()
{
return this;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dee84ccc/src/java/org/apache/cassandra/db/marshal/ListType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/ListType.java b/src/java/org/apache/cassandra/db/marshal/ListType.java
index b3fc4f5..ed843b1 100644
--- a/src/java/org/apache/cassandra/db/marshal/ListType.java
+++ b/src/java/org/apache/cassandra/db/marshal/ListType.java
@@ -110,12 +110,15 @@ public class ListType<T> extends CollectionType<List<T>>
}
@Override
- public AbstractType<?> freezeNestedUDTs()
+ public AbstractType<?> freezeNestedMulticellTypes()
{
- if (elements.isUDT() && elements.isMultiCell())
+ if (!isMultiCell())
+ return this;
+
+ if (elements.isFreezable() && elements.isMultiCell())
return getInstance(elements.freeze(), isMultiCell);
- else
- return getInstance(elements.freezeNestedUDTs(), isMultiCell);
+
+ return getInstance(elements.freezeNestedMulticellTypes(), isMultiCell);
}
@Override
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dee84ccc/src/java/org/apache/cassandra/db/marshal/MapType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/MapType.java b/src/java/org/apache/cassandra/db/marshal/MapType.java
index 3c5af99..d5cf959 100644
--- a/src/java/org/apache/cassandra/db/marshal/MapType.java
+++ b/src/java/org/apache/cassandra/db/marshal/MapType.java
@@ -117,15 +117,18 @@ public class MapType<K, V> extends CollectionType<Map<K, V>>
}
@Override
- public AbstractType<?> freezeNestedUDTs()
+ public AbstractType<?> freezeNestedMulticellTypes()
{
- AbstractType<?> keyType = (keys.isUDT() && keys.isMultiCell())
+ if (!isMultiCell())
+ return this;
+
+ AbstractType<?> keyType = (keys.isFreezable() && keys.isMultiCell())
? keys.freeze()
- : keys.freezeNestedUDTs();
+ : keys.freezeNestedMulticellTypes();
- AbstractType<?> valueType = (values.isUDT() && values.isMultiCell())
+ AbstractType<?> valueType = (values.isFreezable() && values.isMultiCell())
? values.freeze()
- : values.freezeNestedUDTs();
+ : values.freezeNestedMulticellTypes();
return getInstance(keyType, valueType, isMultiCell);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dee84ccc/src/java/org/apache/cassandra/db/marshal/SetType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/SetType.java b/src/java/org/apache/cassandra/db/marshal/SetType.java
index 46c0741..98f9f7e 100644
--- a/src/java/org/apache/cassandra/db/marshal/SetType.java
+++ b/src/java/org/apache/cassandra/db/marshal/SetType.java
@@ -105,12 +105,15 @@ public class SetType<T> extends CollectionType<Set<T>>
}
@Override
- public AbstractType<?> freezeNestedUDTs()
+ public AbstractType<?> freezeNestedMulticellTypes()
{
- if (elements.isUDT() && elements.isMultiCell())
+ if (!isMultiCell())
+ return this;
+
+ if (elements.isFreezable() && elements.isMultiCell())
return getInstance(elements.freeze(), isMultiCell);
- else
- return getInstance(elements.freezeNestedUDTs(), isMultiCell);
+
+ return getInstance(elements.freezeNestedMulticellTypes(), isMultiCell);
}
@Override
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dee84ccc/src/java/org/apache/cassandra/db/marshal/UserType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/UserType.java b/src/java/org/apache/cassandra/db/marshal/UserType.java
index 433cb87..d2cf94b 100644
--- a/src/java/org/apache/cassandra/db/marshal/UserType.java
+++ b/src/java/org/apache/cassandra/db/marshal/UserType.java
@@ -304,8 +304,11 @@ public class UserType extends TupleType
}
@Override
- public AbstractType<?> freezeNestedUDTs()
+ public AbstractType<?> freezeNestedMulticellTypes()
{
+ if (!isMultiCell())
+ return this;
+
// the behavior here doesn't exactly match the method name: we want to freeze everything inside of UDTs
List<AbstractType<?>> newTypes = fieldTypes().stream()
.map(subtype -> (subtype.isFreezable() && subtype.isMultiCell() ? subtype.freeze() : subtype))
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dee84ccc/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java b/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
index ebe8006..abc3601 100644
--- a/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
+++ b/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
@@ -684,9 +684,12 @@ public final class LegacySchemaMigrator
AbstractType<?> validator = parseType(row.getString("validator"));
// In the 2.x schema we didn't store UDT's with a FrozenType wrapper because they were implicitly frozen. After
- // CASSANDRA-7423 (non-frozen UDTs), this is no longer true, so we need to freeze nested UDTs to properly
- // migrate the schema. See CASSANDRA-11609.
- validator = validator.freezeNestedUDTs();
+ // CASSANDRA-7423 (non-frozen UDTs), this is no longer true, so we need to freeze UDTs and nested freezable
+ // types (UDTs and collections) to properly migrate the schema. See CASSANDRA-11609 and CASSANDRA-11613.
+ if (validator.isUDT() && validator.isMultiCell())
+ validator = validator.freeze();
+ else
+ validator = validator.freezeNestedMulticellTypes();
return new ColumnDefinition(keyspace, table, name, validator, componentIndex, kind);
}
[2/3] cassandra git commit: Merge branch 'cassandra-3.6' into
cassandra-3.7
Posted by ty...@apache.org.
Merge branch 'cassandra-3.6' into cassandra-3.7
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/424b0b9e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/424b0b9e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/424b0b9e
Branch: refs/heads/trunk
Commit: 424b0b9e00a700dfdbde6f443dd974d5fbd3e8f7
Parents: ad54683 dee84cc
Author: Tyler Hobbs <ty...@gmail.com>
Authored: Wed May 18 15:16:12 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Wed May 18 15:16:12 2016 -0500
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../org/apache/cassandra/db/marshal/AbstractType.java | 8 ++++----
src/java/org/apache/cassandra/db/marshal/ListType.java | 11 +++++++----
src/java/org/apache/cassandra/db/marshal/MapType.java | 13 ++++++++-----
src/java/org/apache/cassandra/db/marshal/SetType.java | 11 +++++++----
src/java/org/apache/cassandra/db/marshal/UserType.java | 5 ++++-
.../apache/cassandra/schema/LegacySchemaMigrator.java | 9 ++++++---
7 files changed, 38 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/424b0b9e/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 26c2939,a2b472a..d029c7b
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,15 -1,6 +1,17 @@@
+3.7
+Merged from 3.0:
+ * Allow compaction strategies to disable early open (CASSANDRA-11754)
+ * Refactor Materialized View code (CASSANDRA-11475)
+ * Update Java Driver (CASSANDRA-11615)
+Merged from 2.2:
+ * Add seconds to cqlsh tracing session duration (CASSANDRA-11753)
+ * Fix commit log replay after out-of-order flush completion (CASSANDRA-9669)
+ * Prohibit Reversed Counter type as part of the PK (CASSANDRA-9395)
+ * cqlsh: correctly handle non-ascii chars in error messages (CASSANDRA-11626)
+
3.6
+ * Correctly migrate schema for frozen UDTs during 2.x -> 3.x upgrades
+ (does not affect any released versions) (CASSANDRA-11613)
* Allow server startup if JMX is configured directly (CASSANDRA-11725)
* Prevent direct memory OOM on buffer pool allocations (CASSANDRA-11710)
* Enhanced Compaction Logging (CASSANDRA-10805)
[3/3] cassandra git commit: Merge branch 'cassandra-3.7' into trunk
Posted by ty...@apache.org.
Merge branch 'cassandra-3.7' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5bdf3184
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5bdf3184
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5bdf3184
Branch: refs/heads/trunk
Commit: 5bdf3184bdcba969a67f8b5093bdc1a4657cc3c2
Parents: 0f483d8 424b0b9
Author: Tyler Hobbs <ty...@gmail.com>
Authored: Wed May 18 15:16:23 2016 -0500
Committer: Tyler Hobbs <ty...@gmail.com>
Committed: Wed May 18 15:16:23 2016 -0500
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../org/apache/cassandra/db/marshal/AbstractType.java | 8 ++++----
src/java/org/apache/cassandra/db/marshal/ListType.java | 11 +++++++----
src/java/org/apache/cassandra/db/marshal/MapType.java | 13 ++++++++-----
src/java/org/apache/cassandra/db/marshal/SetType.java | 11 +++++++----
src/java/org/apache/cassandra/db/marshal/UserType.java | 5 ++++-
.../apache/cassandra/schema/LegacySchemaMigrator.java | 9 ++++++---
7 files changed, 38 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bdf3184/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 4ace3a7,d029c7b..adadefd
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -18,8 -9,9 +18,10 @@@ Merged from 2.2
* Prohibit Reversed Counter type as part of the PK (CASSANDRA-9395)
* cqlsh: correctly handle non-ascii chars in error messages (CASSANDRA-11626)
+
3.6
+ * Correctly migrate schema for frozen UDTs during 2.x -> 3.x upgrades
+ (does not affect any released versions) (CASSANDRA-11613)
* Allow server startup if JMX is configured directly (CASSANDRA-11725)
* Prevent direct memory OOM on buffer pool allocations (CASSANDRA-11710)
* Enhanced Compaction Logging (CASSANDRA-10805)