<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.jacorb.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://www.jacorb.org/bugzilla/"
          
          maintainer="jacorb@goots.org"
>

    <bug>
          <bug_id>967</bug_id>
          
          <creation_ts>2013-10-15 16:50:36 +0000</creation_ts>
          <short_desc>ClientGIOPConnection/closeAllowReopen and threads</short_desc>
          <delta_ts>2015-02-03 06:53:19 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>JacORB</product>
          <component>ORB</component>
          <version>3.3</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nick Cross">jacorb</reporter>
          <assigned_to name="Nick Cross">jacorb</assigned_to>
          <cc>mesnierp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3074</commentid>
    <comment_count>0</comment_count>
    <who name="Nick Cross">jacorb</who>
    <bug_when>2013-10-15 16:50:36 +0000</bug_when>
    <thetext>Currently, if for instance, a server is killed the client receives a 
COMM_FAILURE then the transport is closed down and the GIOP layer is 
kept &apos;open&apos;.


However, the problem is that with this scenario we get a 
ClientMessageReceptor thread stuck in receive messages loop. Of course, 
if the client object is _release&apos;d this would go away.

If the GIOP connection is closed in 
ClientGIOPConnection::closeAllowReopen i.e. close() is called (after 
being called from streamClosed) then the thread is released into the 
pool and the transport and giop layer are closed down.
However, this does not negate the possibility of calling the client 
object again - it should simply attempt to call the server again, 
reopening the connection/transport if required.

There appears to be a trade-off here between object creation/gc versus 
threads. If the client does not call release, it can cause thread pool exhaustion as many threads are simply locked up waiting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3079</commentid>
    <comment_count>1</comment_count>
    <who name="Nick Cross">jacorb</who>
    <bug_when>2013-10-23 11:40:29 +0000</bug_when>
    <thetext>Fixed on master by 0b9f406a288dcba2fe3cd4a6bcadcf8c412a9559 and branch by 8ce56ede8b404bf6c37e21fa31c4ac55c9976853</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3267</commentid>
    <comment_count>2</comment_count>
      <attachid>456</attachid>
    <who name="Phil Mesnier">mesnierp</who>
    <bug_when>2015-01-29 18:36:22 +0000</bug_when>
    <thetext>Created attachment 456
example of failure raised by this bug fix

The attached patch modifies the hello demo to illustrate a negative side effect to the current fix for this bug.

Given a server listening on a specific endpoint, a client will hang indefinitely if the server dies and is restarted while the client is still running. It seems that when &quot;disconnect_after_systemexception&quot; is true, the thread in GIOPConnection.receiveMessages exits but later after a new connection is established no thread reenters receiveMessages so the server&apos;s reply message is never received and the client is hung.

My test has to be run by hand, use separate command lines for client and server.

cd demo/hello
jaco -cp target/classes org.jacorb.demo.hello.Server hello.ior

and

cd demo/hello
jaco -cp target/classes org.jacorb.demo.hello.Client hello.ior

While the client is sleeping, kill and restart the server. Observe the client hangs after sending the request. Note that uncommenting Client.java line 43:
  // p.setProperty (&quot;jacorb.connection.client.disconnect_after_systemexception&quot;, &quot;false&quot;);
allows the client to recover.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3268</commentid>
    <comment_count>3</comment_count>
    <who name="Phil Mesnier">mesnierp</who>
    <bug_when>2015-01-29 18:37:32 +0000</bug_when>
    <thetext>reopening as there is still an issue here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3270</commentid>
    <comment_count>4</comment_count>
    <who name="Nick Cross">jacorb</who>
    <bug_when>2015-01-30 08:25:11 +0000</bug_when>
    <thetext>Discussing with Phil - might need a patch in ClientConnectionManager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3271</commentid>
    <comment_count>5</comment_count>
    <who name="Nick Cross">jacorb</who>
    <bug_when>2015-02-03 06:53:19 +0000</bug_when>
    <thetext>Fix 932cf57c941d6794e180fd69272fbfc46b38d5d9 applied.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456</attachid>
            <date>2015-01-29 18:36:22 +0000</date>
            <delta_ts>2015-01-29 18:36:22 +0000</delta_ts>
            <desc>example of failure raised by this bug fix</desc>
            <filename>bz967a.patch</filename>
            <type>text/plain</type>
            <size>3138</size>
            <attacher name="Phil Mesnier">mesnierp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2RlbW8vaGVsbG8vc3JjL21haW4vamF2YS9vcmcvamFjb3JiL2RlbW8vaGVs
