[MCOL-2071] PDI CS Bulk Load plugin not able to read transformations with empty configuration Created: 2019-01-08  Updated: 2023-10-26  Resolved: 2019-03-02

Status: Closed
Project: MariaDB ColumnStore
Component/s: None
Affects Version/s: 1.1.6, 1.2.2
Fix Version/s: 1.1.7, 1.2.3

Type: Bug Priority: Major
Reporter: Nicola Assignee: Zdravelina Sokolovska (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Environment:

Pentaho PDI 7.1, 8.1, 8.2
Pentaho Server 7.1, 8.1, 8.2
Kettle adapter columnstore 1.1.6, 1.2.2


Attachments: File empty-plugin-data.ktr    
Sprint: 2019-01, 2019-02

 Description   

Hi,
With the new versione of Pentaho, the plugin not work, instead with the version 8.1 it work without problem.

This is the output error :
ColumnStore BulkWrite SDK /home/dwhcstore/data-integration/plugins/mariadb-columnstore-kettle-bulk-exporter-plugin/lib/libjavamcsapi.so loaded by child classloader.
Native code library failed to load by parent classloader.
Ensure that it is loaded by a child classloader
java.lang.UnsatisfiedLinkError: no javamcsapi in java.library.path
java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Text.setText(Unknown Source)
at com.mariadb.columnstore.api.kettle.KettleColumnStoreBulkExporterStepDialog.populateDialog(KettleColumnStoreBulkExporterStepDialog.java:927)
at com.mariadb.columnstore.api.kettle.KettleColumnStoreBulkExporterStepDialog.open(KettleColumnStoreBulkExporterStepDialog.java:461)
at org.pentaho.di.ui.spoon.delegates.SpoonStepsDelegate.editStep(SpoonStepsDelegate.java:120)
at org.pentaho.di.ui.spoon.Spoon.editStep(Spoon.java:8662)
at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:3293)
at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:2257)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:313)
at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:157)
at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:141)
at org.pentaho.ui.xul.jface.tags.JfaceMenuitem.access$100(JfaceMenuitem.java:43)
at org.pentaho.ui.xul.jface.tags.JfaceMenuitem$1.run(JfaceMenuitem.java:106)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:545)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1381)
at org.pentaho.di.ui.spoon.Spoon.waitForDispose(Spoon.java:7817)
at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9179)
at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:707)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)



 Comments   
Comment by Nicola [ 2019-01-09 ]

Hi,
This problem is only present if i use the repository pentaho.
Without repository it work correctly.

I've copy the plugin folder into pentaho-server/pentaho-solutions/system/kettle/plugins/ with pentaho server 8.1 it works corretly, instead, the version 8.2 doesn't work with this error :
java.lang.IllegalArgumentException: Argument cannot be null

Comment by Jens Röwekamp (Inactive) [ 2019-01-30 ]

Hello nbattista89,

unfortunately I wasn't able to reproduce your error with clean installations of PDI 8.2.0.0-342 (Win 10), Pentaho Server 8.2.0.0-342 (Win 10 and CentOS 7) and MariaDB ColumnStore Bulk Loader plugin 1.2.2. With this setup I was able to load data into a single server instance of ColumnStore 1.2.2-1 (CentOS 7) without any problems.

In order to help you with your issue, I need further information.
It would be helpful if you could answer the following questions.

When does the error occur?
(e.g.

  • if you try to open the "MariaDB ColumnStore Bulk Loader" block in a PDI transformation to configure it?
  • if you try to load a transformation into PDI from Pentaho Server?
  • if you try to execute a transformation from PDI?
  • if you try to execute a transformation from the Pentaho Server web UI?
    )

What is your process to trigger the error?
(e.g.

  • you start PDI
  • connect to the repository on the Pentaho Server
  • generate a new transformation
  • ...
    )

I further need some more information on the execution environment.

Operating system Pentaho Server is executed on:
Version with patch level of Pentaho Server:
Mode of installation of the Pentaho Server (e.g. archive, manual):
Was it an upgrade from Pentaho Server 8.1 or a fresh installation?
How were the jobs/transformations upgraded from Pentaho Server 8.1 to 8.2 (if any)?
Version of the ColumnStore plugin on the Pentaho Server (incl. OS):
Database used for the Pentaho Repository:
Java version and vendor (Oracle JRE, OpenJRE, etc.) used on the system Pentaho Server is executed on:
List of further installed packages mentioned as requirements for the ColumnStore plugin (libuv, libxml2, snappy , Visual C++ Redistributable for Visual Studio 2015 (x64)):

