[ 
https://issues.apache.org/jira/browse/CASSANDRA-8049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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)

Reply via email to