mirror of https://github.com/waku-org/js-waku.git
Merge pull request #1885 from waku-org/fix/encoder-cluster-id
fix: use correct shard index when creating encoder
This commit is contained in:
commit
66081d6c95
|
@ -137,3 +137,27 @@ describe("Ensures content topic is defined", () => {
|
||||||
expect(wrapper).to.throw("Content topic must be specified");
|
expect(wrapper).to.throw("Content topic must be specified");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("Sets sharding configuration correctly", () => {
|
||||||
|
it("uses static shard pubsub topic instead of autosharding when set", async () => {
|
||||||
|
// Create an encoder setup to use autosharding
|
||||||
|
const ContentTopic = "/waku/2/content/test.js";
|
||||||
|
const autoshardingEncoder = createEncoder({
|
||||||
|
pubsubTopicShardInfo: { clusterId: 0 },
|
||||||
|
contentTopic: ContentTopic
|
||||||
|
});
|
||||||
|
|
||||||
|
// When autosharding is enabled, we expect the shard index to be 1
|
||||||
|
expect(autoshardingEncoder.pubsubTopic).to.be.eq("/waku/2/rs/0/1");
|
||||||
|
|
||||||
|
// Create an encoder setup to use static sharding with the same content topic
|
||||||
|
const singleShardInfo = { clusterId: 0, shard: 0 };
|
||||||
|
const staticshardingEncoder = createEncoder({
|
||||||
|
contentTopic: ContentTopic,
|
||||||
|
pubsubTopicShardInfo: singleShardInfo
|
||||||
|
});
|
||||||
|
|
||||||
|
// When static sharding is enabled, we expect the shard index to be 0
|
||||||
|
expect(staticshardingEncoder.pubsubTopic).to.be.eq("/waku/2/rs/0/0");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -5,7 +5,7 @@ export interface SingleShardInfo {
|
||||||
/**
|
/**
|
||||||
* Specifying this field indicates to the encoder/decoder that static sharding must be used.
|
* Specifying this field indicates to the encoder/decoder that static sharding must be used.
|
||||||
*/
|
*/
|
||||||
shard: number;
|
shard?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IRateLimitProof {
|
export interface IRateLimitProof {
|
||||||
|
|
|
@ -409,7 +409,7 @@ describe("determinePubsubTopic", () => {
|
||||||
|
|
||||||
it("should process correctly when SingleShardInfo has no clusterId but has a shard", () => {
|
it("should process correctly when SingleShardInfo has no clusterId but has a shard", () => {
|
||||||
const info = { shard: 0 };
|
const info = { shard: 0 };
|
||||||
const expectedTopic = `/waku/2/rs/${DEFAULT_CLUSTER_ID}/6`;
|
const expectedTopic = `/waku/2/rs/${DEFAULT_CLUSTER_ID}/0`;
|
||||||
expect(determinePubsubTopic(contentTopic, info as any)).to.equal(
|
expect(determinePubsubTopic(contentTopic, info as any)).to.equal(
|
||||||
expectedTopic
|
expectedTopic
|
||||||
);
|
);
|
||||||
|
|
|
@ -13,10 +13,9 @@ import { concat, utf8ToBytes } from "../bytes/index.js";
|
||||||
export const singleShardInfoToPubsubTopic = (
|
export const singleShardInfoToPubsubTopic = (
|
||||||
shardInfo: SingleShardInfo
|
shardInfo: SingleShardInfo
|
||||||
): PubsubTopic => {
|
): PubsubTopic => {
|
||||||
if (shardInfo.clusterId === undefined || shardInfo.shard === undefined)
|
if (shardInfo.shard === undefined) throw new Error("Invalid shard");
|
||||||
throw new Error("Invalid shard");
|
|
||||||
|
|
||||||
return `/waku/2/rs/${shardInfo.clusterId}/${shardInfo.shard}`;
|
return `/waku/2/rs/${shardInfo.clusterId ?? DEFAULT_CLUSTER_ID}/${shardInfo.shard}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const singleShardInfosToShardInfo = (
|
export const singleShardInfosToShardInfo = (
|
||||||
|
@ -232,7 +231,7 @@ export function determinePubsubTopic(
|
||||||
return pubsubTopicShardInfo;
|
return pubsubTopicShardInfo;
|
||||||
} else {
|
} else {
|
||||||
return pubsubTopicShardInfo
|
return pubsubTopicShardInfo
|
||||||
? pubsubTopicShardInfo.shard
|
? pubsubTopicShardInfo.shard !== undefined
|
||||||
? singleShardInfoToPubsubTopic(pubsubTopicShardInfo)
|
? singleShardInfoToPubsubTopic(pubsubTopicShardInfo)
|
||||||
: contentTopicToPubsubTopic(
|
: contentTopicToPubsubTopic(
|
||||||
contentTopic,
|
contentTopic,
|
||||||
|
@ -301,7 +300,7 @@ export const ensureShardingConfigured = (
|
||||||
shardingParams: { clusterId, application, version },
|
shardingParams: { clusterId, application, version },
|
||||||
shardInfo: {
|
shardInfo: {
|
||||||
clusterId,
|
clusterId,
|
||||||
shards: [pubsubTopicToSingleShardInfo(pubsubTopic).shard]
|
shards: [pubsubTopicToSingleShardInfo(pubsubTopic).shard!]
|
||||||
},
|
},
|
||||||
pubsubTopics: [pubsubTopic]
|
pubsubTopics: [pubsubTopic]
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue