[jira] [Commented] (CASSANDRA-8049) Explicitly examine current C* state on startup to detect incompatibilities before upgrade

2015-05-05 Thread Tyler Hobbs (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-8049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14529481#comment-14529481
 ] 

Tyler Hobbs commented on CASSANDRA-8049:


The test results look much better: 
http://cassci.datastax.com/view/Dev/view/beobal/job/beobal-8049-follow-up-dtest/3/testReport/

 Explicitly examine current C* state on startup to detect incompatibilities 
 before upgrade
 -

 Key: CASSANDRA-8049
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8049
 Project: Cassandra
  Issue Type: Bug
Reporter: Aleksey Yeschenko
Assignee: Sam Tunnicliffe
 Fix For: 3.0

 Attachments: 8049-follow-up.txt, 8049-v2.txt, 8049.txt


 Unfortunately, we cannot rely on users reading, and following, NEWS.txt 
 before upgrading. People don't read, or ignore it, and sometimes have issues 
 as the result (see CASSANDRA-8047, for example, and I know of several cases 
 like that one).
 We should add an explicit compatibility check on startup, before we modify 
 anything, or write out sstables with the new format. We should fail and 
 complain loudly if we detect a skipped upgrade step.
 We should also snapshot the schema tables before attempting any conversions 
 (since it's not uncommon to make schema modifications as part of the upgrade).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-8049) Explicitly examine current C* state on startup to detect incompatibilities before upgrade

2015-05-05 Thread Tyler Hobbs (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-8049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14528905#comment-14528905
 ] 

Tyler Hobbs commented on CASSANDRA-8049:


Snapshot manifest files ({{manifest.json}}) are triggering the unreadable 
sstables check, which is causing a lot of dtest failures (e.g. [snapshot 
tests|http://cassci.datastax.com/job/trunk_dtest/62/testReport/junit/snapshot_test/TestArchiveCommitlog/dont_test_archive_commitlog_4/]).
  It seems like that check should ignore files without a {{.db}} extension, 
correct?

 Explicitly examine current C* state on startup to detect incompatibilities 
 before upgrade
 -

 Key: CASSANDRA-8049
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8049
 Project: Cassandra
  Issue Type: Bug
Reporter: Aleksey Yeschenko
Assignee: Sam Tunnicliffe
 Fix For: 3.0

 Attachments: 8049-v2.txt, 8049.txt


 Unfortunately, we cannot rely on users reading, and following, NEWS.txt 
 before upgrading. People don't read, or ignore it, and sometimes have issues 
 as the result (see CASSANDRA-8047, for example, and I know of several cases 
 like that one).
 We should add an explicit compatibility check on startup, before we modify 
 anything, or write out sstables with the new format. We should fail and 
 complain loudly if we detect a skipped upgrade step.
 We should also snapshot the schema tables before attempting any conversions 
 (since it's not uncommon to make schema modifications as part of the upgrade).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-8049) Explicitly examine current C* state on startup to detect incompatibilities before upgrade

2015-04-27 Thread Sam Tunnicliffe (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-8049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14513859#comment-14513859
 ] 

Sam Tunnicliffe commented on CASSANDRA-8049:


Fair enough, this is a good opportunity to clean up some of that existing 
stuff. I've pushed another commit to the branch addressing all of the above 
comments.

 Explicitly examine current C* state on startup to detect incompatibilities 
 before upgrade
 -

 Key: CASSANDRA-8049
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8049
 Project: Cassandra
  Issue Type: Bug
Reporter: Aleksey Yeschenko
Assignee: Sam Tunnicliffe
 Fix For: 3.0

 Attachments: 8049-v2.txt, 8049.txt


 Unfortunately, we cannot rely on users reading, and following, NEWS.txt 
 before upgrading. People don't read, or ignore it, and sometimes have issues 
 as the result (see CASSANDRA-8047, for example, and I know of several cases 
 like that one).
 We should add an explicit compatibility check on startup, before we modify 
 anything, or write out sstables with the new format. We should fail and 
 complain loudly if we detect a skipped upgrade step.
 We should also snapshot the schema tables before attempting any conversions 
 (since it's not uncommon to make schema modifications as part of the upgrade).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-8049) Explicitly examine current C* state on startup to detect incompatibilities before upgrade

2015-04-22 Thread Aleksey Yeschenko (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-8049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14508166#comment-14508166
 ] 

Aleksey Yeschenko commented on CASSANDRA-8049:
--

- initializing JMX arguably shouldn't be part of a startup check. Errors and 
warnings should be, if we don't mind some logic duplication of the port 
checking for nulls (I don't)
- the {{info}} logging in {{inspectJvmOptions}} for heap size and JVM 
vendor/version should probably also remain in {{CassandraDaemon}}, and the 
32bit VM logger.info should really be a {{warn}}.
- {{checkJnaInitialization}} shouldn't be calling {{CLibrary.tryMlockall()}}. 
Catching {{LastErrorException}} there is also kinda pointless - 
{{CLibrary.tryMlockall()}} never ever rethrows it (and provides more than 
sufficient logging itself)
- {{initSigarLibrary}} if/else logic is redundant (and I know it's a 
pre-existing condition). A single-line {{new 
SigarLibrary().warnIfRunningInDegradedMode()}} should be sufficient, b/c the 
method itself has an else branch on {{initialized}} that logs 'failed to 
initialize' if so.
- {{checkCacheServiceInitialization}} can go away entirely. I don't see a way 
it could happen, it's basically dead code (and has been so forevah)
- snapshotting system keyspace on upgrades should be done, but probably not as 
part of {{checkSystemKeyspaceState}} or the startup check framework. Can we 
make it a separate method in {{CassandraDaemon}} or, better, 
{{SystemKeyspace}}, instead?

Nits:
- {{StartupCheck}} javadocs are incorrect, not reflecting the fact that we only 
throw the exception now and not return any values
- {{StartupException}} should probably be a checked one here, given that it can 
only be caught in one place and *is* being caught there

Most of the issues here are ones in the pre-existing code, but this ticket is 
an opportunity to fix them anyway, since they are related. Everything else LGTM.

 Explicitly examine current C* state on startup to detect incompatibilities 
 before upgrade
 -

 Key: CASSANDRA-8049
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8049
 Project: Cassandra
  Issue Type: Bug
Reporter: Aleksey Yeschenko
Assignee: Sam Tunnicliffe
 Fix For: 3.0

 Attachments: 8049-v2.txt, 8049.txt


 Unfortunately, we cannot rely on users reading, and following, NEWS.txt 
 before upgrading. People don't read, or ignore it, and sometimes have issues 
 as the result (see CASSANDRA-8047, for example, and I know of several cases 
 like that one).
 We should add an explicit compatibility check on startup, before we modify 
 anything, or write out sstables with the new format. We should fail and 
 complain loudly if we detect a skipped upgrade step.
 We should also snapshot the schema tables before attempting any conversions 
 (since it's not uncommon to make schema modifications as part of the upgrade).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-8049) Explicitly examine current C* state on startup to detect incompatibilities before upgrade

2015-04-22 Thread Sam Tunnicliffe (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-8049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14506840#comment-14506840
 ] 

Sam Tunnicliffe commented on CASSANDRA-8049:


I've pushed a rebased version 
[here|https://github.com/beobal/cassandra/tree/8049]. I've also relaxed the 
check on previous and current installed versions. If a previous install is 
detected we still snapshot the tables in the system keyspace, but I've removed 
the check that aborts startup if the previous version was too old as 
hardcoding the oldest permitted version was just too brittle  burdensome.

 Explicitly examine current C* state on startup to detect incompatibilities 
 before upgrade
 -

 Key: CASSANDRA-8049
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8049
 Project: Cassandra
  Issue Type: Bug
Reporter: Aleksey Yeschenko
Assignee: Sam Tunnicliffe
 Fix For: 3.0

 Attachments: 8049-v2.txt, 8049.txt


 Unfortunately, we cannot rely on users reading, and following, NEWS.txt 
 before upgrading. People don't read, or ignore it, and sometimes have issues 
 as the result (see CASSANDRA-8047, for example, and I know of several cases 
 like that one).
 We should add an explicit compatibility check on startup, before we modify 
 anything, or write out sstables with the new format. We should fail and 
 complain loudly if we detect a skipped upgrade step.
 We should also snapshot the schema tables before attempting any conversions 
 (since it's not uncommon to make schema modifications as part of the upgrade).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-8049) Explicitly examine current C* state on startup to detect incompatibilities before upgrade

2014-10-13 Thread Jeremy Hanna (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-8049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14169821#comment-14169821
 ] 

Jeremy Hanna commented on CASSANDRA-8049:
-

Would be great to see this as there was CASSANDRA-6598 which made upgrading 
sstables in 1.2 not include index sstables.  That made it so if a user didn't 
upgrade sstables with a 1.2.14+ version of C* before going to 2.0, 2.0 would 
migrate some system data and then fail to startup.  It was seen in a few 
different cases and painful to go back.  It is documented, but something to 
fail fast would be very welcome.

 Explicitly examine current C* state on startup to detect incompatibilities 
 before upgrade
 -

 Key: CASSANDRA-8049
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8049
 Project: Cassandra
  Issue Type: Bug
Reporter: Aleksey Yeschenko
 Fix For: 3.0


 Unfortunately, we cannot rely on users reading, and following, NEWS.txt 
 before upgrading. People don't read, or ignore it, and sometimes have issues 
 as the result (see CASSANDRA-8047, for example, and I know of several cases 
 like that one).
 We should add an explicit compatibility check on startup, before we modify 
 anything, or write out sstables with the new format. We should fail and 
 complain loudly if we detect a skipped upgrade step.
 We should also snapshot the schema tables before attempting any conversions 
 (since it's not uncommon to make schema modifications as part of the upgrade).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)