Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fixing some bugs.
authorSébastien Miquée <sebastien.miquee@univ-fcomte.fr>
Wed, 17 Feb 2010 01:00:48 +0000 (02:00 +0100)
committerSébastien Miquée <sebastien.miquee@univ-fcomte.fr>
Wed, 17 Feb 2010 01:00:48 +0000 (02:00 +0100)
- Correcting a problem during the transformation of a node
  into an extra spawner;

- Correcting some mechanisms in the connected nodes registers
  management.

src/jaceP2P/JaceServer.java
src/jaceP2P/JaceSpawner.java
src/jaceP2P/JaceSuperNodeServer.java
src/jaceP2P/Register.java
src/jaceP2P/SuperNodeListe.java

index 8b973ef..d63f6ee 100644 (file)
@@ -34,10 +34,9 @@ public class JaceServer extends UnicastRemoteObject implements JaceInterface {
                        int nbdc, int nbsdc, int nbDaemonPerSpawner, int nbDaemonPerThread)
                        throws RemoteException {
                System.out.println("Beginning the transformation ...");
-//             @SuppressWarnings("unused")
-//             JaceSpawner spawner = new JaceSpawner(params, appliName, reg, nbTasks,
-//                             snodeStub, rank, heartTime, tag, nbdc, nbsdc,
-//                             nbDaemonPerSpawner, nbDaemonPerThread);
+               new JaceSpawner(params, appliName, reg, nbTasks,
+                               snodeStub, rank, heartTime, tag, nbdc, nbsdc,
+                               nbDaemonPerSpawner, nbDaemonPerThread);
                HeartBeatThread.Instance().kill();
                return Register.Instance().getSpawnerStub();
        }
index e2f68d5..66be55a 100644 (file)
@@ -181,8 +181,10 @@ public class JaceSpawner {
 
        public void startProcess(Vector<Object> spawnersList) {
                this.spawnersList = spawnersList;
+
                int is = spawnersList.indexOf((Object) Register.Instance()
                                .getSpawnerStub());
+
                if (is != -1) {
                        int nextNeighbour;
                        if (is == spawnersList.size() - 1)
@@ -584,7 +586,7 @@ public class JaceSpawner {
                                                        .updateHeart(spawnerStub);
                                } catch (Exception e) {
                                        System.err
-                                                       .println("unable to change the server of the heartbeatThread  for the previous node of rank "
+                                                       .println("Unable to change the server of the heartbeatThread  for the previous node of rank "
                                                                        + previous + ". error:" + e);
                                }
                        }
@@ -947,10 +949,10 @@ public class JaceSpawner {
 
                spawnersList = new Vector<Object>();
                for (int i = 0; i < nbExtraSpawners && i < registerSpawner.getSize(); i++) {
-                       spawnersList.add(registerSpawner.getNodeAt(i
-                                       * nbOfDaemonsPerSpawner));
-                       registerSpawner.removeNode(registerSpawner.getNodeAt(i
-                                       * nbOfDaemonsPerSpawner));
+                       spawnersList.add(registerSpawner.getNodeAt(0));
+//                                     * nbOfDaemonsPerSpawner));
+                       registerSpawner.removeNodeOfName(registerSpawner.getNodeAt(0).getName());
+//                                     * nbOfDaemonsPerSpawner));
                }
 
                registerSpawner.setNbOfTasks(nbTasks);
@@ -1020,7 +1022,7 @@ public class JaceSpawner {
                                                                                        + ez);
                                                }
                                        }
-                                       System.exit(0);
+                                       System.exit(1);
                                }
                        }
                }
@@ -1041,10 +1043,8 @@ public class JaceSpawner {
                                 * System.out.println("waiting till transform of spawner "+i+
                                 * " is finished"); Thread.sleep(20); }catch(Exception e1){}
                                 */
-
                                // System.out.println("start process on spawner of rank "+i);
