UNPKG

@vtex/api

Version:
48 lines (47 loc) 2.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.broadcastStatusTrack = exports.trackStatus = exports.statusTrackHandler = exports.isStatusTrackBroadcast = exports.isStatusTrack = void 0; const cluster_1 = __importDefault(require("cluster")); const constants_1 = require("../../../constants"); const HttpAgentSingleton_1 = require("../../../HttpClient/middlewares/request/HttpAgentSingleton"); const BROADCAST_STATUS_TRACK = 'broadcastStatusTrack'; const STATUS_TRACK = 'statusTrack'; const isStatusTrack = (message) => message === STATUS_TRACK; exports.isStatusTrack = isStatusTrack; const isStatusTrackBroadcast = (message) => message === BROADCAST_STATUS_TRACK; exports.isStatusTrackBroadcast = isStatusTrackBroadcast; const statusTrackHandler = async (ctx) => { var _a, _b, _c; (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName('builtin:status-track'); if (!constants_1.LINKED) { (_c = process.send) === null || _c === void 0 ? void 0 : _c.call(process, BROADCAST_STATUS_TRACK); } ctx.body = []; return; }; exports.statusTrackHandler = statusTrackHandler; const trackStatus = () => { // Update diagnostics metrics (gauges for HTTP agent stats) HttpAgentSingleton_1.HttpAgentSingleton.updateHttpAgentMetrics(); // Legacy status tracking (console.log export) global.metrics.statusTrack().forEach(status => { logStatus(status); }); }; exports.trackStatus = trackStatus; const broadcastStatusTrack = () => Object.values(cluster_1.default.workers).forEach(worker => worker === null || worker === void 0 ? void 0 : worker.send(STATUS_TRACK)); exports.broadcastStatusTrack = broadcastStatusTrack; const logStatus = (status) => console.log(JSON.stringify({ __VTEX_IO_LOG: true, account: constants_1.ACCOUNT, app: constants_1.APP.ID, isLink: constants_1.LINKED, pid: process.pid, production: constants_1.PRODUCTION, status, type: 'metric/status', workspace: constants_1.WORKSPACE, }));