[
https://issues.apache.org/jira/browse/CASSANDRA-9195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14509814#comment-14509814
]
Nick Bailey commented on CASSANDRA-9195:
----------------------------------------
I don't think we need to worry about sstableloader. First, it isn't affected by
the truncate metadata because it just streams the sstables directly to the
nodes. Also, when you load a snapshot, you are loading data at a specific point
in time rather than a range of time. Presumably when you go to load a snapshot
you know that you want exactly the state of the node/cluster at that point in
time. Any sort of behavior where truncating now and then loading a snapshot
taken before the truncation, but not having any of that data present would be
very strange IMO.
Given that we are going to fix it The Right Way in 3.0, I'd say just an
automatic clear when replaying archived commitlogs is sufficient for 2.1. Can
we also document on this ticket the workaround for older versions? Specifically
what table/row/column needs to be wiped out before replaying archived
commitlogs?
> PITR commitlog replay only actually replays mutation every other time
> ---------------------------------------------------------------------
>
> Key: CASSANDRA-9195
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9195
> Project: Cassandra
> Issue Type: Bug
> Reporter: Jon Moses
> Assignee: Branimir Lambov
> Fix For: 2.1.5
>
> Attachments: 9195-v2.1.patch, loader.py
>
>
> Version: Cassandra 2.1.4.374 | DSE 4.7.0
> The main issue here is that the restore-cycle only replays the mutations
> every other try. On the first try, it will restore the snapshot as expected
> and the cassandra system load will show that it's reading the mutations, but
> they do not actually get replayed, and at the end you're left with only the
> snapshot data (2k records).
> If you re-run the restore-cycle again, the commitlogs are replayed as
> expected,
> and the data expected is present in the table (4k records, with a spot check
> of
> record 4500, as it's in the commitlog but not the snapshot).
> Then if you run the cycle again, it will fail. Then again, and it will work.
> The work/
> not work pattern continues. Even re-running the commitlog replay a 2nd time,
> without
> reloading the snapshot doesn't work
> The load process is:
> * Modify commitlog segment to 1mb
> * Archive to directory
> * create keyspace/table
> * insert base data
> * initial snapshot
> * write more data
> * capture timestamp
> * write more data
> * final snapshot
> * copy commitlogs to 2nd location
> * modify cassandra-env to replay only specified keyspace
> * modify commitlog properties to restore from 2nd location, with noted
> timestamp
> The restore cycle is:
> * truncate table
> * sstableload snapshot
> * flush
> * output data status
> * restart to replay commitlogs
> * output data status
> ====
> See attached .py for a mostly automated reproduction scenario. It expects
> DSE (and I found it with DSE 4.7.0-1), rather than "actual" Cassandra, but
> it's not using any DSE specific features. The script looks for the configs
> in the DSE locations, but they're set at the top, and there's only 2 places
> where dse is restarted.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)