Carlo Accorsi created DIRSERVER-1915:
----------------------------------------

             Summary: Graceful Shutdown Extended Request does not appear to 
work. 
                 Key: DIRSERVER-1915
                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1915
             Project: Directory ApacheDS
          Issue Type: Bug
          Components: core
    Affects Versions: 2.0.0-M16
         Environment: Win / Java 32
            Reporter: Carlo Accorsi



After executing the code below, it's expected that server will shutdown 
gracefully, stopping all the threads. 

                LdapConnection  ldapConnection = … //admin connection
                GracefulShutdownRequest req = new GracefulShutdownRequestImpl();
                req.setDelay(0);
                req.setTimeOffline(0);
                
                ExtendedResponse res = ldapConnection.extended(req);
                ResultCodeEnum resultCode = res.getLdapResult().getResultCode();
                switch (resultCode)
                {
                                case SUCCESS :
                                                LOG.info("Server shutting 
down"); 
                                                break;
                                default :
                                                LOG.error ("Server shutdown 
failed : {} ", resultCode.toString());
                }


When the shutdown request is sent, the code continues past
 org.apache.mina.filter.executor.UnorderedThreadPoolExecutor:476
ran=true;  

The content of task object is this:

[(0x00000001: nio socket, server, null => /127.0.0.1:10389)] MESSAGE_RECEIVED: 
MessageType : EXTENDED_REQUEST Message ID : 2
    Extended request
        Request name : '1.3.6.1.4.1.18060.0.1.3'
org.apache.directory.api.ldap.extras.extended.GracefulShutdownRequestImpl@2a5eb8cf

After the shutdown code has executed and Result Code SUCCESS is returned, the 
following threads are still running. 

org.apache.directory.server.UberjarMain at localhost:61153      
        Daemon Thread [apacheds] (Running)      
        Daemon Thread [changePwdReplayCache.data] (Running)     
        Daemon Thread [kdcReplayCache.data] (Running)   
        Daemon Thread [ou=system.data] (Running)        
        Daemon Thread [groupCache.data] (Running)       
        Daemon Thread [Thread-1] (Running)      
        Daemon Thread [Thread-2] (Running)      
        Thread [NioSocketAcceptor-2] (Running)  
        Thread [pool-3-thread-1] (Running)      
        Thread [DestroyJavaVM] (Running)        
        Thread [pool-2-thread-1] (Running)      
        Thread [pool-7-thread-1] (Running)

If the shutdown code is called a second time, this exception occurs. 

org.apache.directory.ldap.client.api.exception.InvalidConnectionException: 
Cannot connect on the server: Connection refused: no further information
        at 
org.apache.directory.ldap.client.api.LdapNetworkConnection.connect(LdapNetworkConnection.java:560)
        at 
org.apache.directory.ldap.client.api.LdapNetworkConnection.bindAsync(LdapNetworkConnection.java:1156)
        at 
org.apache.directory.ldap.client.api.LdapNetworkConnection.bind(LdapNetworkConnection.java:1076)
        at test.Shutdown.createConnection(Shutdown.java:93)
        at test.Shutdown.shutdown(Shutdown.java:32)
        at test.Shutdown.main(Shutdown.java:23)
Caused by: java.net.ConnectException: Connection refused: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at 
sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:599)
        at 
org.apache.mina.transport.socket.nio.NioSocketConnector.finishConnect(NioSocketConnector.java:221)
        at 
org.apache.mina.transport.socket.nio.NioSocketConnector.finishConnect(NioSocketConnector.java:46)
        at 
org.apache.mina.core.polling.AbstractPollingIoConnector.processConnections(AbstractPollingIoConnector.java:442)
        at 
org.apache.mina.core.polling.AbstractPollingIoConnector.access$700(AbstractPollingIoConnector.java:64)
        at 
org.apache.mina.core.polling.AbstractPollingIoConnector$Connector.run(AbstractPollingIoConnector.java:510)
        at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)






--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to