@Override public void heartbeat() { try { long now = System.currentTimeMillis(); @SuppressWarnings("unchecked") Map.Entry<UniqueId,MapEntry>[] entries = messages.entrySet().toArray(new Map.Entry[messages.size()]); for (int i=0; i<entries.length; i++ ) { MapEntry entry = entries[i].getValue(); if ( entry.expired(now,expire) ) { if(log.isInfoEnabled()) log.info("Message ["+entry.id+"] has expired. Removing."); messages.remove(entry.id); }//end if } } catch ( Exception x ) { log.warn("Unable to perform heartbeat on the TwoPhaseCommit interceptor.",x); } finally { super.heartbeat(); } }
/** * Send a message to one or more members in the cluster * * @param destination * Member[] - the destinations, null or zero length means all * @param msg * ClusterMessage - the message to send * @param payload * TBA */ @Override public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException { if (destination == null) destination = membershipService.getMembers(); if ((msg.getOptions() & Channel.SEND_OPTIONS_MULTICAST) == Channel.SEND_OPTIONS_MULTICAST) { membershipService.broadcast(msg); } else { clusterSender.sendMessage(msg, destination); } if (Logs.MESSAGES.isTraceEnabled()) { Logs.MESSAGES.trace("ChannelCoordinator - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " + new java.sql.Timestamp(System.currentTimeMillis()) + " to " + Arrays.toNameString(destination)); } }
@Override public void heartbeat() { try { long now = System.currentTimeMillis(); @SuppressWarnings("unchecked") Map.Entry<UniqueId, MapEntry>[] entries = messages.entrySet().toArray(new Map.Entry[messages.size()]); for (int i = 0; i < entries.length; i++) { MapEntry entry = entries[i].getValue(); if (entry.expired(now, expire)) { if (log.isInfoEnabled()) log.info("Message [" + entry.id + "] has expired. Removing."); messages.remove(entry.id); } // end if } } catch (Exception x) { log.warn("Unable to perform heartbeat on the TwoPhaseCommit interceptor.", x); } finally { super.heartbeat(); } }
@Override public void heartbeat() { try { long now = System.currentTimeMillis(); Map.Entry<UniqueId,MapEntry>[] entries = messages.entrySet().toArray(new Map.Entry[messages.size()]); for (int i=0; i<entries.length; i++ ) { MapEntry entry = entries[i].getValue(); if ( entry.expired(now,expire) ) { if(log.isInfoEnabled()) log.info("Message ["+entry.id+"] has expired. Removing."); messages.remove(entry.id); }//end if } } catch ( Exception x ) { log.warn("Unable to perform heartbeat on the TwoPhaseCommit interceptor.",x); } finally { super.heartbeat(); } }
/** * Send a message to one or more members in the cluster * @param destination Member[] - the destinations, null or zero length means all * @param msg ClusterMessage - the message to send * @param payload TBA */ @Override public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException { if ( destination == null ) destination = membershipService.getMembers(); if ((msg.getOptions()&Channel.SEND_OPTIONS_MULTICAST) == Channel.SEND_OPTIONS_MULTICAST) { membershipService.broadcast(msg); } else { clusterSender.sendMessage(msg,destination); } if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("ChannelCoordinator - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " +new java.sql.Timestamp(System.currentTimeMillis())+ " to "+Arrays.toNameString(destination)); } }
@Override public void messageReceived(ChannelMessage msg) { if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("ChannelCoordinator - Received msg:" + new UniqueId(msg.getUniqueId()) + " at " +new java.sql.Timestamp(System.currentTimeMillis())+ " from "+msg.getAddress().getName()); } super.messageReceived(msg); }
private CoordinationMessage createElectionMsg(MemberImpl local, MemberImpl[] others, MemberImpl leader) { Membership m = new Membership(local,AbsoluteOrder.comp,true); Arrays.fill(m,others); MemberImpl[] mbrs = m.getMembers(); m.reset(); CoordinationMessage msg = new CoordinationMessage(leader, local, mbrs,new UniqueId(UUIDGenerator.randomUUID(true)), COORD_REQUEST); return msg; }
public CoordinationMessage(MemberImpl leader, MemberImpl source, MemberImpl[] view, UniqueId id, byte[] type) { this.buf = new XByteBuffer(4096,false); this.leader = leader; this.source = source; this.view = view; this.id = id; this.type = type; this.write(); }
public void parse() { //header int offset = 16; //leader int ldrLen = XByteBuffer.toInt(buf.getBytesDirect(),offset); offset += 4; byte[] ldr = new byte[ldrLen]; System.arraycopy(buf.getBytesDirect(),offset,ldr,0,ldrLen); leader = MemberImpl.getMember(ldr); offset += ldrLen; //source int srcLen = XByteBuffer.toInt(buf.getBytesDirect(),offset); offset += 4; byte[] src = new byte[srcLen]; System.arraycopy(buf.getBytesDirect(),offset,src,0,srcLen); source = MemberImpl.getMember(src); offset += srcLen; //view int mbrCount = XByteBuffer.toInt(buf.getBytesDirect(),offset); offset += 4; view = new MemberImpl[mbrCount]; for (int i=0; i<view.length; i++ ) { int mbrLen = XByteBuffer.toInt(buf.getBytesDirect(),offset); offset += 4; byte[] mbr = new byte[mbrLen]; System.arraycopy(buf.getBytesDirect(), offset, mbr, 0, mbrLen); view[i] = MemberImpl.getMember(mbr); offset += mbrLen; } //id this.id = new UniqueId(buf.getBytesDirect(),offset,16); offset += 16; type = new byte[16]; System.arraycopy(buf.getBytesDirect(), offset, type, 0, type.length); offset += 16; }
@Override public void messageReceived(ChannelMessage msg) { if (Logs.MESSAGES.isTraceEnabled()) { Logs.MESSAGES.trace("ChannelCoordinator - Received msg:" + new UniqueId(msg.getUniqueId()) + " at " + new java.sql.Timestamp(System.currentTimeMillis()) + " from " + msg.getAddress().getName()); } super.messageReceived(msg); }
private CoordinationMessage createElectionMsg(MemberImpl local, MemberImpl[] others, MemberImpl leader) { Membership m = new Membership(local, AbsoluteOrder.comp, true); Arrays.fill(m, others); MemberImpl[] mbrs = m.getMembers(); m.reset(); CoordinationMessage msg = new CoordinationMessage(leader, local, mbrs, new UniqueId(UUIDGenerator.randomUUID(true)), COORD_REQUEST); return msg; }
public CoordinationMessage(MemberImpl leader, MemberImpl source, MemberImpl[] view, UniqueId id, byte[] type) { this.buf = new XByteBuffer(4096, false); this.leader = leader; this.source = source; this.view = view; this.id = id; this.type = type; this.write(); }
public void parse() { // header int offset = 16; // leader int ldrLen = XByteBuffer.toInt(buf.getBytesDirect(), offset); offset += 4; byte[] ldr = new byte[ldrLen]; System.arraycopy(buf.getBytesDirect(), offset, ldr, 0, ldrLen); leader = MemberImpl.getMember(ldr); offset += ldrLen; // source int srcLen = XByteBuffer.toInt(buf.getBytesDirect(), offset); offset += 4; byte[] src = new byte[srcLen]; System.arraycopy(buf.getBytesDirect(), offset, src, 0, srcLen); source = MemberImpl.getMember(src); offset += srcLen; // view int mbrCount = XByteBuffer.toInt(buf.getBytesDirect(), offset); offset += 4; view = new MemberImpl[mbrCount]; for (int i = 0; i < view.length; i++) { int mbrLen = XByteBuffer.toInt(buf.getBytesDirect(), offset); offset += 4; byte[] mbr = new byte[mbrLen]; System.arraycopy(buf.getBytesDirect(), offset, mbr, 0, mbrLen); view[i] = MemberImpl.getMember(mbr); offset += mbrLen; } // id this.id = new UniqueId(buf.getBytesDirect(), offset, 16); offset += 16; type = new byte[16]; System.arraycopy(buf.getBytesDirect(), offset, type, 0, type.length); offset += 16; }