pentaho/pentaho-kettle · error · KettleException
GoogleAnalytics.Error.UnableToReadFromRep
Error message
GoogleAnalytics.Error.UnableToReadFromRep
What it means
GaInputStepMeta.readRep wraps any exception raised while loading Google Analytics step settings from a Kettle repository into a KettleException with the localized 'GoogleAnalytics.Error.UnableToReadFromRep' message. It guards the repository reads for ga fields, conversion masks and output types, defaulting invalid output types to TYPE_STRING before the catch.
Solutions
- Check the nested cause for the real repository/driver failure and fix connectivity or schema issues.
- Reconnect the repository and reload the transformation.
- Re-save the step from a working client to restore missing attributes.
- Verify plugin version compatibility with the repository content.
Example fix
// before
TransMeta tm = new TransMeta( rep, id, metaStore ); // throws on stale connection
// after
if ( !rep.isConnected() ) {
rep.connect( user, pass );
}
TransMeta tm = new TransMeta( rep, id, metaStore ); Defensive patterns
Strategy: try-catch
Validate before calling
if ( rep == null || !rep.isConnected() ) {
rep.connect( user, pass );
} Try / catch
try {
transMeta = new TransMeta( rep, id, metaStore );
} catch ( KettleException e ) {
log.error( "readRep failed: " + e.getMessage(), e.getCause() );
} Prevention
- Verify repository connectivity before loading
- Re-save steps after upgrading Pentaho versions
- Log nested causes to diagnose repository schema mismatches
When it happens
Trigger: Calling readRep(Repository, IMetaStore, ObjectId, List<DatabaseMeta>) when rep.getStepAttributeString/... calls for id_step throw — dead repository connection, missing step row, or repository driver error.
Common situations: Opening a stored transformation while the repository DB is unreachable; step attributes partially deleted; repository schema changed between Pentaho versions so expected attributes are absent.
Understand the failure class
Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.
Related errors
- GoogleAnalytics.Error.UnableToReadFromXML
- GoogleAnalytics.Error.UnableToSaveToRep
- MonetDBBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
- ScriptValuesMetaMod.Exception.UnexpectedErrorInReadingStepIn…
- Unexpected error reading step information from the…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/e21eb78573854f62.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/google-analytics/core/src/main/java/org/pentaho/di/trans/steps/googleanalytics/GaInputStepMeta.java:573
rowLimit = (int) rep.getStepAttributeInteger( id_step, "rowLimit" );
int nrFields = rep.countNrStepAttributes( id_step, "feedField" );
allocate( nrFields );
for ( int i = 0; i < nrFields; i++ ) {
feedFieldType[ i ] = rep.getStepAttributeString( id_step, i, "feedFieldType" );
feedField[ i ] = rep.getStepAttributeString( id_step, i, "feedField" );
outputField[ i ] = rep.getStepAttributeString( id_step, i, "outField" );
outputType[ i ] = ValueMetaFactory.getIdForValueMeta( rep.getStepAttributeString( id_step, i, "type" ) );
conversionMask[ i ] = rep.getStepAttributeString( id_step, i, "conversionMask" );
if ( outputType[ i ] < 0 ) {
outputType[ i ] = ValueMetaInterface.TYPE_STRING;
}
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "GoogleAnalytics.Error.UnableToReadFromRep" ), e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "oauthServiceAccount", oauthServiceAccount );
rep.saveStepAttribute( id_transformation, id_step, "oauthKeyFile", oauthKeyFile );
rep.saveStepAttribute( id_transformation, id_step, "appName", gaAppName );
rep.saveStepAttribute( id_transformation, id_step, "profileName", gaProfileName );
rep.saveStepAttribute( id_transformation, id_step, "profileTableId", gaProfileTableId );
rep.saveStepAttribute( id_transformation, id_step, "customTableId", gaCustomTableId );
rep.saveStepAttribute( id_transformation, id_step, "useCustomTableId", useCustomTableId );
rep.saveStepAttribute( id_transformation, id_step, "startDate", startDate );
rep.saveStepAttribute( id_transformation, id_step, "endDate", endDate );
rep.saveStepAttribute( id_transformation, id_step, "dimensions", dimensions );
rep.saveStepAttribute( id_transformation, id_step, "metrics", metrics );View on GitHub (pinned to f3058517a1)