Skip to content

Commit 58ca2c1

Browse files
committed
updated user facing intefaces for contractSubscriptionsRetryDelaySeconds
1 parent ab150c9 commit 58ca2c1

File tree

6 files changed

+48
-32
lines changed

6 files changed

+48
-32
lines changed

src/server/routes/configuration/contract-subscriptions/get.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1-
import { Static, Type } from "@sinclair/typebox";
1+
import { Static } from "@sinclair/typebox";
22
import { FastifyInstance } from "fastify";
33
import { StatusCodes } from "http-status-codes";
44
import { getConfig } from "../../../../utils/cache/getConfig";
5-
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
6-
7-
export const ReplySchema = Type.Object({
8-
result: Type.Object({
9-
maxBlocksToIndex: Type.Number(),
10-
contractSubscriptionsRetryDelaySeconds: Type.String(),
11-
}),
12-
});
5+
import {
6+
contractSubscriptionResponseSchema,
7+
standardResponseSchema,
8+
} from "../../../schemas/sharedApiSchemas";
139

1410
export async function getContractSubscriptionsConfiguration(
1511
fastify: FastifyInstance,
1612
) {
1713
fastify.route<{
18-
Reply: Static<typeof ReplySchema>;
14+
Reply: Static<typeof contractSubscriptionResponseSchema>;
1915
}>({
2016
method: "GET",
2117
url: "/configuration/contract-subscriptions",
@@ -26,15 +22,15 @@ export async function getContractSubscriptionsConfiguration(
2622
operationId: "getContractSubscriptionsConfiguration",
2723
response: {
2824
...standardResponseSchema,
29-
[StatusCodes.OK]: ReplySchema,
25+
[StatusCodes.OK]: contractSubscriptionResponseSchema,
3026
},
3127
},
3228
handler: async (req, res) => {
3329
const config = await getConfig();
3430
res.status(200).send({
3531
result: {
3632
maxBlocksToIndex: config.maxBlocksToIndex,
37-
contractSubscriptionsRetryDelaySeconds:
33+
contractSubscriptionsRequeryDelaySeconds:
3834
config.contractSubscriptionsRetryDelaySeconds,
3935
},
4036
});

src/server/routes/configuration/contract-subscriptions/update.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import { StatusCodes } from "http-status-codes";
44
import { updateConfiguration } from "../../../../db/configuration/updateConfiguration";
55
import { getConfig } from "../../../../utils/cache/getConfig";
66
import { createCustomError } from "../../../middleware/error";
7-
import { standardResponseSchema } from "../../../schemas/sharedApiSchemas";
8-
import { ReplySchema } from "./get";
7+
import {
8+
contractSubscriptionResponseSchema,
9+
standardResponseSchema,
10+
} from "../../../schemas/sharedApiSchemas";
911

1012
const BodySchema = Type.Object({
1113
maxBlocksToIndex: Type.Optional(Type.Number({ minimum: 1, maximum: 25 })),
12-
contractSubscriptionsRetryDelaySeconds: Type.Optional(Type.String()),
14+
contractSubscriptionsRequeryDelaySeconds: Type.Optional(Type.String()),
1315
});
1416

1517
export async function updateContractSubscriptionsConfiguration(
@@ -28,31 +30,31 @@ export async function updateContractSubscriptionsConfiguration(
2830
body: BodySchema,
2931
response: {
3032
...standardResponseSchema,
31-
[StatusCodes.OK]: ReplySchema,
33+
[StatusCodes.OK]: contractSubscriptionResponseSchema,
3234
},
3335
},
3436
handler: async (req, res) => {
35-
const { maxBlocksToIndex, contractSubscriptionsRetryDelaySeconds } =
37+
const { maxBlocksToIndex, contractSubscriptionsRequeryDelaySeconds } =
3638
req.body;
3739

38-
if (!maxBlocksToIndex && !contractSubscriptionsRetryDelaySeconds) {
40+
if (!maxBlocksToIndex && !contractSubscriptionsRequeryDelaySeconds) {
3941
throw createCustomError(
4042
"At least one parameter is required",
4143
StatusCodes.BAD_REQUEST,
4244
"BAD_REQUEST",
4345
);
4446
}
4547

46-
if (contractSubscriptionsRetryDelaySeconds) {
48+
if (contractSubscriptionsRequeryDelaySeconds) {
4749
try {
48-
contractSubscriptionsRetryDelaySeconds.split(",").forEach((d) => {
50+
contractSubscriptionsRequeryDelaySeconds.split(",").forEach((d) => {
4951
if (Number.isNaN(parseInt(d))) {
5052
throw "Invalid number";
5153
}
5254
});
5355
} catch {
5456
throw createCustomError(
55-
'At least one integer "contractSubscriptionsRetryDelaySeconds" is required',
57+
'At least one integer "contractSubscriptionsRequeryDelaySeconds" is required',
5658
StatusCodes.BAD_REQUEST,
5759
"BAD_REQUEST",
5860
);
@@ -61,14 +63,15 @@ export async function updateContractSubscriptionsConfiguration(
6163

6264
await updateConfiguration({
6365
maxBlocksToIndex,
64-
contractSubscriptionsRetryDelaySeconds,
66+
contractSubscriptionsRetryDelaySeconds:
67+
contractSubscriptionsRequeryDelaySeconds,
6568
});
6669
const config = await getConfig(false);
6770

6871
res.status(200).send({
6972
result: {
7073
maxBlocksToIndex: config.maxBlocksToIndex,
71-
contractSubscriptionsRetryDelaySeconds:
74+
contractSubscriptionsRequeryDelaySeconds:
7275
config.contractSubscriptionsRetryDelaySeconds,
7376
},
7477
});

src/server/schemas/sharedApiSchemas.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,3 +332,10 @@ export const walletDetailsSchema = Type.Object({
332332
Type.Null(),
333333
]),
334334
});
335+
336+
export const contractSubscriptionResponseSchema = Type.Object({
337+
result: Type.Object({
338+
maxBlocksToIndex: Type.Number(),
339+
contractSubscriptionsRequeryDelaySeconds: Type.String(),
340+
}),
341+
});

src/worker/index.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { logger } from "../utils/logger";
2+
import { redis } from "../utils/redis/redis";
13
import { chainIndexerListener } from "./listeners/chainIndexerListener";
24
import {
35
newConfigurationListener,
@@ -36,5 +38,13 @@ export const initWorker = async () => {
3638
await newWebhooksListener();
3739
await updatedWebhooksListener();
3840

39-
await chainIndexerListener();
41+
if (redis) {
42+
await chainIndexerListener();
43+
} else {
44+
logger({
45+
service: "worker",
46+
level: "warn",
47+
message: `Chain Indexer Listener not started, Redis not available`,
48+
});
49+
}
4050
};

src/worker/queues/processEventLogsQueue.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,17 @@ export const enqueueProcessEventLogs = async (
3333
// e.g. 8453:14423125-14423685
3434
const jobName = `${data.chainId}:${data.fromBlock}-${data.toBlock}`;
3535
const { contractSubscriptionsRetryDelaySeconds } = await getConfig();
36-
const retryDelays = contractSubscriptionsRetryDelaySeconds.split(",");
36+
const requeryDelays = contractSubscriptionsRetryDelaySeconds.split(",");
3737

3838
// Enqueue one job immediately and any delayed jobs.
3939
await _queue.add(jobName, serialized);
4040

4141
// The last attempt should attempt repeatedly to handle extended RPC issues.
4242
// This backoff attempts at intervals:
4343
// 30s, 1m, 2m, 4m, 8m, 16m, 32m, ~1h, ~2h, ~4h
44-
for (let i = 0; i < retryDelays.length; i++) {
45-
const delay = parseInt(retryDelays[i]) * 1000;
46-
const attempts = i === retryDelays.length - 1 ? 10 : 0;
44+
for (let i = 0; i < requeryDelays.length; i++) {
45+
const delay = parseInt(requeryDelays[i]) * 1000;
46+
const attempts = i === requeryDelays.length - 1 ? 10 : 0;
4747
await _queue.add(jobName, serialized, {
4848
delay,
4949
attempts,

src/worker/queues/processTransactionReceiptsQueue.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,17 @@ export const enqueueProcessTransactionReceipts = async (
3434
// e.g. 8453:14423125-14423685
3535
const jobName = `${data.chainId}:${data.fromBlock}-${data.toBlock}`;
3636
const { contractSubscriptionsRetryDelaySeconds } = await getConfig();
37-
const retryDelays = contractSubscriptionsRetryDelaySeconds.split(",");
37+
const requeryDelays = contractSubscriptionsRetryDelaySeconds.split(",");
3838

3939
// Enqueue one job immediately and any delayed jobs.
4040
await _queue.add(jobName, serialized);
4141

4242
// The last attempt should attempt repeatedly to handle extended RPC issues.
4343
// This backoff attempts at intervals:
4444
// 30s, 1m, 2m, 4m, 8m, 16m, 32m, ~1h, ~2h, ~4h
45-
for (let i = 0; i < retryDelays.length; i++) {
46-
const delay = parseInt(retryDelays[i]) * 1000;
47-
const attempts = i === retryDelays.length - 1 ? 10 : 0;
45+
for (let i = 0; i < requeryDelays.length; i++) {
46+
const delay = parseInt(requeryDelays[i]) * 1000;
47+
const attempts = i === requeryDelays.length - 1 ? 10 : 0;
4848
await _queue.add(jobName, serialized, {
4949
delay,
5050
attempts,

0 commit comments

Comments
 (0)