[BUG]: Error generating exported data ./ExportTool error=2, No such file or directory
Closed this issue · 4 comments
SDK Version
1.6.6
Client Framework
Angular
Server Platform
Java
Operating System
Linux
Description
We're testing Reveal 1.6.6 (up from 1.6.1) and while trying to use server-side export we got this exception:
2024-05-06 15:57:54,889 INFO pool-4-thread-10 i.r.PlaywrightBrowser - Verifying playwright initialization: Is initialized = true {}
2024-05-06 15:57:55,174 INFO pool-4-thread-10 i.r.PlaywrightBrowser - Evaluating function: () => getCapturesFor {}
2024-05-06 15:58:03,159 INFO pool-4-thread-10 i.r.PlaywrightBrowser - Function evaluated {}
2024-05-06 15:58:03,270 INFO pool-4-thread-10 i.r.ExportTool - Downloading ExportTool from site (can be turned off with 'setEnableExportToolDownload(false)')... {}
2024-05-06 15:58:04,056 INFO pool-4-thread-10 i.r.ExportTool - ExportTool download finished (786 ms). {}
2024-05-06 15:58:05,542 ERROR pool-4-thread-10 i.r.DefaultDashboardExporter - Error when creating exported data {}
java.lang.Exception: Error generating exported data: Cannot run program "./ExportTool" (in directory "/nonexistent/.cache/com.infragistics.reveal/ExportTool/1.6.6/linux-x64"): error=2, No such file or directory
at com.infragistics.reveal.engine.export.DefaultDashboardExporter$3.export(DefaultDashboardExporter.java:434)
at com.infragistics.reveal.engine.export.DefaultDashboardExporter$3.onSuccess(DefaultDashboardExporter.java:356)
at com.infragistics.reveal.engine.export.DefaultDashboardExporter.addProcessedWidget(DefaultDashboardExporter.java:643)
at com.infragistics.reveal.engine.export.DefaultDashboardExporter.access$600(DefaultDashboardExporter.java:65)
at com.infragistics.reveal.engine.export.DefaultDashboardExporter$5.handleResult(DefaultDashboardExporter.java:611)
at com.infragistics.reveal.engine.export.DefaultDashboardExporter$5.handleResult(DefaultDashboardExporter.java:605)
at com.infragistics.reveal.engine.RevealEngine$2.invoke(RevealEngine.java:164)
at com.infragistics.reportplus.datalayer.VisualizationDataService.postProcessResult(VisualizationDataService.java:89)
at com.infragistics.reportplus.datalayer.VisualizationDataService.access$500(VisualizationDataService.java:15)
at com.infragistics.reportplus.datalayer.VisualizationDataService$1$1.invoke(VisualizationDataService.java:63)
at com.infragistics.reportplus.datalayer.DataLayerService$3.invoke(DataLayerService.java:168)
at com.infragistics.reportplus.datalayer.DataLayerService$6.invoke(DataLayerService.java:299)
at com.infragistics.reportplus.datalayer.TabularDataService$3.invoke(TabularDataService.java:83)
at com.infragistics.reportplus.datalayer.TabularDataService$6.invoke(TabularDataService.java:248)
at com.infragistics.reportplus.datalayer.engine.adhoc.AdHocBuilder$1.invoke(AdHocBuilder.java:47)
at com.infragistics.reportplus.datalayer.engine.adhoc.HierarchyDataBuilderBase$3$1.invoke(HierarchyDataBuilderBase.java:342)
at com.infragistics.reportplus.datalayer.TabularDataService$8.invoke(TabularDataService.java:312)
at com.infragistics.reportplus.datalayer.TabularDataService$24.invoke(TabularDataService.java:833)
at com.infragistics.reportplus.datalayer.engine.TabularDataCacheService$3.invoke(TabularDataCacheService.java:117)
at com.infragistics.reportplus.datalayer.engine.InMemoryCacheStorage.storeObject(InMemoryCacheStorage.java:77)
at com.infragistics.reportplus.datalayer.engine.TabularDataCacheService.addData(TabularDataCacheService.java:113)
at com.infragistics.reportplus.datalayer.TabularDataService.cacheData(TabularDataService.java:829)
at com.infragistics.reportplus.datalayer.TabularDataService.cacheDataAndHandOff(TabularDataService.java:308)
at com.infragistics.reportplus.datalayer.TabularDataService.access$300(TabularDataService.java:14)
at com.infragistics.reportplus.datalayer.TabularDataService$5$2$2.invoke(TabularDataService.java:226)
at com.infragistics.reportplus.datalayer.engine.InMemoryDataset.getTabularData(InMemoryDataset.java:155)
at com.infragistics.reportplus.datalayer.TabularDataService$5$2.invoke(TabularDataService.java:221)
at com.infragistics.reportplus.datalayer.TabularDataService$19.invoke(TabularDataService.java:687)
at com.infragistics.reportplus.datalayer.engine.transformations.PivotTableTransformation$2$1.invoke(PivotTableTransformation.java:142)
at com.infragistics.reportplus.datalayer.engine.pivot.PivotTableBuilder$1$1.invoke(PivotTableBuilder.java:292)
at com.infragistics.reportplus.datalayer.engine.InMemoryDataset.copyToLoader(InMemoryDataset.java:216)
at com.infragistics.reportplus.datalayer.engine.pivot.PivotTableBuilder$1.invoke(PivotTableBuilder.java:268)
at com.infragistics.reportplus.datalayer.engine.TaskExecutionService$1.run(TaskExecutionService.java:47)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: Cannot run program "./ExportTool" (in directory "/nonexistent/.cache/com.infragistics.reveal/ExportTool/1.6.6/linux-x64"): error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at java.base/java.lang.Runtime.exec(Runtime.java:592)
at com.infragistics.reveal.engine.export.ExportTool.export(ExportTool.java:76)
at com.infragistics.reveal.engine.export.DefaultDashboardExporter$3.export(DefaultDashboardExporter.java:432)
... 37 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
... 41 more
The folder /nonexistent
is the home of the user that runs Reveal:
$ ls -l /nonexistent
total 16
drwxr-xr-x 4 nobody nogroup 4096 Feb 7 12:05 ./
drwxr-xr-x 22 root root 4096 Apr 30 08:30 ../
drwxr-xr-x 4 nobody nogroup 4096 Feb 7 09:27 .cache/
drwxr-xr-x 3 nobody nogroup 4096 Feb 7 12:05 .java/
$ ls -l /nonexistent/.cache/com.infragistics.reveal/ExportTool/1.6.6/linux-x64
total 8
drwxr-xr-x 2 nobody nogroup 4096 May 6 15:13 ./
drwxr-xr-x 3 nobody nogroup 4096 May 6 15:13 ../
-rw-r--r-- 1 nobody nogroup 0 May 6 16:13 ExportTool.tmp
All we did for upgrading from 1.6.1 to 1.6.6 was to update our POM to pull the new Reveal version, we have not installed any new software in the server, and didn't see anything about new dependencies in the Release Notes either.
This is our version of Linux:
$ uname -a
Linux ip-172-30-0-48 5.15.0-1058-aws #64~20.04.1-Ubuntu SMP Tue Apr 9 11:12:27 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
I looked myself for the file, and I saw this:
$ ls -l /nonexistent/.cache/com.infragistics.reveal/ExportTool
total 106436
drwxr-xr-x 3 nobody nogroup 4096 Feb 6 20:45 1.6.0
drwxr-xr-x 3 nobody nogroup 4096 May 6 15:13 1.6.6
-rw-r--r-- 1 nobody nogroup 108977089 May 6 16:13 '1.6.6\linux-x64\ExportTool'
Notice the ExportTool file wasn't created inside of the folder 1.6.6/linux-x64
but it is literally named 1.6.6\linux-x64\ExportTool
with those backslashes in the name (which explains why Linux didn't use them as path separators).
Hi @dwilches , good catch, thanks for the detailed information. If you manually fix that path, does it work?
@luispandolfi Yes, I renamed the file and moved it to the right path, then restarted my service and it worked ok after that.