提交 b1bd3d03 编写于 作者: L liquidsnake@sapo.pt

In this commit, i've only added some debug messages.But I committed it anyway,...

In this commit, i've only added some debug messages.But I committed it anyway, so I can work on SMaRt during the weekend at home
上级 9a5cfc31
...@@ -265,6 +265,8 @@ public final class ExecutionManager { ...@@ -265,6 +265,8 @@ public final class ExecutionManager {
//TODO: at this point a new state should be recovered from other correct replicas //TODO: at this point a new state should be recovered from other correct replicas
/** ISTO E CODIGO DO JOAO, PARA TRATAR DA TRANSFERENCIA DE ESTADO */ /** ISTO E CODIGO DO JOAO, PARA TRATAR DA TRANSFERENCIA DE ESTADO */
Logger.println("(ExecutionManager.checkLimits) adding message for execution "+consId+" to out of context");
addOutOfContextMessage(msg);
tomLayer.requestState(me, otherAcceptors, msg.getSender(), consId); tomLayer.requestState(me, otherAcceptors, msg.getSender(), consId);
/******************************************************************/ /******************************************************************/
} }
...@@ -317,21 +319,12 @@ public final class ExecutionManager { ...@@ -317,21 +319,12 @@ public final class ExecutionManager {
return execution; return execution;
} }
/** ISTO E CODIGO DO JOAO, PARA TRATAR DA TRANSFERENCIA DE ESTADO */ /** ISTO E CODIGO DO JOAO, PARA TRATAR DA TRANSFERENCIA DE ESTADO */
public void removeExecutions(int id) { public void removeOutOfContexts(int id) {
executionsLock.lock();
/******* BEGIN EXECUTIONS CRITICAL SECTION *******/
Set<Integer> keys = executions.keySet();
for (int execution : keys)
if (execution <= id) executions.remove(execution);
/******* END EXECUTIONS CRITICAL SECTION *******/
executionsLock.unlock();
outOfContextLock.lock(); outOfContextLock.lock();
/******* BEGIN OUTOFCONTEXT CRITICAL SECTION *******/ /******* BEGIN OUTOFCONTEXT CRITICAL SECTION *******/
keys = outOfContextProposes.keySet(); Set<Integer> keys = outOfContextProposes.keySet();
for (int execution : keys) for (int execution : keys)
if (execution <= id) outOfContextProposes.remove(execution); if (execution <= id) outOfContextProposes.remove(execution);
......
...@@ -90,7 +90,7 @@ public class DeliveryThread extends Thread { ...@@ -90,7 +90,7 @@ public class DeliveryThread extends Thread {
// obtain an array of requests from the taken consensus // obtain an array of requests from the taken consensus
BatchReader batchReader = new BatchReader(batch, conf.getUseSignatures()==1); BatchReader batchReader = new BatchReader(batch, conf.getUseSignatures()==1);
Logger.println("(DeliveryThread.run) interpreting and verifying batched requests."); Logger.println("(DeliveryThread.update) interpreting and verifying batched requests.");
int numberOfMessages = batchReader.getNumberOfMessages(); int numberOfMessages = batchReader.getNumberOfMessages();
...@@ -157,13 +157,13 @@ public class DeliveryThread extends Thread { ...@@ -157,13 +157,13 @@ public class DeliveryThread extends Thread {
/****** Julgo que isto nao sera necessario *********** /****** Julgo que isto nao sera necessario ***********
if (conf.getCheckpoint_period() > 0) { if (conf.getCheckpoint_period() > 0) {
if ((eid > 0) && (eid % conf.getCheckpoint_period() == 0)) { if ((eid > 0) && (eid % conf.getCheckpoint_period() == 0)) {
Logger.println("(DeliveryThread.run) Performing checkpoint for consensus " + eid); Logger.println("(DeliveryThread.update) Performing checkpoint for consensus " + eid);
byte[] state2 = receiver.getState(); byte[] state2 = receiver.getState();
tomLayer.saveState(state2, eid); tomLayer.saveState(state2, eid);
//TODO: possivelmente fazer mais alguma coisa //TODO: possivelmente fazer mais alguma coisa
} }
else { else {
Logger.println("(DeliveryThread.run) Storing message batch in the state log for consensus " + eid); Logger.println("(DeliveryThread.update) Storing message batch in the state log for consensus " + eid);
tomLayer.saveBatch(batch, eid); tomLayer.saveBatch(batch, eid);
//TODO: possivelmente fazer mais alguma coisa //TODO: possivelmente fazer mais alguma coisa
} }
...@@ -194,10 +194,10 @@ public class DeliveryThread extends Thread { ...@@ -194,10 +194,10 @@ public class DeliveryThread extends Thread {
//(it only happens if the previous consensus were decided in a //(it only happens if the previous consensus were decided in a
//round > 0 //round > 0
/** Nao consigo perceber se isto tem utilidade neste contexto *****/ /** Nao consigo perceber se isto tem utilidade neste contexto *****/
int nextExecution = lastEid + 1; //int nextExecution = lastEid + 1;
if(tomLayer.acceptor.executeAcceptedPendent(nextExecution)) { //if(tomLayer.acceptor.executeAcceptedPendent(nextExecution)) {
Logger.println("(DeliveryThread.run) Executed propose for " + nextExecution); //Logger.println("(DeliveryThread.update) Executed propose for " + nextExecution);
} //}
/******************************************************************/ /******************************************************************/
} }
...@@ -308,6 +308,10 @@ public class DeliveryThread extends Thread { ...@@ -308,6 +308,10 @@ public class DeliveryThread extends Thread {
} }
/** ISTO E CODIGO DO JOAO, PARA TRATAR DOS CHECKPOINTS */ /** ISTO E CODIGO DO JOAO, PARA TRATAR DOS CHECKPOINTS */
System.out.println("[DeliveryThread.run]");
System.out.println("Acabei de entregar o batch do EID " + cons.getId());
System.out.println("[/DeliveryThread.run]");
if (conf.getCheckpoint_period() > 0) { if (conf.getCheckpoint_period() > 0) {
if ((cons.getId() > 0) && ((cons.getId() % conf.getCheckpoint_period()) == 0)) { if ((cons.getId() > 0) && ((cons.getId() % conf.getCheckpoint_period()) == 0)) {
Logger.println("(DeliveryThread.run) Performing checkpoint for consensus " + cons.getId()); Logger.println("(DeliveryThread.run) Performing checkpoint for consensus " + cons.getId());
......
...@@ -58,6 +58,9 @@ public class OutOfContextMessageThread extends Thread { ...@@ -58,6 +58,9 @@ public class OutOfContextMessageThread extends Thread {
int nextExecution = tomLayer.getLastExec() + 1; int nextExecution = tomLayer.getLastExec() + 1;
if (tomLayer.execManager.thereArePendentMessages(nextExecution)) { if (tomLayer.execManager.thereArePendentMessages(nextExecution)) {
System.out.println("[OutOfContextMessageThread.run]");
System.out.println("Vou processar mensagens q estavam fora do contexto para o EID " + nextExecution);
System.out.println("[/OutOfContextMessageThread.run]");
Logger.println("(OutOfContextMessageThread.run) starting processing out of context messages for consensus " + nextExecution); Logger.println("(OutOfContextMessageThread.run) starting processing out of context messages for consensus " + nextExecution);
execution = tomLayer.execManager.getExecution(nextExecution); execution = tomLayer.execManager.getExecution(nextExecution);
Logger.println("(OutOfContextMessageThread.run) finished processing out fo context messages for consensus " + nextExecution); Logger.println("(OutOfContextMessageThread.run) finished processing out fo context messages for consensus " + nextExecution);
......
...@@ -225,7 +225,11 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -225,7 +225,11 @@ public final class TOMLayer extends Thread implements RequestReceiver {
proposeLock.lock(); proposeLock.lock();
this.inExecution = inEx; this.inExecution = inEx;
if (inEx == -1) { if (inEx == -1
/** ISTO E CODIGO DO JOAO, PARA TRATAR DA TRANSFERENCIA DE ESTADO */
&& !isRetrievingState()
/******************************************************************/
) {
canPropose.signalAll(); canPropose.signalAll();
} }
proposeLock.unlock(); proposeLock.unlock();
...@@ -911,6 +915,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -911,6 +915,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
log.setLastCheckpointEid(lastEid); log.setLastCheckpointEid(lastEid);
/************************* TESTE ************************* /************************* TESTE *************************
System.out.println("[TOMLayer.saveState]");
int value = 0; int value = 0;
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
int shift = (4 - 1 - i) * 8; int shift = (4 - 1 - i) * 8;
...@@ -921,6 +926,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -921,6 +926,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
System.out.println("Checkpoint: " + log.getLastCheckpointEid()); System.out.println("Checkpoint: " + log.getLastCheckpointEid());
System.out.println("Ultimo EID: " + log.getLastEid()); System.out.println("Ultimo EID: " + log.getLastEid());
System.out.println("//////////////////////////////////////////////////"); System.out.println("//////////////////////////////////////////////////");
System.out.println("[/TOMLayer.saveState]");
/************************* TESTE *************************/ /************************* TESTE *************************/
lockState.unlock(); lockState.unlock();
...@@ -935,6 +941,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -935,6 +941,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
log.setLastEid(lastEid); log.setLastEid(lastEid);
/************************* TESTE ************************* /************************* TESTE *************************
System.out.println("[TOMLayer.saveBatch]");
byte[][] batches = log.getMessageBatches(); byte[][] batches = log.getMessageBatches();
int count = 0; int count = 0;
for (int i = 0; i < batches.length; i++) for (int i = 0; i < batches.length; i++)
...@@ -946,6 +953,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -946,6 +953,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
System.out.println("Ultimo EID: " + log.getLastEid()); System.out.println("Ultimo EID: " + log.getLastEid());
//System.out.println("Espaco restante para armazenar batches: " + (stateManager.getLog().getMessageBatches().length - count)); //System.out.println("Espaco restante para armazenar batches: " + (stateManager.getLog().getMessageBatches().length - count));
System.out.println("//////////////////////////////////////////////////"); System.out.println("//////////////////////////////////////////////////");
System.out.println("[/TOMLayer.saveBatch]");
/************************* TESTE *************************/ /************************* TESTE *************************/
lockState.unlock(); lockState.unlock();
...@@ -955,7 +963,8 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -955,7 +963,8 @@ public final class TOMLayer extends Thread implements RequestReceiver {
public void requestState(int me, int[] otherAcceptors, int sender, int eid) { public void requestState(int me, int[] otherAcceptors, int sender, int eid) {
/************************* TESTE ************************* /************************* TESTE *************************/
System.out.println("[TOMLayer.requestState]");
System.out.println("Mensagem adiantada! (eid " + eid + " vindo de " + sender + ") "); System.out.println("Mensagem adiantada! (eid " + eid + " vindo de " + sender + ") ");
/************************* TESTE *************************/ /************************* TESTE *************************/
...@@ -963,7 +972,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -963,7 +972,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
stateManager.addEID(sender, eid); stateManager.addEID(sender, eid);
/************************* TESTE ************************* /************************* TESTE *************************/
System.out.println("Mensagem adiantada! (eid " + eid + " vindo de " + sender + ") "); System.out.println("Mensagem adiantada! (eid " + eid + " vindo de " + sender + ") ");
System.out.println("Nao estou a espera"); System.out.println("Nao estou a espera");
System.out.println("Numero de mensagens recebidas para este EID de replicas diferentes: " + stateManager.moreThenF_EIDs(eid)); System.out.println("Numero de mensagens recebidas para este EID de replicas diferentes: " + stateManager.moreThenF_EIDs(eid));
...@@ -971,7 +980,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -971,7 +980,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
if (stateManager.getLastEID() < eid && stateManager.moreThenF_EIDs(eid)) { if (stateManager.getLastEID() < eid && stateManager.moreThenF_EIDs(eid)) {
/************************* TESTE ************************* /************************* TESTE *************************/
System.out.println("Recebi mais de " + conf.getF() + " mensagens para eid " + eid + " que sao posteriores a " + stateManager.getLastEID()); System.out.println("Recebi mais de " + conf.getF() + " mensagens para eid " + eid + " que sao posteriores a " + stateManager.getLastEID());
/************************* TESTE *************************/ /************************* TESTE *************************/
...@@ -982,7 +991,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -982,7 +991,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
SMMessage smsg = new SMMessage(me, eid - 1, TOMUtil.SM_REQUEST, null); SMMessage smsg = new SMMessage(me, eid - 1, TOMUtil.SM_REQUEST, null);
communication.send(otherAcceptors, smsg); communication.send(otherAcceptors, smsg);
/************************* TESTE ************************* /************************* TESTE *************************/
System.out.println("Enviei um pedido!"); System.out.println("Enviei um pedido!");
System.out.println("Quem envia: " + smsg.getSender()); System.out.println("Quem envia: " + smsg.getSender());
...@@ -993,13 +1002,17 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -993,13 +1002,17 @@ public final class TOMLayer extends Thread implements RequestReceiver {
/************************* TESTE *************************/ /************************* TESTE *************************/
} }
} }
/************************* TESTE *************************/
System.out.println("[/TOMLayer.requestState]");
/************************* TESTE *************************/
} }
public void SMRequestDeliver(SMMessage msg) { public void SMRequestDeliver(SMMessage msg) {
lockState.lock(); lockState.lock();
/************************* TESTE ************************* /************************* TESTE *************************/
System.out.println("[TOMLayer.SMRequestDeliver]");
System.out.println("Recebi um pedido de estado!"); System.out.println("Recebi um pedido de estado!");
System.out.println("Estado pedido: " + msg.getEid()); System.out.println("Estado pedido: " + msg.getEid());
System.out.println("Checkpoint q eu tenho: " + stateManager.getLog().getLastCheckpointEid()); System.out.println("Checkpoint q eu tenho: " + stateManager.getLog().getLastCheckpointEid());
...@@ -1011,7 +1024,7 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -1011,7 +1024,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
lockState.unlock(); lockState.unlock();
if (state == null) { if (state == null) {
/************************* TESTE ************************* /************************* TESTE *************************/
System.out.println("Nao tenho o estado pedido!"); System.out.println("Nao tenho o estado pedido!");
/************************* TESTE *************************/ /************************* TESTE *************************/
state = new TransferableState(); state = new TransferableState();
...@@ -1021,18 +1034,21 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -1021,18 +1034,21 @@ public final class TOMLayer extends Thread implements RequestReceiver {
SMMessage smsg = new SMMessage(execManager.getProcessId(), msg.getEid(), TOMUtil.SM_REPLY, state); SMMessage smsg = new SMMessage(execManager.getProcessId(), msg.getEid(), TOMUtil.SM_REPLY, state);
communication.send(targets, smsg); communication.send(targets, smsg);
/************************* TESTE ************************* /************************* TESTE *************************/
System.out.println("Quem envia: " + smsg.getSender()); System.out.println("Quem envia: " + smsg.getSender());
System.out.println("Que tipo: " + smsg.getType()); System.out.println("Que tipo: " + smsg.getType());
System.out.println("Que EID: " + smsg.getEid()); System.out.println("Que EID: " + smsg.getEid());
//System.exit(0); //System.exit(0);
/************************* TESTE *************************/ /************************* TESTE *************************/
/************************* TESTE *************************/
System.out.println("[/TOMLayer.SMRequestDeliver]");
/************************* TESTE *************************/
} }
public void SMReplyDeliver(SMMessage msg) { public void SMReplyDeliver(SMMessage msg) {
/************************* TESTE *************************/ /************************* TESTE *************************/
System.out.println("[TOMLayer.SMReplyDeliver]");
System.out.println("Recebi uma resposta de uma replica!"); System.out.println("Recebi uma resposta de uma replica!");
System.out.println("[reply] Esta resposta tem o estado? " + msg.getState().hasState()); System.out.println("[reply] Esta resposta tem o estado? " + msg.getState().hasState());
System.out.println("[reply] EID do ultimo checkpoint: " + msg.getState().getLastCheckpointEid()); System.out.println("[reply] EID do ultimo checkpoint: " + msg.getState().getLastCheckpointEid());
...@@ -1117,10 +1133,11 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -1117,10 +1133,11 @@ public final class TOMLayer extends Thread implements RequestReceiver {
/************************* TESTE *************************/ /************************* TESTE *************************/
lockState.unlock(); lockState.unlock();
dt.update(state);
stateManager.setWaiting(-1); stateManager.setWaiting(-1);
dt.update(state);
stateManager.emptyStates(); stateManager.emptyStates();
...@@ -1136,6 +1153,9 @@ public final class TOMLayer extends Thread implements RequestReceiver { ...@@ -1136,6 +1153,9 @@ public final class TOMLayer extends Thread implements RequestReceiver {
} }
} }
} }
/************************* TESTE *************************/
System.out.println("[/TOMLayer.SMReplyDeliver]");
/************************* TESTE *************************/
} }
public boolean isRetrievingState() { public boolean isRetrievingState() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册