redhat-developer / intellij-common

4 stars 11 forks source link

provide an override property for download pathes #229

Closed sbouchet closed 1 month ago

sbouchet commented 3 months ago

related also to #189 and redhat-developer/intellij-openshift-connector#538.

When default/provided download path is not writable, current implementation fails with message like:


  java.util.concurrent.ExecutionException: java.io.IOException: Error while setting tool helm.
      at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
      at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
      at org.jboss.tools.intellij.openshift.utils.ToolFactoryTest.testGetHelm(ToolFactoryTest.java:28)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.base/java.lang.reflect.Method.invoke(Method.java:568)
      at junit.framework.TestCase.runTest(TestCase.java:177)
      at com.intellij.testFramework.UsefulTestCase.lambda$runBare$11(UsefulTestCase.java:483)
      at com.intellij.testFramework.UsefulTestCase.lambda$wrapTestRunnable$13(UsefulTestCase.java:504)
      at com.intellij.testFramework.UsefulTestCase.runTestRunnable(UsefulTestCase.java:408)
      at com.intellij.testFramework.fixtures.BasePlatformTestCase.runTestRunnable(BasePlatformTestCase.java:109)
      at com.intellij.testFramework.UsefulTestCase.defaultRunBare(UsefulTestCase.java:424)
      at com.intellij.testFramework.UsefulTestCase.lambda$runBare$12(UsefulTestCase.java:491)
      at com.intellij.testFramework.EdtTestUtil.lambda$runInEdtAndWait$5(EdtTestUtil.java:91)
      at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
      at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
      at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
      at com.intellij.openapi.application.impl.RwLockHolder.runIntendedWriteActionOnCurrentThread(RwLockHolder.kt:204)
      at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:830)
      at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:419)
      at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:101)
      at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:138)
      at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:129)
      at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1152)
      at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:81)
      at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:123)
      at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:43)
      at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
      at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
      at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
      at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
      at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
      at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
      at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
      at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:698)
      at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$12(IdeEventQueue.kt:593)
      at com.intellij.openapi.application.impl.RwLockHolder.runWithoutImplicitRead(RwLockHolder.kt:105)
      at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:593)
      at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:77)
      at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:362)
      at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:361)
      at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:843)
      at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:361)
      at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:356)
      at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1021)
      at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
      at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1021)
      at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:356)
      at com.intellij.openapi.application.impl.RwLockHolder.runIntendedWriteActionOnCurrentThread(RwLockHolder.kt:209)
      at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:830)
      at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:398)
      at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
      at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
      at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
      at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
  Caused by: java.io.IOException: Error while setting tool helm.
      at com.redhat.devtools.intellij.common.utils.DownloadHelper$1.run(DownloadHelper.java:187)
      at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:477)
      at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:133)
      at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressSynchronously$9(CoreProgressManager.java:567)
      at com.intellij.openapi.progress.impl.ProgressRunner.lambda$new$0(ProgressRunner.java:86)
      at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:250)
      at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:100)
      at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:221)
      at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:46)
      at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:220)
      at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
      at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
      at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
      at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
      at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
      at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
      at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:100)
      at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$5(ProgressRunner.java:250)
      at com.intellij.openapi.progress.impl.ProgressRunner$ProgressRunnable.run(ProgressRunner.java:500)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
      at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
      at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
      at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
      at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
      at java.base/java.lang.Thread.run(Thread.java:840)
  Caused by: java.nio.file.AccessDeniedException: /.helm
      at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
      at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
      at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
      at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:397)
      at java.base/java.nio.file.Files.createDirectory(Files.java:700)
      at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:807)
      at java.base/java.nio.file.Files.createDirectories(Files.java:793)
      at com.redhat.devtools.intellij.common.utils.DownloadHelper.downloadFile(DownloadHelper.java:257)
      at com.redhat.devtools.intellij.common.utils.DownloadHelper$1.lambda$run$0(DownloadHelper.java:182)
      at com.intellij.util.io.HttpRequests.doProcess(HttpRequests.java:529)
      at com.intellij.util.io.HttpRequests.process(HttpRequests.java:511)
      at com.intellij.util.io.HttpRequests$RequestBuilderImpl.connect(HttpRequests.java:340)
      at com.redhat.devtools.intellij.common.utils.DownloadHelper$1.run(DownloadHelper.java:181)
      ... 25 more

one possible simple workaround should be to use a property for overriding the pathes.