From 17893dd7bbcc6568ac477ea51ce87d80e49245d4 Mon Sep 17 00:00:00 2001 From: Rahul Padigela Date: Fri, 16 Sep 2016 12:15:47 -0700 Subject: [PATCH] FT: Push metrics for object copy --- lib/api/objectCopy.js | 11 ++++++++--- lib/routes/routePUT.js | 8 +++++--- lib/utilities/pushMetrics.js | 4 ++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/api/objectCopy.js b/lib/api/objectCopy.js index 9e3d37b865..acc31507e6 100644 --- a/lib/api/objectCopy.js +++ b/lib/api/objectCopy.js @@ -275,11 +275,15 @@ function objectCopy(authInfo, request, sourceBucket, logger.newRequestLoggerFromSerializedUids( log.getSerializedUids())); } + const sourceObjSize = storeMetadataParams.size; + const destObjPrevSize = destObjMD ? + destObjMD['content-length'] : null; return next(null, storeMetadataParams, - serverSideEncryption); + serverSideEncryption, sourceObjSize, destObjPrevSize); }); }, - ], (err, storeMetadataParams, serverSideEncryption) => { + ], (err, storeMetadataParams, serverSideEncryption, sourceObjSize, + destObjPrevSize) => { if (err) { return callback(err); } @@ -304,6 +308,7 @@ function objectCopy(authInfo, request, sourceBucket, // TODO: Add version headers for response // (if source or destination is version). // Add expiration header if lifecycle enabled - return callback(null, xml, additionalHeaders); + return callback(null, xml, additionalHeaders, sourceObjSize, + destObjPrevSize); }); } diff --git a/lib/routes/routePUT.js b/lib/routes/routePUT.js index b72d8400db..eb76b73dfb 100644 --- a/lib/routes/routePUT.js +++ b/lib/routes/routePUT.js @@ -104,10 +104,12 @@ export default function routePUT(request, response, log, utapi) { }); } else if (request.headers['x-amz-copy-source']) { return api.callApiMethod('objectCopy', request, log, (err, xml, - additionalHeaders) => + additionalHeaders, sourceObjSize, destObjPrevSize) => { + pushMetrics(err, log, utapi, 'objectCopy', sourceObjSize, + destObjPrevSize); routesUtils.responseXMLBody(err, xml, response, log, - additionalHeaders) - ); + additionalHeaders); + }); } else { if (!request.headers['content-length']) { return routesUtils.responseNoBody(errors.MissingContentLength, diff --git a/lib/utilities/pushMetrics.js b/lib/utilities/pushMetrics.js index 17bd1d8f47..1f496f603f 100644 --- a/lib/utilities/pushMetrics.js +++ b/lib/utilities/pushMetrics.js @@ -19,6 +19,10 @@ export default function pushMetrics(err, log, utapi, action, resource, utapi.pushMetricPutObject(reqUid, resource, contentLength, prevContentLen); break; + case 'objectCopy': + utapi.pushMetricCopyObject(reqUid, resource, contentLength, + prevContentLen); + break; case 'bucketGetACL': utapi.pushMetricGetBucketAcl(reqUid, resource); break;