pentaho/pentaho-kettle · warning · KettleException
JobEntryFTPS.JobStopped
JobEntryFTPS.JobStopped
Error message
JobEntryFTPS.JobStopped
What it means
JobEntryFTPSGet throws this KettleException when the parent Kettle job has been signaled to stop while the entry is still iterating over the remote file list returned by the FTPS server. Kettle job entries must abort promptly on stop requests, so each loop iteration checks parentJob.isStopped() and fails the entry instead of continuing to download. The message is a messages-property key (JobEntryFTPS.JobStopped), so the literal text is resolved from the plugin's message bundle.
Solutions
- This is expected cancellation behavior: wrap the entry execution in your runner's stop-handling logic and treat KettleException with the stopped flag set as an abort, not a config error.
- Reduce the per-file work or batch size so the loop reaches the isStopped() check more often and cancels faster.
- If it fires without a stop request, check for code paths that call job.stopAll() (e.g., success-condition logic or alerts) and correct the job flow conditions.
Example fix
// before: entry fails the whole job on cancel
result.setResult( true ); // assuming downloads always finish
// after: check stop before launching the entry and handle abort gracefully
if ( job.isStopped() ) { result.setResult( false ); result.setStopped( true ); return; } Defensive patterns
Strategy: try-catch
Validate before calling
if ( job != null && job.isStopped() ) { return; // don't start the FTPS get at all } Try / catch
try {
jobEntry.execute( result, executionContext );
} catch ( KettleException e ) {
if ( job.isStopped() ) { result.setStopped( true ); log.info( "FTPS get aborted by stop request: " + e.getMessage() ); }
else { throw e; }
} Prevention
- Check job.isStopped() before launching long file-transfer entries.
- Keep FTPS batches small so stop requests are honored quickly.
- Monitor NrErrors and configure sensible success-condition limits to avoid surprise aborts.
When it happens
Trigger: Calling execute() on JobEntryFTPSGet (via a running Kettle job) while the job is stopped mid-run: specifically during the for-loop over fileList after downloading some files, a user hits Stop in Spoon or the job's stop flag is set, and parentJob.isStopped() returns true at the top of the next iteration.
Common situations: Long-running FTPS get operations with many files that users cancel via the Stop button; scheduled jobs killed by a timeout; pipelines halted downstream that propagate the stop to this entry between file transfers.
Related errors
- JobFTPS.Error.CreationFolder
- JobEntryFTPS.SuccesConditionBroken
- JobFTPSPUT.Log.UnableToLoadFromXml
- JobFTPSPUT.UnableToLoadFromRepo
- A connection of type PALO is expected
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/dfea2cbc62a2ea80.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/ftps/impl/src/main/java/org/pentaho/di/job/entries/ftpsget/JobEntryFTPSGet.java:842
}
displayResults();
return result;
}
private void downloadFiles( FTPSConnection connection, String folder, Pattern pattern, Result result )
throws KettleException {
List<FTPFile> fileList = connection.getFileList( folder );
if ( isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "JobEntryFTPS.FoundNFiles", fileList.size() ) );
}
for ( int i = 0; i < fileList.size(); i++ ) {
if ( parentJob.isStopped() ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEntryFTPS.JobStopped" ) );
}
if ( successConditionBroken ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEntryFTPS.SuccesConditionBroken", NrErrors ) );
}
FTPFile file = fileList.get( i );
if ( isDetailed() ) {
logDetailed( BaseMessages.getString(
PKG, "JobEntryFTPS.AnalysingFile", file.getPath(), file.getName(), file.getMode(), file
.getDate().toString(), file.getFileType() == 0 ? "File" : "Folder", String
.valueOf( file.getSize() ) ) );
}
if ( !file.isDirectory() && !file.isLink() ) {
// download file
boolean getIt = true;
if ( getIt ) {View on GitHub (pinned to f3058517a1)