Skip to content

Commit 1f449e5

Browse files
authored
Merge pull request #202 from modelix/indexer-health-check
feat(mps-model-server-plugin): 'indexer' health check
2 parents 84a8886 + cdcb83b commit 1f449e5

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

mps-model-server-plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ dependencies {
99
compileOnly("com.jetbrains:mps-openapi:2021.1.4")
1010
compileOnly("com.jetbrains:mps-core:2021.1.4")
1111
compileOnly("com.jetbrains:mps-environment:2021.1.4")
12+
compileOnly("com.jetbrains:mps-platform:2021.1.4")
1213
}
1314

1415
// Configure Gradle IntelliJ Plugin

mps-model-server-plugin/src/main/kotlin/org/modelix/model/server/mps/MPSModelServer.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ import com.intellij.ide.plugins.IdeaPluginDescriptor
1919
import com.intellij.openapi.Disposable
2020
import com.intellij.openapi.components.Service
2121
import com.intellij.openapi.components.service
22+
import com.intellij.openapi.project.DumbService
2223
import com.intellij.openapi.project.Project
24+
import jetbrains.mps.ide.project.ProjectHelper
2325
import jetbrains.mps.project.ProjectBase
2426
import jetbrains.mps.project.ProjectManager
2527
import jetbrains.mps.smodel.MPSModuleRepository
@@ -46,6 +48,28 @@ class MPSModelServer : Disposable {
4648
server = LightModelServer.builder()
4749
.port(48305)
4850
.rootNode(rootNodeProvider)
51+
.healthCheck(object : LightModelServer.IHealthCheck {
52+
override val id: String
53+
get() = "indexer"
54+
override val enabledByDefault: Boolean
55+
get() = false
56+
57+
override fun run(output: java.lang.StringBuilder): Boolean {
58+
var allSmart = true
59+
val projects = ProjectManager.getInstance().openedProjects
60+
for (project in projects) {
61+
project.repository.modelAccess.runReadAction {
62+
val indexerDone =
63+
!DumbService.getInstance(ProjectHelper.toIdeaProject(project)).isDumb
64+
if (!indexerDone) {
65+
output.append(" indexer running on project ").append(project.name)
66+
allSmart = false
67+
}
68+
}
69+
}
70+
return allSmart
71+
}
72+
})
4973
.healthCheck(object : LightModelServer.IHealthCheck {
5074
override val id: String
5175
get() = "projects"

0 commit comments

Comments
 (0)