-                               JaceSpawnerInterface spawnerStub = (JaceSpawnerInterface) spawnersList
-                                               .elementAt(i);
+                               JaceSpawnerInterface spawnerStub = (JaceSpawnerInterface) spawnersList.get(i);
                                spawnerStub.startProcess(spawnersList);
                        } catch (Exception e) {
                                e.printStackTrace(System.out);
@@ -1071,9 +1071,11 @@ public class JaceSpawner {
                // in order to start each task on the Daemons
 
                spawnersList.add(Register.Instance().getSpawnerStub());
-               System.out.println("    rank=spawnersList.size()=" + spawnersList.size());
+               System.out.println("    rank="+rank+" spawnersList.size()=" + spawnersList.size());
                rank = spawnersList.size() - 1;
+               
                broadcastRegister(1);
+               
                for (int j = 0; j < spawnersList.size(); j++) {
                        System.out.println("waiting till transform of spawner " + j
                                        + " is finished");
@@ -1083,9 +1085,10 @@ public class JaceSpawner {
                                        Thread.sleep(20);
                                } catch (Exception e) {
                                }
-                       System.out
-                                       .println("End Transformation of all spawners. Beginning the computing processes");
                }
+
+               System.out.println("End Transformation of all spawners. Beginning the computing processes");
+               
                for (i = 0; i < spawnersList.size(); i++) {
 
                        // while(!(spawnersList.elementAt(i) instanceof
@@ -1112,7 +1115,7 @@ public class JaceSpawner {
                JaceInterface nodeStub = null;
                TaskId myTask = null;
 
-               System.out.println("appli launched, starting the chrono");
+               System.out.println("Application launched, starting the chronometer");
                RunningApplication.Instance().getChrono().start();
 
                RunningApplication.Instance().setName(appliName);
@@ -1277,8 +1280,8 @@ public class JaceSpawner {
                        while (broadcasting == true)
                                Thread.sleep(5);
                        broadcasting = true;
-                       Register.Instance().setSpawnerStub(
-                                       Register.Instance().getSpawnerStub());
+//                     Register.Instance().setSpawnerStub(
+//                                     Register.Instance().getSpawnerStub());
                        int x = reg.getListeOfTasks().getSize() / nbOfDaemonsPerSpawner;
                        int s;
                        if (rank == x)
index c85a7c5..5648cd6 100644 (file)
@@ -293,8 +293,24 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
                        
                        for (int i = 0; i < ag.size(); i++) {
                                reg.addNode((Node) ag.get(i).getNode());
-                               gnodes.remove(ag.get(i));
-                               Register.Instance().removeNode((Node) ag.get(i).getNode());
+                               delGNodeFromList( (Node) ag.get(i).getNode() ) ;
+//                             gnodes.remove(ag.get(i));
+//                             Register.Instance().removeNode((Node) ag.get(i).getNode());
+                       }
+                       
+                       
+                       /** Searching extra nodes if any **/
+                       if( nbNoeuds > nbTasks )
+                       {
+                               int nb = nbNoeuds - nbTasks ;
+                               GNode sup = null ;
+                               
+                               for( int i = 0 ; i < nb ; i ++ )
+                               {
+                                       sup = al.getOtherGNode( gnodes ) ;
+                                       reg.addNodeBeg( (Node) sup.getNode() ) ;
+                                       delGNodeFromList( (Node) sup.getNode() ) ;
+                               }
                        }
                        
                        authorized = false ;
@@ -343,6 +359,7 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
                                if( ((Node)gnodes.get(i).getNode()).getId() == _n.getId() ) 
                                {
                                        removedGNode = gnodes.remove( i ) ;
+                                       Register.Instance().removeNodeOfName( removedGNode.getName() ) ;
                                        break ;
                                }
                        }
@@ -472,7 +489,13 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
        {
                if( _g != null )
                {
-                       workingOnGnodes() ;
+                       boolean free = false ;
+                       
+                       if( ! operating )
+                       {
+                               workingOnGnodes() ;
+                               free = true ;
+                       }
                        
                        for( int i = 0 ; i < gnodes.size() ; i++ )
                        {
@@ -483,7 +506,8 @@ public class JaceSuperNodeServer extends UnicastRemoteObject implements
                                }
                        }
                        
-                       operating = false ;
+                       if( free )
+                               operating = false ;
                }
                
        }
index e6f88cf..680c05d 100644 (file)
@@ -84,6 +84,32 @@ public class Register implements java.io.Serializable, java.lang.Cloneable {
                }
        }
 
+       /**
+        * Add extra Nodes (for extra Spawners) at the beginning of the register.
+        * @param host The extra Node
+        */
+       public synchronized void addNodeBeg(Node host) {
+               int is = -1;
+               if (host == null) {
+                       System.err
+                                       .println("In Register.addNode : host.getIP() == null !");
+               }
+               is = existNodeOfStub(host.getStub());
+               if (is != -1) {
+                       System.out.println("This node exists yet, I replace it");
+                       // System.out.println("MERDE !!");
+                       // System.out.println("MERDE !!");
+                       // System.out.println("MERDE !!");
+                       // System.out.println("MERDE !!");
+                       // System.out.println("MERDE !!");
+                       // System.out.println("MERDE !!");
+                       // System.out.println("MERDE !!");
+                       liste.setElementAt(host, is);
+               } else {
+                       liste.add(0,host);
+               }
+       }
+       
        public synchronized int existNodeOfStub(JaceInterface stub) {
                // System.out.println("remote " + stub + "\n\n");
                if (stub == null) {
index a0b1ca4..61add0a 100644 (file)
@@ -362,7 +362,7 @@ public class SuperNodeListe implements Cloneable {
                                        try {
                                                remoteStub.addGNode( _g ) ;
                                        } catch( Exception e ) {
-                                               System.err.println( "Unable to add new GNode at SuperNode " + d.getIP() ) ;
+                                               System.err.println( "Unable to add new GNode on SuperNode " + d.getIP() ) ;
                                        }
                                }
                        }
@@ -387,7 +387,7 @@ public class SuperNodeListe implements Cloneable {
                                        try {
                                                remoteStub.removeGNode( _g ) ;
                                        } catch( Exception e ) {
-                                               System.err.println( "Unable to remove GNode at SuperNode " + d.getIP() ) ;
+                                               System.err.println( "Unable to remove GNode on SuperNode " + d.getIP() ) ;
                                        }
                                }
                        }