Skip to content

Commit dc41ece

Browse files
committed
fix(model-server): move the repository existence check and delete into a transaction
1 parent 2aa2a28 commit dc41ece

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

model-server/src/main/kotlin/org/modelix/model/server/handlers/ModelReplicationServer.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,11 @@ class ModelReplicationServer(val repositoriesManager: RepositoriesManager) {
170170
fun PipelineContext<Unit, ApplicationCall>.repositoryId() = call.repositoryId()
171171

172172
val repositoryId = repositoryId()
173-
if (!repositoriesManager.repositoryExists(repositoryId)) {
174-
call.respond(HttpStatusCode.NotFound)
175-
} else {
176-
repositoriesManager.removeRepository(repositoryId)
173+
val foundAndDeleted = repositoriesManager.removeRepository(repositoryId)
174+
if (foundAndDeleted) {
177175
call.respond(HttpStatusCode.NoContent)
176+
} else {
177+
call.respond(HttpStatusCode.NotFound)
178178
}
179179
}
180180

model-server/src/main/kotlin/org/modelix/model/server/handlers/RepositoriesManager.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,21 @@ class RepositoriesManager(val client: LocalModelClient) {
145145
}
146146
}
147147

148-
fun removeRepository(repository: RepositoryId) {
149-
store.runTransaction {
148+
fun removeRepository(repository: RepositoryId): Boolean {
149+
return store.runTransaction {
150+
if (!repositoryExists(repository)) {
151+
return@runTransaction false
152+
}
153+
150154
for (branchName in getBranchNames(repository)) {
151155
putVersionHash(repository.getBranchReference(branchName), null)
152156
}
153157
store.put(branchListKey(repository), null)
154158
val existingRepositories = getRepositories()
155159
val remainingRepositories = existingRepositories - repository
156160
store.put(REPOSITORIES_LIST_KEY, remainingRepositories.joinToString("\n") { it.id })
161+
162+
true
157163
}
158164
}
159165

0 commit comments

Comments
 (0)