package jaceP2P;
import java.rmi.Naming;
+import java.rmi.RemoteException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Vector;
// Variables for Mapping
private int algo;
private double paramAlgo ;
+ private String idAlgo ;
public JaceSpawner(String superNode, int port, String comProtocol,
String[] args, int nbDaemonPerSpawner, int nbDaemonPerThread,
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)
}
// /System.out.println("is running = false");
if (!JaceDaemon.Instance().isRunning())
- System.exit(0);
+ System.exit( 1 ) ;
}
public synchronized void signalDeadNode(JaceInterface host, int rankOfDead) {
if( node != null )
{
found = true ;
+ } else {
+ Thread.sleep( 1000 ) ;
+ System.out.println("Pas de bon retour !");
}
} catch (Exception e) {
// trouver un autre superNode et lui demander le noeud a lui
.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);
}
}
ListeTask t = Register.Instance().getListeOfTasks();
ScanThreadSpawner.Instance().kill();
HeartBeatSpawner.Instance().kill();
+
for (int i = 0; i < s + 1; i++) {
new KillThread(i, debut, nbOfDaemonsPerSpawner,
int nbsdc = RunningApplication.Instance()
.getNumberOfSpawnerDisconnections();
+
System.out.println("Application finished successfully !");
// System.out.println("Application finished successfully !!!!!!");
// System.out.println("Application finished successfully !!!!!!");
RunningApplication.Instance().purge();
// System.exit(1);
}
+
+ /** Suprresion of the mapping algorithm on the SuperNode **/
+ centralServer.removeAlgo( idAlgo, 0 ) ;
}
- } catch (Exception e) {
- System.out
- .println("w aiiiiiiiiiiiiiirrrr" + e + " index=" + index);
+ } catch( Exception e ) {
+ System.err.println( "Error the application nodes scan!\n " + e ) ;
z = index;
}
/*
.println("JaceP2P_Error in JaceSpawner.exportObject() when creating the local JaceSpawnerServer "
+ e);
// System.err.println("exit ds JaceSpawner.exportObject");
- System.exit(0);
+ System.exit( 1 ) ;
}
}
connectSuperNode();
}
}
+
+ idAlgo = LocalHost.Instance().getIP() ;
+
if (registerSpawner.getSize() != (nbTasks + nbExtraSpawners)) {
System.err.println("I did not recieve enough nodes from superNode!!!! \n killing application !!!!");
for (int i = 0; i < registerSpawner.getSize(); i++) {
System.err.println("The reserved node was unable to reconnect to the super node");
}
}
- System.exit(0);
+ System.exit( 1 ) ;
}
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);
System.exit(0);
}
}
+
+
+ /**
+ * Set the identifier of the mapping algorithm used.
+ * @param _s The mapping identifier
+ *
+ * @author Sébastien Miquée
+ */
+ public void setIdAlgo( String _s ) throws RemoteException
+ {
+ idAlgo = _s ;
+ }
public class TransformThread extends Thread {
int i;
+ 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");
while ((spawnersList.elementAt(j) instanceof Node))
+ {
try {
Thread.sleep(20);
} catch (Exception e) {
}
- System.out
- .println("End Transformation of all spawners. Beginning the computing processes");
+ }
+
+ try {
+ ((JaceSpawnerInterface)spawnersList.elementAt( i )).setIdAlgo( idAlgo ) ;
+ } catch (RemoteException e) {
+ System.err.println( "Unable to set Mapping Algorithm identifier" ) ;
+ e.printStackTrace();
+ }
+
}
+
+ 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)