redhat-developer / intellij-kubernetes

IntelliJ Kubernetes plugin
https://plugins.jetbrains.com/plugin/15921-kubernetes-by-red-hat
Eclipse Public License 2.0
20 stars 20 forks source link

Change current namespace errors with "Fatal IDE error" #734

Closed adietish closed 8 months ago

adietish commented 8 months ago

related to #726

I could only reproduce this here and there (not always) with an EKS instance that is using OIDC.

Steps:

  1. Use EKS cluster with OIDC
  2. Change current namespace

Result:

java.util.concurrent.RejectedExecutionException: Task io.fabric8.kubernetes.client.utils.internal.SerialExecutor$$Lambda$3493/0x00000008020cac40@302361e9 rejected from java.util.concurrent.ThreadPoolExecutor@780383a1[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 12]
    at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2055)
    at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:825)
    at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1355)
    at io.fabric8.kubernetes.client.utils.internal.SerialExecutor.scheduleNext(SerialExecutor.java:75)
    at io.fabric8.kubernetes.client.utils.internal.SerialExecutor.execute(SerialExecutor.java:69)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager$SerialWatcher.onClose(AbstractWatchManager.java:83)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.closeEvent(AbstractWatchManager.java:202)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.close(AbstractWatchManager.java:329)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceWatch.safeClose(ResourceWatch.kt:112)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceWatch.closeAll(ResourceWatch.kt:103)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceWatch.close(ResourceWatch.kt:94)
    at com.redhat.devtools.intellij.kubernetes.model.context.ActiveContext.close(ActiveContext.kt:487)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts.setCurrentContext(AllContexts.kt:144)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts.setCurrentNamespace(AllContexts.kt:129)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceModel.setCurrentNamespace(ResourceModel.kt:102)
    at com.redhat.devtools.intellij.kubernetes.actions.SetCurrentNamespaceAction$onOk$1.invoke$lambda$0(SetCurrentNamespaceAction.kt:73)
    at com.redhat.devtools.intellij.kubernetes.actions.ExtensionsKt$run$1.run(Extensions.kt:60)
    at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:442)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$5(CoreProgressManager.java:493)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:244)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:189)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:176)
    at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:244)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
    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.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
    at java.base/java.lang.Thread.run(Thread.java:829)

A similar stacktrace occurred when I had an editor opened when I then refreshed the cluster ("Refresh" in the ctx menu for the cluster):

Steps:

  1. Use EKS cluster with OIDC
  2. Have an editor opened with a secret
  3. Push the secret to the cluster
  4. “Refresh” on the cluster node

Result:

java.util.concurrent.RejectedExecutionException: Task io.fabric8.kubernetes.client.utils.internal.SerialExecutor$$Lambda$3018/0x0000000801faf840@ed133fe rejected from java.util.concurrent.ThreadPoolExecutor@19a19dc[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 43]
    at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2055)
    at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:825)
    at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1355)
    at io.fabric8.kubernetes.client.utils.internal.SerialExecutor.scheduleNext(SerialExecutor.java:75)
    at io.fabric8.kubernetes.client.utils.internal.SerialExecutor.execute(SerialExecutor.java:69)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager$SerialWatcher.onClose(AbstractWatchManager.java:83)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.closeEvent(AbstractWatchManager.java:202)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.close(AbstractWatchManager.java:329)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceWatch.safeClose(ResourceWatch.kt:112)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceWatch.closeAll(ResourceWatch.kt:103)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceWatch.close(ResourceWatch.kt:94)
    at com.redhat.devtools.intellij.kubernetes.editor.ClusterResource.close(ClusterResource.kt:341)
    at com.redhat.devtools.intellij.kubernetes.editor.EditorResource.dispose(EditorResource.kt:336)
    at com.redhat.devtools.intellij.kubernetes.editor.EditorResources.disposeAll(EditorResources.kt:171)
    at com.redhat.devtools.intellij.kubernetes.editor.ResourceEditor$onNamespaceOrContextChanged$1.modified(ResourceEditor.kt:421)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceModelObservable.fireModified(ResourceModelObservable.kt:59)
    at com.redhat.devtools.intellij.kubernetes.model.ResourceModelObservable.fireAllContextsChanged(ResourceModelObservable.kt:51)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts.refresh(AllContexts.kt:170)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts.onKubeConfigChanged(AllContexts.kt:261)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts.watchKubeConfig$lambda$7(AllContexts.kt:247)
    at com.redhat.devtools.intellij.common.utils.ConfigWatcher.lambda$run$0(ConfigWatcher.java:52)
    at com.redhat.devtools.intellij.common.utils.ConfigWatcher.lambda$runOnConfigChange$1(ConfigWatcher.java:70)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
    at com.redhat.devtools.intellij.common.utils.ConfigWatcher.runOnConfigChange(ConfigWatcher.java:70)
    at com.redhat.devtools.intellij.common.utils.ConfigWatcher.run(ConfigWatcher.java:51)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts$watchKubeConfig$1.invoke(AllContexts.kt:248)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts$watchKubeConfig$1.invoke(AllContexts.kt:248)
    at com.redhat.devtools.intellij.kubernetes.model.AllContexts.runAsync$lambda$9(AllContexts.kt:267)
    at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:295)
    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.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
    at java.base/java.lang.Thread.run(Thread.java:829)