RPC: use finalized as default pubsub commitment level (#16659)
* RPC: use finalized as default pubsub commitment level * update docs * Fix tests
This commit is contained in:
parent
c8b474cd0b
commit
a7e65c0034
|
@ -630,9 +630,7 @@ impl RpcSubscriptions {
|
||||||
subscriber: Subscriber<Response<UiAccount>>,
|
subscriber: Subscriber<Response<UiAccount>>,
|
||||||
) {
|
) {
|
||||||
let config = config.unwrap_or_default();
|
let config = config.unwrap_or_default();
|
||||||
let commitment = config
|
let commitment = config.commitment.unwrap_or_default();
|
||||||
.commitment
|
|
||||||
.unwrap_or_else(CommitmentConfig::confirmed);
|
|
||||||
|
|
||||||
let slot = if commitment.is_finalized() {
|
let slot = if commitment.is_finalized() {
|
||||||
self.block_commitment_cache
|
self.block_commitment_cache
|
||||||
|
@ -703,10 +701,7 @@ impl RpcSubscriptions {
|
||||||
subscriber: Subscriber<Response<RpcKeyedAccount>>,
|
subscriber: Subscriber<Response<RpcKeyedAccount>>,
|
||||||
) {
|
) {
|
||||||
let config = config.unwrap_or_default();
|
let config = config.unwrap_or_default();
|
||||||
let commitment = config
|
let commitment = config.account_config.commitment.unwrap_or_default();
|
||||||
.account_config
|
|
||||||
.commitment
|
|
||||||
.unwrap_or_else(CommitmentConfig::confirmed);
|
|
||||||
|
|
||||||
let mut subscriptions = if commitment.is_confirmed() {
|
let mut subscriptions = if commitment.is_confirmed() {
|
||||||
self.subscriptions
|
self.subscriptions
|
||||||
|
@ -753,7 +748,7 @@ impl RpcSubscriptions {
|
||||||
sub_id: SubscriptionId,
|
sub_id: SubscriptionId,
|
||||||
subscriber: Subscriber<Response<RpcLogsResponse>>,
|
subscriber: Subscriber<Response<RpcLogsResponse>>,
|
||||||
) {
|
) {
|
||||||
let commitment = commitment.unwrap_or_else(CommitmentConfig::confirmed);
|
let commitment = commitment.unwrap_or_default();
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut subscriptions = if commitment.is_confirmed() {
|
let mut subscriptions = if commitment.is_confirmed() {
|
||||||
|
@ -864,7 +859,7 @@ impl RpcSubscriptions {
|
||||||
.map(|config| (config.commitment, config.enable_received_notification))
|
.map(|config| (config.commitment, config.enable_received_notification))
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let commitment = commitment.unwrap_or_else(CommitmentConfig::confirmed);
|
let commitment = commitment.unwrap_or_default();
|
||||||
|
|
||||||
let mut subscriptions = if commitment.is_confirmed() {
|
let mut subscriptions = if commitment.is_confirmed() {
|
||||||
self.subscriptions
|
self.subscriptions
|
||||||
|
|
|
@ -7,6 +7,7 @@ use serde_json::{json, Value};
|
||||||
use solana_account_decoder::UiAccount;
|
use solana_account_decoder::UiAccount;
|
||||||
use solana_client::{
|
use solana_client::{
|
||||||
rpc_client::RpcClient,
|
rpc_client::RpcClient,
|
||||||
|
rpc_config::{RpcAccountInfoConfig, RpcSignatureSubscribeConfig},
|
||||||
rpc_response::{Response, RpcSignatureResult, SlotUpdate},
|
rpc_response::{Response, RpcSignatureResult, SlotUpdate},
|
||||||
};
|
};
|
||||||
use solana_core::{rpc_pubsub::gen_client::Client as PubsubClient, test_validator::TestValidator};
|
use solana_core::{rpc_pubsub::gen_client::Client as PubsubClient, test_validator::TestValidator};
|
||||||
|
@ -262,7 +263,13 @@ fn test_rpc_subscriptions() {
|
||||||
for sig in signature_set_clone {
|
for sig in signature_set_clone {
|
||||||
let status_sender = status_sender.clone();
|
let status_sender = status_sender.clone();
|
||||||
let mut sig_sub = client
|
let mut sig_sub = client
|
||||||
.signature_subscribe(sig.clone(), None)
|
.signature_subscribe(
|
||||||
|
sig.clone(),
|
||||||
|
Some(RpcSignatureSubscribeConfig {
|
||||||
|
commitment: Some(CommitmentConfig::confirmed()),
|
||||||
|
..RpcSignatureSubscribeConfig::default()
|
||||||
|
}),
|
||||||
|
)
|
||||||
.unwrap_or_else(|err| panic!("sig sub err: {:#?}", err));
|
.unwrap_or_else(|err| panic!("sig sub err: {:#?}", err));
|
||||||
|
|
||||||
tokio_02::spawn(async move {
|
tokio_02::spawn(async move {
|
||||||
|
@ -277,7 +284,13 @@ fn test_rpc_subscriptions() {
|
||||||
for pubkey in account_set {
|
for pubkey in account_set {
|
||||||
let account_sender = account_sender.clone();
|
let account_sender = account_sender.clone();
|
||||||
let mut client_sub = client
|
let mut client_sub = client
|
||||||
.account_subscribe(pubkey, None)
|
.account_subscribe(
|
||||||
|
pubkey,
|
||||||
|
Some(RpcAccountInfoConfig {
|
||||||
|
commitment: Some(CommitmentConfig::confirmed()),
|
||||||
|
..RpcAccountInfoConfig::default()
|
||||||
|
}),
|
||||||
|
)
|
||||||
.unwrap_or_else(|err| panic!("acct sub err: {:#?}", err));
|
.unwrap_or_else(|err| panic!("acct sub err: {:#?}", err));
|
||||||
tokio_02::spawn(async move {
|
tokio_02::spawn(async move {
|
||||||
let response = client_sub.next().await.unwrap();
|
let response = client_sub.next().await.unwrap();
|
||||||
|
|
|
@ -3050,7 +3050,7 @@ After connecting to the RPC PubSub websocket at `ws://<ADDRESS>/`:
|
||||||
|
|
||||||
- Submit subscription requests to the websocket using the methods below
|
- Submit subscription requests to the websocket using the methods below
|
||||||
- Multiple subscriptions may be active at once
|
- Multiple subscriptions may be active at once
|
||||||
- Many subscriptions take the optional [`commitment` parameter](jsonrpc-api.md#configuring-state-commitment), defining how finalized a change should be to trigger a notification. For subscriptions, if commitment is unspecified, the default value is `"confirmed"`.
|
- Many subscriptions take the optional [`commitment` parameter](jsonrpc-api.md#configuring-state-commitment), defining how finalized a change should be to trigger a notification. For subscriptions, if commitment is unspecified, the default value is `"finalized"`.
|
||||||
|
|
||||||
### accountSubscribe
|
### accountSubscribe
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue