diff --git a/packages/seeder/src/index.ts b/packages/seeder/src/index.ts index 21273fab..0a63ad66 100644 --- a/packages/seeder/src/index.ts +++ b/packages/seeder/src/index.ts @@ -41,6 +41,8 @@ import { monitorOperatorApy } from './monitors/operatorApy' import { seedLogStrategyWhitelist } from './events/seedLogStrategyWhitelist' import { seedLogsDistributionRootSubmitted } from './events/seedLogsDistributionRootSubmitted' import { seedMetricsStakerRewards } from './metrics/seedMetricsStakerRewards' +import { monitorAvsMetadata } from './monitors/avsMetadata' +import { monitorOperatorMetadata } from './monitors/operatorMetadata' console.log('Initializing Seeder ...') @@ -211,6 +213,27 @@ async function seedApyData(retryCount = 0) { } } +/** + * Seed metadata + * + * @returns + */ +async function seedMetadata() { + try { + console.log('\nSeeding AVS metadata ...') + await monitorAvsMetadata() + } catch (error) { + console.error('Failed to seed AVS metadata', error) + } + + try { + console.log('\nSeeding Operator metadata ...') + await monitorOperatorMetadata() + } catch (error) { + console.error('Failed to seed Operator metadata', error) + } +} + // Start seeding data instantly seedEigenData() @@ -219,3 +242,6 @@ cron.schedule('5 0 * * *', () => seedEigenDailyData()) // Schedule seedApyData to run at 5 minutes past 2am every day cron.schedule('5 2 * * *', () => seedApyData()) + +// Schedule seedMetadata to run every 30 minutes +cron.schedule('*/30 * * * *', () => seedMetadata()) diff --git a/packages/seeder/src/monitors/avsMetadata.ts b/packages/seeder/src/monitors/avsMetadata.ts index 5b90b809..19717b9c 100644 --- a/packages/seeder/src/monitors/avsMetadata.ts +++ b/packages/seeder/src/monitors/avsMetadata.ts @@ -14,6 +14,9 @@ export async function monitorAvsMetadata() { const avsEntries = await prismaClient.avs.findMany({ where: { + metadataUrl: { + not: '' + }, isMetadataSynced: false }, take: take, @@ -23,6 +26,8 @@ export async function monitorAvsMetadata() { } }) + console.log('[Monitor] Updating AVS metadatas: ', avsEntries.length) + if (avsEntries.length === 0) { break } diff --git a/packages/seeder/src/monitors/operatorMetadata.ts b/packages/seeder/src/monitors/operatorMetadata.ts index 7a502873..61a73bc4 100644 --- a/packages/seeder/src/monitors/operatorMetadata.ts +++ b/packages/seeder/src/monitors/operatorMetadata.ts @@ -14,6 +14,9 @@ export async function monitorOperatorMetadata() { const operatorEntries = await prismaClient.operator.findMany({ where: { + metadataUrl: { + not: '' + }, isMetadataSynced: false }, take: take, @@ -23,6 +26,8 @@ export async function monitorOperatorMetadata() { } }) + console.log('[Monitor] Updating Operator metadatas: ', operatorEntries.length) + if (operatorEntries.length === 0) { break } diff --git a/packages/seeder/src/utils/seeder.ts b/packages/seeder/src/utils/seeder.ts index e4b8a0a2..d87a9b50 100644 --- a/packages/seeder/src/utils/seeder.ts +++ b/packages/seeder/src/utils/seeder.ts @@ -147,7 +147,7 @@ export async function getBlockDataFromDb(fromBlock: bigint, toBlock: bigint) { return new Map(blockData.map((block) => [block.number, block.timestamp])) } -export async function fetchWithTimeout(url: string, timeout = 5000): Promise { +export async function fetchWithTimeout(url: string, timeout = 2500): Promise { const controller = new AbortController() const timeoutId = setTimeout(() => controller.abort(), timeout)