db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Serge Tsv (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3454) 'java.lang.NullPointerException' is thrown when starting a master db before a slave one
Date Sat, 01 Mar 2008 11:00:51 GMT

    [ https://issues.apache.org/jira/browse/DERBY-3454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12574091#action_12574091

Serge Tsv commented on DERBY-3454:


Have applied the patch to the trunk, and I see the same XRE04 error instread of NPE now. :-)

I assume that it verifies that the tearDown method is implemented properly now.

I have a one small suggestion though. Could it be considered to throw a runtime exception

(like an IllegalStateException) other then  an IOException in the case when we try to use
connection which hasn't been established (except for a tearDown method)? I think the 
receiver/transmitter shouldn't be accessed at all after an exception is thrown during an 
initialization, which is a case when socket couldn't be established. 

The XRE04 error will still be reported in this case. And if the runtime exception is used,

then an introduction of a new error message won't be required I guess.


> 'java.lang.NullPointerException' is thrown when starting a master db before a slave one
> ---------------------------------------------------------------------------------------
>                 Key: DERBY-3454
>                 URL: https://issues.apache.org/jira/browse/DERBY-3454
>             Project: Derby
>          Issue Type: Bug
>          Components: Replication
>    Affects Versions:
>            Reporter: Serge Tsv
>            Assignee: V.Narayanan
>         Attachments: Derby3454.diff, Derby3454.stat
> The 'java.lang.NullPointerException' exception is thrown when a database is started in
a master mode and is trying to establish a connection to an slave database socket, which is
not available.
> The exception is by the MasterController#startMaster(). First, it tries to setup connection
with a slave database using a transmitter:
>     MasterController#setupConnection
>        -> transmitter = new ReplicationMessageTransmit(); 
>             transmitter.initConnection()
>               -> new InetSocketAddress() -> createSocket() -> connect()
> The connect() method throws a ConnectException, and so fails to create a socketConn instance.
The exception is then wrapped several times an propagated back to the MasterController#startMaster()
method. It's caught there and then a MasterController#teardownNetwork() method is called,
which tries to send a STOP message using the aforementioned transmitter, which hasn't been
able to init a connection. 
> A transmitter simply tries to call socketConn.writeMessage(message), which throws NPE
because socketConn is null.
> Thanks!

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message