bG8vQ2xpZW50LmphdmEgYi9kZW1vL2hlbGxvL3NyYy9tYWluL2phdmEvb3JnL2phY29yYi9kZW1v
L2hlbGxvL0NsaWVudC5qYXZhCmluZGV4IGJlM2UzNTQuLmJhMTBiMTMgMTAwNjQ0Ci0tLSBhL2Rl
bW8vaGVsbG8vc3JjL21haW4vamF2YS9vcmcvamFjb3JiL2RlbW8vaGVsbG8vQ2xpZW50LmphdmEK
KysrIGIvZGVtby9oZWxsby9zcmMvbWFpbi9qYXZhL29yZy9qYWNvcmIvZGVtby9oZWxsby9DbGll
bnQuamF2YQpAQCAtMzYsMzIgKzM2LDM3IEBAIHB1YmxpYyBjbGFzcyBDbGllbnQKICAgICAgICAg
ICAgICAgICBTeXN0ZW0uZXhpdCggLTEgKTsKICAgICAgICAgICAgIH0KIAotCisgICAgICAgICAg
ICBQcm9wZXJ0aWVzIHAgPSBuZXcgUHJvcGVydGllcygpOworICAgICAgICAgICAgcC5zZXRQcm9w
ZXJ0eSAoImphY29yYi5sb2cuZGVmYXVsdC52ZXJib3NpdHkiLCI0Iik7CisgICAgICAgICAgICAv
LyBjb250cmEgZXhhbXBsZQorICAgICAgICAgICAgLy8gcC5zZXRQcm9wZXJ0eSAoImphY29yYi5j
b25uZWN0aW9uLmNsaWVudC5kaXNjb25uZWN0X2FmdGVyX3N5c3RlbWV4Y2VwdGlvbiIsICJmYWxz
ZSIpOwogICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgT1JCLgotICAgICAgICAgICAgT1JC
IG9yYiA9IE9SQi5pbml0KCBhcmdzLCBudWxsICk7CisgICAgICAgICAgICBPUkIgb3JiID0gT1JC
LmluaXQoIGFyZ3MsIHAgKTsKIAogICAgICAgICAgICAgQnVmZmVyZWRSZWFkZXIgYnIgPQogICAg
ICAgICAgICAgICAgIG5ldyBCdWZmZXJlZFJlYWRlciggbmV3IEZpbGVSZWFkZXIoIGYgKSk7CiAK
LSAgICAgICAgICAgIC8vIGdldCBvYmplY3QgcmVmZXJlbmNlIGZyb20gY29tbWFuZC1saW5lIGFy
Z3VtZW50IGZpbGUKLSAgICAgICAgICAgIG9yZy5vbWcuQ09SQkEuT2JqZWN0IG9iaiA9Ci0gICAg
ICAgICAgICAgICAgb3JiLnN0cmluZ190b19vYmplY3QoIGJyLnJlYWRMaW5lKCkgKTsKKyAgICAg
ICAgICAgIFN0cmluZyBpb3IgPSBici5yZWFkTGluZSAoKTsKIAogICAgICAgICAgICAgYnIuY2xv
c2UoKTsKIAotICAgICAgICAgICAgLy8gYW5kIG5hcnJvdyBpdCB0byBIZWxsb1dvcmxkLkdvb2RE
YXkKLSAgICAgICAgICAgIC8vIGlmIHRoaXMgZmFpbHMsIGEgQkFEX1BBUkFNIHdpbGwgYmUgdGhy
b3duCi0gICAgICAgICAgICBHb29kRGF5IGdvb2REYXkgPSBHb29kRGF5SGVscGVyLm5hcnJvdygg
b2JqICk7Ci0KLQotICAgICAgICAgICAgLy8gaW52b2tlIHRoZSBvcGVyYXRpb24gYW5kIHByaW50
IHRoZSByZXN1bHQKLSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggZ29vZERheS5oZWxs
b19zaW1wbGUoKSApOwotCi0gICAgICAgICAgICAvLyBpbnZva2UgdGhlIG9wZXJhdGlvbiBhZ2Fp
biBhbmQgcHJpbnQgdGhlIHdpZGUgc3RyaW5nIHJlc3VsdAotICAgICAgICAgICAgU3lzdGVtLm91
dC5wcmludGxuKCAid2lkZSBzdHJpbmc6ICIgKwotICAgICAgICAgICAgICAgICAgICBnb29kRGF5
LmhlbGxvX3dpZGUoICJIZWxsbyBXb3JsZCwgZnJvbSAxIDIgMyAwIComXiUkI0AhQCIpKTsKLQot
ICAgICAgICAgICAgZ29vZERheS5zaHV0ZG93biAoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgNTsgaSsrKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3JnLm9t
Zy5DT1JCQS5PYmplY3Qgb2JqID0gb3JiLnN0cmluZ190b19vYmplY3QoIGlvciApOworICAgICAg
ICAgICAgICAgIHRyeQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBH
b29kRGF5IGdvb2REYXkgPSBHb29kRGF5SGVscGVyLm5hcnJvdyggb2JqICk7CisgICAgICAgICAg
ICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggZ29vZERheS5oZWxsb19zaW1wbGUoKSApOwor
ICAgICAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAgKDEwMDAwKTsKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaCggT0JKRUNUX05PVF9FWElTVCBvbmUpCisgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcCAoNTAwMCk7
CisgICAgICAgICAgICAgICAgICAgIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKCBuZXcgRmlsZVJl
YWRlciggZiApKTsKKyAgICAgICAgICAgICAgICAgICAgaW9yID0gYnIucmVhZExpbmUgKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjYXRjaCggRXhjZXB0aW9uIGV4ICkKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvZGVtby9oZWxsby9zcmMvbWFpbi9qYXZhL29yZy9qYWNvcmIv
ZGVtby9oZWxsby9TZXJ2ZXIuamF2YSBiL2RlbW8vaGVsbG8vc3JjL21haW4vamF2YS9vcmcvamFj
b3JiL2RlbW8vaGVsbG8vU2VydmVyLmphdmEKaW5kZXggZTBlMmFiZi4uZTU1ZTk1ZSAxMDA2NDQK
LS0tIGEvZGVtby9oZWxsby9zcmMvbWFpbi9qYXZhL29yZy9qYWNvcmIvZGVtby9oZWxsby9TZXJ2
ZXIuamF2YQorKysgYi9kZW1vL2hlbGxvL3NyYy9tYWluL2phdmEvb3JnL2phY29yYi9kZW1vL2hl
bGxvL1NlcnZlci5qYXZhCkBAIC0xLDYgKzEsNyBAQAogcGFja2FnZSBvcmcuamFjb3JiLmRlbW8u
aGVsbG87CiAKIGltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7
CiAKIGltcG9ydCBvcmcub21nLkNPUkJBLio7CiBpbXBvcnQgb3JnLm9tZy5Qb3J0YWJsZVNlcnZl
ci4qOwpAQCAtMTAsOCArMTEsMTEgQEAgcHVibGljIGNsYXNzIFNlcnZlcgogewogICAgIHB1Ymxp
YyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24KICAgICB7
CisgICAgICAgIFByb3BlcnRpZXMgcCA9IG5ldyBQcm9wZXJ0aWVzKCk7CisgICAgICAgIHAuc2V0
UHJvcGVydHkgKCJPQVBvcnQiLCI5OTk5Iik7CisKICAgICAgICAgLy9pbml0IE9SQgotICAgICAg
ICBPUkIgb3JiID0gT1JCLmluaXQoIGFyZ3MsIG51bGwgKTsKKyAgICAgICAgT1JCIG9yYiA9IE9S
Qi5pbml0KCBhcmdzLCBwICk7CiAKICAgICAgICAgLy9pbml0IFBPQQogICAgICAgICBQT0EgcG9h
ID0K
</data>

          </attachment>
      

    </bug>

</bugzilla>