mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
refactor(trace): move sink registration to TraceSink default methods and restrict registry APIs
This commit is contained in:
@@ -137,7 +137,7 @@ public final class Agent {
|
|||||||
AgentContext.INSTANCE.addPostShutdownHook(
|
AgentContext.INSTANCE.addPostShutdownHook(
|
||||||
"trace-sink-registry-close",
|
"trace-sink-registry-close",
|
||||||
90,
|
90,
|
||||||
TraceSinkRegistry::close
|
TraceSinkRegistry.INSTANCE::close
|
||||||
);
|
);
|
||||||
AgentContext.INSTANCE.addPostShutdownHook(
|
AgentContext.INSTANCE.addPostShutdownHook(
|
||||||
"config-center-close",
|
"config-center-close",
|
||||||
|
|||||||
@@ -27,11 +27,10 @@ object TraceSinkRegistry {
|
|||||||
private val closed = AtomicBoolean(false)
|
private val closed = AtomicBoolean(false)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
register(FileTraceSink)
|
FileTraceSink.register()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
internal fun register(sink: TraceSink) {
|
||||||
fun register(sink: TraceSink) {
|
|
||||||
if (closed.get()) {
|
if (closed.get()) {
|
||||||
log.warn("TraceSinkRegistry is closed, skip trace sink: {}", sink.javaClass.name)
|
log.warn("TraceSinkRegistry is closed, skip trace sink: {}", sink.javaClass.name)
|
||||||
return
|
return
|
||||||
@@ -41,12 +40,10 @@ object TraceSinkRegistry {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
internal fun unregister(sink: TraceSink) {
|
||||||
fun unregister(sink: TraceSink) {
|
|
||||||
sinks.remove(sink)
|
sinks.remove(sink)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
fun publish(event: TraceEvent) {
|
fun publish(event: TraceEvent) {
|
||||||
for (sink in sinks) {
|
for (sink in sinks) {
|
||||||
runCatching {
|
runCatching {
|
||||||
@@ -57,7 +54,6 @@ object TraceSinkRegistry {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
fun close() {
|
fun close() {
|
||||||
if (!closed.compareAndSet(false, true)) {
|
if (!closed.compareAndSet(false, true)) {
|
||||||
return
|
return
|
||||||
@@ -74,6 +70,16 @@ object TraceSinkRegistry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface TraceSink : AutoCloseable {
|
interface TraceSink : AutoCloseable {
|
||||||
|
|
||||||
|
fun register() {
|
||||||
|
TraceSinkRegistry.register(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun unregister() {
|
||||||
|
TraceSinkRegistry.unregister(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fun consume(event: TraceEvent)
|
fun consume(event: TraceEvent)
|
||||||
|
|
||||||
override fun close() {
|
override fun close() {
|
||||||
|
|||||||
Reference in New Issue
Block a user