public void complete(NetworkConnection vc, IOWriteRequestContext wctx) {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "complete", new Object[] {vc, wctx});
      if (connection.isLoggingIOEvents()) connection.getConnectionEventRecorder().logDebug("complete method invoked on write context "+System.identityHashCode(wctx));

      try {
         doWork(true);
      } catch(SIConnectionDroppedException connectionDroppedException) {
         // No FFDC code needed

         // This has been thrown because the priority queue was purged (most likely on another thread).
         // The exception is thrown to prevent threads in this method looping forever or hanging if the
         // conneciton is invalidate on another thread.  Therefore we simply swallow this exception and
         // allow the thread to exit this method.

         if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
            SibTr.debug(this, tc, "Caught SIConnectionDroppedException, Priority Queue has been purged");
      } catch(Error error) {
         FFDCFilter.processException
         (error, "com.ibm.ws.sib.jfapchannel.impl.ConnectionWriteCompletedCallback", JFapChannelConstants.CONNWRITECOMPCALLBACK_COMPLETE_03, connection.getDiagnostics(true));
         if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.exception(this, tc, error);

         // It might appear slightly odd for this code to catch Error (especially since the JDK docs say
         // that Error means that something has gone so badly wrong that you should abandon all hope).
         // This code makes one final stab at putting out some diagnostics about what happened (if we
         // propagate the Error up to the TCP Channel, it is sometimes lost) and closing down the
         // connection.  I figured that we might as well try to do something - as we can hardly make
         // things worse... (famous last words)

         connection.invalidate(false, error, "Error caught in ConnectionWriteCompletedCallback.complete()");

         // Re-throw the error to ensure that it causes the maximum devastation.
         // The JVM is probably very ill if an Error is thrown so attempt no recovery.
         throw error;
      } catch(RuntimeException runtimeException) {
         FFDCFilter.processException
         (runtimeException, "com.ibm.ws.sib.jfapchannel.impl.ConnectionWriteCompletedCallback", JFapChannelConstants.CONNWRITECOMPCALLBACK_COMPLETE_04, connection.getDiagnostics(true));
         if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.exception(this, tc, runtimeException);

         // We can reasonably try to recover from a runtime exception by invalidating the associated
         // connection.  This should drive the underlying TCP/IP socket to be closed.
         connection.invalidate(false, runtimeException, "RuntimeException caught in ConnectionWriteCompletedCallback.complete()");

         // Don't throw the RuntimeException on as we risk blowing away part of the TCP channel.
      }

      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "complete");
   }
public void complete ( NetworkConnection vc , IOWriteRequestContext wctx ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "complete" , new Object [ ] { vc , wctx } ) ; if ( connection . isLoggingIOEvents ( ) ) connection . getConnectionEventRecorder ( ) . logDebug ( "complete method invoked on write context " + System . identityHashCode ( wctx ) ) ; try { doWork ( true ) ; } catch ( SIConnectionDroppedException connectionDroppedException ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "Caught SIConnectionDroppedException, Priority Queue has been purged" ) ; } catch ( Error error ) { FFDCFilter . processException ( error , "com.ibm.ws.sib.jfapchannel.impl.ConnectionWriteCompletedCallback" , JFapChannelConstants . CONNWRITECOMPCALLBACK_COMPLETE_03 , connection . getDiagnostics ( true ) ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEventEnabled ( ) ) SibTr . exception ( this , tc , error ) ; connection . invalidate ( false , error , "Error caught in ConnectionWriteCompletedCallback.complete()" ) ; throw error ; } catch ( RuntimeException runtimeException ) { FFDCFilter . processException ( runtimeException , "com.ibm.ws.sib.jfapchannel.impl.ConnectionWriteCompletedCallback" , JFapChannelConstants . CONNWRITECOMPCALLBACK_COMPLETE_04 , connection . getDiagnostics ( true ) ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEventEnabled ( ) ) SibTr . exception ( this , tc , runtimeException ) ; connection . invalidate ( false , runtimeException , "RuntimeException caught in ConnectionWriteCompletedCallback.complete()" ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "complete" ) ; }
begin F181603.2, D192359