Skip to content

Commit 139f4f9

Browse files
authored
Merge pull request #2173 from digma-ai/fix-await-latch
fix await latch
2 parents 0399099 + 419171b commit 139f4f9

File tree

2 files changed

+39
-13
lines changed

2 files changed

+39
-13
lines changed

ide-common/src/main/kotlin/org/digma/intellij/plugin/analytics/BackendInfoHolder.kt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@ class BackendInfoHolder : Disposable {
6666
return aboutRef.get()
6767
}
6868

69+
fun getAboutLoadIfNull(): AboutResult? {
70+
if (aboutRef.get() == null) {
71+
findActiveProject()?.let {
72+
loadAboutInBackgroundNow(it)
73+
}
74+
}
75+
return aboutRef.get()
76+
}
77+
78+
6979
//updateInBackground is also called every time the analytics client is replaced
7080
fun updateInBackground() {
7181
@Suppress("UnstableApiUsage")
@@ -122,4 +132,23 @@ class BackendInfoHolder : Disposable {
122132
false
123133
}
124134
}
135+
136+
private fun loadAboutInBackgroundNow(project: Project) {
137+
138+
try {
139+
140+
val future = Backgroundable.ensurePooledThreadWithoutReadAccess(Callable {
141+
AnalyticsService.getInstance(project).about
142+
})
143+
144+
aboutRef.set(future.get(5, TimeUnit.SECONDS))
145+
146+
} catch (e: Throwable) {
147+
val isConnectionException = ExceptionUtils.isAnyConnectionException(e)
148+
149+
if (!isConnectionException) {
150+
ErrorReporter.getInstance().reportError("BackendUtilsKt.loadAboutInBackgroundNow", e)
151+
}
152+
}
153+
}
125154
}

src/main/kotlin/org/digma/intellij/plugin/ui/common/LoadStatusPanel.kt

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ import com.intellij.openapi.components.service
55
import com.intellij.openapi.project.Project
66
import com.intellij.ui.components.ActionLink
77
import com.intellij.util.ui.JBUI
8+
import kotlinx.coroutines.GlobalScope
9+
import kotlinx.coroutines.launch
810
import org.apache.maven.artifact.versioning.ComparableVersion
911
import org.digma.intellij.plugin.analytics.AnalyticsService
12+
import org.digma.intellij.plugin.analytics.BackendInfoHolder
1013
import org.digma.intellij.plugin.common.Backgroundable
11-
import org.digma.intellij.plugin.common.buildVersionRequest
1214
import org.digma.intellij.plugin.common.newerThan
1315
import org.digma.intellij.plugin.loadstatus.LoadStatusService
14-
import org.digma.intellij.plugin.model.rest.version.VersionResponse
1516
import org.digma.intellij.plugin.posthog.ActivityMonitor
1617
import org.digma.intellij.plugin.posthog.UserActionOrigin
1718
import org.digma.intellij.plugin.ui.panels.DigmaResettablePanel
@@ -21,7 +22,6 @@ import java.awt.Dimension
2122
import java.awt.GridLayout
2223
import java.awt.event.MouseAdapter
2324
import java.awt.event.MouseEvent
24-
import java.util.concurrent.CountDownLatch
2525
import javax.swing.BorderFactory
2626
import javax.swing.Box
2727
import javax.swing.BoxLayout
@@ -89,7 +89,7 @@ class LoadStatusPanel(val project: Project) : DigmaResettablePanel() {
8989

9090
val closeButton = JButton("")
9191

92-
closeButton.isVisible = shouldDisplayCloseButton()
92+
closeButton.isVisible = false
9393
closeButton.isOpaque = false
9494
closeButton.isBorderPainted = false
9595
closeButton.isContentAreaFilled = false
@@ -125,21 +125,18 @@ class LoadStatusPanel(val project: Project) : DigmaResettablePanel() {
125125
borderedPanel.add(contentPanel)
126126
borderedPanel.add(Box.createVerticalStrut(2))
127127
this.add(borderedPanel)
128+
129+
GlobalScope.launch {
130+
closeButton.isVisible = shouldDisplayCloseButton()
131+
}
128132
}
129133

130134
private fun shouldDisplayCloseButton(): Boolean
131135
{
132-
var versionsResp: VersionResponse? = null
133-
val latch = CountDownLatch(1)
134-
135-
Backgroundable.ensurePooledThread {
136-
versionsResp = AnalyticsService.getInstance(project).getVersions(buildVersionRequest())
137-
latch.countDown()
138-
}
139136

140-
latch.await()
137+
val version = BackendInfoHolder.getInstance().getAboutLoadIfNull()?.applicationVersion ?: return false
141138

142-
val currentBackendVersion = ComparableVersion(versionsResp?.backend?.currentVersion)
139+
val currentBackendVersion = ComparableVersion(version)
143140
val closeButtonBackendVersion = ComparableVersion("0.3.25")
144141
return currentBackendVersion.newerThan(closeButtonBackendVersion)
145142
}

0 commit comments

Comments
 (0)