Skip to content

Commit 68aa2c4

Browse files
authored
release: 1.3.3 (#265)
2 parents 12aa934 + fcb68d1 commit 68aa2c4

File tree

2 files changed

+56
-7
lines changed

2 files changed

+56
-7
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.gitanimals.core
2+
3+
import org.gitanimals.core.filter.MDCFilter.Companion.TRACE_ID
4+
import org.rooftop.netx.api.Context
5+
import org.rooftop.netx.api.ContextOrchestrate
6+
import org.rooftop.netx.api.ContextRollback
7+
import org.slf4j.LoggerFactory
8+
import org.slf4j.MDC
9+
10+
open class TraceIdContextOrchestrator<T : Any, V : Any>(
11+
private val orchestrate: ContextOrchestrate<T, V>,
12+
) : ContextOrchestrate<T, V> {
13+
14+
override fun orchestrate(context: Context, request: T): V {
15+
MDC.put(TRACE_ID, context.decodeContext(TRACE_ID, String::class))
16+
return runCatching {
17+
orchestrate.orchestrate(context, request)
18+
}.getOrElse {
19+
logger.warn("Orchestrating fail, rollback start. request: \"$request\"", it)
20+
throw it
21+
}.also {
22+
MDC.remove(TRACE_ID)
23+
}
24+
}
25+
26+
private companion object {
27+
private val logger = LoggerFactory.getLogger(this::class.simpleName)
28+
}
29+
}
30+
31+
open class TraceIdContextRollback<T : Any, V : Any?>(
32+
private val rollback: ContextRollback<T, V>,
33+
) : ContextRollback<T, V> {
34+
35+
override fun rollback(context: Context, request: T): V {
36+
MDC.put(TRACE_ID, context.decodeContext(TRACE_ID, String::class))
37+
return runCatching {
38+
rollback.rollback(context, request)
39+
}.getOrElse {
40+
logger.error("Rollback fail need to fix. request: \"$request\"", it)
41+
throw it
42+
}.also {
43+
MDC.remove(TRACE_ID)
44+
}
45+
}
46+
47+
private companion object {
48+
private val logger = LoggerFactory.getLogger(this::class.simpleName)
49+
}
50+
}

src/main/kotlin/org/gitanimals/guild/app/CreateGuildFacade.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.gitanimals.guild.app
22

3+
import org.gitanimals.core.TraceIdContextOrchestrator
4+
import org.gitanimals.core.TraceIdContextRollback
35
import org.gitanimals.core.filter.MDCFilter.Companion.TRACE_ID
46
import org.gitanimals.guild.app.request.CreateGuildRequest
57
import org.gitanimals.guild.app.response.GuildResponse
@@ -51,8 +53,7 @@ class CreateGuildFacade(
5153
createGuildOrchestrator =
5254
orchestratorFactory.create<CreateGuildRequest>("Create guild orchestrator")
5355
.startWithContext(
54-
contextOrchestrate = { context, createGuildRequest ->
55-
MDC.put(TRACE_ID, context.decodeContext(TRACE_ID, String::class))
56+
contextOrchestrate = TraceIdContextOrchestrator { context, createGuildRequest ->
5657
val token = context.decodeContext("token", String::class)
5758
val idempotencyKey = context.decodeContext(IDEMPOTENCY_KEY, String::class)
5859

@@ -69,8 +70,7 @@ class CreateGuildFacade(
6970
)
7071
createGuildRequest
7172
},
72-
contextRollback = { context, _ ->
73-
MDC.put(TRACE_ID, context.decodeContext(TRACE_ID, String::class))
73+
contextRollback = TraceIdContextRollback { context, _ ->
7474
val token = context.decodeContext("token", String::class)
7575
val idempotencyKey = context.decodeContext(IDEMPOTENCY_KEY, String::class)
7676

@@ -85,8 +85,7 @@ class CreateGuildFacade(
8585
}
8686
)
8787
.commitWithContext(
88-
contextOrchestrate = { context, createGuildRequest ->
89-
MDC.put(TRACE_ID, context.decodeContext(TRACE_ID, String::class))
88+
contextOrchestrate = TraceIdContextOrchestrator { context, createGuildRequest ->
9089
val token = context.decodeContext("token", String::class)
9190

9291
val leader = identityApi.getUserByToken(token)
@@ -112,7 +111,7 @@ class CreateGuildFacade(
112111
createLeaderRequest = createLeaderRequest,
113112
)
114113

115-
return@commitWithContext GuildResponse.from(guild)
114+
GuildResponse.from(guild)
116115
}
117116
)
118117
}

0 commit comments

Comments
 (0)