Netflix / astyanax

Cassandra Java Client
Apache License 2.0
1.04k stars 355 forks source link

Java Driver: CassandraChunkedStorageProvider doen't set TTL during write #550

Open lukaszsoszynski opened 9 years ago

lukaszsoszynski commented 9 years ago

When files are written by CassandraChunkedStorageProvider TTL is not set. To fix this problem you have to set global TTL. Fixed code:

     @Override
@@ -90,10 +96,10 @@ public class CassandraChunkedStorageProvider implements ChunkedStorageProvider {
         MutationBatch m = keyspace.prepareMutationBatch().setConsistencyLevel(writeConsistencyLevel).withRetryPolicy(retryPolicy);

         m.withRow(cf, getRowKey(objectName, chunkId)).putColumn(getColumnName(Columns.DATA), data, ttl)
-                .putColumn(getColumnName(Columns.CHUNKSIZE), data.limit(), ttl);
+                .putColumn(getColumnName(Columns.CHUNKSIZE), data.limit(), ttl).setDefaultTtl(ttl);

         if (chunkId == 0) {
-            m.withRow(cf, objectName).putColumn(getColumnName(Columns.CHUNKSIZE), data.limit(), ttl);
+            m.withRow(cf, objectName).putColumn(getColumnName(Columns.CHUNKSIZE), data.limit(), ttl).setDefaultTtl(ttl);
         }

         m.execute();
@@ -165,6 +171,7 @@ public class CassandraChunkedStorageProvider implements ChunkedStorageProvider {
             row.putColumn(getColumnName(Columns.OBJECTSIZE), objMetaData.getObjectSize(), objMetaData.getTtl());
         if (objMetaData.getAttributes() != null)
             row.putColumn(getColumnName(Columns.ATTRIBUTES), objMetaData.getAttributes(), objMetaData.getTtl());
+        row.setDefaultTtl(objMetaData.getTtl());
         m.execute();
     }