Author: nextgens
Date: 2006-07-02 20:48:39 +0000 (Sun, 02 Jul 2006)
New Revision: 9433

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeStarter.java
Log:
More workarounds regarding the NPTL issue
                * Daemonize the memoryChecker
                * Don't start NodePinger from the constructor

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-07-02 19:41:19 UTC (rev 
9432)
+++ trunk/freenet/src/freenet/node/Node.java    2006-07-02 20:48:39 UTC (rev 
9433)
@@ -474,6 +474,8 @@
        private DSAPrivateKey myPrivKey;
        /** My public key */
        private DSAPublicKey myPubKey;
+       /** Memory Checker thread */
+       private final Thread myMemoryChecker;
        /** My ARK SSK private key */
        private InsertableClientSSK myARK;
        /** My ARK sequence number */
@@ -981,12 +983,15 @@

                primaryIPUndetectedAlert = new IPUndetectedUserAlert();

+               //Memory Checking thread
+       this.myMemoryChecker = new Thread(new MemoryChecker(), "Memory 
checker");
+       this.myMemoryChecker.setPriority(Thread.MAX_PRIORITY);
+       this.myMemoryChecker.setDaemon(true);
+               
                // Setup node-specific configuration
-               
                SubConfig nodeConfig = new SubConfig("node", config);

                // IP address override
-               
                int sortOrder = 0;
                nodeConfig.register("ipAddressOverride", "", sortOrder++, true, 
"IP address override", "IP address override (not usually needed)", new 
StringCallback() {

@@ -1267,7 +1272,6 @@
                peers.writePeers();
                peers.updatePMUserAlert();
                nodePinger = new NodePinger(this);
-               nodePinger.start();

                usm.setDispatcher(dispatcher=new NodeDispatcher(this));
                usm.setLowLevelFilter(packetMangler = new 
FNPPacketMangler(this));
@@ -1514,9 +1518,11 @@
        void start(boolean noSwaps) throws NodeInitException {
                if(!noSwaps)
                        lm.startSender(this, this.swapInterval);
+               nodePinger.start();
                dnsr.start();
                ps.start();
                usm.start();
+               myMemoryChecker.start();

                if(isUsingWrapper()) {
                        Logger.normal(this, "Using wrapper correctly: 
"+nodeStarter);

Modified: trunk/freenet/src/freenet/node/NodeStarter.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStarter.java     2006-07-02 19:41:19 UTC 
(rev 9432)
+++ trunk/freenet/src/freenet/node/NodeStarter.java     2006-07-02 20:48:39 UTC 
(rev 9433)
@@ -32,9 +32,7 @@
     /*---------------------------------------------------------------
      * Constructors
      *-------------------------------------------------------------*/
-    private NodeStarter()
-    {
-    }
+    private NodeStarter(){}

     public NodeStarter get(){
        return this;
@@ -83,7 +81,6 @@
        }

        // First, set up logging. It is global, and may be shared between 
several nodes.
-       
        SubConfig loggingConfig = new SubConfig("logger", cfg);

        try {
@@ -95,16 +92,9 @@
        }

        // Setup RNG
-       
        RandomSource random = new Yarrow();

        DiffieHellman.init(random);
-       
-       // FIXME : maybe we should keep it even if the wrapper does it
-       
-       Thread t = new Thread(new MemoryChecker(), "Memory checker");
-       t.setPriority(Thread.MAX_PRIORITY);
-       t.start();

                // Thread to keep the node up.
                // JVM deadlocks losing a lock when two threads of different 
types (daemon|app)


Reply via email to