Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,346 changes: 1,800 additions & 5,546 deletions package-lock.json

Large diffs are not rendered by default.

16 changes: 11 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,20 +45,22 @@
},
"dependencies": {
"@godaddy/terminus": "^4.12.1",
"@map-colonies/error-express-handler": "^2.1.0",
"@map-colonies/error-express-handler": "^4.0.0",
"@map-colonies/error-types": "^1.3.1",
"@map-colonies/express-access-log-middleware": "^3.0.1",
"@map-colonies/express-access-log-middleware": "^4.0.0",
"@map-colonies/js-logger": "^3.0.2",
"@map-colonies/mc-model-types": "^19.0.0",
"@map-colonies/mc-priority-queue": "^9.0.2",
"@map-colonies/mc-utils": "^4.0.4",
"@map-colonies/openapi-express-viewer": "^3.0.0",
"@map-colonies/openapi-express-viewer": "^5.0.0",
"@map-colonies/prometheus": "^1.0.0",
"@map-colonies/raster-shared": "7.10.1",
"@map-colonies/read-pkg": "0.0.1",
"@map-colonies/storage-explorer-middleware": "^1.3.0",
"@map-colonies/telemetry": "^6.1.0",
"@map-colonies/tracing": "^1.0.0",
"@map-colonies/tracing-utils": "^1.0.0",
"@map-colonies/types": "^1.3.3",
"@opentelemetry/api": "^1.7.0",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/context-async-hooks": "^1.24.1",
"@placemarkio/check-geojson": "^0.1.12",
"@turf/boolean-contains": "^7.0.0",
Expand Down Expand Up @@ -121,6 +123,10 @@
"ts-jest": "^29.0.5",
"typescript": "^5.1.3"
},
"overrides": {
"@map-colonies/mc-priority-queue": "^9.0.2",
"@map-colonies/mc-utils": "^4.0.4"
},
"engines": {
"node": ">=24.0.0"
}
Expand Down
25 changes: 9 additions & 16 deletions src/common/tracing.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,15 @@
import { Tracing } from '@map-colonies/telemetry';
import { Tracing } from '@map-colonies/tracing';
import { SpanContext, SpanKind, SpanOptions } from '@opentelemetry/api';
import { IGNORED_INCOMING_TRACE_ROUTES, IGNORED_OUTGOING_TRACE_ROUTES } from './constants';

const tracing = new Tracing(undefined, {
// eslint-disable-next-line @typescript-eslint/naming-convention
'@opentelemetry/instrumentation-http': {
ignoreIncomingRequestHook: (request): boolean =>
IGNORED_INCOMING_TRACE_ROUTES.some((route) => request.url !== undefined && route.test(request.url)),
ignoreOutgoingRequestHook: (request): boolean =>
IGNORED_OUTGOING_TRACE_ROUTES.some((route) => typeof request.path === 'string' && route.test(request.path)),
},
// eslint-disable-next-line @typescript-eslint/naming-convention
'@opentelemetry/instrumentation-fs': {
requireParentSpan: true,
},
});
let tracing: Tracing | undefined;

tracing.start();
export const getTracing = (): Tracing => {
if (tracing === undefined) {
tracing = new Tracing();
tracing.start();
}
return tracing;
};

export { tracing };

Expand Down
9 changes: 4 additions & 5 deletions src/containerConfig.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import jsLogger, { LoggerOptions } from '@map-colonies/js-logger';
import { Metrics, getOtelMixin } from '@map-colonies/telemetry';
import { getOtelMixin } from '@map-colonies/tracing-utils';
import { metrics as OtelMetrics, trace } from '@opentelemetry/api';
import config from 'config';
import { instancePerContainerCachingFactory } from 'tsyringe';
Expand All @@ -8,7 +8,7 @@ import xxhashFactory from 'xxhash-wasm';
import type { HashAlgorithm } from '@map-colonies/raster-shared';
import { SERVICES, SERVICE_NAME } from './common/constants';
import { InjectionObject, registerDependencies } from './common/dependencyRegistration';
import { tracing } from './common/tracing';
import { getTracing } from './common/tracing';
import { INFO_ROUTER_SYMBOL, infoRouterFactory } from './info/routes/infoRouter';
import { INGESTION_ROUTER_SYMBOL, ingestionRouterFactory } from './ingestion/routes/ingestionRouter';
import { CHECKSUM_PROCESSOR } from './utils/hash/constants';
Expand All @@ -25,8 +25,7 @@ export const registerExternalValues = (options?: RegisterOptions): DependencyCon
const loggerConfig = config.get<LoggerOptions>('telemetry.logger');
const logger = jsLogger({ ...loggerConfig, prettyPrint: loggerConfig.prettyPrint, mixin: getOtelMixin() });

