Skip to content

Commit

Permalink
Fix the types
Browse files Browse the repository at this point in the history
  • Loading branch information
nazarhussain committed Aug 7, 2023
1 parent 08420f6 commit 9ade9c4
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 100 deletions.
4 changes: 2 additions & 2 deletions packages/beacon-node/src/execution/engine/disabled.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {ExecutionEngineState, IExecutionEngine, PayloadIdCache} from "./interface.js";
import {ExecutionState, IExecutionEngine, PayloadIdCache} from "./interface.js";

export class ExecutionEngineDisabled implements IExecutionEngine {
readonly payloadIdCache = new PayloadIdCache();
Expand Down Expand Up @@ -27,7 +27,7 @@ export class ExecutionEngineDisabled implements IExecutionEngine {
throw Error("Execution engine disabled");
}

getState(): ExecutionEngineState {
getState(): ExecutionState {
throw Error("Execution engine disabled");
}
}
20 changes: 10 additions & 10 deletions packages/beacon-node/src/execution/engine/http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
PayloadAttributes,
BlobsBundle,
VersionedHashes,
ExecutionEngineState,
ExecutionState,
} from "./interface.js";
import {PayloadIdCache} from "./payloadIdCache.js";
import {
Expand Down Expand Up @@ -95,7 +95,7 @@ export class ExecutionEngineHttp implements IExecutionEngine {
// The default state is ONLINE, it will be updated to SYNCING once we receive the first payload
// This assumption is better than the OFFLINE state, since we can't be sure if the EL is offline and being offline may trigger some notifications
// It's safer to to avoid false positives and assume that the EL is syncing until we receive the first payload
private state: ExecutionEngineState = ExecutionEngineState.ONLINE;
private state: ExecutionState = ExecutionState.ONLINE;

readonly payloadIdCache = new PayloadIdCache();
/**
Expand Down Expand Up @@ -131,7 +131,7 @@ export class ExecutionEngineHttp implements IExecutionEngine {
protected async fetchWithRetries<R, P = IJson[]>(payload: RpcPayload<P>, opts?: ReqOpts): Promise<R> {
try {
const res = await this.rpc.fetchWithRetries<R, P>(payload, opts);
this.updateEngineState(ExecutionEngineState.ONLINE);
this.updateEngineState(ExecutionState.ONLINE);
return res;
} catch (err) {
this.updateEngineState(getExecutionEngineState({payloadError: err, oldState: this.state}));
Expand Down Expand Up @@ -412,29 +412,29 @@ export class ExecutionEngineHttp implements IExecutionEngine {
return response.map(deserializeExecutionPayloadBody);
}

getState(): ExecutionEngineState {
getState(): ExecutionState {
return this.state;
}

private updateEngineState(newState: ExecutionEngineState): void {
private updateEngineState(newState: ExecutionState): void {
const oldState = this.state;

if (oldState === newState) return;

switch (newState) {
case ExecutionEngineState.ONLINE:
case ExecutionState.ONLINE:
this.logger.info("Execution client became online", {oldState, newState});
break;
case ExecutionEngineState.OFFLINE:
case ExecutionState.OFFLINE:
this.logger.error("Execution client went offline", {oldState, newState});
break;
case ExecutionEngineState.SYNCED:
case ExecutionState.SYNCED:
this.logger.info("Execution client is synced", {oldState, newState});
break;
case ExecutionEngineState.SYNCING:
case ExecutionState.SYNCING:
this.logger.warn("Execution client is syncing", {oldState, newState});
break;
case ExecutionEngineState.AUTH_FAILED:
case ExecutionState.AUTH_FAILED:
this.logger.error("Execution client authentication failed", {oldState, newState});
break;
}
Expand Down
4 changes: 2 additions & 2 deletions packages/beacon-node/src/execution/engine/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export enum ExecutionPayloadStatus {
UNSAFE_OPTIMISTIC_STATUS = "UNSAFE_OPTIMISTIC_STATUS",
}

export enum ExecutionEngineState {
export enum ExecutionState {
ONLINE = "ONLINE",
OFFLINE = "OFFLINE",
SYNCING = "SYNCING",
Expand Down Expand Up @@ -148,5 +148,5 @@ export interface IExecutionEngine {

getPayloadBodiesByRange(start: number, count: number): Promise<(ExecutionPayloadBody | null)[]>;

getState(): ExecutionEngineState;
getState(): ExecutionState;
}
2 changes: 1 addition & 1 deletion packages/beacon-node/src/execution/engine/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {isErrorAborted} from "@lodestar/utils";
import {IJson, RpcPayload} from "../../eth1/interface.js";
import {IJsonRpcHttpClient, ErrorJsonRpcResponse, HttpRpcError} from "../../eth1/provider/jsonRpcHttpClient.js";
import {isQueueErrorAborted} from "../../util/queue/errors.js";
import {ExecutionPayloadStatus, ExecutionEngineState as ExecutionState} from "./interface.js";
import {ExecutionPayloadStatus, ExecutionState} from "./interface.js";

export type JsonRpcBackend = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down
4 changes: 2 additions & 2 deletions packages/beacon-node/src/sync/sync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {Metrics} from "../metrics/index.js";
import {IBeaconChain} from "../chain/index.js";
import {ClockEvent} from "../util/clock.js";
import {GENESIS_SLOT} from "../constants/constants.js";
import {ExecutionEngineState} from "../execution/index.js";
import {ExecutionState} from "../execution/index.js";
import {IBeaconSync, SyncModules, SyncingStatus} from "./interface.js";
import {RangeSync, RangeSyncStatus, RangeSyncEvent} from "./range/range.js";
import {getPeerSyncType, PeerSyncType, peerSyncTypes} from "./utils/remoteSyncType.js";
Expand Down Expand Up @@ -81,7 +81,7 @@ export class BeaconSync implements IBeaconSync {

getSyncStatus(): SyncingStatus {
const currentSlot = this.chain.clock.currentSlot;
const elOffline = this.chain.executionEngine.getState() === ExecutionEngineState.OFFLINE;
const elOffline = this.chain.executionEngine.getState() === ExecutionState.OFFLINE;

// If we are pre/at genesis, signal ready
if (currentSlot <= GENESIS_SLOT) {
Expand Down
166 changes: 83 additions & 83 deletions packages/beacon-node/test/unit/execution/engine/utils.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {expect} from "chai";
import {ErrorAborted} from "@lodestar/utils";
import {FetchError} from "@lodestar/api";
import {ExecutionPayloadStatus, ExecutionEngineState} from "../../../../src/execution/index.js";
import {ExecutionPayloadStatus, ExecutionState} from "../../../../src/execution/index.js";
import {
HTTP_CONNECTION_ERROR_CODES,
HTTP_FATAL_ERROR_CODES,
Expand All @@ -14,117 +14,117 @@ describe("execution / engine / utils", () => {
describe("getExecutionEngineState", () => {
const testCasesPayload: Record<
ExecutionPayloadStatus,
[oldState: ExecutionEngineState, newState: ExecutionEngineState][]
[oldState: ExecutionState, newState: ExecutionState][]
> = {
[ExecutionPayloadStatus.ACCEPTED]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCED],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCED],
[ExecutionState.ONLINE, ExecutionState.SYNCED],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCED],
[ExecutionState.OFFLINE, ExecutionState.SYNCED],
[ExecutionState.SYNCED, ExecutionState.SYNCED],
[ExecutionState.SYNCING, ExecutionState.SYNCED],
],
[ExecutionPayloadStatus.VALID]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCED],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCED],
[ExecutionState.ONLINE, ExecutionState.SYNCED],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCED],
[ExecutionState.OFFLINE, ExecutionState.SYNCED],
[ExecutionState.SYNCED, ExecutionState.SYNCED],
[ExecutionState.SYNCING, ExecutionState.SYNCED],
],
[ExecutionPayloadStatus.UNSAFE_OPTIMISTIC_STATUS]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCED],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCED],
[ExecutionState.ONLINE, ExecutionState.SYNCED],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCED],
[ExecutionState.OFFLINE, ExecutionState.SYNCED],
[ExecutionState.SYNCED, ExecutionState.SYNCED],
[ExecutionState.SYNCING, ExecutionState.SYNCED],
],
[ExecutionPayloadStatus.ELERROR]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.SYNCING],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCING],
[ExecutionState.OFFLINE, ExecutionState.SYNCING],
[ExecutionState.SYNCED, ExecutionState.SYNCING],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
[ExecutionPayloadStatus.INVALID]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.SYNCING],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCING],
[ExecutionState.OFFLINE, ExecutionState.SYNCING],
[ExecutionState.SYNCED, ExecutionState.SYNCING],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
[ExecutionPayloadStatus.SYNCING]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.SYNCING],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCING],
[ExecutionState.OFFLINE, ExecutionState.SYNCING],
[ExecutionState.SYNCED, ExecutionState.SYNCING],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
[ExecutionPayloadStatus.INVALID_BLOCK_HASH]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.SYNCING],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCING],
[ExecutionState.OFFLINE, ExecutionState.SYNCING],
[ExecutionState.SYNCED, ExecutionState.SYNCING],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
[ExecutionPayloadStatus.UNAVAILABLE]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.SYNCED, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.SYNCING, ExecutionEngineState.OFFLINE],
[ExecutionState.ONLINE, ExecutionState.OFFLINE],
[ExecutionState.AUTH_FAILED, ExecutionState.OFFLINE],
[ExecutionState.OFFLINE, ExecutionState.OFFLINE],
[ExecutionState.SYNCED, ExecutionState.OFFLINE],
[ExecutionState.SYNCING, ExecutionState.OFFLINE],
],
["unknown" as ExecutionPayloadStatus]: [
[ExecutionEngineState.ONLINE, ExecutionEngineState.ONLINE],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.ONLINE],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.ONLINE],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.ONLINE],
[ExecutionState.AUTH_FAILED, ExecutionState.ONLINE],
[ExecutionState.OFFLINE, ExecutionState.ONLINE],
[ExecutionState.SYNCED, ExecutionState.SYNCED],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
};

type ErrorTestCase = [string, Error, [oldState: ExecutionEngineState, newState: ExecutionEngineState][]];
type ErrorTestCase = [string, Error, [oldState: ExecutionState, newState: ExecutionState][]];
const testCasesError: ErrorTestCase[] = [
[
"abort error",
new ErrorAborted(),
[
[ExecutionEngineState.ONLINE, ExecutionEngineState.ONLINE],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.AUTH_FAILED],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.ONLINE],
[ExecutionState.AUTH_FAILED, ExecutionState.AUTH_FAILED],
[ExecutionState.OFFLINE, ExecutionState.OFFLINE],
[ExecutionState.SYNCED, ExecutionState.SYNCED],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
],
[
"queue aborted error",
new QueueError({code: QueueErrorCode.QUEUE_ABORTED}),
[
[ExecutionEngineState.ONLINE, ExecutionEngineState.ONLINE],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.AUTH_FAILED],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.ONLINE],
[ExecutionState.AUTH_FAILED, ExecutionState.AUTH_FAILED],
[ExecutionState.OFFLINE, ExecutionState.OFFLINE],
[ExecutionState.SYNCED, ExecutionState.SYNCED],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
],
[
"rpc error",
new HttpRpcError(12, "error"),
[
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.SYNCING],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCING],
[ExecutionState.OFFLINE, ExecutionState.SYNCING],
[ExecutionState.SYNCED, ExecutionState.SYNCING],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
],
[
"rpc response error",
new ErrorJsonRpcResponse({jsonrpc: "2.0", id: 123, error: {code: 123, message: "error"}}, "error"),
[
[ExecutionEngineState.ONLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCING],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.SYNCING],
[ExecutionState.AUTH_FAILED, ExecutionState.SYNCING],
[ExecutionState.OFFLINE, ExecutionState.SYNCING],
[ExecutionState.SYNCED, ExecutionState.SYNCING],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
],
...HTTP_FATAL_ERROR_CODES.map((code) => {
Expand All @@ -135,11 +135,11 @@ describe("execution / engine / utils", () => {
`http error with code '${code}'`,
error,
[
[ExecutionEngineState.ONLINE, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.SYNCED, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.SYNCING, ExecutionEngineState.OFFLINE],
[ExecutionState.ONLINE, ExecutionState.OFFLINE],
[ExecutionState.AUTH_FAILED, ExecutionState.OFFLINE],
[ExecutionState.OFFLINE, ExecutionState.OFFLINE],
[ExecutionState.SYNCED, ExecutionState.OFFLINE],
[ExecutionState.SYNCING, ExecutionState.OFFLINE],
],
] as ErrorTestCase;
}),
Expand All @@ -151,23 +151,23 @@ describe("execution / engine / utils", () => {
`http error with code '${code}'`,
error,
[
[ExecutionEngineState.ONLINE, ExecutionEngineState.AUTH_FAILED],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.AUTH_FAILED],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.AUTH_FAILED],
[ExecutionEngineState.SYNCED, ExecutionEngineState.AUTH_FAILED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.AUTH_FAILED],
[ExecutionState.ONLINE, ExecutionState.AUTH_FAILED],
[ExecutionState.AUTH_FAILED, ExecutionState.AUTH_FAILED],
[ExecutionState.OFFLINE, ExecutionState.AUTH_FAILED],
[ExecutionState.SYNCED, ExecutionState.AUTH_FAILED],
[ExecutionState.SYNCING, ExecutionState.AUTH_FAILED],
],
] as ErrorTestCase;
}),
[
"unknown error",
new Error("unknown error"),
[
[ExecutionEngineState.ONLINE, ExecutionEngineState.ONLINE],
[ExecutionEngineState.AUTH_FAILED, ExecutionEngineState.AUTH_FAILED],
[ExecutionEngineState.OFFLINE, ExecutionEngineState.OFFLINE],
[ExecutionEngineState.SYNCED, ExecutionEngineState.SYNCED],
[ExecutionEngineState.SYNCING, ExecutionEngineState.SYNCING],
[ExecutionState.ONLINE, ExecutionState.ONLINE],
[ExecutionState.AUTH_FAILED, ExecutionState.AUTH_FAILED],
[ExecutionState.OFFLINE, ExecutionState.OFFLINE],
[ExecutionState.SYNCED, ExecutionState.SYNCED],
[ExecutionState.SYNCING, ExecutionState.SYNCING],
],
],
];
Expand Down

0 comments on commit 9ade9c4

Please sign in to comment.