Re: Astyanax InstantiationException when accessing ColumnList
Was there more to the error message ? Looks likes there should be a caused by exception there https://github.com/Netflix/astyanax/blob/master/src/main/java/com/netflix/astyanax/serializers/AnnotatedCompositeSerializer.java#L114 The InstationError is being raised when it tries to create an instance of the column type https://github.com/Netflix/astyanax/blob/master/src/main/java/com/netflix/astyanax/serializers/AnnotatedCompositeSerializer.java#L166 I would check everything is in the class path and create an issue on https://github.com/Netflix/astyanax/issues if you get stuck. Cheers - Aaron Morton Freelance Developer @aaronmorton http://www.thelastpickle.com On 12/09/2012, at 2:04 PM, Ran User ranuse...@gmail.com wrote: Oops, forgot to mention Cassandra version - 1.1.4 On Tue, Sep 11, 2012 at 5:54 AM, Ran User ranuse...@gmail.com wrote: Stuck for hours on this one, thanks in advance! - Scala 2.9.2 - Astyanax 1.0.6 (also tried 1.0.5) - Using CompositeRowKey, CompositeColumnName - No problem inserting into Cassandra - Can read a row, ColumnList.size() returns correct count however any attempt to access ColumnList (i.e. iterate, access iterate ColumnList, getColumnByIndex(), getColumnByName(), etc) will throw the following exception: Exception: java.lang.RuntimeException: java.lang.InstantiationException relevant stack trace: java.lang.RuntimeException: java.lang.InstantiationException: shops.integration.db.scalaquery.ReportingDao$MetricsLogFileCompositeColumn at com.netflix.astyanax.serializers.AnnotatedCompositeSerializer.fromByteBuffer(AnnotatedCompositeSerializer.java:136) at com.netflix.astyanax.serializers.AbstractSerializer.fromBytes(AbstractSerializer.java:40) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.constructMap(ThriftColumnOrSuperColumnListImpl.java:201) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.getColumn(ThriftColumnOrSuperColumnListImpl.java:189) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.getColumnByName(ThriftColumnOrSuperColumnListImpl.java:103) Relevant sample code: class TestCompositeColumn(@(Component @field) var logFileId: Long, @(Component @field) var dt: String, @(Component @field) var dk: String) extends Ordered[TestCompositeColumn] { def this() = this(0l, , ) //equals, hashCode, compare all implemented } I've also tried this variation on the class: class TestCompositeColumn(idIn: Long, key1In: String, key2In: String) extends Ordered[TestCompositeColumn] { @Component(ordinal = 0) var id: Long = idIn @Component(ordinal = 1) var key1: String = key1In @Component(ordinal = 2) var key2: String = key2In def this() = this(0, null, null) //equals, hashCode, compare all implemented } val TEST_COLUMN_FAMILY = new ColumnFamily[TestRowKey, TestCompositeColumn]( test_column_family, new AnnotatedCompositeSerializer[TestRowKey](classOf[TestRowKey]), new AnnotatedCompositeSerializer[TestCompositeColumn](classOf[TestCompositeColumn]), BytesArraySerializer.get()); var columnList = keyspace.prepareQuery(TEST_COLUMN_FAMILY) .getKey(TestRowKey(1l, 2012090100)) .execute().getResult() // OK - will return 6 for example, also verified via cassandra-cli println(columnList.size()) // ERROR - will throw exception above. Iterating, or any type of access will also throw same exception println(columnList.getColumnByIndex(0).getStringValue()) Thank you!!!
Re: Astyanax InstantiationException when accessing ColumnList
Yes you are right, the issue is here in Astyanax *AnnotatedCompositeSerializer.java :* private T createContents(ClassT clazz) throws InstantiationException, IllegalAccessException { return clazz.newInstance(); } I'm not sure how to get that reflection call working with my Scala TestCompositeColumn class. I've posted in scala-user hoping someone there will likely know the Java - Scala path. If anyone here has used Astyanax in Scala w/ composite columns, and can successfully read from Cassandra, I'd love to see one Scala class and companion object example :) On Wed, Sep 12, 2012 at 10:28 PM, aaron morton aa...@thelastpickle.comwrote: Was there more to the error message ? Looks likes there should be a caused by exception there https://github.com/Netflix/astyanax/blob/master/src/main/java/com/netflix/astyanax/serializers/AnnotatedCompositeSerializer.java#L114 The InstationError is being raised when it tries to create an instance of the column type https://github.com/Netflix/astyanax/blob/master/src/main/java/com/netflix/astyanax/serializers/AnnotatedCompositeSerializer.java#L166 I would check everything is in the class path and create an issue on https://github.com/Netflix/astyanax/issues if you get stuck. Cheers - Aaron Morton Freelance Developer @aaronmorton http://www.thelastpickle.com On 12/09/2012, at 2:04 PM, Ran User ranuse...@gmail.com wrote: Oops, forgot to mention Cassandra version - 1.1.4 On Tue, Sep 11, 2012 at 5:54 AM, Ran User ranuse...@gmail.com wrote: Stuck for hours on this one, thanks in advance! - Scala 2.9.2 - Astyanax 1.0.6 (also tried 1.0.5) - Using CompositeRowKey, CompositeColumnName - No problem inserting into Cassandra - Can read a row, ColumnList.size() returns correct count however any attempt to access ColumnList (i.e. iterate, access iterate ColumnList, getColumnByIndex(), getColumnByName(), etc) will throw the following exception: Exception: java.lang.RuntimeException: java.lang.InstantiationException relevant stack trace: java.lang.RuntimeException: java.lang.InstantiationException: shops.integration.db.scalaquery.ReportingDao$MetricsLogFileCompositeColumn at com.netflix.astyanax.serializers.AnnotatedCompositeSerializer.fromByteBuffer(AnnotatedCompositeSerializer.java:136) at com.netflix.astyanax.serializers.AbstractSerializer.fromBytes(AbstractSerializer.java:40) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.constructMap(ThriftColumnOrSuperColumnListImpl.java:201) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.getColumn(ThriftColumnOrSuperColumnListImpl.java:189) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.getColumnByName(ThriftColumnOrSuperColumnListImpl.java:103) Relevant sample code: class TestCompositeColumn(@(Component @field) var logFileId: Long, @(Component @field) var dt: String, @(Component @field) var dk: String) extends Ordered[TestCompositeColumn] { def this() = this(0l, , ) //equals, hashCode, compare all implemented } I've also tried this variation on the class: class TestCompositeColumn(idIn: Long, key1In: String, key2In: String) extends Ordered[TestCompositeColumn] { @Component(ordinal = 0) var id: Long = idIn @Component(ordinal = 1) var key1: String = key1In @Component(ordinal = 2) var key2: String = key2In def this() = this(0, null, null) //equals, hashCode, compare all implemented } val TEST_COLUMN_FAMILY = new ColumnFamily[TestRowKey, TestCompositeColumn]( test_column_family, new AnnotatedCompositeSerializer[TestRowKey](classOf[TestRowKey]), new AnnotatedCompositeSerializer[TestCompositeColumn](classOf[TestCompositeColumn]), BytesArraySerializer.get()); var columnList = keyspace.prepareQuery(TEST_COLUMN_FAMILY) .getKey(TestRowKey(1l, 2012090100)) .execute().getResult() // OK - will return 6 for example, also verified via cassandra-cli println(columnList.size()) // ERROR - will throw exception above. Iterating, or any type of access will also throw same exception println(columnList.getColumnByIndex(0).getStringValue()) Thank you!!!
Re: Astyanax InstantiationException when accessing ColumnList
Oops, forgot to mention Cassandra version - 1.1.4 On Tue, Sep 11, 2012 at 5:54 AM, Ran User ranuse...@gmail.com wrote: Stuck for hours on this one, thanks in advance! - Scala 2.9.2 - Astyanax 1.0.6 (also tried 1.0.5) - Using CompositeRowKey, CompositeColumnName - No problem inserting into Cassandra - Can read a row, ColumnList.size() returns correct count however any attempt to access ColumnList (i.e. iterate, access iterate ColumnList, getColumnByIndex(), getColumnByName(), etc) will throw the following exception: Exception: java.lang.RuntimeException: java.lang.InstantiationException relevant stack trace: java.lang.RuntimeException: java.lang.InstantiationException: shops.integration.db.scalaquery.ReportingDao$MetricsLogFileCompositeColumn at com.netflix.astyanax.serializers.AnnotatedCompositeSerializer.fromByteBuffer(AnnotatedCompositeSerializer.java:136) at com.netflix.astyanax.serializers.AbstractSerializer.fromBytes(AbstractSerializer.java:40) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.constructMap(ThriftColumnOrSuperColumnListImpl.java:201) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.getColumn(ThriftColumnOrSuperColumnListImpl.java:189) at com.netflix.astyanax.thrift.model.ThriftColumnOrSuperColumnListImpl.getColumnByName(ThriftColumnOrSuperColumnListImpl.java:103) Relevant sample code: class TestCompositeColumn(@(Component @field) var logFileId: Long, @(Component @field) var dt: String, @(Component @field) var dk: String) extends Ordered[TestCompositeColumn] { def this() = this(0l, , ) //equals, hashCode, compare all implemented } I've also tried this variation on the class: class TestCompositeColumn(idIn: Long, key1In: String, key2In: String) extends Ordered[TestCompositeColumn] { @Component(ordinal = 0) var id: Long = idIn @Component(ordinal = 1) var key1: String = key1In @Component(ordinal = 2) var key2: String = key2In def this() = this(0, null, null) //equals, hashCode, compare all implemented } val TEST_COLUMN_FAMILY = new ColumnFamily[TestRowKey, TestCompositeColumn]( test_column_family, new AnnotatedCompositeSerializer[TestRowKey](classOf[TestRowKey]), new AnnotatedCompositeSerializer[TestCompositeColumn](classOf[TestCompositeColumn]), BytesArraySerializer.get()); var columnList = keyspace.prepareQuery(TEST_COLUMN_FAMILY) .getKey(TestRowKey(1l, 2012090100)) .execute().getResult() // OK - will return 6 for example, also verified via cassandra-cli println(columnList.size()) // ERROR - will throw exception above. Iterating, or any type of access will also throw same exception println(columnList.getColumnByIndex(0).getStringValue()) Thank you!!!