if(isDigestNeeded()) { try { punchHoleFor(provider); closeBarrierAndSuspendStable(); // fix for https://jira.jboss.org/jira/browse/JGRP-1013 down_prot.down(new Event(Event.OVERWRITE_DIGEST, hdr.getDigest())); // set the digest (e.g. in NAKACK) handleException(t); openBarrierAndResumeStable(); closeHoleFor(provider); return; Object resource=null; try { Tuple<InputStream,Object> tuple=createStreamToProvider(provider, hdr); // tuple's 2nd arg is a handback object in=tuple.getVal1(); resource=tuple.getVal2(); handleException(t); Util.close(in); close(resource); if(isDigestNeeded()) { openBarrierAndResumeStable(); closeHoleFor(provider); if(useAsyncStateDelivery()) { final InputStream input=in; final Object res=resource; Thread t=getThreadFactory().newThread(() -> setStateInApplication(input, res, provider), "STATE state reader");
if(isDigestNeeded()) { try { punchHoleFor(requester); closeBarrierAndSuspendStable(); digest=(Digest)down_prot.down(Event.GET_DIGEST_EVT); sendException(requester, t); resumeStable(); closeHoleFor(requester); return; openBarrier(); modifyStateResponseHeader(hdr); Message state_rsp=new Message(requester).putHeader(this.id, hdr); log.debug("%s: responding to state requester %s", local_addr, requester); createStreamToRequester(requester); sendException(requester, t);
public void init() throws Exception { super.init(); thread_pool=createThreadPool(); }
public void run() { try { log.debug("%s: getting the state from the application", local_addr); up_prot.up(new Event(Event.STATE_TRANSFER_OUTPUTSTREAM, output)); output.flush(); sendEof(requester); // send an EOF to the remote consumer } catch(Throwable e) { sendException(requester, e); // send the exception to the remote consumer } finally { if(isDigestNeeded()) { resumeStable(); // openBarrier(); // was done after getting the digest closeHoleFor(requester); } } } }
protected void setStateInApplication(InputStream in, Object resource, final Address provider) { log.debug("%s: setting the state in the aplication", local_addr); try { up_prot.up(new Event(Event.STATE_TRANSFER_INPUTSTREAM, in)); up_prot.up(new Event(Event.STATE_TRANSFER_INPUTSTREAM_CLOSED, new StateTransferResult())); down_prot.down(new Event(Event.GET_VIEW_FROM_COORD)); // https://issues.jboss.org/browse/JGRP-1751 } catch(Throwable t) { handleException(t); } finally { Util.close(in); close(resource); if(isDigestNeeded()) { openBarrierAndResumeStable(); closeHoleFor(provider); } } }
handleViewChange(evt.getArg()); break; target=determineCoordinator(); handleConfig(evt.getArg()); break;
protected void sendEof(Address requester) { try { Message eof_msg=new Message(requester).putHeader(getId(), new StateHeader(StateHeader.STATE_EOF)); log.trace("%s --> EOF --> %s", local_addr, requester); down(eof_msg); } catch(Throwable t) { log.error("%s: failed sending EOF to %s", local_addr, requester); } }
public Thread newThread(final Runnable command) { return getThreadFactory().newThread(command, "StreamingStateTransfer-sender-" + thread_id.getAndIncrement()); } };
protected void setStateInApplication(InputStream in, Object resource, final Address provider) { log.debug("%s: setting the state in the aplication", local_addr); try { up_prot.up(new Event(Event.STATE_TRANSFER_INPUTSTREAM, in)); up_prot.up(new Event(Event.STATE_TRANSFER_INPUTSTREAM_CLOSED, new StateTransferResult())); down_prot.down(new Event(Event.GET_VIEW_FROM_COORD)); // https://issues.jboss.org/browse/JGRP-1751 } catch(Throwable t) { handleException(t); } finally { Util.close(in); close(resource); if(isDigestNeeded()) { openBarrierAndResumeStable(); closeHoleFor(provider); } } }
public void run() { try { log.debug("%s: getting the state from the application", local_addr); up_prot.up(new Event(Event.STATE_TRANSFER_OUTPUTSTREAM, output)); output.flush(); sendEof(requester); // send an EOF to the remote consumer } catch(Throwable e) { sendException(requester, e); // send the exception to the remote consumer } finally { if(isDigestNeeded()) { resumeStable(); // openBarrier(); // was done after getting the digest closeHoleFor(requester); } } } }
handleViewChange(evt.getArg()); break; target=determineCoordinator(); handleConfig(evt.getArg()); break;
protected void sendException(Address requester, Throwable exception) { try { Message ex_msg=new Message(requester).setBuffer(Util.exceptionToBuffer(exception)) .putHeader(getId(), new StateHeader(StateHeader.STATE_EX)); down(ex_msg); } catch(Throwable t) { log.error("%s: failed sending exception %s to %s", local_addr, exception.toString(), requester); } }
public Thread newThread(final Runnable command) { return getThreadFactory().newThread(command, "StreamingStateTransfer-sender-" + thread_id.getAndIncrement()); } };
if(isDigestNeeded()) { try { punchHoleFor(provider); closeBarrierAndSuspendStable(); // fix for https://jira.jboss.org/jira/browse/JGRP-1013 down_prot.down(new Event(Event.OVERWRITE_DIGEST, hdr.getDigest())); // set the digest (e.g. in NAKACK) handleException(t); openBarrierAndResumeStable(); closeHoleFor(provider); return; Object resource=null; try { Tuple<InputStream,Object> tuple=createStreamToProvider(provider, hdr); // tuple's 2nd arg is a handback object in=tuple.getVal1(); resource=tuple.getVal2(); handleException(t); Util.close(in); close(resource); if(isDigestNeeded()) { openBarrierAndResumeStable(); closeHoleFor(provider); if(useAsyncStateDelivery()) { final InputStream input=in; final Object res=resource; Thread t=getThreadFactory().newThread(() -> setStateInApplication(input, res, provider), "STATE state reader");
if(isDigestNeeded()) { try { punchHoleFor(requester); closeBarrierAndSuspendStable(); digest=(Digest)down_prot.down(Event.GET_DIGEST_EVT); sendException(requester, t); resumeStable(); closeHoleFor(requester); return; openBarrier(); modifyStateResponseHeader(hdr); Message state_rsp=new Message(requester).putHeader(this.id, hdr); log.debug("%s: responding to state requester %s", local_addr, requester); createStreamToRequester(requester); sendException(requester, t);
protected void sendEof(Address requester) { try { Message eof_msg=new Message(requester).putHeader(getId(), new StateHeader(StateHeader.STATE_EOF)); log.trace("%s --> EOF --> %s", local_addr, requester); down(eof_msg); } catch(Throwable t) { log.error("%s: failed sending EOF to %s", local_addr, requester); } }
public void init() throws Exception { super.init(); thread_pool=createThreadPool(); }
protected void sendException(Address requester, Throwable exception) { try { Message ex_msg=new Message(requester).setBuffer(Util.exceptionToBuffer(exception)) .putHeader(getId(), new StateHeader(StateHeader.STATE_EX)); down(ex_msg); } catch(Throwable t) { log.error("%s: failed sending exception %s to %s", local_addr, exception.toString(), requester); } }