Skip to content

Commit 5aee499

Browse files
authored
Merge pull request #41 from ArpNetworking/fix_multi_bytestrings
fix dropped metrics with multiple parts
2 parents f6bb4fd + fc50d51 commit 5aee499

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/main/java/com/arpnetworking/http/Routes.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import akka.stream.javadsl.Source;
3939
import akka.util.ByteString;
4040
import akka.util.Timeout;
41+
import com.arpnetworking.metrics.Counter;
4142
import com.arpnetworking.metrics.Metrics;
4243
import com.arpnetworking.metrics.MetricsFactory;
4344
import com.arpnetworking.metrics.Timer;
@@ -107,7 +108,9 @@ public Flow<HttpRequest, HttpResponse, NotUsed> flow() {
107108
@Override
108109
public CompletionStage<HttpResponse> apply(final HttpRequest request) {
109110
final Metrics metrics = _metricsFactory.create();
110-
final Timer timer = metrics.createTimer(createTimerName(request));
111+
final Timer timer = metrics.createTimer(createMetricName(request, REQUEST_METRIC));
112+
final Counter bodySize = metrics.createCounter(createMetricName(request, BODY_SIZE_METRIC));
113+
bodySize.increment(request.entity().getContentLengthOption().orElse(0L));
111114
// TODO(vkoskela): Add a request UUID and include in MDC. [MAI-462]
112115
LOGGER.trace()
113116
.setEvent("http.in.start")
@@ -229,14 +232,16 @@ private <T> CompletionStage<T> ask(final String actorPath, final Object request,
229232
.exceptionally(throwable -> defaultValue);
230233
}
231234

232-
private String createTimerName(final HttpRequest request) {
235+
private String createMetricName(final HttpRequest request, final String actionPart) {
233236
final StringBuilder nameBuilder = new StringBuilder()
234-
.append("rest_service/")
237+
.append(REST_SERVICE_METRIC_ROOT)
235238
.append(request.method().value());
236239
if (!request.getUri().path().startsWith("/")) {
237240
nameBuilder.append("/");
238241
}
239242
nameBuilder.append(request.getUri().path());
243+
nameBuilder.append("/");
244+
nameBuilder.append(actionPart);
240245
return nameBuilder.toString();
241246
}
242247

@@ -259,6 +264,9 @@ private String createTimerName(final HttpRequest request) {
259264
private static final String APP_V1_SOURCE_PREFIX = "/metrics/v1/application";
260265
private static final String ACTOR_COLLECTD_V1 = "/user/" + CollectdHttpSourceV1.ACTOR_NAME;
261266
private static final String ACTOR_APP_V1 = "/user/" + ClientHttpSourceV1.ACTOR_NAME;
267+
private static final String REST_SERVICE_METRIC_ROOT = "rest_service/";
268+
private static final String BODY_SIZE_METRIC = "body_size";
269+
private static final String REQUEST_METRIC = "request";
262270

263271
// Ping
264272
private static final HttpHeader PING_CACHE_CONTROL_HEADER = CacheControl.create(

src/main/java/com/arpnetworking/metrics/common/sources/HttpSource.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ public void onReceive(final Object message) throws Exception {
148148
final Flow<HttpRequest, byte[], NotUsed> getBodyFlow = Flow.<HttpRequest>create()
149149
.map(HttpRequest::entity)
150150
.flatMapConcat(RequestEntity::getDataBytes)
151+
.reduce(ByteString::concat)
151152
.map(ByteString::toArray) // Transform to array form
152153
.named("getBody");
153154

0 commit comments

Comments
 (0)