const metrics = new Metrics();
metrics.start();
const tracingInstance = getTracing();

const tracer = trace.getTracer(SERVICE_NAME);

Expand Down Expand Up @@ -54,7 +53,7 @@ export const registerExternalValues = (options?: RegisterOptions): DependencyCon
token: 'onSignal',
provider: {
useValue: async (): Promise<void> => {
await Promise.all([tracing.stop(), metrics.stop()]);
await tracingInstance.stop();
},
},
},
Expand Down
2 changes: 1 addition & 1 deletion src/info/models/infoManager.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Logger } from '@map-colonies/js-logger';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { SpanStatusCode, trace, Tracer } from '@opentelemetry/api';
import { inject, injectable } from 'tsyringe';
import { SERVICES } from '../../common/constants';
Expand Down
4 changes: 2 additions & 2 deletions src/ingestion/models/gpkgManager.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { inject, injectable } from 'tsyringe';
import { IConfig } from 'config';
import { Logger } from '@map-colonies/js-logger';
import { Tracer } from '@opentelemetry/api';
import { withSpanV4 } from '@map-colonies/telemetry';
import { withSpanV4 } from '@map-colonies/tracing-utils';
import { SERVICES } from '../../common/constants';
import { IConfig } from '../../common/interfaces';
import { SQLiteClient } from '../../serviceClients/database/SQLiteClient';
import { InvalidIndexError, UnsupportedGridError, UnsupportedTileSizeError } from '../../serviceClients/database/errors';
import { LogContext } from '../../common/interfaces';
Expand Down
2 changes: 1 addition & 1 deletion src/ingestion/models/ingestionManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
type InputFiles,
type RasterProductTypes,
} from '@map-colonies/raster-shared';
import { withSpanAsyncV4, withSpanV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4, withSpanV4 } from '@map-colonies/tracing-utils';
import { SpanStatusCode, trace, Tracer } from '@opentelemetry/api';
import { container, inject, injectable } from 'tsyringe';
import { SERVICES } from '../../common/constants';
Expand Down
2 changes: 1 addition & 1 deletion src/ingestion/models/productManager.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Logger } from '@map-colonies/js-logger';
import { ChunkProcessor, ReaderOptions, ShapefileChunk, ShapefileChunkReader } from '@map-colonies/mc-utils';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { trace, Tracer } from '@opentelemetry/api';
import { Feature } from 'geojson';
import { inject, injectable } from 'tsyringe';
Expand Down
2 changes: 1 addition & 1 deletion src/ingestion/schemas/infoDataSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { z } from 'zod';
import { zoomLevelToResolutionDeg } from '@map-colonies/mc-utils';
import { Geometry } from 'geojson';
import { DependencyContainer } from 'tsyringe';
import { IConfig } from 'config';
import { IConfig } from '../../common/interfaces';
import { PixelRange } from '../interfaces';
import { SERVICES } from '../../common/constants';

