We are putting together a patch for that.  Also updating the unit test to
capture this case.  It wasn't failing as a result of it being backwards.

On Wed, Nov 17, 2010 at 11:51 AM, CassUser CassUser <cassu...@gmail.com>wrote:

> Thanks for looking into that. I created a jira issue for it:
>
> https://issues.apache.org/jira/browse/CASSANDRA-1753
>
>
>
> On Wed, Nov 17, 2010 at 11:28 AM, Aaron Morton <aa...@thelastpickle.com>wrote:
>
>> That does look like a bug
>> http://www.mail-archive.com/d...@cassandra.apache.org/msg01167.html
>>
>>  <http://www.mail-archive.com/d...@cassandra.apache.org/msg01167.html>
>> Aaron
>>
>>
>> On 17 Nov, 2010,at 03:55 PM, Aaron Morton <aa...@thelastpickle.com>
>> wrote:
>>
>> It's certainly looks suspect. I've had a look at the code around
>> SSTableImport and SSTableExport and the isDeleted value for the col is based
>> on IColumn.isMarkedForDelete read when the data was exported. I'll try to
>> have a look tonight, or if someone is still up in the states they may help.
>> The current 0.7 branch has the same code.
>>
>> Are there any other errors in the log?
>>
>> The code sample you've got there uses the TimestampClocks that were once a
>> part of the 0.7 development, but have been removed. So your data sample may
>> not be usable going forwards. Can you jump to beta3?
>>
>> Aaron
>>
>>
>>
>> On 17 Nov, 2010,at 02:03 PM, CassUser CassUser <cassu...@gmail.com>
>> wrote:
>>
>> Looking at this closer.  I noticed the following in the SSTableImport
>> Class:
>>
>>             if (col.isDeleted) {
>>                 cfamily.addColumn(path, hexToBytes(col.value), new
>> TimestampClock(col.timestamp));
>>             } else {
>>                 cfamily.addTombstone(path, hexToBytes(col.value), new
>> TimestampClock(col.timestamp));
>>             }
>>
>> This appears to be backwards.
>>
>>
>> On Tue, Nov 16, 2010 at 4:03 PM, CassUser CassUser <cassu...@gmail.com>wrote:
>>
>>> Looked at how DatabaseDescriptor is loading the yaml file.  Using that
>>> approach solves the problem with the column_families mapping exception.
>>>
>>> The problems we are running into currently is regarding a known dataset
>>> not being loaded into our test instance correctly.
>>>
>>> Steps:
>>> 1.  Create temp directory to host cassandra test instance
>>> 2.  Create keyspace directories
>>> 3  Update yaml file, and copy to test location
>>> 4.  Add schema from yaml using DatabaseDescriptor.
>>> readTablesFromYaml() & DatabaseDescriptor.
>>> setTableDefinition
>>> 4.  Use SSTableImport.importJson to setup a known dataset.  We have JSON
>>> files converted to 0.7 compliant (byte [] rows)
>>> 5.  Start Cassandra instance using the EmbeddedCassandraService class
>>>
>>> Everything appears to work from the log messages.  I get the message "
>>> Sampling index for ..", and finally "Listening for thrift clients...".  When
>>> i use a client to query the data in test instance, I notice keys with no
>>> columns/values stored (via keyrange slice).  Using a open ended column slice
>>> for a known key I'm getting zero results.
>>>
>>> I'm currently running cassandra 0.7. beta2.  Is the steps I've outlined
>>> above suppose to work in 0.7?  We did something similar in 0.6.4 without any
>>> problems.  Is there known bugs I can look into?
>>>
>>> Thanks.
>>>
>>>
>>>
>>>
>>> On Tue, Nov 16, 2010 at 12:24 PM, Aaron Morton 
>>> <aa...@thelastpickle.com>wrote:
>>>
>>>> I've not used the embedded service.
>>>>
>>>> The code in o.a.c.service.EmbeddedCassandraService says it will read the
>>>> yaml file. If the cluster does not have a schema stored I think it will 
>>>> load
>>>> the one from yaml.
>>>>
>>>> Have you tried starting it up with an empty system data dir ? Does it
>>>> pickup the schema from the yaml?
>>>>
>>>> Aaron
>>>>
>>>>
>>>> On 17 Nov, 2010,at 09:17 AM, CassUser CassUser <cassu...@gmail.com>
>>>> wrote:
>>>>
>>>>
>>>> Loading yaml file like so:
>>>>         FileInputStream yamlInputStream = new FileInputStream(
>>>>                 configTemplateFile);
>>>>         Constructor constructor = new Constructor(Config.class);
>>>>         Yaml yaml = new Yaml(new Loader(constructor));
>>>>         Config conf = (Config) yaml.load(yamlInputStream);
>>>>
>>>> Fails on the last line.
>>>>
>>>> Although if i have the CFs defined like this:
>>>> keyspaces:
>>>> - column_families:
>>>>   - !!org.apache.cassandra.config.RawColumnFamily
>>>>     column_metadata: []
>>>>     column_type: null
>>>>     comment: null
>>>>     compare_subcolumns_with: null
>>>>     compare_with: BytesType
>>>>     default_validation_class: null
>>>>     gc_grace_seconds: 864000
>>>>     keys_cached: 200000.0
>>>>     max_compaction_threshold: 32
>>>>     min_compaction_threshold: 4
>>>>     name: Similarity
>>>>     preload_row_cache: false
>>>>     read_repair_chance: 1.0
>>>>     rows_cached: 0.0
>>>>
>>>>
>>>> it appears to startup.  Any idea whats going on here?
>>>>
>>>>
>>>>
>>>> On Tue, Nov 16, 2010 at 11:58 AM, CassUser CassUser <cassu...@gmail.com
>>>> > wrote:
>>>>
>>>>>
>>>>> This is embedded for testing cassandra 0.7 beta2.  using
>>>>> EmbeddedCassandraService.
>>>>>
>>>>> and manually adding schema programmatically using:
>>>>>         for (KSMetaData table :
>>>>> DatabaseDescriptor.readTablesFromYaml()) {
>>>>>             for (CFMetaData cfm : table.cfMetaData().values()) {
>>>>>                 CFMetaData.map(cfm);
>>>>>             }
>>>>>             DatabaseDescriptor.setTableDefinition(table,
>>>>>                     DatabaseDescriptorgetDefsVersion());
>>>>>         }
>>>>>
>>>>> Is this the correct way to start up a test server, with the schema
>>>>> loaded?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Nov 16, 2010 at 11:41 AM, Aaron Morton <
>>>>> aa...@thelastpickle.com> wrote:
>>>>>
>>>>>>
>>>>>> AFAIK the ArrayStoreException is similar to a type mismatch Is it
>>>>>> possible you have something mixed up in your class path or source code if
>>>>>> you built from source?
>>>>>>
>>>>>> It looks like the column family info was deserialised into a
>>>>>> o.a.c.config.RawColumnFamily but when that object was added to the
>>>>>> RawColumnFamily[] array on o.a.c.config.RawKeyspace if was the wrong 
>>>>>> type.
>>>>>>
>>>>>> Have you tried a clean build ? There are some things in the call stack
>>>>>> which look custom, are you starting from the command line or is this
>>>>>> embedded for testing?
>>>>>>
>>>>>> Hope that helps.
>>>>>> Aaron
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 17 Nov, 2010,at 08:09 AM, CassUser CassUser <cassu...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Here is the yaml:
>>>>>>
>>>>>> # Cassandra YAML generated from previous config
>>>>>> # Configuration wiki:
>>>>>> http://wiki.apache.org/cassandra/StorageConfiguration
>>>>>>  authenticator: org.apache.cassandraauth.AllowAllAuthenticator
>>>>>>
>>>>>>
>>>>>> auto_bootstrap: false
>>>>>> binary_memtable_throughput_in_mb: 256
>>>>>> cluster_name: Test Cluster
>>>>>> column_index_size_in_kb: 64
>>>>>> commitlog_rotation_threshold_in_mb: 128
>>>>>> commitlog_sync: periodic
>>>>>> commitlog_sync_period_in_ms: 10000
>>>>>> compaction_thread_priority: 1
>>>>>> concurrent_reads: 8
>>>>>> concurrent_writes: 32
>>>>>> disk_access_mode: auto
>>>>>> dynamic_snitch: false
>>>>>> endpoint_snitch: org.apache.cassandra.locator.SimpleSnitch
>>>>>> request_scheduler: org.apache.cassandra.scheduler.RoundRobinScheduler
>>>>>> request_scheduler_id: keyspace
>>>>>> hinted_handoff_enabled: true
>>>>>> in_memory_compaction_limit_in_mb: 128
>>>>>> index_interval: 128
>>>>>> keyspaces:
>>>>>>     - name: myKeyspace
>>>>>>
>>>>>>       replica_placement_strategy:
>>>>>> orgapache.cassandra.locator.SimpleStrategy
>>>>>>
>>>>>>
>>>>>>       replication_factor: 1
>>>>>>       column_families:
>>>>>>         - name: Standard1
>>>>>>           rows_cached: 100
>>>>>>           keys_cached: 1
>>>>>>           compare_with: UTF8Type
>>>>>> memtable_flush_after_mins: 60
>>>>>> memtable_operations_in_millions: 0.3
>>>>>> memtable_throughput_in_mb: 64
>>>>>> partitioner: org.apache.cassandra.dht.RandomPartitioner
>>>>>> phi_convict_threshold: 8
>>>>>> rpc_keepalive: true
>>>>>> rpc_port: 9160
>>>>>> rpc_timeout_in_ms: 10000
>>>>>> sliced_buffer_size_in_kb: 64
>>>>>> snapshot_before_compaction: false
>>>>>> storage_port: 7000
>>>>>> thrift_framed_transport_size_in_mb: 15
>>>>>> thrift_max_message_length_in_mb: 16
>>>>>>
>>>>>> and here is the exception i'm receiving:
>>>>>>
>>>>>> Caused by: Can't construct a java object for 
>>>>>> tag:yaml.org,2002:org.apachecassandra.config.Config;
>>>>>> exception=Cannot create property=keyspaces for Java
>>>>>> bean=org.apache.cassandra.config.con...@12e43f1; Cannot create
>>>>>> property=column_families for
>>>>>> javabean=org.apache.cassandra.config.rawkeysp...@1a8bd74;
>>>>>> null
>>>>>>  in "<reader>", line 3, column 1:
>>>>>>     authenticator: org.apache.cassan ...
>>>>>>     ^
>>>>>>
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:372)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructorjava:177)
>>>>>>          at
>>>>>> org.yaml.snakeyamlconstructor.BaseConstructorconstructDocument(BaseConstructor.java:136)
>>>>>>
>>>>>>
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:122)
>>>>>>         at org.yaml.snakeyaml.Loader.load(Loader.java:52)
>>>>>>         at org.yaml.snakeyaml.Yaml.load(Yaml.java:166)
>>>>>>         at
>>>>>> com.atsid.cassandra.testutils.CassandraTestRunner.updateYamlConfig(CassandraTestRunner.java:134)
>>>>>>         at
>>>>>> com.atsid.cassandra.testutils.CassandraTestRunner.init(CassandraTestRunner.java:119)
>>>>>>         at
>>>>>> com.atsid.cassandra.testutils.CassandraTestRunner.main(CassandraTestRunner.java:272)
>>>>>>         ... 6 more
>>>>>> Caused by: org.yaml.snakeyaml.error.YAMLException: Cannot create
>>>>>> property=keyspaces for 
>>>>>> javabean=org.apache.cassandraconfig.con...@12e43f1;
>>>>>> Cannot cr
>>>>>> eate property=column_families for
>>>>>> javabean=org.apache.cassandra.config.rawkeysp...@1a8bd74; null
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:305)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:184)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:370)
>>>>>>         ... 14 more
>>>>>> Caused by: org.yaml.snakeyaml.error.YAMLException: Cannot create
>>>>>> property=column_families for
>>>>>> javabean=org.apache.cassandra.config.rawkeysp...@1a8bd74
>>>>>> ; null
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:305)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:184)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:177)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.BaseConstructor.constructSequenceStep2(BaseConstructor.java:239)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.BaseConstructor.constructSequence(BaseConstructor.java:233)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructorConstructor$ConstructSequence.construct(Constructor.java:543)
>>>>>>
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.BaseConstructorconstructObject(BaseConstructor.java:177)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:298)
>>>>>>         ... 16 more
>>>>>> Caused by: java.lang.ArrayStoreException
>>>>>>         at java.lang.System.arraycopy(Native Method)
>>>>>>         at java.util.Arrays.copyOf(Arrays.java:2763)
>>>>>>         at java.util.ArrayList.toArray(ArrayList.java:305)
>>>>>>         at
>>>>>> org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:301)
>>>>>>         ... 23 more
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to