mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +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(
|
||||
"trace-sink-registry-close",
|
||||
90,
|
||||
TraceSinkRegistry::close
|
||||
TraceSinkRegistry.INSTANCE::close
|
||||
);
|
||||
AgentContext.INSTANCE.addPostShutdownHook(
|
||||
"config-center-close",
|
||||
|
||||
@@ -27,11 +27,10 @@ object TraceSinkRegistry {
|
||||
private val closed = AtomicBoolean(false)
|
||||
|
||||
init {
|
||||
register(FileTraceSink)
|
||||
FileTraceSink.register()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun register(sink: TraceSink) {
|
||||
internal fun register(sink: TraceSink) {
|
||||
if (closed.get()) {
|
||||
log.warn("TraceSinkRegistry is closed, skip trace sink: {}", sink.javaClass.name)
|
||||
return
|
||||
@@ -41,12 +40,10 @@ object TraceSinkRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun unregister(sink: TraceSink) {
|
||||
internal fun unregister(sink: TraceSink) {
|
||||
sinks.remove(sink)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun publish(event: TraceEvent) {
|
||||
for (sink in sinks) {
|
||||
runCatching {
|
||||
@@ -57,7 +54,6 @@ object TraceSinkRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun close() {
|
||||
if (!closed.compareAndSet(false, true)) {
|
||||
return
|
||||
@@ -74,6 +70,16 @@ object TraceSinkRegistry {
|
||||
}
|
||||
|
||||
interface TraceSink : AutoCloseable {
|
||||
|
||||
fun register() {
|
||||
TraceSinkRegistry.register(this)
|
||||
}
|
||||
|
||||
fun unregister() {
|
||||
TraceSinkRegistry.unregister(this)
|
||||
}
|
||||
|
||||
|
||||
fun consume(event: TraceEvent)
|
||||
|
||||
override fun close() {
|
||||
|
||||
Reference in New Issue
Block a user