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();
}
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)
.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);
}
}
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);
+ ez);
}
}
- System.exit(0);
+ System.exit(1);
}
}
}
* 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);
// 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");
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
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);
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)
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 ;
if( ((Node)gnodes.get(i).getNode()).getId() == _n.getId() )
{
removedGNode = gnodes.remove( i ) ;
+ Register.Instance().removeNodeOfName( removedGNode.getName() ) ;
break ;
}
}
{
if( _g != null )
{
- workingOnGnodes() ;
+ boolean free = false ;
+
+ if( ! operating )
+ {
+ workingOnGnodes() ;
+ free = true ;
+ }
for( int i = 0 ; i < gnodes.size() ; i++ )
{
}
}
- operating = false ;
+ if( free )
+ operating = false ;
}
}
}
}
+ /**
+ * 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) {
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() ) ;
}
}
}
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() ) ;
}
}
}