/** * Clear the error in the transformation, clear all the rows from all the row sets, to make sure the transformation * can continue with other data. This is intended for use when running single threaded. */ public void clearError() { setStopped( false ); errors.set( 0 ); setFinished( false ); for ( StepMetaDataCombi combi : steps ) { StepInterface step = combi.step; for ( RowSet rowSet : step.getInputRowSets() ) { rowSet.clear(); } step.setStopped( false ); } }
private void verifyStopped( StepInterface step, int numberTimesCalled ) throws KettleException { verify( step, times( numberTimesCalled ) ).setStopped( true ); verify( step, times( numberTimesCalled ) ).setSafeStopped( true ); verify( step, times( numberTimesCalled ) ).resumeRunning(); verify( step, times( numberTimesCalled ) ).stopRunning( any(), any() ); }
private void finishProcess( boolean emitToAllSteps ) { setFinished( true ); if ( emitToAllSteps ) { // emit error on all steps getSteps().stream().map( stepMetaDataCombi -> stepMetaDataCombi.step ).forEach( step -> { step.setStopped( true ); step.setRunning( false ); } ); } getTransListeners().forEach( l -> { try { l.transFinished( TransWebSocketEngineAdapter.this ); } catch ( KettleException e1 ) { getLogChannel().logError( "Error notifying trans listener", e1 ); } } ); }
@Override public void safeStop() { try { getDaemonEndpoint().sendMessage( StopMessage.builder() .reasonPhrase( "User Request" ) .safeStop( true ) .build() ); //stopped but still running will yield status Halting getSteps().stream().map( stepMetaDataCombi -> stepMetaDataCombi.step ) .filter( stepInterface -> stepInterface.getInputRowSets().isEmpty() ) .forEach( step -> step.setStopped( true ) ); Executors.newSingleThreadExecutor().submit( () -> { waitUntilFinished(); finishProcess( true ); } ); } catch ( KettleException e ) { getLogChannel().logDebug( e.getMessage(), e ); } }
public void stopStep( StepMetaDataCombi combi, boolean safeStop ) { StepInterface rt = combi.step; rt.setStopped( true ); rt.setSafeStopped( safeStop ); rt.resumeRunning(); try { rt.stopRunning( combi.meta, combi.data ); } catch ( Exception e ) { log.logError( "Something went wrong while trying to safe stop the transformation: ", e ); } combi.data.setStatus( StepExecutionStatus.STATUS_STOPPED ); if ( safeStop ) { rt.setOutputDone(); } }