@Override public void handlePrepareResponse(PaxosMessage response) { if (!prepareResponseFrom.contains(response.getProposerId())) prepareResponseFrom.add( response.getProposerId()); // This is a new server accepted our prepare request. List<ChatMessage> remoteAccepted = (List<ChatMessage>) response.getValue(); for (int i = 0; i < remoteAccepted.size(); i++) { if (chosen.size() > i && chosen.get(i) != null) continue; if (remoteAccepted.get(i) != null) { propose( new DefaultPaxosMessage( i, nextPropose, id, PaxosMessageType.PROPOSE, remoteAccepted.get(i))); if (i > nextInstance) nextInstance = i; } } }
/** * Adds nulls to the end of list until it is at least size. * * @param list * @param size */ private void ensureSize(List list, int size) { while (list.size() < size) { list.add(null); } }