Skip to content

Commit 02d18a9

Browse files
authored
chore: cherry-picked #2449 (#2450)
Signed-off-by: Logan Nguyen <[email protected]>
1 parent 8da5fe4 commit 02d18a9

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

packages/relay/src/lib/poller.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ export class Poller {
4848
this.logger = logger;
4949
this.polls = [];
5050
this.pollingInterval = Number(process.env.WS_POLLING_INTERVAL) || 500;
51-
this.newHeadsEnabled = process.env.WS_NEW_HEADS_ENABLED ? Boolean(Number(process.env.WS_NEW_HEADS_ENABLED)) : true;
51+
this.newHeadsEnabled =
52+
typeof process.env.WS_NEW_HEADS_ENABLED !== 'undefined' ? process.env.WS_NEW_HEADS_ENABLED === 'true' : true;
5253

5354
const activePollsGaugeName = 'rpc_websocket_active_polls';
5455
register.removeSingleMetric(activePollsGaugeName);

packages/ws-server/src/controllers/eth_subscribe.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ const handleEthSubscribeNewHeads = (
7777
requestIdPrefix: string,
7878
): { response: any; subscriptionId: any } => {
7979
const wsNewHeadsEnabled =
80-
typeof process.env.WS_NEW_HEADS_ENABLED !== 'undefined' ? process.env.WS_NEW_HEADS_ENABLED : 'true';
80+
typeof process.env.WS_NEW_HEADS_ENABLED !== 'undefined' ? process.env.WS_NEW_HEADS_ENABLED === 'true' : true;
8181

82-
if (wsNewHeadsEnabled === 'true') {
82+
if (wsNewHeadsEnabled) {
8383
({ response, subscriptionId } = subscribeToNewHeads(filters, response, subscriptionId, ctx, event, relay, logger));
8484
} else {
8585
logger.warn(

packages/ws-server/tests/acceptance/subscribeNewHeads.spec.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ describe('@release @web-socket-batch-3 eth_subscribe newHeads', async function (
131131

132132
beforeEach(async () => {
133133
process.env.WS_NEW_HEADS_ENABLED = originalWsNewHeadsEnabledValue;
134-
135134
process.env.WS_SUBSCRIPTION_LIMIT = '10';
136135

137136
wsProvider = await new ethers.WebSocketProvider(WS_RELAY_URL);
@@ -197,6 +196,38 @@ describe('@release @web-socket-batch-3 eth_subscribe newHeads', async function (
197196
}
198197

199198
await new Promise((resolve) => setTimeout(resolve, 500));
199+
process.env.WS_NEW_HEADS_ENABLED = originalWsNewHeadsEnabledValue;
200+
});
201+
202+
it('should subscribe to newHeads even when WS_NEW_HEADS_ENABLED=undefined, and receive a valid JSON RPC response', async (done) => {
203+
delete process.env.WS_NEW_HEADS_ENABLED;
204+
expect(process.env.WS_NEW_HEADS_ENABLED).to.be.undefined;
205+
206+
const webSocket = new WebSocket(WS_RELAY_URL);
207+
const subscriptionId = 1;
208+
webSocket.on('open', function open() {
209+
webSocket.send(
210+
JSON.stringify({
211+
id: subscriptionId,
212+
jsonrpc: '2.0',
213+
method: 'eth_subscribe',
214+
params: ['newHeads', { includeTransactions: true }],
215+
}),
216+
);
217+
});
218+
219+
let responseCounter = 0;
220+
221+
Utils.sendTransaction(ONE_TINYBAR, CHAIN_ID, accounts, rpcServer, requestId, mirrorNodeServer);
222+
webSocket.on('message', function incoming(data) {
223+
const response = JSON.parse(data);
224+
responseCounter++;
225+
verifyResponse(response, done, webSocket, true);
226+
if (responseCounter > 1) {
227+
webSocket.close();
228+
}
229+
});
230+
done();
200231
});
201232
});
202233

0 commit comments

Comments
 (0)