Archived

This forum has been archived. Please start a new discussion on GitHub.

locking in Connection

Both Connection::isFinished() and Connection::validate() use the same lock. When for some reason network I/O ::write() operation called inside validate() is stuck that connection is locked, but this hangs whole thread pool, because it calls isFinished() for each connection in it. Setting timeout for endoint helps a little. If it's 1 second, for that second Ice program is frozen when write() timeout happens.

The same problem we found in VisiBroker Java ORB two years ago.

Comments

  • Thanks for the bug report, we will investigate.
  • This problem will be fixed in the upcoming Ice 2.1.0. validate() now doesn't block the connection mutex anymore while sending or receiving data.

    Thanks for finding this bug and providing an analysis of the problem, too!