cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Stupp (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-7597) System.exit() calls should be removed from DatabaseDescriptor
Date Thu, 24 Jul 2014 11:46:39 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-7597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Robert Stupp updated CASSANDRA-7597:
------------------------------------

    Attachment: 7597.txt

Oops - not that easy. A static initializer in DatabaseDescriptor loads & applies the config
and calls System.exit on failure.

I implemented a workaround for these usecases and left the default behavior untouched. "Workaround"
as implemented in the attached patch:
# Call {{org.apache.cassandra.config.Config.setIsExitOnInvalidConfig(false)}}
# Check the return value of {{org.apache.cassandra.config.DatabaseDescriptor.getInvalidConfigFailure()}}
 - it returns {{null}} if the config has been successfully applied - otherwise it returns
the failure.
Also changed the {{catch (Exception e)}} to {{catch (Throwable e)}} in the static initializer
to catch really everything - even runtime exceptions.

This is not a good thing and I'm not sure whether to commit this one. [~benedict] ? 

> System.exit() calls should be removed from DatabaseDescriptor
> -------------------------------------------------------------
>
>                 Key: CASSANDRA-7597
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7597
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: Cassandra 2.0.9 (earlier version should be affected as well)
>            Reporter: Pavel Sakun
>         Attachments: 7597.txt
>
>
> We're using SSTableSimpleUnsortedWriter API to generate SSTable to be loaded into cassandra.
In case of any issue with config DatabaseDescriptor calls System.exit() which is apparently
not the thing you expect while using API.
> Test case is simple:
> System.setProperty( "cassandra.config", "" );
> new YamlConfigurationLoader().loadConfig();
> Thread.sleep( 5000 );
> System.out.println("We're still alive"); // this will never be called



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message