On Monday 28 April 2008 17:17, [EMAIL PROTECTED] 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
> [EMAIL PROTECTED]
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 

Attachment: pgpKd2Dr4jsWu.pgp
Description: PGP signature

_______________________________________________
Devl mailing list
Devl@freenetproject.org
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to