[ 
https://issues.apache.org/jira/browse/CASSANDRA-4468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sylvain Lebresne resolved CASSANDRA-4468.
-----------------------------------------

    Resolution: Duplicate

Closing in favor of CASSANDRA-4711 since it's the same bug.
                
> Temporally unreachable Dynamic Composite column names.
> ------------------------------------------------------
>
>                 Key: CASSANDRA-4468
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4468
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.1.0, 1.1.1, 1.1.2
>         Environment: linux, 
>            Reporter: Cesare Cugnasco
>            Priority: Minor
>              Labels: persistence
>         Attachments: BugFinder.java
>
>
> I was working on a Column family with a DynamicComposite column sorter when I 
> noticed that sometimes, after the insertion of a column with a column name 
> composed by a single string (eg 's@step'),it was possible to be reach the 
> column only by slice query but not by direct access. For example using the 
> cassandra-cli it is possible to query: 
> get frame[int(26)];
> RowKey: 0000001a
> ....
>  (column=i@19, value=00000013, timestamp=1343495134729000)
> => (column=s@step, value=746573742076616c7565, timestamp=1343495134680000)
> but typing 'get frame[int(26)]['s@step']' I got no result.
> I tested this behavior using also other clients such as Hector, Astyanax, 
> Pycassa and directly Thrift. 
> I wrote this java code with hector-core-1.1.0 to reproduce this bug.
> public static void main(String[] args) {
>         String kname = "testspace3";
>         Cluster myCluster = HFactory.getOrCreateCluster("Test-cluster", 
> System.getProperty("location", "localhost:9160"));
>         //creating the keyspace and Column family
>         if (myCluster.describeKeyspace(kname) != null) {
>             myCluster.dropKeyspace(kname, true);
>         }        
>         ColumnFamilyDefinition cfd = 
> HFactory.createColumnFamilyDefinition(kname, "frame", 
> ComparatorType.DYNAMICCOMPOSITETYPE);
>         
> cfd.setComparatorTypeAlias(DynamicComposite.DEFAULT_DYNAMIC_COMPOSITE_ALIASES);
>         KeyspaceDefinition kdf = HFactory.createKeyspaceDefinition(kname, 
> "SimpleStrategy", 1, Arrays.asList(cfd));
>         myCluster.addKeyspace(kdf, true);
>         Keyspace ksp = HFactory.createKeyspace(kname, myCluster);
>         //Hector template definition
>         ColumnFamilyTemplate<Integer, DynamicComposite> template =
>                 new ThriftColumnFamilyTemplate<Integer, DynamicComposite>(
>                 ksp,
>                 "frame",
>                 IntegerSerializer.get(),
>                 DynamicCompositeSerializer.get());
>         
>         DynamicComposite dc = new DynamicComposite();
>         dc.addComponent("step", StringSerializer.get());
>         DynamicComposite numdc = new DynamicComposite();
>         numdc.addComponent(BigInteger.valueOf(62), 
> BigIntegerSerializer.get());
>         ColumnFamilyUpdater<Integer, DynamicComposite> cf = 
> template.createUpdater(26);
>         cf.setString(dc, "test value");
>         cf.setString(numdc, "altro valore");
>         template.update(cf);
>         //without this parts it works. It works also with less then 4 
> insertions
>         cf = template.createUpdater(26);
>         for (int i = 0; i < 4; i++) {
>             DynamicComposite num = new DynamicComposite();
>             num.addComponent(BigInteger.valueOf(i), 
> BigIntegerSerializer.get());
>             cf.setInteger(num, i);
>         }
>         template.update(cf);
>         // end part
>         HColumn<DynamicComposite, String> res = 
> template.querySingleColumn(26, dc, StringSerializer.get());
>         if (res == null) {
>             System.out.println("[FAIL] Row not found");
>         } else {
>             System.out.println("[SUCCESS] Returned name " + 
> res.getName().get(0).toString() + " - with value: " + res.getValue());
>         }
>     }
> The code acts three tasks: configure keyspace an CF, insert the data and try 
> to retrieve it. After running the code the data are visible (by list for 
> example) but not reachable directly. Restarting Cassandra the row is again 
> reachable. 
> Furthermore, after running that code, if I run on the cassandra-cli 
> set frame[int(26)]['s@step']=utf8(test);
> with a "list frame[int(26)]'
> RowKey: 0000001a
> => (column=s@step, value=test value, timestamp=1343499335791000)
> => (column=i@0, value=00000000, timestamp=1343499335816000)
> => (column=i@1, value=00000001, timestamp=1343499335816000)
> => (column=i@2, value=00000002, timestamp=1343499335816000)
> => (column=i@3, value=00000003, timestamp=1343499335816000)
> => (column=s@step, value=test, timestamp=1343499384630000)
> I found 2 column with the apparently the same column name. 
> How is it possible?
> Best regards,
> Cesare

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to