@clickup/ent-framework
Version:
A PostgreSQL graph-database-alike library with microsharding and row-level security
40 lines (38 loc) • 1.24 kB
text/typescript
import type { Client } from "./Client";
import type { Island } from "./Island";
import type { SwallowedErrorLoggerProps } from "./Loggers";
import { ShardError } from "./ShardError";
/**
* This non-retriable error is thrown when shardsDiscoverCache.cached() returns
* no shard with the requested number.
*/
export class ShardIsNotDiscoverableError extends ShardError {
constructor(
shardNo: number,
errors: SwallowedErrorLoggerProps[],
islands: Array<Island<Client>>,
elapsed: number,
) {
super(
`Shard ${shardNo} is not discoverable: no such Shard in the Cluster? some Islands are down? connections limit?` +
(errors.length > 0
? "\n" +
errors
.map(
({ where, error, elapsed }) =>
`- ${where}` +
(elapsed !== null ? ` (took ${elapsed} ms)` : "") +
": " +
`${error?.toString() ?? error}`.trimEnd(),
)
.sort()
.join("\n")
: ""),
"Islands " +
islands
.map(({ no, clients }) => `${no}@${clients[0].options.name}`)
.join(", ") +
`; cached discovery took ${elapsed} ms`,
);
}
}