[ 
https://issues.apache.org/jira/browse/CAMEL-9035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-9035:
-------------------------------
    Fix Version/s: 2.16.0

> unbind smpp connection bug 
> ---------------------------
>
>                 Key: CAMEL-9035
>                 URL: https://issues.apache.org/jira/browse/CAMEL-9035
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-smpp
>    Affects Versions: 2.14.0, 2.15.2
>            Reporter: imran raza khan
>              Labels: patch
>             Fix For: 2.15.2, 2.16.0
>
>
> Suppose SMSC allowed one connection to client and due to any reason if 
> session.unbindAndClose failed it will set session to null and dont retry to 
> unbind. 
> Connection/Session will remain open on SMSC till its TransactionTimeOut, 
> mostly SMSc Admin set it to 5 to 10 mins. 
> Following are snippet of org.apache.camel.component.smpp.SmppProducer and 
> details are like 
> 1- if for any reason Camel try to unbind connection and it got failed below 
> code print log and set session=null in both success/fail cases. 
> 2- After sending unbind it will try to reconnect. 
> 3- As SMSc allowed 1 connection which was not unbinded successfull it will 
> not allowed second connection so reconnect will get failed. 
> 4- Camel call closesession on reconnection failure and will verify if session 
> != null, as session is already null so this code will not send unbind again 
> and apache camel will not able to get connection from SMSc until timeout 
> happen on SMSc and this will results in 10 mins outage. 
> If we change closeSession() like below 
> current: 
> {code}
> private void  closeSession() { 
>         if (session != null) { 
>             
> session.removeSessionStateListener(this.internalSessionStateListener); 
>             try { 
>                 Thread.sleep(1000); 
>                 session.unbindAndClose(); 
>             } catch (Exception e) { 
>               LOG.warn("Could not close session " + session); 
>             } 
>             session = null; 
>         } 
>     } 
> {code}
> Suggested: 
> {code}
> private void  closeSession() { 
>         if (session != null) { 
>             
> session.removeSessionStateListener(this.internalSessionStateListener); 
>             try { 
>                 Thread.sleep(1000); 
>                 session.unbindAndClose(); 
>                 session = null; // if we put here then it will retry for 
> unbind 
>             } catch (Exception e) { 
>               LOG.warn("Could not close session " + session); 
>             } 
>              session = null; // remove his line 
>         } 
>     } 
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to