Skip to content

Commit 91a25e8

Browse files
committed
moves client creation out of cache service
Signed-off-by: Konstantina Blazhukova <konstantina.blajukova@gmail.com>
1 parent ba268d5 commit 91a25e8

File tree

3 files changed

+30
-20
lines changed

3 files changed

+30
-20
lines changed

packages/relay/src/lib/clients/cache/redisCache.ts

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { ConfigService } from '@hashgraph/json-rpc-config-service/dist/services';
44
import { Logger } from 'pino';
55
import { Registry } from 'prom-client';
6-
import { createClient, RedisClientType } from 'redis';
6+
import type { RedisClientType } from 'redis';
77

88
import { Utils } from '../../../utils';
99
import { RedisCacheError } from '../../errors/RedisCacheError';
@@ -53,22 +53,10 @@ export class RedisCache implements IRedisCacheClient {
5353
* @param {Logger} logger - The logger instance.
5454
* @param {Registry} register - The metrics registry.
5555
*/
56-
public constructor(logger: Logger, register: Registry) {
56+
public constructor(logger: Logger, register: Registry, client: RedisClientType) {
5757
this.logger = logger;
5858
this.register = register;
59-
60-
const redisUrl = ConfigService.get('REDIS_URL')!;
61-
const reconnectDelay = ConfigService.get('REDIS_RECONNECT_DELAY_MS');
62-
this.client = createClient({
63-
url: redisUrl,
64-
socket: {
65-
reconnectStrategy: (retries: number) => {
66-
const delay = retries * reconnectDelay;
67-
logger.warn(`Trying to reconnect with Redis, retry #${retries}. Delay is ${delay} ms...`);
68-
return delay;
69-
},
70-
},
71-
});
59+
this.client = client;
7260
this.connected = this.client
7361
.connect()
7462
.then(() => true)
@@ -82,7 +70,9 @@ export class RedisCache implements IRedisCacheClient {
8270
this.logger.error(error);
8371
return 0;
8472
});
85-
logger.info(`Connected to Redis server (${redisUrl}) successfully! Number of connections: ${connections}`);
73+
logger.info(
74+
`Connected to Redis server (${ConfigService.get('REDIS_URL')}) successfully! Number of connections: ${connections}`,
75+
);
8676
});
8777
this.client.on('end', () => {
8878
this.connected = Promise.resolve(false);

packages/relay/src/lib/relay.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { ConfigService } from '@hashgraph/json-rpc-config-service/dist/services'
44
import { AccountId } from '@hashgraph/sdk';
55
import { Logger } from 'pino';
66
import { Gauge, Registry } from 'prom-client';
7+
import { createClient, RedisClientType } from 'redis';
78

89
import { Admin, Eth, Net, Web3 } from '../index';
910
import { Utils } from '../utils';
@@ -127,11 +128,24 @@ export class Relay {
127128
register: Registry,
128129
) {
129130
logger.info('Configurations successfully loaded');
130-
131+
// Initialize Redis client for cache (DB index defaults to 0)
132+
const redisUrl = ConfigService.get('REDIS_URL')!;
133+
const reconnectDelay = ConfigService.get('REDIS_RECONNECT_DELAY_MS');
134+
const cacheRedisClient: RedisClientType = createClient({
135+
url: redisUrl,
136+
socket: {
137+
reconnectStrategy: (retries: number) => retries * reconnectDelay,
138+
},
139+
});
131140
const chainId = ConfigService.get('CHAIN_ID');
132141
const duration = constants.HBAR_RATE_LIMIT_DURATION;
133142
const reservedKeys = HbarSpendingPlanConfigService.getPreconfiguredSpendingPlanKeys(logger);
134-
this.cacheService = new CacheService(logger.child({ name: 'cache-service' }), register, reservedKeys);
143+
this.cacheService = new CacheService(
144+
logger.child({ name: 'cache-service' }),
145+
register,
146+
reservedKeys,
147+
cacheRedisClient,
148+
);
135149

136150
const hbarSpendingPlanRepository = new HbarSpendingPlanRepository(
137151
this.cacheService,

packages/relay/src/lib/services/cacheService/cacheService.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import { ConfigService } from '@hashgraph/json-rpc-config-service/dist/services';
44
import type { Logger } from 'pino';
55
import { Counter, Registry } from 'prom-client';
6+
import type { RedisClientType } from 'redis';
67

78
import { LocalLRUCache, RedisCache } from '../../clients';
89
import { ICacheClient } from '../../clients/cache/ICacheClient';
@@ -78,7 +79,12 @@ export class CacheService {
7879

7980
private readonly cacheMethodsCounter: Counter;
8081

81-
public constructor(logger: Logger, register: Registry = new Registry(), reservedKeys: Set<string> = new Set()) {
82+
public constructor(
83+
logger: Logger,
84+
register: Registry = new Registry(),
85+
reservedKeys: Set<string> = new Set(),
86+
redisClient?: RedisClientType,
87+
) {
8288
this.logger = logger;
8389
this.register = register;
8490

@@ -88,7 +94,7 @@ export class CacheService {
8894
this.shouldMultiSet = ConfigService.get('MULTI_SET');
8995

9096
if (this.isSharedCacheEnabled) {
91-
this.sharedCache = new RedisCache(logger.child({ name: 'redisCache' }), register);
97+
this.sharedCache = new RedisCache(logger.child({ name: 'redisCache' }), register, redisClient!);
9298
}
9399

94100
/**

0 commit comments

Comments
 (0)