astyanax
astyanax copied to clipboard
Java Driver: CassandraChunkedStorageProvider doen't set TTL during write
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(); }