mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-25 12:46:21 +10:00
remove StoragePool & synchronized.
This commit is contained in:
@@ -38,10 +38,4 @@ public interface TraceId {
|
||||
short getFlags();
|
||||
|
||||
boolean isRoot();
|
||||
|
||||
int getTraceCount();
|
||||
|
||||
int incrementTraceCount();
|
||||
|
||||
int decrementTraceCount();
|
||||
}
|
||||
|
||||
-17
@@ -75,22 +75,6 @@ public class DefaultAsyncTraceId implements AsyncTraceId {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getTraceCount() {
|
||||
return traceId.getTraceCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int incrementTraceCount() {
|
||||
return traceId.incrementTraceCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int decrementTraceCount() {
|
||||
return traceId.decrementTraceCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TraceId getParentTraceId() {
|
||||
return traceId;
|
||||
@@ -108,5 +92,4 @@ public class DefaultAsyncTraceId implements AsyncTraceId {
|
||||
builder.append("}");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -60,7 +60,6 @@ public final class DefaultTrace implements Trace {
|
||||
this.traceId = new DefaultTraceId(traceContext.getAgentId(), traceContext.getAgentStartTime(), transactionId);
|
||||
this.sampling = sampling;
|
||||
|
||||
this.traceId.incrementTraceCount();
|
||||
Span span = createSpan();
|
||||
this.spanRecorder = new DefaultSpanRecorder(traceContext, span, traceId, sampling);
|
||||
this.spanRecorder.recordTraceId(traceId);
|
||||
@@ -84,7 +83,6 @@ public final class DefaultTrace implements Trace {
|
||||
this.traceId = continueTraceId;
|
||||
this.sampling = sampling;
|
||||
|
||||
this.traceId.incrementTraceCount();
|
||||
Span span = createSpan();
|
||||
this.spanRecorder = new DefaultSpanRecorder(traceContext, span, traceId, sampling);
|
||||
this.spanRecorder.recordTraceId(traceId);
|
||||
@@ -180,7 +178,6 @@ public final class DefaultTrace implements Trace {
|
||||
|
||||
// If the stack is not handled properly, NullPointerException will be thrown after this. Is it OK?
|
||||
if (this.storage != null) {
|
||||
this.traceId.decrementTraceCount();
|
||||
this.storage.close();
|
||||
this.storage = null;
|
||||
}
|
||||
|
||||
+3
-7
@@ -26,7 +26,6 @@ import com.navercorp.pinpoint.exception.PinpointException;
|
||||
import com.navercorp.pinpoint.profiler.context.storage.AsyncStorage;
|
||||
import com.navercorp.pinpoint.profiler.context.storage.Storage;
|
||||
import com.navercorp.pinpoint.profiler.context.storage.StorageFactory;
|
||||
import com.navercorp.pinpoint.profiler.context.storage.StoragePool;
|
||||
import com.navercorp.pinpoint.profiler.monitor.metric.MetricRegistry;
|
||||
import com.navercorp.pinpoint.profiler.util.NamedThreadLocal;
|
||||
|
||||
@@ -50,8 +49,6 @@ public class ThreadLocalTraceFactory implements TraceFactory {
|
||||
private final StorageFactory storageFactory;
|
||||
private final Sampler sampler;
|
||||
|
||||
private final StoragePool storagePool;
|
||||
|
||||
// Unique id for tracing a internal stacktrace and calculating a slow time of activethreadcount
|
||||
// moved here in order to make codes simpler for now
|
||||
private final AtomicLong transactionId = new AtomicLong(0);
|
||||
@@ -73,7 +70,6 @@ public class ThreadLocalTraceFactory implements TraceFactory {
|
||||
this.metricRegistry = metricRegistry;
|
||||
this.storageFactory = storageFactory;
|
||||
this.sampler = sampler;
|
||||
this.storagePool = new StoragePool(storageFactory);
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +128,7 @@ public class ThreadLocalTraceFactory implements TraceFactory {
|
||||
final boolean sampling = true;
|
||||
final DefaultTrace trace = new DefaultTrace(traceContext, traceID, sampling);
|
||||
// final Storage storage = storageFactory.createStorage();
|
||||
final Storage storage = storagePool.getStorage(traceID);
|
||||
final Storage storage = storageFactory.createStorage();
|
||||
trace.setStorage(storage);
|
||||
threadLocal.set(trace);
|
||||
return trace;
|
||||
@@ -172,7 +168,7 @@ public class ThreadLocalTraceFactory implements TraceFactory {
|
||||
// final Storage storage = storageFactory.createStorage();
|
||||
final DefaultTrace trace = new DefaultTrace(traceContext, nextTransactionId(), sampling);
|
||||
final TraceId traceId = trace.getTraceId();
|
||||
final Storage storage = storagePool.getStorage(traceId);
|
||||
final Storage storage = storageFactory.createStorage();
|
||||
trace.setStorage(storage);
|
||||
trace.setTraceType(traceType);
|
||||
threadLocal.set(trace);
|
||||
@@ -209,7 +205,7 @@ public class ThreadLocalTraceFactory implements TraceFactory {
|
||||
final TraceId parentTraceId = traceId.getParentTraceId();
|
||||
final boolean sampling = true;
|
||||
final DefaultTrace trace = new DefaultTrace(traceContext, parentTraceId, sampling);
|
||||
final Storage storage = storagePool.getStorage(parentTraceId);
|
||||
final Storage storage = storageFactory.createStorage();
|
||||
trace.setStorage(new AsyncStorage(storage));
|
||||
|
||||
final AsyncTrace asyncTrace = new AsyncTrace(trace, asyncId, traceId.nextAsyncSequence(), startTime);
|
||||
|
||||
-5
@@ -47,11 +47,6 @@ public class AsyncStorage implements Storage {
|
||||
storage.flush();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCloseHandler(StorageCloseHandler closeHandler) {
|
||||
storage.setCloseHandler(closeHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
storage.close();
|
||||
|
||||
+8
-23
@@ -40,7 +40,6 @@ public class BufferedStorage implements Storage {
|
||||
private List<SpanEvent> storage;
|
||||
private final DataSender dataSender;
|
||||
private final SpanChunkFactory spanChunkFactory;
|
||||
private StorageCloseHandler closeHandler;
|
||||
|
||||
public BufferedStorage(DataSender dataSender, SpanChunkFactory spanChunkFactory) {
|
||||
this(dataSender, spanChunkFactory, DEFAULT_BUFFER_SIZE);
|
||||
@@ -62,14 +61,13 @@ public class BufferedStorage implements Storage {
|
||||
@Override
|
||||
public void store(SpanEvent spanEvent) {
|
||||
List<SpanEvent> flushData = null;
|
||||
synchronized (this) {
|
||||
storage.add(spanEvent);
|
||||
if (storage.size() >= bufferSize) {
|
||||
// data copy
|
||||
flushData = storage;
|
||||
storage = new ArrayList<SpanEvent>(bufferSize);
|
||||
}
|
||||
storage.add(spanEvent);
|
||||
if (storage.size() >= bufferSize) {
|
||||
// data copy
|
||||
flushData = storage;
|
||||
storage = new ArrayList<SpanEvent>(bufferSize);
|
||||
}
|
||||
|
||||
if (flushData != null) {
|
||||
final SpanChunk spanChunk = spanChunkFactory.create(flushData);
|
||||
if (isDebug) {
|
||||
@@ -99,10 +97,8 @@ public class BufferedStorage implements Storage {
|
||||
|
||||
public void flush() {
|
||||
List<SpanEvent> spanEventList;
|
||||
synchronized (this) {
|
||||
spanEventList = storage;
|
||||
this.storage = new ArrayList<SpanEvent>(bufferSize);
|
||||
}
|
||||
spanEventList = storage;
|
||||
this.storage = new ArrayList<SpanEvent>(bufferSize);
|
||||
|
||||
if (spanEventList != null && !spanEventList.isEmpty()) {
|
||||
final SpanChunk spanChunk = spanChunkFactory.create(spanEventList);
|
||||
@@ -113,19 +109,8 @@ public class BufferedStorage implements Storage {
|
||||
}
|
||||
}
|
||||
|
||||
public StorageCloseHandler getCloseHandler() {
|
||||
return closeHandler;
|
||||
}
|
||||
|
||||
public void setCloseHandler(StorageCloseHandler closeHandler) {
|
||||
this.closeHandler = closeHandler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if(closeHandler != null) {
|
||||
closeHandler.handle();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-4
@@ -51,10 +51,6 @@ public class LogStorageFactory implements StorageFactory {
|
||||
public void flush() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCloseHandler(StorageCloseHandler closeHandler) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
-4
@@ -66,10 +66,6 @@ public class SpanStorage implements Storage {
|
||||
public void flush() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCloseHandler(StorageCloseHandler closeHandler) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
@@ -39,7 +39,5 @@ public interface Storage {
|
||||
|
||||
void flush();
|
||||
|
||||
void setCloseHandler(StorageCloseHandler closeHandler);
|
||||
|
||||
void close();
|
||||
}
|
||||
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 NAVER Corp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.navercorp.pinpoint.profiler.context.storage;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jaehong.kim
|
||||
*
|
||||
*/
|
||||
public interface StorageCloseHandler {
|
||||
void handle();
|
||||
}
|
||||
-56
@@ -1,56 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 NAVER Corp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.navercorp.pinpoint.profiler.context.storage;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.navercorp.pinpoint.bootstrap.context.TraceId;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jaehong.kim
|
||||
*
|
||||
*/
|
||||
public class StoragePool {
|
||||
private final StorageFactory storageFactory;
|
||||
private final ConcurrentHashMap<TraceId, Storage> pool = new ConcurrentHashMap<TraceId, Storage>();
|
||||
|
||||
public StoragePool(final StorageFactory storageFactory) {
|
||||
this.storageFactory = storageFactory;
|
||||
}
|
||||
|
||||
public Storage getStorage(final TraceId traceId) {
|
||||
Storage storage = pool.get(traceId);
|
||||
if (storage == null) {
|
||||
final Storage newStorage = storageFactory.createStorage();
|
||||
newStorage.setCloseHandler(new StorageCloseHandler() {
|
||||
@Override
|
||||
public void handle() {
|
||||
if (traceId.getTraceCount() == 0) {
|
||||
pool.remove(traceId);
|
||||
}
|
||||
}
|
||||
});
|
||||
storage = pool.putIfAbsent(traceId, newStorage);
|
||||
if (storage == null) {
|
||||
storage = newStorage;
|
||||
}
|
||||
}
|
||||
|
||||
return storage;
|
||||
}
|
||||
}
|
||||
@@ -60,10 +60,6 @@ public final class SimpleSpanStorage implements Storage {
|
||||
public void flush() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCloseHandler(StorageCloseHandler closeHandler) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user