[
https://issues.apache.org/jira/browse/CASSANDRA-9252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Philip Thompson updated CASSANDRA-9252:
---------------------------------------
Description:
I was trying to set 'timestamp_resolution' to MINUTES/HOURS/DAYS. it turned out
maxSSTableAge was set as wrong value. In the code,
{code}
public DateTieredCompactionStrategyOptions(Map<String, String> options)
{
String optionValue = options.get(TIMESTAMP_RESOLUTION_KEY);
TimeUnit timestampResolution = optionValue == null ?
DEFAULT_TIMESTAMP_RESOLUTION : TimeUnit.valueOf(optionValue);
optionValue = options.get(MAX_SSTABLE_AGE_KEY);
double fractionalDays = optionValue == null ?
DEFAULT_MAX_SSTABLE_AGE_DAYS : Double.parseDouble(optionValue);
maxSSTableAge = Math.round(fractionalDays *
timestampResolution.convert(1, TimeUnit.DAYS));
... }{code}
maxSSTableAge will be set as the value in "timestamp_resolution" unit, such as
, with the following settings,
'timestamp_resolution':'HOURS',
'max_sstable_age_days':'7',
'base_time_seconds':'3600'
and I get:
maxSSTableAge=168, baseTime=1
while in the following routine, it expect maxSSTableAge as milliseconds
static Iterable<SSTableReader> filterOldSSTables(List<SSTableReader>
sstables, long maxSSTableAge, long now)
was:
I was trying to set 'timestamp_resolution' to MINUTES/HOURS/DAYS. it turned out
maxSSTableAge was set as wrong value. In the code,
public DateTieredCompactionStrategyOptions(Map<String, String> options)
{
String optionValue = options.get(TIMESTAMP_RESOLUTION_KEY);
TimeUnit timestampResolution = optionValue == null ?
DEFAULT_TIMESTAMP_RESOLUTION : TimeUnit.valueOf(optionValue);
optionValue = options.get(MAX_SSTABLE_AGE_KEY);
double fractionalDays = optionValue == null ?
DEFAULT_MAX_SSTABLE_AGE_DAYS : Double.parseDouble(optionValue);
maxSSTableAge = Math.round(fractionalDays *
timestampResolution.convert(1, TimeUnit.DAYS));
... }
maxSSTableAge will be set as the value in "timestamp_resolution" unit, such as
, with the following settings,
'timestamp_resolution':'HOURS',
'max_sstable_age_days':'7',
'base_time_seconds':'3600'
and I get:
maxSSTableAge=168, baseTime=1
while in the following routine, it expect maxSSTableAge as milliseconds
static Iterable<SSTableReader> filterOldSSTables(List<SSTableReader>
sstables, long maxSSTableAge, long now)
> for DateTieredCompactionStrategy, TIMESTAMP_RESOLUTION_KEY sets wrong
> msxSSTableAge value if RESOLUTION is other than MILLISECONDS
> ----------------------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-9252
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9252
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Environment: Linux/CentOS
> Reporter: mike
> Fix For: 2.0.14
>
> Attachments: DateTieredCompactionStrategy.java,
> DateTieredCompactionStrategyOptions.java
>
>
> I was trying to set 'timestamp_resolution' to MINUTES/HOURS/DAYS. it turned
> out maxSSTableAge was set as wrong value. In the code,
> {code}
> public DateTieredCompactionStrategyOptions(Map<String, String> options)
> {
> String optionValue = options.get(TIMESTAMP_RESOLUTION_KEY);
> TimeUnit timestampResolution = optionValue == null ?
> DEFAULT_TIMESTAMP_RESOLUTION : TimeUnit.valueOf(optionValue);
> optionValue = options.get(MAX_SSTABLE_AGE_KEY);
> double fractionalDays = optionValue == null ?
> DEFAULT_MAX_SSTABLE_AGE_DAYS : Double.parseDouble(optionValue);
> maxSSTableAge = Math.round(fractionalDays *
> timestampResolution.convert(1, TimeUnit.DAYS));
> ... }{code}
> maxSSTableAge will be set as the value in "timestamp_resolution" unit, such
> as , with the following settings,
> 'timestamp_resolution':'HOURS',
> 'max_sstable_age_days':'7',
> 'base_time_seconds':'3600'
> and I get:
> maxSSTableAge=168, baseTime=1
> while in the following routine, it expect maxSSTableAge as milliseconds
> static Iterable<SSTableReader> filterOldSSTables(List<SSTableReader>
> sstables, long maxSSTableAge, long now)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)