Skip to content

Documentation / @etherfold/core / NoLiveReceiverError

Class: NoLiveReceiverError ​

Defined in: packages/core/src/errors.ts:190

A {source, config} that NO LIVE RECEIVER under this container holds right now.

The in-process twin of the ingest route's context-mismatch refusal (@etherfold/server), and it names EVERY live context rather than picking one, for that route's own reason: naming them all is information, and picking one is a policy this has no basis for. It exists because a container holds several folds and only SOME of them have a receiver -- a FOLLOWER re-folds a stored stream and is deliberately not addressable on the wire (ADR-0044) -- so "which receiver does this sender feed" is a question with a real empty answer.

Why retryable is a FACT about the instance rather than a constant ​

The two shapes this covers are not the same fact, and collapsing them would make one of them wrong:

  • live receivers exist and none is yours is a MISCONFIGURATION, exactly like WireContextMismatchError: this process folds other streams and no block number and no waiting makes a foreign {source, config} right. NOT retryable, so a host stops rather than pushing for ever at something that will never accept it.
  • nothing is live at all is a fact about the MOMENT, and since ADR-0087 it is a much narrower one. A stream's address resolves to the DEPLOYMENT's own writer of that stream, held for as long as any registered generation folds it, so "every fold here is a follower" stopped being a way to reach this at all -- which was the whole defect: a restarted deployment answered it for ever, fetched nothing, and reported itself healthy. What is left is a container holding no fold at all, or one built with no way to store a stream (and that is now refused at open). Retryable, so a process that is between folds stays up rather than exiting.

What it is deliberately NOT is an answer. Inventing an expectedFromBlock for a sender with nowhere to push would be a fetcher fetching ranges into nothing: a silent stall at best, and a HOLE if anything later claimed that range was covered.

Extends ​

  • Error

Constructors ​

Constructor ​

new NoLiveReceiverError(expected, received): NoLiveReceiverError

Defined in: packages/core/src/errors.ts:194

Parameters ​

expected ​

readonly WireContext[]

Every {source, config} this container holds a LIVE receiver for, which may be none.

received ​

WireContext

The {source, config} the sender asked about.

Returns ​

NoLiveReceiverError

Overrides ​

Error.constructor

Properties ​

cause? ​

optional cause?: unknown

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24

Inherited from ​

Error.cause


expected ​

readonly expected: readonly WireContext[]

Defined in: packages/core/src/errors.ts:196

Every {source, config} this container holds a LIVE receiver for, which may be none.


message ​

message: string

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075

Inherited from ​

Error.message


name ​

readonly name: "NoLiveReceiverError" = 'NoLiveReceiverError'

Defined in: packages/core/src/errors.ts:191

Overrides ​

Error.name


received ​

readonly received: WireContext

Defined in: packages/core/src/errors.ts:198

The {source, config} the sender asked about.


retryable ​

readonly retryable: boolean

Defined in: packages/core/src/errors.ts:192


stack? ​

optional stack?: string

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076

Inherited from ​

Error.stack

Methods ​

isError() ​

static isError(error): error is Error

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts:21

Indicates whether the argument provided is a built-in Error instance or not.

Parameters ​

error ​

unknown

Returns ​

error is Error

Inherited from ​

Error.isError