asset-s/RFQT: log each maker resp. time, not agg.
Log each maker's individual response times, rather than logging them in aggregate. Addresses review comment https://github.com/0xProject/0x-monorepo/pull/2574#discussion_r419769846
This commit is contained in:
		@@ -102,12 +102,12 @@ export class QuoteRequestor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // create an array of promises for quote responses, using "undefined"
 | 
					        // create an array of promises for quote responses, using "undefined"
 | 
				
			||||||
        // as a placeholder for failed requests.
 | 
					        // as a placeholder for failed requests.
 | 
				
			||||||
        const timeBeforeAwait = Date.now();
 | 
					 | 
				
			||||||
        const responsesIfDefined: Array<undefined | AxiosResponse<SignedOrder>> = await Promise.all(
 | 
					        const responsesIfDefined: Array<undefined | AxiosResponse<SignedOrder>> = await Promise.all(
 | 
				
			||||||
            Object.keys(this._rfqtAssetOfferings).map(async url => {
 | 
					            Object.keys(this._rfqtAssetOfferings).map(async url => {
 | 
				
			||||||
                if (this._makerSupportsPair(url, makerAssetData, takerAssetData)) {
 | 
					                if (this._makerSupportsPair(url, makerAssetData, takerAssetData)) {
 | 
				
			||||||
                    try {
 | 
					                    try {
 | 
				
			||||||
                        return await Axios.get<SignedOrder>(`${url}/quote`, {
 | 
					                        const timeBeforeAwait = Date.now();
 | 
				
			||||||
 | 
					                        const response = await Axios.get<SignedOrder>(`${url}/quote`, {
 | 
				
			||||||
                            headers: { '0x-api-key': _opts.apiKey },
 | 
					                            headers: { '0x-api-key': _opts.apiKey },
 | 
				
			||||||
                            params: {
 | 
					                            params: {
 | 
				
			||||||
                                takerAddress: _opts.takerAddress,
 | 
					                                takerAddress: _opts.takerAddress,
 | 
				
			||||||
@@ -115,6 +115,13 @@ export class QuoteRequestor {
 | 
				
			|||||||
                            },
 | 
					                            },
 | 
				
			||||||
                            timeout: _opts.makerEndpointMaxResponseTimeMs,
 | 
					                            timeout: _opts.makerEndpointMaxResponseTimeMs,
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
 | 
					                        this._infoLogger({
 | 
				
			||||||
 | 
					                            rfqtFirmQuoteMakerResponseTime: {
 | 
				
			||||||
 | 
					                                makerEndpoint: url,
 | 
				
			||||||
 | 
					                                responseTimeMs: Date.now() - timeBeforeAwait,
 | 
				
			||||||
 | 
					                            },
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                        return response;
 | 
				
			||||||
                    } catch (err) {
 | 
					                    } catch (err) {
 | 
				
			||||||
                        this._warningLogger(
 | 
					                        this._warningLogger(
 | 
				
			||||||
                            `Failed to get RFQ-T firm quote from market maker endpoint ${url} for API key ${
 | 
					                            `Failed to get RFQ-T firm quote from market maker endpoint ${url} for API key ${
 | 
				
			||||||
@@ -128,7 +135,6 @@ export class QuoteRequestor {
 | 
				
			|||||||
                return undefined;
 | 
					                return undefined;
 | 
				
			||||||
            }),
 | 
					            }),
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        this._infoLogger({ aggregatedRfqtLatencyMs: Date.now() - timeBeforeAwait });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const responses = responsesIfDefined.filter(
 | 
					        const responses = responsesIfDefined.filter(
 | 
				
			||||||
            (respIfDefd): respIfDefd is AxiosResponse<SignedOrder> => respIfDefd !== undefined,
 | 
					            (respIfDefd): respIfDefd is AxiosResponse<SignedOrder> => respIfDefd !== undefined,
 | 
				
			||||||
@@ -196,14 +202,14 @@ export class QuoteRequestor {
 | 
				
			|||||||
        const _opts: RfqtRequestOpts = { ...constants.DEFAULT_RFQT_REQUEST_OPTS, ...options };
 | 
					        const _opts: RfqtRequestOpts = { ...constants.DEFAULT_RFQT_REQUEST_OPTS, ...options };
 | 
				
			||||||
        assertTakerAddressOrThrow(_opts.takerAddress);
 | 
					        assertTakerAddressOrThrow(_opts.takerAddress);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const timeBeforeAwait = Date.now();
 | 
					 | 
				
			||||||
        const axiosResponsesIfDefined: Array<
 | 
					        const axiosResponsesIfDefined: Array<
 | 
				
			||||||
            undefined | AxiosResponse<RfqtIndicativeQuoteResponse>
 | 
					            undefined | AxiosResponse<RfqtIndicativeQuoteResponse>
 | 
				
			||||||
        > = await Promise.all(
 | 
					        > = await Promise.all(
 | 
				
			||||||
            Object.keys(this._rfqtAssetOfferings).map(async url => {
 | 
					            Object.keys(this._rfqtAssetOfferings).map(async url => {
 | 
				
			||||||
                if (this._makerSupportsPair(url, makerAssetData, takerAssetData)) {
 | 
					                if (this._makerSupportsPair(url, makerAssetData, takerAssetData)) {
 | 
				
			||||||
                    try {
 | 
					                    try {
 | 
				
			||||||
                        return await Axios.get<RfqtIndicativeQuoteResponse>(`${url}/price`, {
 | 
					                        const timeBeforeAwait = Date.now();
 | 
				
			||||||
 | 
					                        const response = await Axios.get<RfqtIndicativeQuoteResponse>(`${url}/price`, {
 | 
				
			||||||
                            headers: { '0x-api-key': options.apiKey },
 | 
					                            headers: { '0x-api-key': options.apiKey },
 | 
				
			||||||
                            params: {
 | 
					                            params: {
 | 
				
			||||||
                                takerAddress: options.takerAddress,
 | 
					                                takerAddress: options.takerAddress,
 | 
				
			||||||
@@ -211,6 +217,13 @@ export class QuoteRequestor {
 | 
				
			|||||||
                            },
 | 
					                            },
 | 
				
			||||||
                            timeout: options.makerEndpointMaxResponseTimeMs,
 | 
					                            timeout: options.makerEndpointMaxResponseTimeMs,
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
 | 
					                        this._infoLogger({
 | 
				
			||||||
 | 
					                            rfqtIndicativeQuoteMakerResponseTime: {
 | 
				
			||||||
 | 
					                                makerEndpoint: url,
 | 
				
			||||||
 | 
					                                responseTimeMs: Date.now() - timeBeforeAwait,
 | 
				
			||||||
 | 
					                            },
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                        return response;
 | 
				
			||||||
                    } catch (err) {
 | 
					                    } catch (err) {
 | 
				
			||||||
                        this._warningLogger(
 | 
					                        this._warningLogger(
 | 
				
			||||||
                            `Failed to get RFQ-T indicative quote from market maker endpoint ${url} for API key ${
 | 
					                            `Failed to get RFQ-T indicative quote from market maker endpoint ${url} for API key ${
 | 
				
			||||||
@@ -224,7 +237,6 @@ export class QuoteRequestor {
 | 
				
			|||||||
                return undefined;
 | 
					                return undefined;
 | 
				
			||||||
            }),
 | 
					            }),
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        this._infoLogger({ aggregatedRfqtLatencyMs: Date.now() - timeBeforeAwait });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const axiosResponses = axiosResponsesIfDefined.filter(
 | 
					        const axiosResponses = axiosResponsesIfDefined.filter(
 | 
				
			||||||
            (respIfDefd): respIfDefd is AxiosResponse<RfqtIndicativeQuoteResponse> => respIfDefd !== undefined,
 | 
					            (respIfDefd): respIfDefd is AxiosResponse<RfqtIndicativeQuoteResponse> => respIfDefd !== undefined,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user