db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta A. Satoor (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4304) Network Server shutdown should handle exceptions and finish the server shutdown completely
Date Fri, 24 Jul 2009 17:19:14 GMT

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

Mamta A. Satoor commented on DERBY-4304:
----------------------------------------

Tiago noticed (
[ https://issues.apache.org/jira/browse/DERBY-4306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12731644#action_12731644
]) following NPE with my checkin 796316 (which has been rolled back)
       at org.apache.derby.impl.drda.NetworkServerControlImpl.isMsgProperty(NetworkServerControlImpl.java:3460)
       at org.apache.derby.impl.drda.NetworkServerControlImpl.localizeMessage(NetworkServerControlImpl.java:3397)
       at org.apache.derby.impl.drda.NetworkServerControlImpl.consolePropertyMessageWork(NetworkServerControlImpl.java:3195)
       at org.apache.derby.impl.drda.NetworkServerControlImpl.consolePropertyMessage(NetworkServerControlImpl.java:1888)
       at org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(NetworkServerControlImpl.java:895)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:597)
       at org.apache.derby.iapi.jdbc.DRDAServerStarter.run(DRDAServerStarter.java:236)
       at java.lang.Thread.run(Thread.java:619)

I debugged the NPE and found that my try catch block below was getting NPE from mgmtService.unregisterMBean(versionMBean);
	    try {
	        mgmtService.unregisterMBean(versionMBean);
	        mgmtService.unregisterMBean(networkServerMBean);
	    } catch (Exception exception) {
			consolePropertyMessage("DRDA_UnexpectedException.S", 
               				exception.getMessage()); 
			consoleExceptionPrintTrace(exception);
	    }
This NPE from mgmtService.unregisterMBean(versionMBean); is caught by the catch clause above.
The problem though is that exception.getMessage() for this NPE returns null and our existing
code for consolePropertyMessage is not written to handle a null 2nd parameter. But the work
that is being done by consolePropertyMessage on exception.getMessage() is also done by the
next line of code in try catch block which is consoleExceptionPrintTrace(exception); In fact,
consoleExceptionPrintTrace handles the null exception.getMessage() fine. Because of that I
am suggesting that I replace the call consolePropertyMessage("DRDA_UnexpectedException.S",
exception.getMessage()); with consolePropertyMessage("DRDA_UnexpectedException.S", true);

So, the new try catch will look as follows
	    try {
	        mgmtService.unregisterMBean(versionMBean);
	        mgmtService.unregisterMBean(networkServerMBean);
	    } catch (Exception exception) {
			consolePropertyMessage("DRDA_UnexpectedException.S", true);
			consoleExceptionPrintTrace(exception);
	    }

In fact, I am changing all the try catches introduced for different steps of shutdown to look
like above. I am running the junit tests right now. Once derbyall and junit finish, I will
go ahead and commit these changes. Any feedback greatly appreciated.

> Network Server shutdown should handle exceptions and finish the server shutdown completely
> ------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4304
>                 URL: https://issues.apache.org/jira/browse/DERBY-4304
>             Project: Derby
>          Issue Type: Improvement
>          Components: Network Server
>    Affects Versions: 10.6.0.0
>            Reporter: Mamta A. Satoor
>            Assignee: Mamta A. Satoor
>         Attachments: DERBY4304_handleExceptions_patch1_diff.txt
>
>
> While working on DERBY-4053, found that an exception from Connection.close was not handled
properly by the server shutdown code which caused a new instance server startup to hang. Resolved
the problem with Connection close but in general, we should
> 1) Make sure an exception during shutdown processing does not prevent the remaining shutdown
tasks, like closing the server socket from occurring. 
> 2) Make sure any exceptions that occur in shutdown processing are reported to the console.


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


Mime
View raw message