[
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:
----------------------------------
Hello!
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 a
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.
Thanks!
> '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: 10.4.0.0
> 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.