Expand Down
4 changes: 2 additions & 2 deletions src/ingestion/validators/geoValidator.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { Logger } from '@map-colonies/js-logger';
import { withSpanV4 } from '@map-colonies/telemetry';
import { withSpanV4 } from '@map-colonies/tracing-utils';
import { Tracer, trace } from '@opentelemetry/api';
import booleanContains from '@turf/boolean-contains';
import { IConfig } from 'config';
import { Geometry, Polygon } from 'geojson';
import { inject, injectable } from 'tsyringe';
import { IConfig } from '../../common/interfaces';
import { SERVICES } from '../../common/constants';
import { LogContext } from '../../common/interfaces';
import { combineExtentPolygons, extentBuffer, extractPolygons } from '../../utils/geometry';
Expand Down
2 changes: 1 addition & 1 deletion src/ingestion/validators/sourceValidator.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { constants as fsConstants, promises as fsPromises } from 'node:fs';
import { basename, dirname } from 'node:path';
import { Logger } from '@map-colonies/js-logger';
import { withSpanAsyncV4, withSpanV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4, withSpanV4 } from '@map-colonies/tracing-utils';
import { trace, Tracer } from '@opentelemetry/api';
import { inject, injectable } from 'tsyringe';
import { SERVICES } from '../../common/constants';
Expand Down
5 changes: 2 additions & 3 deletions src/serverBuilder.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { getErrorHandlerMiddleware } from '@map-colonies/error-express-handler';
import httpLogger from '@map-colonies/express-access-log-middleware';
import { httpLogger } from '@map-colonies/express-access-log-middleware';
import { Logger } from '@map-colonies/js-logger';
import { OpenapiRouterConfig, OpenapiViewerRouter } from '@map-colonies/openapi-express-viewer';
import getStorageExplorerMiddleware from '@map-colonies/storage-explorer-middleware';
import { collectMetricsExpressMiddleware, getTraceContexHeaderMiddleware } from '@map-colonies/telemetry';
import { collectMetricsExpressMiddleware } from '@map-colonies/prometheus';
import bodyParser from 'body-parser';
import compression from 'compression';
import express, { Router } from 'express';
Expand Down Expand Up @@ -64,7 +64,6 @@ export class ServerBuilder {
}

this.serverInstance.use(bodyParser.json(this.config.get<bodyParser.Options>('server.request.payload')));
this.serverInstance.use(getTraceContexHeaderMiddleware());

const ignorePathRegex = new RegExp(`^${this.config.get<string>('openapiConfig.basePath')}|(explorer)/.*`, 'i');
const apiSpecPath = this.config.get<string>('openapiConfig.filePath');
Expand Down
2 changes: 1 addition & 1 deletion src/serviceClients/catalogClient.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Logger } from '@map-colonies/js-logger';
import { HttpClient, IHttpRetryConfig } from '@map-colonies/mc-utils';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { trace, Tracer } from '@opentelemetry/api';
import { inject, injectable } from 'tsyringe';
import { SERVICES } from '../common/constants';
Expand Down
2 changes: 1 addition & 1 deletion src/serviceClients/database/SQLiteClient.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Logger } from '@map-colonies/js-logger';
import { withSpanV4 } from '@map-colonies/telemetry';
import { withSpanV4 } from '@map-colonies/tracing-utils';
import { SpanStatusCode, trace, Tracer } from '@opentelemetry/api';
import Database, { Database as SQLiteDB, SqliteError } from 'better-sqlite3';
import { inject, injectable } from 'tsyringe';
Expand Down
2 changes: 1 addition & 1 deletion src/serviceClients/jobManagerWrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import type {
IngestionUpdateJobParams,
IngestionValidationTaskParams,
} from '@map-colonies/raster-shared';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { trace, Tracer } from '@opentelemetry/api';
import { inject, injectable } from 'tsyringe';
import { SERVICES } from '../common/constants';
Expand Down
2 changes: 1 addition & 1 deletion src/serviceClients/mapProxyClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { NotFoundError } from '@map-colonies/error-types';
import { HttpClient, IHttpRetryConfig } from '@map-colonies/mc-utils';
import { inject, injectable } from 'tsyringe';
import { trace, Tracer } from '@opentelemetry/api';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { IConfig } from '../common/interfaces';
import { SERVICES } from '../common/constants';

