Summary
Pentaho Data Integration (PDI) 11 fails to execute newly created transformations on Ubuntu 22.04 when running under JDK 17 or JDK 21. The error mentions an undefined database parameter that actually exists in the repository. Existing transformations imported from older versions run fine; only brand‑new ones break.
Root Cause
- PDI 11 switched to GTK 3 UI by default.
- The bundled SWT libraries bundled with the Linux distribution are compiled against GTK 2 only.
- When a new transformation is saved, the UI tries to serialize the connection metadata using the newer
org.pentaho.di.core.database.DatabaseMetacode path, which fails to locate the expected GTK 3 native symbols, resulting in ajava.lang.NoSuchMethodErrorthat surfaces as an “undefined DB parameter” message.
Why This Happens in Real Systems
- Dependency drift: Upgrading the JDK changes the native library loader behavior, exposing mismatched SWT/GTK bindings.
- Backward‑compatible repository: Old transformations use legacy serialization that bypasses the failing code path, so they still run.
- Linux packaging: Ubuntu 22.04 ships newer GTK 3 libraries, while the PDI 11 binary still expects the older GTK 2 ABI for its UI components.
Real-World Impact
- Production pipelines halted because developers cannot create new ETL jobs.
- Automation scripts that generate transformations on‑the‑fly fail, leading to missed SLA windows.
- Support tickets pile up, consuming senior engineering time for what turns out to be an environment‑configuration issue.
Example or Code (if necessary and relevant)
# Set PDI to force GTK2 (temporary workaround)
export SWT_GTK3=0
./spoon.sh
How Senior Engineers Fix It
- Force GTK 2 for the current release: set
SWT_GTK3=0before launching Spoon. - Upgrade to the latest PDI 11.x patch that bundles GTK 3‑compatible SWT libraries.
- If staying on the current version, replace the
libswt-gtk-*.sofiles with the GTK 3 compiled binaries from the Pentaho community build. - Add the environment variable to the service wrapper or startup script to make the fix permanent.
- Validate by creating a fresh transformation and executing it; it should now complete without the undefined‑parameter error.
Why Juniors Miss It
- Focus on application logic: they look for SQL syntax or repository misconfiguration rather than UI‑native library issues.
- Unfamiliarity with Linux GUI stacks: junior engineers often overlook the importance of GTK version compatibility.
- Assumption that JDK version is the only variable: they rarely check environment variables that affect native library loading.
- Lack of systematic inspection: they may not reproduce the problem with a minimal script or examine the startup logs for native‑library warnings.