db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "V.Narayanan (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3454) 'java.lang.NullPointerException' is thrown when starting a master db before a slave one
Date Tue, 04 Mar 2008 03:22:50 GMT

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

V.Narayanan commented on DERBY-3454:

Thank you for the comments Serge :)

>For the flow above:
>   * If (3) is executed before (2), then I guess this would be a programmatic error 
>     and a RE should be called (like IllegalStateException)

I would try to correct the case when (3) is called before (2) (fix the programming error)
than throw an IllegalStateException

>   * If (2) fails, I do also consider executing (3) after that as a programmatic error,

>      because in this case a transmitter/receiver hasn't been properly initialized. 
>      And there's an attempt to use a transmitter/receiver which has turned up to
>      be in an illegal state.

>You're right that the transmitter/receiver is an abstraction above the connection.
>But I'm just trying to say that it might be wrong (from a programmatic point of view)
>to try to use them in an illegal state. And might be better to properly process a (2)
>failure and make it so sendMessage/readMessage methods won't be called 
>afterwards, instead of relying on an IOException been reported to a user.

* If there is a programmatic error causing an Unchecked Exception to be thrown (like an NPE)
  I would not correct it by throwing another Unchecked Exception (IllegalStateException)

* If there is a programmatic error that causes an Unchecked Exception to be thrown,like, (3)
  before (2) I would correct the programmatic error than throw an unchecked exception

* I do not agree that Properly processing a (2) failure = throwing an unchecked exception.

* I am properly processing (2) when I try to ensure that the underlying connection is valid
  before attempting a send or a receive.

* Now that all transmitter methods verify that the underlying connection is not invalid using
  the checkSocketConnection() method the there would be no danger of attempting (3) with a
  invalid connection.

> '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