chore: Revert lightpush error handling to allow zero peer publish again succeed (#2099)

* This reverts former change on lighpush error handling, now zero peer publish still succeed. This will allow js-waku use case to succeed.

* Adjust lightpush rest-api test
This commit is contained in:
NagyZoltanPeter 2023-10-02 15:38:40 +02:00 committed by GitHub
parent c019016545
commit f05528d4be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 20 deletions

View File

@ -171,24 +171,27 @@ suite "Waku v2 Rest API - lightpush":
await restLightPushTest.shutdown() await restLightPushTest.shutdown()
asyncTest "Push message request service not available": ## TODO: Re-work this test when lightpush protocol change is done: https://github.com/waku-org/pm/issues/93
# Given ## This test is similar when no available peer exists for publish. Currently it is returning success,
let restLightPushTest = await RestLightPushTest.init() ## that makes this test not useful.
# asyncTest "Push message request service not available":
# # Given
# let restLightPushTest = await RestLightPushTest.init()
# When # # When
let message : RelayWakuMessage = fakeWakuMessage(contentTopic = DefaultContentTopic, # let message : RelayWakuMessage = fakeWakuMessage(contentTopic = DefaultContentTopic,
payload = toBytes("TEST-1")).toRelayWakuMessage() # payload = toBytes("TEST-1")).toRelayWakuMessage()
let requestBody = PushRequest(pubsubTopic: some("NoExistTopic"), # let requestBody = PushRequest(pubsubTopic: some("NoExistTopic"),
message: message) # message: message)
let response = await restLightPushTest.client.sendPushRequest(requestBody) # let response = await restLightPushTest.client.sendPushRequest(requestBody)
echo "response", $response # echo "response", $response
# Then # # Then
check: # check:
response.status == 503 # response.status == 503
$response.contentType == $MIMETYPE_TEXT # $response.contentType == $MIMETYPE_TEXT
response.data == "Failed to request a message push: Can not publish to any peers" # response.data == "Failed to request a message push: Can not publish to any peers"
await restLightPushTest.shutdown() # await restLightPushTest.shutdown()

View File

@ -227,7 +227,7 @@ proc registerRelayDefaultHandler(node: WakuNode, topic: PubsubTopic) =
proc subscribe*(node: WakuNode, subscription: SubscriptionEvent, handler = none(WakuRelayHandler)) = proc subscribe*(node: WakuNode, subscription: SubscriptionEvent, handler = none(WakuRelayHandler)) =
## Subscribes to a PubSub or Content topic. Triggers handler when receiving messages on ## Subscribes to a PubSub or Content topic. Triggers handler when receiving messages on
## this topic. WakuRelayHandler is a method that takes a topic and a Waku message. ## this topic. WakuRelayHandler is a method that takes a topic and a Waku message.
if node.wakuRelay.isNil(): if node.wakuRelay.isNil():
error "Invalid API call to `subscribe`. WakuRelay not mounted." error "Invalid API call to `subscribe`. WakuRelay not mounted."
return return
@ -242,7 +242,7 @@ proc subscribe*(node: WakuNode, subscription: SubscriptionEvent, handler = none(
(shard, some(subscription.topic)) (shard, some(subscription.topic))
of PubsubSub: (subscription.topic, none(ContentTopic)) of PubsubSub: (subscription.topic, none(ContentTopic))
else: return else: return
if contentTopicOp.isSome() and node.contentTopicHandlers.hasKey(contentTopicOp.get()): if contentTopicOp.isSome() and node.contentTopicHandlers.hasKey(contentTopicOp.get()):
error "Invalid API call to `subscribe`. Was already subscribed" error "Invalid API call to `subscribe`. Was already subscribed"
return return
@ -260,7 +260,7 @@ proc subscribe*(node: WakuNode, subscription: SubscriptionEvent, handler = none(
proc unsubscribe*(node: WakuNode, subscription: SubscriptionEvent) = proc unsubscribe*(node: WakuNode, subscription: SubscriptionEvent) =
## Unsubscribes from a specific PubSub or Content topic. ## Unsubscribes from a specific PubSub or Content topic.
if node.wakuRelay.isNil(): if node.wakuRelay.isNil():
error "Invalid API call to `unsubscribe`. WakuRelay not mounted." error "Invalid API call to `unsubscribe`. WakuRelay not mounted."
return return
@ -876,7 +876,8 @@ proc mountLightPush*(node: WakuNode) {.async.} =
let publishedCount = await node.wakuRelay.publish(pubsubTopic, message.encode().buffer) let publishedCount = await node.wakuRelay.publish(pubsubTopic, message.encode().buffer)
if publishedCount == 0: if publishedCount == 0:
return err("Can not publish to any peers") ## Agreed change expected to the lightpush protocol to better handle such case. https://github.com/waku-org/pm/issues/93
debug("Lightpush request has not been published to any peers")
return ok() return ok()