pentaho/pentaho-kettle · error · KettleException

RssInputMeta.Exception.ErrorSavingToRepository

Error message

RssInputMeta.Exception.ErrorSavingToRepository

What it means

RssInputMeta.saveRep wraps all rep.saveStepAttribute calls (step-level flags and per-field attributes) and rethrows any Exception as a KettleException with this message, including the id_step being saved. It means RSS Input step settings could not be persisted to the repository. The original cause is attached.

Solutions

  1. Inspect the wrapped cause exception to identify the actual repository write failure.
  2. Verify the repository connection is writable (not read-only) and the user has INSERT/UPDATE rights on step attributes.
  3. Test the repository connection in Spoon, reconnect, and retry the save.
  4. Check DB-side errors (disk space, constraints) on the repository database.

Example fix

// before
transMeta.save(rep, metaStore, "rss trans"); // may throw with this message
// after
try {
  transMeta.save(rep, metaStore, "rss trans");
} catch (KettleException e) {
  logError("Could not save RSS Input step to repository: " + e.getCause(), e);
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (rep != null && !rep.isReadOnly()) { /* proceed with save */ }

Try / catch

try {
  transMeta.save(rep, metaStore, name);
} catch (KettleException e) {
  logError("saveRep failed: " + (e.getCause() != null ? e.getCause().getMessage() : e.getMessage()), e);
}

Prevention

When it happens

Trigger: Clicking OK/save on a transformation containing an RSS Input step when rep.saveStepAttribute throws — repository connection lost, read-only repository, DB constraint violation, or transaction failure while writing field_precision/field_trim_type/field_repeat rows.

Common situations: Repository DB disk full or permission denied on step_attributes table; saving to a repository opened read-only; network drop between Spoon and repository database mid-save; duplicate/oversized attribute rows.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/0fee1599e10a0edf. Report an issue: GitHub.

Appendix: source

Thrown at plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssinput/RssInputMeta.java:460

      for ( int i = 0; i < inputFields.length; i++ ) {
        RssInputField field = inputFields[i];

        rep.saveStepAttribute( id_transformation, id_step, i, "field_name", field.getName() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_column", field.getColumnCode() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_type", field.getTypeDesc() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_format", field.getFormat() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_currency", field.getCurrencySymbol() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_decimal", field.getDecimalSymbol() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_group", field.getGroupSymbol() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_length", field.getLength() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_precision", field.getPrecision() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_trim_type", field.getTrimTypeCode() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_repeat", field.isRepeated() );

      }
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG, "RssInputMeta.Exception.ErrorSavingToRepository", ""
        + id_step ), e );
    }
  }

  public StepDataInterface getStepData() {
    return new RssInputData();
  }

  public boolean supportsErrorHandling() {
    return true;
  }

  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,
    RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
    Repository repository, IMetaStore metaStore ) {
    CheckResult cr;

    if ( urlInField ) {

View on GitHub (pinned to f3058517a1)