// thread per l'avvio del nuovo master import java.io.*; import java.util.Enumeration; public class InitMasterThread extends Thread { public InitMasterThread() { super("InitMasterThread"); } public void run() { File fs; PrintWriter outb; try { // salva la lista degli slaves in slavelst.txt fs=new File(ConstantsS.masterPath+"slavelst.txt"); outb=new PrintWriter(new FileWriter(fs)); outb.print(ConstantsS.sv.aliveToString()); outb.println("*** lista slaves morti ***"); outb.print(ConstantsS.sv.deadToString()); outb.close(); System.out.println("Slave$InitMasterThread.run(): "+ConstantsS.masterPath+"slavelst.txt salvato."); // salva la lista delle query pendenti sul master in cachem.txt fs=new File(ConstantsS.masterPath+"cachem.txt"); outb=new PrintWriter(new FileWriter(fs)); Enumeration en=ConstantsS.queryList.keys(); while (en.hasMoreElements()) { String k=(String)en.nextElement(); outb.println(k); QueryListElem ql=(QueryListElem)ConstantsS.queryList.get(k); if (ql!=null) outb.println(ql.toString()); } outb.close(); System.out.println("Slave$InitMasterThread.run(): "+ConstantsS.masterPath+"cachem.txt salvato."); // salva il vecchio ip del master in ip_old.txt fs=new File(ConstantsS.masterPath+"ip_old.txt"); outb=new PrintWriter(new FileWriter(fs)); outb.println(ConstantsS.masterIP); outb.close(); System.out.println("Slave$InitMasterThread.run(): "+ConstantsS.masterPath+"ip_old.txt salvato."); // avvia il nuovo master Runtime r=Runtime.getRuntime(); Process p=r.exec(ConstantsS.startMasterCmd); System.out.println("Slave$InitMasterThread.run(): nuovo master avviato"); } catch(IOException ex) { System.out.println("Slave$InitMasterThread.run(): "+ex.toString()); } } }