You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Sergey Kirillov (JIRA)" <ji...@apache.org> on 2016/02/29 15:37:18 UTC

[jira] [Commented] (CASSANDRA-11275) sstableloader fails with java.lang.IllegalArgumentException: flags is not a column defined in this metadata

    [ https://issues.apache.org/jira/browse/CASSANDRA-11275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15171922#comment-15171922 ] 

Sergey Kirillov commented on CASSANDRA-11275:
---------------------------------------------

here is my ugly patch to work around this bug

{code}
diff --git a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
index 225e453..335d3a7 100644
--- a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
+++ b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
@@ -169,12 +169,12 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client
                                                   Types types)
     {
         UUID id = row.getUUID("id");
-        Set<CFMetaData.Flag> flags = CFMetaData.flagsFromStrings(row.getSet("flags", String.class));
+        Set<CFMetaData.Flag> flags = isView ? Collections.emptySet() : CFMetaData.flagsFromStrings(row.getSet("flags", String.class));
 
         boolean isSuper = flags.contains(CFMetaData.Flag.SUPER);
         boolean isCounter = flags.contains(CFMetaData.Flag.COUNTER);
         boolean isDense = flags.contains(CFMetaData.Flag.DENSE);
-        boolean isCompound = flags.contains(CFMetaData.Flag.COMPOUND);
+        boolean isCompound = isView ? true : flags.contains(CFMetaData.Flag.COMPOUND);
 
         String columnsQuery = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?",
                                             SchemaKeyspace.NAME,
{code}

> sstableloader fails with java.lang.IllegalArgumentException: flags is not a column defined in this metadata
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-11275
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11275
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tools
>         Environment: ubuntu, cassandra 3.0.3
>            Reporter: Sergey Kirillov
>
> When used on a cluster with materialized view sstableloader fails with:
> {noformat}
> flags is not a column defined in this metadata
> java.lang.IllegalArgumentException: flags is not a column defined in this metadata
>         at com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:272)
>         at com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:278)
>         at com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:83)
>         at com.datastax.driver.core.AbstractGettableData.getSet(AbstractGettableData.java:217)
>         at org.apache.cassandra.utils.NativeSSTableLoaderClient.createTableMetadata(NativeSSTableLoaderClient.java:172)
>         at org.apache.cassandra.utils.NativeSSTableLoaderClient.fetchViews(NativeSSTableLoaderClient.java:157)
>         at org.apache.cassandra.utils.NativeSSTableLoaderClient.init(NativeSSTableLoaderClient.java:93)
>         at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:159)
>         at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:103)
> {noformat}
> This happens because there is no column `flags` in `system_schema.views`, but NativeSSTableLoaderClient want's to read it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)