[ 
https://issues.apache.org/jira/browse/DERBY-3358?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12576102#action_12576102
 ] 

Jørgen Løland commented on DERBY-3358:
--------------------------------------

I now understand why you are catching Throwable. I still don't agree that it is 
a good thing to do because there are many pitfalls, but I guess that's just a 
matter of opinion. Here is some food-for-thought:

* The class javadoc of java.lang.Error says:
"An Error is a subclass of Throwable that indicates serious problems that a 
reasonable application should not try to catch. Most such errors are abnormal 
conditions."

I interpret this as being something "bigger" than replication that should be 
reported further up the system. I checked how 
TransactionResourceImpl#handleException deals with Errors and found, e.g., that 
it has special treatment for ThreadDeath Errors.

* Looking more closely at ThreadDeath, the javadoc says:
"An application should catch instances of this class only if it must clean up 
after being terminated asynchronously. If ThreadDeath is caught by a method, it 
is important that it be re-thrown so that the thread actually dies."

I haven't checked the other Errors, but there may be similar pitfalls around. 

> After an incorrect(unsuccesfull) startMaster comand, further correct 
> startMaster attempts also fail.
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3358
>                 URL: https://issues.apache.org/jira/browse/DERBY-3358
>             Project: Derby
>          Issue Type: Bug
>          Components: Replication
>    Affects Versions: 10.4.0.0
>         Environment: Trunk (615841) + patch DERBY-3205/stopSlave_v1b
>            Reporter: Ole Solberg
>            Assignee: V.Narayanan
>         Attachments: Derby3358.diff, Derby3358.stat, Derby3358_v2.diff, 
> Derby3358_v2.stat, Derby3358_v3.diff, Derby3358_v3.stat, Derby3358_v4.diff, 
> Derby3358_v4.stat, Derby3358_v5.diff, Derby3358_v5.stat
>
>
> Slave and master servers started.
> startSlave:
> CONNECT 
> 'jdbc:derby://atum11:9999/test;startSlave=true;slaveHost=atum11;slavePort=8989';
> ERROR XRE08: DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE08, SQLERRMC: 
> Replication slave mode started successfully for database 'test'. Connection 
> refused because the database is in replication slave mode. 
> startMaster without specifying slavePort - will use default?
> CONNECT 'jdbc:derby://atum11:8888/test;startMaster=true;slaveHost=atum11';
> ERROR XRE04: DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE04, SQLERRMC: 
> nullXRE04
> master derby.log:
> 2008-01-29 10:02:53.097 GMT:
>  Booting Derby version The Apache Software Foundation - Apache Derby - 
> 10.4.0.0 alpha - (615841M): instance c013800d-0117-c4fb-9156-000003bf6570
> on database directory 
> /export/home/tmp/os136789/Replication_common_Trunk/master/test  
> Database Class Loader started - derby.database.classpath=''
> 2008-01-29 10:02:53.256 GMT Thread[DRDAConnThread_2,5,main] (XID = 419), 
> (SESSIONID = 0), (DATABASE = test), (DRDAID = {1}), Cleanup action starting
> java.sql.SQLException: Could not establish a connection to the peer of the 
> replicated database 'null'.
> .
> .
> Cleanup action completed
> 2008-01-29 10:02:53.260 GMT Thread[DRDAConnThread_2,5,main] (DATABASE = 
> test), (DRDAID = {1}), Could not establish a connection to the peer of the 
> replicated database 'null'.
> startMaster specyfying slavePort:
> CONNECT 
> 'jdbc:derby://atum11:8888/test;startMaster=true;slaveHost=atum11;slavePort=8989';
> ERROR XRE04: DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE04, SQLERRMC: 
> nullXRE04
> master derby.log:
> 2008-01-29 10:03:38.201 GMT Thread[DRDAConnThread_2,5,main] (XID = 420), 
> (SESSIONID = 1), (DATABASE = test), (DRDAID = {2}), Cleanup action starting
> java.sql.SQLException: Could not establish a connection to the peer of the 
> replicated database 'null'.
> .
> .
> Cleanup action completed
> 2008-01-29 10:03:38.205 GMT Thread[DRDAConnThread_2,5,main] (DATABASE = 
> test), (DRDAID = {2}), Could not establish a connection to the peer of the 
> replicated database 'null'.
> Additional observation/comment:
> ----------------------------------------
> It would be helpful for debugging if slaveHost and slavePort were written in 
> error messages and into derby.log.

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

Reply via email to