Merge branch 'main' into MED-91
This commit is contained in:
@@ -24,7 +24,7 @@ export function ButtonTooltip({
|
||||
<Info className="size-4 cursor-pointer" />
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>{content}</TooltipContent>
|
||||
<TooltipContent className='sm:max-w-[30vw] sm:leading-4'>{content}</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
);
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
/**
|
||||
* This file is used to register monitoring instrumentation
|
||||
* for your Next.js application.
|
||||
*/
|
||||
import { type Instrumentation } from 'next';
|
||||
|
||||
const isEnabledInDev = process.env.ENABLE_LOCAL_JOBS === 'true';
|
||||
|
||||
export async function register() {
|
||||
const { registerMonitoringInstrumentation } = await import(
|
||||
'@kit/monitoring/instrumentation'
|
||||
@@ -10,9 +12,6 @@ export async function register() {
|
||||
// Register monitoring instrumentation
|
||||
// based on the MONITORING_PROVIDER environment variable.
|
||||
await registerMonitoringInstrumentation();
|
||||
|
||||
// Register lightweight in-process job scheduler
|
||||
await registerJobScheduler();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -29,51 +28,3 @@ export const onRequestError: Instrumentation.onRequestError = async (err) => {
|
||||
await service.ready();
|
||||
await service.captureException(err as Error);
|
||||
};
|
||||
|
||||
async function registerJobScheduler() {
|
||||
const isProd = process.env.NODE_ENV === 'production';
|
||||
if (!isProd && !isEnabledInDev) {
|
||||
console.info('Job scheduler disabled');
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevent duplicate intervals on hot reloads/dev
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const globalAny = globalThis as any;
|
||||
if (globalAny.__mrJobSchedulerInitialized) {
|
||||
console.info('Job scheduler already initialized');
|
||||
return;
|
||||
}
|
||||
globalAny.__mrJobSchedulerInitialized = true;
|
||||
|
||||
let isRunning = false;
|
||||
|
||||
const runSyncAnalysisResults = async () => {
|
||||
if (isRunning) {
|
||||
console.info('Scheduled job syncAnalysisResults skipped: previous run still in progress');
|
||||
return;
|
||||
}
|
||||
isRunning = true;
|
||||
try {
|
||||
try {
|
||||
const { default: loadEnv } = await import('./app/api/job/handler/load-env');
|
||||
loadEnv();
|
||||
} catch {
|
||||
// ignore if not available or already loaded
|
||||
}
|
||||
|
||||
const { default: syncAnalysisResults } = await import(
|
||||
'./app/api/job/handler/sync-analysis-results'
|
||||
);
|
||||
await syncAnalysisResults();
|
||||
} catch (error) {
|
||||
console.error('Scheduled job syncAnalysisResults failed:', error);
|
||||
} finally {
|
||||
isRunning = false;
|
||||
}
|
||||
};
|
||||
|
||||
// Run every 10 minutes
|
||||
setTimeout(runSyncAnalysisResults, 15_000);
|
||||
setInterval(runSyncAnalysisResults, 10 * 60 * 1000);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user