Add recordSuccessMetric utility

Summary: Wraps a future and records the success rate. This will be stored along with the sessionId and the userId, so we can drill down and get the success rate at different levels.

Reviewed By: passy

Differential Revision: D13635049

fbshipit-source-id: 4e0e6bdc0f9b76b08cf37c5d9fe87909f7338534
This commit is contained in:
John Knox
2019-01-14 06:25:35 -08:00
committed by Facebook Github Bot
parent 4a5dae8f4f
commit 90de3c6868
3 changed files with 98 additions and 12 deletions

View File

@@ -17,6 +17,7 @@ import {Single} from 'rsocket-flowable';
import Client from './Client.js';
import type {UninitializedClient} from './UninitializedClient';
import {RecurringError} from './utils/errors';
import {recordSuccessMetric} from './utils/metrics';
const EventEmitter = (require('events'): any);
const invariant = require('invariant');
@@ -177,8 +178,15 @@ export default class Server extends EventEmitter {
const {csr, destination} = json;
return new Single(subscriber => {
subscriber.onSubscribe();
this.certificateProvider
.processCertificateSigningRequest(csr, clientData.os, destination)
recordSuccessMetric(
this.certificateProvider.processCertificateSigningRequest(
csr,
clientData.os,
destination,
),
'processCertificateSigningRequest',
this.logger,
)
.then(result => {
subscriber.onComplete({
data: JSON.stringify({
@@ -190,20 +198,10 @@ export default class Server extends EventEmitter {
client,
deviceId: result.deviceId,
});
this.logger.track(
'success-rate',
'processCertificateSigningRequest',
1,
);
})
.catch(e => {
subscriber.onError(e);
this.emit('client-setup-error', {client, error: e});
this.logger.track(
'success-rate',
'processCertificateSigningRequest',
0,
);
});
});
}