提交 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 {
//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 */
Logger.println("(ExecutionManager.checkLimits) adding message for execution "+consId+" to out of context");
addOutOfContextMessage(msg);
tomLayer.requestState(me, otherAcceptors, msg.getSender(), consId);
/******************************************************************/
}
......@@ -317,21 +319,12 @@ public final class ExecutionManager {
return execution;
}
/** ISTO E CODIGO DO JOAO, PARA TRATAR DA TRANSFERENCIA DE ESTADO */
public void removeExecutions(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();
public void removeOutOfContexts(int id) {
outOfContextLock.lock();
/******* BEGIN OUTOFCONTEXT CRITICAL SECTION *******/
keys = outOfContextProposes.keySet();
Set<Integer> keys = outOfContextProposes.keySet();
for (int execution : keys)
if (execution <= id) outOfContextProposes.remove(execution);
......
......@@ -90,7 +90,7 @@ public class DeliveryThread extends Thread {
// obtain an array of requests from the taken consensus
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();
......@@ -157,13 +157,13 @@ public class DeliveryThread extends Thread {
/****** Julgo que isto nao sera necessario ***********
if (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();
tomLayer.saveState(state2, eid);
//TODO: possivelmente fazer mais alguma coisa
}
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);
//TODO: possivelmente fazer mais alguma coisa
}
......@@ -194,10 +194,10 @@ public class DeliveryThread extends Thread {
//(it only happens if the previous consensus were decided in a
//round > 0
/** Nao consigo perceber se isto tem utilidade neste contexto *****/
int nextExecution = lastEid + 1;
if(tomLayer.acceptor.executeAcceptedPendent(nextExecution)) {
Logger.println("(DeliveryThread.run) Executed propose for " + nextExecution);
}
//int nextExecution = lastEid + 1;
//if(tomLayer.acceptor.executeAcceptedPendent(nextExecution)) {
//Logger.println("(DeliveryThread.update) Executed propose for " + nextExecution);
//}
/******************************************************************/
}
......@@ -308,6 +308,10 @@ public class DeliveryThread extends Thread {
}
/** 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 ((cons.getId() > 0) && ((cons.getId() % conf.getCheckpoint_period()) == 0)) {
Logger.println("(DeliveryThread.run) Performing checkpoint for consensus " + cons.getId());
......
......@@ -58,6 +58,9 @@ public class OutOfContextMessageThread extends Thread {
int nextExecution = tomLayer.getLastExec() + 1;
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);
execution = tomLayer.execManager.getExecution(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 {
proposeLock.lock();
this.inExecution = inEx;
if (inEx == -1) {
if (inEx == -1
/** ISTO E CODIGO DO JOAO, PARA TRATAR DA TRANSFERENCIA DE ESTADO */
&& !isRetrievingState()
/******************************************************************/
) {
canPropose.signalAll();
}
proposeLock.unlock();
......@@ -911,6 +915,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
log.setLastCheckpointEid(lastEid);
/************************* TESTE *************************
System.out.println("[TOMLayer.saveState]");
int value = 0;
for (int i = 0; i < 4; i++) {
int shift = (4 - 1 - i) * 8;
......@@ -921,6 +926,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
System.out.println("Checkpoint: " + log.getLastCheckpointEid());
System.out.println("Ultimo EID: " + log.getLastEid());
System.out.println("//////////////////////////////////////////////////");
System.out.println("[/TOMLayer.saveState]");
/************************* TESTE *************************/
lockState.unlock();
......@@ -935,6 +941,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
log.setLastEid(lastEid);
/************************* TESTE *************************
System.out.println("[TOMLayer.saveBatch]");
byte[][] batches = log.getMessageBatches();
int count = 0;
for (int i = 0; i < batches.length; i++)
......@@ -946,6 +953,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
System.out.println("Ultimo EID: " + log.getLastEid());
//System.out.println("Espaco restante para armazenar batches: " + (stateManager.getLog().getMessageBatches().length - count));
System.out.println("//////////////////////////////////////////////////");
System.out.println("[/TOMLayer.saveBatch]");
/************************* TESTE *************************/
lockState.unlock();
......@@ -955,7 +963,8 @@ public final class TOMLayer extends Thread implements RequestReceiver {
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 + ") ");
/************************* TESTE *************************/
......@@ -963,7 +972,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
stateManager.addEID(sender, eid);
/************************* TESTE *************************
/************************* TESTE *************************/
System.out.println("Mensagem adiantada! (eid " + eid + " vindo de " + sender + ") ");
System.out.println("Nao estou a espera");
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 {
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());
/************************* TESTE *************************/
......@@ -982,7 +991,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
SMMessage smsg = new SMMessage(me, eid - 1, TOMUtil.SM_REQUEST, null);
communication.send(otherAcceptors, smsg);
/************************* TESTE *************************
/************************* TESTE *************************/
System.out.println("Enviei um pedido!");
System.out.println("Quem envia: " + smsg.getSender());
......@@ -993,13 +1002,17 @@ public final class TOMLayer extends Thread implements RequestReceiver {
/************************* TESTE *************************/
}
}
/************************* TESTE *************************/
System.out.println("[/TOMLayer.requestState]");
/************************* TESTE *************************/
}
public void SMRequestDeliver(SMMessage msg) {
lockState.lock();
/************************* TESTE *************************
/************************* TESTE *************************/
System.out.println("[TOMLayer.SMRequestDeliver]");
System.out.println("Recebi um pedido de estado!");
System.out.println("Estado pedido: " + msg.getEid());
System.out.println("Checkpoint q eu tenho: " + stateManager.getLog().getLastCheckpointEid());
......@@ -1011,7 +1024,7 @@ public final class TOMLayer extends Thread implements RequestReceiver {
lockState.unlock();
if (state == null) {
/************************* TESTE *************************
/************************* TESTE *************************/
System.out.println("Nao tenho o estado pedido!");
/************************* TESTE *************************/
state = new TransferableState();
......@@ -1021,18 +1034,21 @@ public final class TOMLayer extends Thread implements RequestReceiver {
SMMessage smsg = new SMMessage(execManager.getProcessId(), msg.getEid(), TOMUtil.SM_REPLY, state);
communication.send(targets, smsg);
/************************* TESTE *************************
/************************* TESTE *************************/
System.out.println("Quem envia: " + smsg.getSender());
System.out.println("Que tipo: " + smsg.getType());
System.out.println("Que EID: " + smsg.getEid());
//System.exit(0);
/************************* TESTE *************************/
/************************* TESTE *************************/
System.out.println("[/TOMLayer.SMRequestDeliver]");
/************************* TESTE *************************/
}
public void SMReplyDeliver(SMMessage msg) {
/************************* TESTE *************************/
System.out.println("[TOMLayer.SMReplyDeliver]");
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] EID do ultimo checkpoint: " + msg.getState().getLastCheckpointEid());
......@@ -1117,10 +1133,11 @@ public final class TOMLayer extends Thread implements RequestReceiver {
/************************* TESTE *************************/
lockState.unlock();
dt.update(state);
stateManager.setWaiting(-1);
dt.update(state);
stateManager.emptyStates();
......@@ -1136,6 +1153,9 @@ public final class TOMLayer extends Thread implements RequestReceiver {
}
}
}
/************************* TESTE *************************/
System.out.println("[/TOMLayer.SMReplyDeliver]");
/************************* TESTE *************************/
}
public boolean isRetrievingState() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册