diff --git a/api/blocks/controller.go b/api/blocks/controller.go index bd2482fda..5a537e615 100644 --- a/api/blocks/controller.go +++ b/api/blocks/controller.go @@ -40,6 +40,9 @@ func getObservedBlock(c *fiber.Ctx) error { if err != nil { return err } + if result.Service == "" { + return c.JSON(nil) + } return c.JSON(result) } diff --git a/core/src/listener/api.ts b/core/src/listener/api.ts index 539694e07..a021b1404 100644 --- a/core/src/listener/api.ts +++ b/core/src/listener/api.ts @@ -65,7 +65,7 @@ export async function getListener({ * @return {Promise} * @exception {FailedToGetObservedBlock} */ -export async function getObservedBlock({ service }: { service: string }): Promise { +export async function getObservedBlock({ service }: { service: string }): Promise { try { const endpoint = buildUrl(ORAKL_NETWORK_API_URL, `blocks/observed?service=${service}`) return (await axios.get(endpoint))?.data diff --git a/core/src/listener/listener.ts b/core/src/listener/listener.ts index 6ace84ee3..b64f05341 100644 --- a/core/src/listener/listener.ts +++ b/core/src/listener/listener.ts @@ -208,7 +208,7 @@ function latestJob({ try { // We assume that observedBlock has been initialized in the db in state.add() - observedBlock = (await getObservedBlock({ service })).blockNumber + observedBlock = (await getObservedBlock({ service }))?.blockNumber as number } catch (e) { // Similarly to the failure during fetching the latest block // number, this error doesn't require job resubmission. The next diff --git a/core/src/listener/state.ts b/core/src/listener/state.ts index 6c9bede40..5a1584e06 100644 --- a/core/src/listener/state.ts +++ b/core/src/listener/state.ts @@ -194,9 +194,7 @@ export class State { await this.addBlockToHistoryQueue(contractAddress, block.blockNumber) } - // if there is no observedBlock record in the db, - // use the listenerInitType to determine how to initialize the listener - if (observedBlock.service === '') { + if (observedBlock == null) { switch (this.listenerInitType) { case 'clear': case 'latest':