public Value<V> getEntry(K key) { if(log.isTraceEnabled()) log.trace("getEntry(" + key + ")"); return map.get(key); }
protected void broadcast(final Message msg, long seqno) { msg.putHeader(this.id, new SequencerHeader(SequencerHeader.BCAST, seqno)); if(log.isTraceEnabled()) log.trace(local_addr + ": broadcasting ::" + seqno); down_prot.down(msg); bcasts_sent++; }
/** * Attempts to delete the provided file.<br> * Logging is performed on the result * @param file * @return */ protected boolean deleteFile(File file) { boolean result = true; if(file != null && file.exists()) { try { result=file.delete(); if(log.isTraceEnabled()) log.trace("Deleted file result: "+file.getAbsolutePath() +" : "+result); } catch(Throwable e) { log.error(Util.getMessage("FailedToDeleteFile") + file.getAbsolutePath(), e); } } return result; }
protected void processQueue() { Request req=null; try { req=req_queue.take(); } catch(InterruptedException e) { } try { if(req != null && log.isTraceEnabled()) log.trace("%s <-- %s: %s", local_addr, req.sender, req); handleRequest(req); } catch(Throwable t) { log.error("%s: failed handling request %s: %s", local_addr, req, t); } }
public Object down(Message msg) { long size=msg.size(); num_sent_msgs++; if(size > frag_size) { if(log.isTraceEnabled()) { StringBuilder sb=new StringBuilder("message size is "); sb.append(size).append(", will fragment (frag_size=").append(frag_size).append(')'); log.trace(sb.toString()); } fragment(msg, size); // Fragment and pass down return null; } return down_prot.down(msg); }
private void handleViewChange(View view) { if (log.isTraceEnabled()) { log.trace("Handle view %s", view); } final Collection<Address> leavers = deliverManager.handleView(view); //basis behavior: drop leavers message (as senders) //basis behavior: avoid waiting for the acks Collection<MessageID> pendingSentMessages = senderManager.getPendingMessageIDs(); for (MessageID messageID : pendingSentMessages) { long finalSequenceNumber = senderManager.removeLeavers(messageID, leavers); if (finalSequenceNumber != SenderManager.NOT_READY) { ToaHeader finalHeader = ToaHeader.newFinalMessageHeader(messageID, finalSequenceNumber); Message finalMessage = new Message().src(localAddress).putHeader(this.id, finalHeader) .setFlag(Message.Flag.OOB, Message.Flag.INTERNAL, Message.Flag.DONT_BUNDLE); if (log.isTraceEnabled()) { log.trace("Message %s is ready to be delivered. Final sequencer number is %d", messageID, finalSequenceNumber); } send(senderManager.getDestination(messageID), finalMessage, false); //returns true if we are in destination set if (senderManager.markSent(messageID)) { deliverManager.markReadyToDeliver(messageID, finalSequenceNumber); } } } // TODO: Future work: How to add fault tolerance? (simple and efficient) }
protected void sendSeqnoResponse(Address original_sender,long seqno, int num_seqnos) { SequencerHeader hdr = new SequencerHeader(SequencerHeader.RESPONSE, seqno, num_seqnos); Message ucast_msg = new Message(original_sender).putHeader(this.id, hdr); if (log.isTraceEnabled()) log.trace(local_addr + ": sending seqno response to " + original_sender + ":: new_seqno=" + seqno + ", num_seqnos=" + num_seqnos); down_prot.down(ucast_msg); sent_responses++; }
protected void clearTable(String clustername) { try(Connection conn=getConnection()) { try (PreparedStatement ps=conn.prepareStatement(clear_sql)) { // check presence of cluster_name parameter for backwards compatibility if (clear_sql.indexOf('?') >= 0) { ps.setString(1, clustername); } else { log.debug("Please update your clear_sql to include cluster_name parameter."); } if(log.isTraceEnabled()) log.trace("%s: SQL for clearing the table: %s", local_addr, ps); ps.execute(); } } catch(SQLException e) { log.error(Util.getMessage("ErrorClearingTable"), e); } }
public void _removeMany(Set<K> keys) { if(log.isTraceEnabled()) log.trace("_removeMany(): " + keys.size() + " entries"); keys.forEach(this::_remove); }
/** Sends the message via all bridges excluding the excluded_sites bridges */ protected void sendToBridges(Address sender, final Message msg, String ... excluded_sites) { Relayer tmp=relayer; List<Route> routes=tmp != null? tmp.getRoutes(excluded_sites) : null; if(routes == null) return; for(Route route: routes) { if(log.isTraceEnabled()) log.trace(local_addr + ": relaying multicast message from " + sender + " via route " + route); try { route.send(null, sender, msg); } catch(Exception ex) { log.error(local_addr + ": failed relaying message from " + sender + " via route " + route, ex); } } }
private void send(Collection<Address> destinations, Message msg, boolean sendToMyself) { if (log.isTraceEnabled()) { log.trace("sending anycast total order message %s to %s", msg, destinations); } for (Address address : destinations) { if (!sendToMyself && address.equals(localAddress)) { continue; } Message cpy = msg.copy(); cpy.setDest(address); down_prot.down(cpy); } }
boolean lastProposeReceived = false; boolean trace = log.isTraceEnabled(); try { MessageID messageID = header.getMessageID(); if (trace) { log.trace("Received the proposed sequence number message with %s from %s", header, from); Message finalMessage = new Message().src(localAddress).putHeader(this.id, finalHeader) .setFlag(Message.Flag.OOB, Message.Flag.INTERNAL, Message.Flag.DONT_BUNDLE); log.trace("Message %s is ready to be delivered. Final sequencer number is %d", messageID, finalSequenceNumber);
protected void sendResponse(Message rsp, long req_id, boolean is_exception) { Header rsp_hdr=new Header(is_exception? Header.EXC_RSP : Header.RSP, req_id, corr_id); rsp.putHeader(corr_id, rsp_hdr); if(log.isTraceEnabled()) log.trace("sending rsp for %d to %s", req_id, rsp.getDest()); transport.down(rsp); }
public void send(Address final_destination, Address original_sender, final Message msg) { if(log.isTraceEnabled()) log.trace("routing message to " + final_destination + " via " + site_master); long start=stats? System.nanoTime() : 0; try { Message copy=createMessage(site_master, final_destination, original_sender, msg); bridge.send(copy); if(stats) { relay.addToRelayedTime(System.nanoTime() - start); relay.incrementRelayed(); } } catch(Exception e) { log.error(Util.getMessage("FailureRelayingMessage"), e); } }
private void startReceiver() { if(receiver == null || !receiver.isAlive()) { receiver=new Thread(this, "ReceiverThread"); receiver.setDaemon(true); receiver.start(); if(log.isTraceEnabled()) log.trace("receiver thread started"); } }
case LOCK_INFO_RSP: case LOCK_REVOKED: if(log.isTraceEnabled()) log.trace("%s <-- %s: %s", local_addr, req.sender, req); handleRequest(req); break; log.error("%s: request of type %s not known", local_addr, req.type); break;
public Object down(Message msg) { if(log.isTraceEnabled()) { long size=raw_buffer? msg.getLength() : msg.size(); if(size >= min_size) { StringBuilder sb=new StringBuilder(local_addr + ".down(): size of message buffer="); sb.append(Util.printBytes(size)).append(", " + numHeaders(msg) + " headers"); if(print_msg) sb.append(", headers=" + msg.printHeaders()); log.trace(sb); } } return down_prot.down(msg); }
protected void sendResponse(Address dest, short id) { try { RsvpHeader hdr=new RsvpHeader(RsvpHeader.RSP,id); Message msg=new Message(dest) .putHeader(this.id, hdr) .setFlag(Message.Flag.RSVP, Message.Flag.INTERNAL, Message.Flag.DONT_BUNDLE, Message.Flag.OOB); if(log.isTraceEnabled()) log.trace(local_addr + ": " + hdr.typeToString() + " --> " + dest); down_prot.down(msg); } catch(Throwable t) { log.error(Util.getMessage("FailedSendingResponse"), t); } }
protected synchronized void writeNodeToDisk(Address logical_addr, PhysicalAddress physical_addr) { String filename=addressAsString(logical_addr); // first write all data to a temporary file // this is because the writing can be very slow under some circumstances File tmpFile=null, destination=null; try { tmpFile=writeToTempFile(root_dir, logical_addr, physical_addr, NameCache.get(logical_addr)); if(tmpFile == null) return; destination=new File(root_dir, filename + SUFFIX); //do a file move, this is much faster and could be considered atomic on most operating systems FileChannel src_ch=new FileInputStream(tmpFile).getChannel(); FileChannel dest_ch=new FileOutputStream(destination).getChannel(); src_ch.transferTo(0,src_ch.size(),dest_ch); src_ch.close(); dest_ch.close(); if(log.isTraceEnabled()) log.trace("Moved: " + tmpFile.getName() + "->" + destination.getName()); } catch(Exception ioe) { log.error(Util.getMessage("AttemptToMoveFailedAt") + tmpFile.getName() + "->" + destination.getName(), ioe); } finally { deleteFile(tmpFile); } }
protected void update(Address sender) { if(sender != null && !sender.equals(local_addr)) { AtomicBoolean heartbeat_received=timestamps.get(sender); if(heartbeat_received != null) heartbeat_received.compareAndSet(false, true); else timestamps.putIfAbsent(sender, new AtomicBoolean(true)); } if (log.isTraceEnabled()) log.trace("Received heartbeat from %s", sender); }