Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D56EA17856 for ; Fri, 8 May 2015 18:36:37 +0000 (UTC) Received: (qmail 19334 invoked by uid 500); 8 May 2015 18:36:32 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 19298 invoked by uid 500); 8 May 2015 18:36:32 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 19287 invoked by uid 99); 8 May 2015 18:36:32 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 08 May 2015 18:36:32 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 9780EE3A60; Fri, 8 May 2015 18:36:32 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: tylerhobbs@apache.org To: commits@cassandra.apache.org Message-Id: <4e14022f23d64763bbff7470d35bf561@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: cassandra git commit: Add ks and table to err log about large collections Date: Fri, 8 May 2015 18:36:32 +0000 (UTC) Repository: cassandra Updated Branches: refs/heads/cassandra-2.0 917068dcb -> 15235ee63 Add ks and table to err log about large collections Patch by Carl Yeksigian; reviewed by Tyler Hobbs for CASSANDRA-9286 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/15235ee6 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/15235ee6 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/15235ee6 Branch: refs/heads/cassandra-2.0 Commit: 15235ee63be2d8f39486ff97dbbdd8ed24bb9812 Parents: 917068d Author: Tyler Hobbs Authored: Fri May 8 13:28:33 2015 -0500 Committer: Tyler Hobbs Committed: Fri May 8 13:28:33 2015 -0500 ---------------------------------------------------------------------- CHANGES.txt | 2 ++ .../cassandra/cql3/statements/SelectStatement.java | 2 +- .../org/apache/cassandra/db/marshal/CollectionType.java | 11 +++++++---- src/java/org/apache/cassandra/db/marshal/ListType.java | 5 +++-- src/java/org/apache/cassandra/db/marshal/MapType.java | 5 +++-- src/java/org/apache/cassandra/db/marshal/SetType.java | 5 +++-- 6 files changed, 19 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/15235ee6/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 1540d28..d3715c4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,6 @@ 2.0.15: + * Include keyspace and table name in error log for collections over the size + limit (CASSANDRA-9286) * Avoid potential overlap in LCS with single-partition sstables (CASSANDRA-9322) * Log warning message when a table is queried before the schema has fully propagated (CASSANDRA-9136) http://git-wip-us.apache.org/repos/asf/cassandra/blob/15235ee6/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java index 6b3c781..8a4deb6 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -1399,7 +1399,7 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache if (name.type.isCollection()) { List> collection = group.getCollection(name.name.key); - result.add(collection == null ? null : ((CollectionType)name.type).serialize(collection)); + result.add(collection == null ? null : ((CollectionType)name.type).serialize(name, collection)); } else { http://git-wip-us.apache.org/repos/asf/cassandra/blob/15235ee6/src/java/org/apache/cassandra/db/marshal/CollectionType.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/marshal/CollectionType.java b/src/java/org/apache/cassandra/db/marshal/CollectionType.java index 29b77a0..d1ae130 100644 --- a/src/java/org/apache/cassandra/db/marshal/CollectionType.java +++ b/src/java/org/apache/cassandra/db/marshal/CollectionType.java @@ -23,6 +23,7 @@ import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.cassandra.cql3.CFDefinition; import org.apache.cassandra.cql3.CQL3Type; import org.apache.cassandra.db.Column; import org.apache.cassandra.serializers.MarshalException; @@ -58,7 +59,7 @@ public abstract class CollectionType extends AbstractType protected abstract void appendToStringBuilder(StringBuilder sb); - public abstract ByteBuffer serialize(List> columns); + public abstract ByteBuffer serialize(CFDefinition.Name name, List> columns); @Override public String toString() @@ -108,13 +109,15 @@ public abstract class CollectionType extends AbstractType return (ByteBuffer)result.flip(); } - protected List> enforceLimit(List> columns) + protected List> enforceLimit(CFDefinition.Name name, List> columns) { if (columns.size() <= MAX_ELEMENTS) return columns; - logger.error("Detected collection with {} elements, more than the {} limit. Only the first {} elements will be returned to the client. " - + "Please see http://cassandra.apache.org/doc/cql3/CQL.html#collections for more details.", columns.size(), MAX_ELEMENTS, MAX_ELEMENTS); + logger.error("Detected collection for table {}.{} with {} elements, more than the {} limit. Only the first {}" + + "elements will be returned to the client. Please see " + + "http://cassandra.apache.org/doc/cql3/CQL.html#collections for more details.", + name.ksName, name.cfName, columns.size(), MAX_ELEMENTS, MAX_ELEMENTS); return columns.subList(0, MAX_ELEMENTS); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/15235ee6/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 4b45bd7..dff98b7 100644 --- a/src/java/org/apache/cassandra/db/marshal/ListType.java +++ b/src/java/org/apache/cassandra/db/marshal/ListType.java @@ -20,6 +20,7 @@ package org.apache.cassandra.db.marshal; import java.nio.ByteBuffer; import java.util.*; +import org.apache.cassandra.cql3.CFDefinition; import org.apache.cassandra.db.Column; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.SyntaxException; @@ -115,9 +116,9 @@ public class ListType extends CollectionType> sb.append(getClass().getName()).append(TypeParser.stringifyTypeParameters(Collections.>singletonList(elements))); } - public ByteBuffer serialize(List> columns) + public ByteBuffer serialize(CFDefinition.Name name, List> columns) { - columns = enforceLimit(columns); + columns = enforceLimit(name, columns); List bbs = new ArrayList(columns.size()); int size = 0; http://git-wip-us.apache.org/repos/asf/cassandra/blob/15235ee6/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 08f795f..f6883ee 100644 --- a/src/java/org/apache/cassandra/db/marshal/MapType.java +++ b/src/java/org/apache/cassandra/db/marshal/MapType.java @@ -20,6 +20,7 @@ package org.apache.cassandra.db.marshal; import java.nio.ByteBuffer; import java.util.*; +import org.apache.cassandra.cql3.CFDefinition; import org.apache.cassandra.db.Column; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.SyntaxException; @@ -123,9 +124,9 @@ public class MapType extends CollectionType> /** * Creates the same output than serialize, but from the internal representation. */ - public ByteBuffer serialize(List> columns) + public ByteBuffer serialize(CFDefinition.Name name, List> columns) { - columns = enforceLimit(columns); + columns = enforceLimit(name, columns); List bbs = new ArrayList(2 * columns.size()); int size = 0; http://git-wip-us.apache.org/repos/asf/cassandra/blob/15235ee6/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 614ecc7..b43c9b6 100644 --- a/src/java/org/apache/cassandra/db/marshal/SetType.java +++ b/src/java/org/apache/cassandra/db/marshal/SetType.java @@ -20,6 +20,7 @@ package org.apache.cassandra.db.marshal; import java.nio.ByteBuffer; import java.util.*; +import org.apache.cassandra.cql3.CFDefinition; import org.apache.cassandra.db.Column; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.SyntaxException; @@ -88,9 +89,9 @@ public class SetType extends CollectionType> sb.append(getClass().getName()).append(TypeParser.stringifyTypeParameters(Collections.>singletonList(elements))); } - public ByteBuffer serialize(List> columns) + public ByteBuffer serialize(CFDefinition.Name name, List> columns) { - columns = enforceLimit(columns); + columns = enforceLimit(name, columns); List bbs = new ArrayList(columns.size()); int size = 0;