pentaho/pentaho-kettle · error · KettleException

Rest.Log.NoField

Rest.Log.NoField

Error message

Rest.Log.NoField

What it means

Raised in calcURL (from processRow) when the step is configured with 'URL is in a field?' but the 'URL field name' setting is empty. It is logged via logError('URL field name is missing!') and then rethrown as a KettleException, aborting the transformation.

Solutions

  1. Open the REST step dialog, keep 'URL is in a field?' checked, and select the field that contains the URL from the incoming stream.
  2. If the URL is actually static, uncheck 'URL is in a field?' and fill the URL field directly.
  3. Run the step's metadata check (validate transformation) before execution to catch the missing field earlier.

Example fix

// before (step settings)
url_in_field=true; url_field=""            // throws Rest.Log.NoField
// after
url_in_field=true; url_field="request_url"  // field must exist in the incoming row stream
Defensive patterns

Strategy: validation

Validate before calling

// Before execution, check the step metadata
if (restMeta.isUrlInField() && (restMeta.getUrlField() == null || restMeta.getUrlField().trim().isEmpty())) {
  throw new IllegalStateException("REST step: URL field name required when 'URL is in a field' is enabled");
}

Try / catch

try { processRow(); } catch (KettleException e) {
  if (e.getMessage().contains("URL field name is missing")) { /* fix step metadata */ }
  throw e;
}

Prevention

When it happens

Trigger: meta.isUrlInField() is true and meta.getUrlField() is null/empty (Utils.isEmpty) when calcURL runs during processRow.

Common situations: User checked 'URL is in a field' in the REST step dialog but forgot to select the incoming field that holds the URL; step metadata migrated from a static-URL configuration left the dynamic option enabled with no field set.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


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

Appendix: source

Thrown at plugins/rest/core/src/main/java/org/pentaho/di/trans/steps/rest/Rest.java:476

        logError( Const.getStackTracker( e ) );
        stopAll();
        setOutputDone(); // signal end to receiver(s)
        return false;
      }
    }
    return true;
  }

  /**
   * Calculate URL
   *
   * @throws KettleException
   */
  private void calcURL() throws KettleException {
    if ( meta.isUrlInField() ) {
      if ( Utils.isEmpty( meta.getUrlField() ) ) {
        logError( BaseMessages.getString( PKG, "Rest.Log.NoField" ) );
        throw new KettleException( BaseMessages.getString( PKG, "Rest.Log.NoField" ) );
      }
      // cache the position of the field
      if ( data.indexOfUrlField < 0 ) {
        String realUrlfieldName = environmentSubstitute( meta.getUrlField() );
        data.indexOfUrlField = data.inputRowMeta.indexOfValue( realUrlfieldName );
        if ( data.indexOfUrlField < 0 ) {
          // The field is unreachable !
          throw new KettleException(
            BaseMessages.getString( PKG, "Rest.Exception.ErrorFindingField", realUrlfieldName ) );
        }
      }
    } else {
      // Static URL
      data.realUrl = environmentSubstitute( meta.getUrl() );
    }
  }

  /**

View on GitHub (pinned to f3058517a1)