Expand Down
2 changes: 1 addition & 1 deletion src/serviceClients/polygonPartsManagerClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Logger } from '@map-colonies/js-logger';
import { HttpClient, IHttpRetryConfig } from '@map-colonies/mc-utils';
import { inject, injectable } from 'tsyringe';
import { trace, Tracer } from '@opentelemetry/api';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { NotFoundError } from '@map-colonies/error-types';
import { RasterProductTypes } from '@map-colonies/raster-shared';
import { IConfig } from '../common/interfaces';
Expand Down
2 changes: 1 addition & 1 deletion src/utils/gdal/gdalUtilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { inject, injectable } from 'tsyringe';
import { Logger } from '@map-colonies/js-logger';
import * as gdal from 'gdal-async';
import { trace, Tracer } from '@opentelemetry/api';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { SERVICES } from '../../common/constants';
import { InfoData } from '../../ingestion/schemas/infoDataSchema';
import { GdalInfo } from '../../ingestion/schemas/gdalDataSchema';
Expand Down
2 changes: 1 addition & 1 deletion src/utils/hash/checksum.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { constants, createReadStream } from 'node:fs';
import { Readable } from 'node:stream';
import type { Logger } from '@map-colonies/js-logger';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { trace, type Tracer } from '@opentelemetry/api';
import { inject, injectable } from 'tsyringe';
import type { Checksum as IChecksum } from '@map-colonies/raster-shared';
Expand Down
2 changes: 1 addition & 1 deletion src/validate/models/validateManager.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Logger } from '@map-colonies/js-logger';
import { withSpanAsyncV4 } from '@map-colonies/telemetry';
import { withSpanAsyncV4 } from '@map-colonies/tracing-utils';
import { SpanStatusCode, type Tracer, trace } from '@opentelemetry/api';
import { inject, injectable } from 'tsyringe';
import { SERVICES } from '../../common/constants';
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/ingestion/validators/geoValidator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import jsLogger from '@map-colonies/js-logger';
import { trace } from '@opentelemetry/api';
import booleanContains from '@turf/boolean-contains';
import * as turfBuffer from '@turf/buffer';
import { IConfig } from 'config';
import { IConfig } from '../../../../src/common/interfaces';
import { UnsupportedEntityError, ValidationError } from '../../../../src/ingestion/errors/ingestionErrors';
import { InfoDataWithFile } from '../../../../src/ingestion/schemas/infoDataSchema';
import { GeoValidator } from '../../../../src/ingestion/validators/geoValidator';
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/serverClients/catalogClient.spec.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import jsLogger from '@map-colonies/js-logger';
import { IConfig } from 'config';
import { trace } from '@opentelemetry/api';
import { HttpClient } from '@map-colonies/mc-utils';
import { faker } from '@faker-js/faker';
import { randexp } from 'randexp';
import { INGESTION_VALIDATIONS, RasterProductTypes } from '@map-colonies/raster-shared';
import { IConfig } from '../../../src/common/interfaces';
import { configMock, registerDefaultConfig, clear as clearConfig } from '../../mocks/configMock';
import { CatalogClient } from '../../../src/serviceClients/catalogClient';

Expand Down
13 changes: 2 additions & 11 deletions tests/unit/utils/checksum.spec.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
import { constants, createReadStream } from 'node:fs';
import { Readable } from 'node:stream';
import jsLogger, { Logger } from '@map-colonies/js-logger';
import { trace, Tracer } from '@opentelemetry/api';
import { trace } from '@opentelemetry/api';
import { Checksum } from '../../../src/utils/hash/checksum';
import { ChecksumError } from '../../../src/ingestion/errors/ingestionErrors';
import type { ChecksumProcessor } from '../../../src/utils/hash/interfaces';
import { tracerMock } from '../../mocks/mockFactory';

jest.mock('node:fs');
jest.mock('@opentelemetry/api');

describe('Checksum', () => {
let checksum: Checksum;
let mockLogger: Logger;
let mockTracer: Tracer;
let mockChecksumProcessor: jest.Mocked<ChecksumProcessor>;
let mockChecksumProcessorInit: jest.Mock;

beforeEach(() => {
mockLogger = jsLogger({ enabled: false });

mockTracer = tracerMock;

mockChecksumProcessor = {
algorithm: 'XXH64',
reset: jest.fn(),
Expand All @@ -31,11 +26,7 @@ describe('Checksum', () => {

mockChecksumProcessorInit = jest.fn().mockResolvedValue(mockChecksumProcessor);

(trace.getActiveSpan as jest.Mock) = jest.fn().mockReturnValue({
updateName: jest.fn(),
});

checksum = new Checksum(mockLogger, mockTracer, mockChecksumProcessorInit);
checksum = new Checksum(mockLogger, trace.getTracer('testTracer'), mockChecksumProcessorInit);
});

afterEach(() => {
Expand Down
Loading