On Monday 28 April 2008 17:17, nextgens at freenetproject.org wrote:
> Author: nextgens
> Date: 2008-04-28 16:17:10 +0000 (Mon, 28 Apr 2008)
> New Revision: 19589
> 
> Modified:
>    trunk/freenet/src/freenet/node/PeerManager.java
> Log:
> Fix a deadlock in PeerManager: writePeersInner will request PeerNode.this 
*but* the calling thread might not have it

We don't really want to hold the PeerManager lock while doing I/O now do we?

How did this deadlock work?
> 
> Modified: trunk/freenet/src/freenet/node/PeerManager.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/PeerManager.java   2008-04-28 15:45:40 UTC 
(rev 19588)
> +++ trunk/freenet/src/freenet/node/PeerManager.java   2008-04-28 16:17:10 UTC 
(rev 19589)
> @@ -1008,6 +1008,7 @@
>      }
>  
>      private void writePeersInner() {
> +         synchronized(this) {
>       synchronized(writePeersSync) {
>               if(darkFilename != null)
>                       writePeersInner(darkFilename, getDarknetPeers());
> @@ -1018,6 +1019,7 @@
>                       writePeersInner(om.getOldPeersFilename(), 
> om.getOldPeers());
>               }
>       }
> +         }
>      }
>      
>      /**
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080430/07871e1d/attachment.pgp>

Reply via email to