Re: [Proxool-developer] concurrency bug in Prototyper class?
UNMAINTAINED!
Brought to you by:
billhorsman
From: Bill H. <bi...@lo...> - 2009-06-19 20:24:07
|
I see your point. We've jumped through a few hoops in Proxool to get the balance right between concurrency and excessive blocking. As you'd expect, our first priority is to ensure the code doesn't break in concurrent situations, but it's closely followed by our second priority: that it must be very fast and not do unnecessary locking. I'm not saying you're right or wrong - just that it would be hasty to grab a lock to read the connectionCount unless we explore the implications. 2009/6/19 Matt Salafia <msa...@gm...> > Possibly, but I don't know - it's indeterminate. Without the proper memory > visibility semantics (e.g. synchronization, immutability, volatile et. al.) > I think all bets are off. > > > > On Fri, Jun 19, 2009 at 1:32 PM, Bill Horsman <bi...@lo...>wrote: > >> Is that a problem that corrects itself? In other words, is it a temporary >> problem where a connection is refused when it didn't have to be but that the >> connection count does end up being correct? - Bill >> >> 2009/6/19 Matt Salafia <msa...@gm...> >> >>> It seems Class Prototyper should either acquire the lock on private >>> member 'lock' whenever it reads or modifies 'connectionCount' or make >>> 'connectionCount' a volatile variable. >>> >>> Prototyper.buildConnection( ) acquires the lock to read and modify >>> 'connectionCount' but other methods do not: Prototyper.sweep( ), >>> Prototyper.connectionRemoved( ) and Prototyper.getConnectionCount(). >>> >>> I started poking around after my application started seeing >>> ProxoolExceptions indicating the maximum connection count had been reached >>> and discovered what appears to be a memory visibility issue. If calls to >>> Prototyper.connectionRemoved( ) and Prototyper.buildConnection( ) happen in >>> different threads there could be unwarranted ProxoolExceptions for reaching >>> the maximum connection count - a 'connectionPool' decrement might not be >>> visible to the threads calling Prototyper.buildConnection( ). >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Are you an open source citizen? Join us for the Open Source Bridge >>> conference! >>> Portland, OR, June 17-19. Two days of sessions, one day of unconference: >>> $250. >>> Need another reason to go? 24-hour hacker lounge. Register today! >>> >>> http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org >>> _______________________________________________ >>> Proxool-developer mailing list >>> Pro...@li... >>> https://lists.sourceforge.net/lists/listinfo/proxool-developer >>> >>> >> >> >> ------------------------------------------------------------------------------ >> Are you an open source citizen? Join us for the Open Source Bridge >> conference! >> Portland, OR, June 17-19. Two days of sessions, one day of unconference: >> $250. >> Need another reason to go? 24-hour hacker lounge. Register today! >> >> http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org >> _______________________________________________ >> Proxool-developer mailing list >> Pro...@li... >> https://lists.sourceforge.net/lists/listinfo/proxool-developer >> >> > > > ------------------------------------------------------------------------------ > Are you an open source citizen? Join us for the Open Source Bridge > conference! > Portland, OR, June 17-19. Two days of sessions, one day of unconference: > $250. > Need another reason to go? 24-hour hacker lounge. Register today! > > http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org > _______________________________________________ > Proxool-developer mailing list > Pro...@li... > https://lists.sourceforge.net/lists/listinfo/proxool-developer > > |