Operating system PDI is executed on:
Version with patch level of PDI:
Version of the ColumnStore plugin in PDI (incl. OS):
Version of installed MariaDB JDBC Client:
Java version and vendor (Oracle JRE, OpenJRE, etc.) used on the system PDI is executed on:
List of further installed packages mentioned as requirements for the ColumnStore plugin (libuv, libxml2, snappy , Visual C++ Redistributable for Visual Studio 2015 (x64)):

Operating system ColumnStore is executed on:
ColumnStore version:
ColumnStore setup (e.g. 1 UM, 2 PM):

It would also be helpful if you could provide me with an example transformation / job that is triggering this error.
You could either append it to this ticket or upload it to our (s)FTP server.

Best regards,

Jens.

Comment by Nicola [ 2019-01-30 ]

When does the error occur?
The error occur when i execute the job or trasformation from pentaho server (web gui) or when i use the pentaho gui (spoon) and attach my gui in the repository.
Out of the repository it works without problem.

Pentaho server 8.2 is an fresh installation but i take the backup from pentaho server 8.1 and restored to version 8.2.
All jobs it works except all jobs that used MariaDB columnstore bulk.
Version of the ColumnStore plugin on the Pentaho Server (incl. OS): 1.2.2
Database used for the Pentaho Repository: i use the default database (i think sqllite)
Java version and vendor (Oracle JRE, OpenJRE, etc.) used on the system Pentaho Server is executed on: Openjre/Openjdk 1.8.191
List of further installed packages mentioned as requirements for the ColumnStore plugin : libuv, libxml2, snappy
Version with patch level of PDI: 8.2
Version of the ColumnStore plugin in PDI (incl. OS): 1.2.2
Version of installed MariaDB JDBC Client: 2.3.0
Java version and vendor (Oracle JRE, OpenJRE, etc.) used on the system PDI is executed on: Openjre/Openjdk 1.8.191

Operating system ColumnStore is executed on: Oracle Linux 7.6
ColumnStore setup : 2 UM and 3 PM with glusterfs

You can use an trasmormation because the plugin configuration interface does not work either.

Thanks for your support.
Best regards,
Nicola Battista

Comment by Jens Röwekamp (Inactive) [ 2019-01-30 ]

Good news, I'm able to reproduce the bug.

I guess what happened here was:

  1. An export from Pentaho Server 8.1 with installed ColumnStore Bulk Connector took place through import-export.{bat|sh}
  2. An import into Pentaho Server 8.2 without installed ColumnStore Bulk Connector took place through import-export.{bat|sh}
  3. The ColumnStore Bulk Connector was added to Pentaho Server 8.2

In this case the jobs and transformations are only partially imported as Pentaho Server 8.2 can't interpret the ColumnStore Bulk Connector configuration, due to the missing plugin. Therefore, any ColumnStore Bulk Connector block is imported without any configuration.

After the plugin is installed and you want to access the configuration it exists with your described error message, as the configuration is null. This is a bug. PDI should open the blocks configuration so that it can be configured again. I will fix that. But, on the downside configuration will still be lost.

What I would recommend is:

  1. Export your data from Pentaho Server 8.1 with installed ColumnStore Bulk Connector through import-export.{bat|sh}
  2. Add the ColumnStore Bulk Connector to Pentaho Server 8.2
  3. Then import the exported backup through import-export.{bat|sh} into Pentaho Server 8.2

nbattista89 could you please test the recommended import export procedure and tell me if this eased your situation?

Best regards,

Jens.

Comment by Nicola [ 2019-01-30 ]

Hi Jens,
I've used this guide for export and import repository from 8.1 to 8.2 : https://help.pentaho.com/Documentation/6.0/0P0/000/Backup_and_Restore_Pentaho_Repositories
It is very simple.

Thanks again.
Best regards,
Nicola Battista

Comment by Jens Röwekamp (Inactive) [ 2019-01-30 ]

Hi nbattista89,

thanks for the link. Yes, that were the commands I used for the export and import.

Just bear in mind, if there is no MariaDB ColumnStore Bulk Connector plugin installed on the Pentaho Server 8.2 before the import, the configuration of the plugin won't be imported in the transformation.

With the new fix however, you will be able to create a new configuration and won't see an error message any more.


dthompson:

I fixed two issues in this ticket.

Namely, if no configuration is provided, either through repository loading, or loading from file system, the transformation will still be configurable. All fields will default to blank in this case.

I further added PDI 8.2 to the test suite in this ticket.

Once the code review passed and the code is merged into develop-1.1 I will upmerge it into develop-1.2.

For QA:

  • Execute the test suite
  • Generate an empty repository transformation through the process described above and test if the configuration is still readable
  • Load attached (non-configured) transformation and check that the fields are empty

The Windows build is uploaded to the folder MCOL-2071 in our Google Team Drive.

Tests on my machine passed on Windows 10 against CS 1.2.2-1 on CentOS 7.

Generated at Thu Feb 08 02:33:30 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.