Fix received notifications for gossip signature subscriptions (#15506) (#15508)

(cherry picked from commit 61ed980ac0)

Co-authored-by: Justin Starry <justin@solana.com>
This commit is contained in:
mergify[bot]
2021-02-24 10:19:01 +00:00
committed by GitHub
parent 081f1cd118
commit abfae5d46a
2 changed files with 40 additions and 1 deletions

View File

@@ -619,6 +619,7 @@ mod tests {
let received_slot = 1;
rpc.subscriptions
.notify_signatures_received((received_slot, vec![tx.signatures[0]]));
// Test signature confirmation notification
let (response, _) = robust_poll_or_panic(receiver);
let expected_res =
@@ -635,6 +636,39 @@ mod tests {
}
});
assert_eq!(serde_json::to_string(&expected).unwrap(), response);
// Test "received" for gossip subscription
let session = create_session();
let (subscriber, _id_receiver, receiver) = Subscriber::new_test("signatureNotification");
rpc.signature_subscribe(
session,
subscriber,
tx.signatures[0].to_string(),
Some(RpcSignatureSubscribeConfig {
commitment: Some(CommitmentConfig::confirmed()),
enable_received_notification: Some(true),
}),
);
let received_slot = 2;
rpc.subscriptions
.notify_signatures_received((received_slot, vec![tx.signatures[0]]));
// Test signature confirmation notification
let (response, _) = robust_poll_or_panic(receiver);
let expected_res =
RpcSignatureResult::ReceivedSignature(ReceivedSignatureResult::ReceivedSignature);
let expected = json!({
"jsonrpc": "2.0",
"method": "signatureNotification",
"params": {
"result": {
"context": { "slot": received_slot },
"value": expected_res,
},
"subscription": 2,
}
});
assert_eq!(serde_json::to_string(&expected).unwrap(), response);
}
#[test]

View File

@@ -1077,11 +1077,16 @@ impl RpcSubscriptions {
);
}
NotificationEntry::SignaturesReceived(slot_signatures) => {
RpcSubscriptions::process_signatures_received(
&slot_signatures,
&subscriptions.gossip_signature_subscriptions,
&notifier,
);
RpcSubscriptions::process_signatures_received(
&slot_signatures,
&subscriptions.signature_subscriptions,
&notifier,
)
);
}
},
Err(RecvTimeoutError::Timeout) => {