Skip to content

Commit 3b2bc05

Browse files
committed
fix: PRT - fix reconnect attempt on retry from blocked providers
1 parent e40f559 commit 3b2bc05

File tree

4 files changed

+27
-14
lines changed

4 files changed

+27
-14
lines changed

protocol/lavasession/consumer_session_manager.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -396,12 +396,6 @@ func (csm *ConsumerSessionManager) validatePairingListNotEmpty(addon string, ext
396396
return numberOfResets
397397
}
398398

399-
func (csm *ConsumerSessionManager) getValidAddressesLengthForExtensionOrAddon(addon string, extensions []string) int {
400-
csm.lock.RLock()
401-
defer csm.lock.RUnlock()
402-
return len(csm.getValidAddresses(addon, extensions))
403-
}
404-
405399
func (csm *ConsumerSessionManager) getSessionWithProviderOrError(usedProviders UsedProvidersInf, tempIgnoredProviders *ignoredProviders, cuNeededForSession uint64, requestedBlock int64, addon string, extensionNames []string, stateful uint32, virtualEpoch uint64) (sessionWithProviderMap SessionWithProviderMap, err error) {
406400
sessionWithProviderMap, err = csm.getValidConsumerSessionsWithProvider(tempIgnoredProviders, cuNeededForSession, requestedBlock, addon, extensionNames, stateful, virtualEpoch)
407401
if err != nil {
@@ -448,10 +442,12 @@ func (csm *ConsumerSessionManager) GetSessions(ctx context.Context, cuNeededForS
448442
providers: initUnwantedProviders,
449443
currentEpoch: csm.atomicReadCurrentEpoch(),
450444
}
445+
utils.LavaFormatTrace("GetSessions tempIgnoredProviders", utils.LogAttr("tempIgnoredProviders", tempIgnoredProviders))
451446

452447
// Get a valid consumerSessionsWithProvider
453448
sessionWithProviderMap, err := csm.getSessionWithProviderOrError(usedProviders, tempIgnoredProviders, cuNeededForSession, requestedBlock, addon, extensionNames, stateful, virtualEpoch)
454449
if err != nil {
450+
utils.LavaFormatTrace("GetSessions error", utils.LogAttr("error", err.Error()))
455451
return nil, err
456452
}
457453

@@ -466,7 +462,7 @@ func (csm *ConsumerSessionManager) GetSessions(ctx context.Context, cuNeededForS
466462
sessionEpoch := sessionWithProvider.CurrentEpoch
467463

468464
// Get a valid Endpoint from the provider chosen
469-
connected, endpoints, _, err := consumerSessionsWithProvider.fetchEndpointConnectionFromConsumerSessionWithProvider(ctx, false, false, addon, extensionNames)
465+
connected, endpoints, _, err := consumerSessionsWithProvider.fetchEndpointConnectionFromConsumerSessionWithProvider(ctx, sessionWithProvider.retryConnecting, false, addon, extensionNames)
470466
if err != nil {
471467
// verify err is AllProviderEndpointsDisabled and report.
472468
if AllProviderEndpointsDisabledError.Is(err) {
@@ -697,6 +693,7 @@ func (csm *ConsumerSessionManager) tryGetConsumerSessionWithProviderFromBlockedP
697693
for _, providerAddress := range csm.currentlyBlockedProviderAddresses {
698694
// check if we have this provider already.
699695
if _, providerExistInIgnoredProviders := ignoredProviders.providers[providerAddress]; providerExistInIgnoredProviders {
696+
utils.LavaFormatTrace("[continue] provider already in ignored providers", utils.LogAttr("providerAddress", providerAddress))
700697
continue
701698
}
702699
consumerSessionsWithProvider := csm.pairing[providerAddress]
@@ -707,11 +704,13 @@ func (csm *ConsumerSessionManager) tryGetConsumerSessionWithProviderFromBlockedP
707704
// validate this provider has enough cu to be used
708705
if err := consumerSessionsWithProvider.validateComputeUnits(cuNeededForSession, virtualEpoch); err != nil {
709706
// we already added to ignored we can just continue to the next provider
707+
utils.LavaFormatTrace("[continue] no compute units", utils.LogAttr("providerAddress", providerAddress))
710708
continue
711709
}
712710

713711
// validate this provider supports the required extension or addon
714712
if !consumerSessionsWithProvider.IsSupportingAddon(addon) || !consumerSessionsWithProvider.IsSupportingExtensions(extensions) {
713+
utils.LavaFormatTrace("[continue] no addon or extensions", utils.LogAttr("providerAddress", providerAddress))
715714
continue
716715
}
717716

@@ -721,6 +720,7 @@ func (csm *ConsumerSessionManager) tryGetConsumerSessionWithProviderFromBlockedP
721720
providerAddress: &SessionWithProvider{
722721
SessionsWithProvider: consumerSessionsWithProvider,
723722
CurrentEpoch: currentEpoch,
723+
retryConnecting: true,
724724
},
725725
}, nil
726726
}

protocol/lavasession/consumer_types.go

+4
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ func (e *Endpoint) CheckSupportForServices(addon string, extensions []string) (s
165165
type SessionWithProvider struct {
166166
SessionsWithProvider *ConsumerSessionsWithProvider
167167
CurrentEpoch uint64
168+
retryConnecting bool
168169
}
169170

170171
type SessionWithProviderMap map[string]*SessionWithProvider // key is the provider address
@@ -482,6 +483,9 @@ func (cswp *ConsumerSessionsWithProvider) fetchEndpointConnectionFromConsumerSes
482483
if !retryDisabledEndpoints && !endpoint.Enabled {
483484
continue
484485
}
486+
if retryDisabledEndpoints {
487+
utils.LavaFormatDebug("retrying to connect to disabled endpoint", utils.LogAttr("endpoint", endpoint.NetworkAddress), utils.LogAttr("provider", cswp.PublicLavaAddress))
488+
}
485489

486490
// check endpoint supports the requested addons
487491
supported := endpoint.CheckSupportForServices(addon, extensionNames)

scripts/pre_setups/init_lava_only_with_node_three_providers.sh

+15-7
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,22 @@ lavad tx gov vote 3 yes -y --from alice --gas-adjustment "1.5" --gas "auto" --ga
6262

6363
screen -d -m -S provider1 bash -c "source ~/.bashrc; lavap rpcprovider \
6464
$PROVIDER1_LISTENER LAV1 rest '$LAVA_REST' \
65-
$PROVIDER1_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC' \
65+
$PROVIDER1_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC_WS' \
6666
$PROVIDER1_LISTENER LAV1 grpc '$LAVA_GRPC' \
67-
$EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer1 --chain-id lava --metrics-listen-address ":7776" 2>&1 | tee $LOGS_DIR/PROVIDER1.log" && sleep 0.25
67+
$EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer1 --chain-id lava --metrics-listen-address ":7766" 2>&1 | tee $LOGS_DIR/PROVIDER1.log" && sleep 0.25
6868

6969
screen -d -m -S provider2 bash -c "source ~/.bashrc; lavap rpcprovider \
7070
$PROVIDER2_LISTENER LAV1 rest '$LAVA_REST' \
71-
$PROVIDER2_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC' \
71+
$PROVIDER2_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC_WS' \
7272
$PROVIDER2_LISTENER LAV1 grpc '$LAVA_GRPC' \
73-
$EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer2 --chain-id lava --metrics-listen-address ":7776" 2>&1 | tee $LOGS_DIR/PROVIDER2.log" && sleep 0.25
73+
$EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer2 --chain-id lava --metrics-listen-address ":7756" 2>&1 | tee $LOGS_DIR/PROVIDER2.log" && sleep 0.25
7474

7575
screen -d -m -S provider3 bash -c "source ~/.bashrc; lavap rpcprovider \
7676
$PROVIDER3_LISTENER LAV1 rest '$LAVA_REST' \
77-
$PROVIDER3_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC' \
77+
$PROVIDER3_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC_WS' \
7878
$PROVIDER3_LISTENER LAV1 grpc '$LAVA_GRPC' \
79-
$EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer3 --chain-id lava --metrics-listen-address ":7776" 2>&1 | tee $LOGS_DIR/PROVIDER3.log" && sleep 0.25
79+
$EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer3 --chain-id lava --metrics-listen-address ":7746" 2>&1 | tee $LOGS_DIR/PROVIDER3.log" && sleep 0.25
80+
8081

8182
wait_next_block
8283

@@ -87,4 +88,11 @@ $EXTRA_PORTAL_FLAGS --geolocation 1 --log_level debug --from user1 --chain-id la
8788
echo "--- setting up screens done ---"
8889
screen -ls
8990

90-
echo "lavap rpcprovider $PROVIDER3_LISTENER LAV1 rest '$LAVA_REST' $PROVIDER3_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC' $PROVIDER3_LISTENER LAV1 grpc '$LAVA_GRPC' $EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer3 --chain-id lava"
91+
echo "Provider 1 command:"
92+
echo "lavap rpcprovider $PROVIDER1_LISTENER LAV1 rest '$LAVA_REST' $PROVIDER1_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC_WS' $PROVIDER1_LISTENER LAV1 grpc '$LAVA_GRPC' $EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer1 --chain-id lava --metrics-listen-address ':7766'"
93+
94+
echo "Provider 2 command:"
95+
echo "lavap rpcprovider $PROVIDER2_LISTENER LAV1 rest '$LAVA_REST' $PROVIDER2_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC_WS' $PROVIDER2_LISTENER LAV1 grpc '$LAVA_GRPC' $EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer2 --chain-id lava --metrics-listen-address ':7756'"
96+
97+
echo "Provider 3 command:"
98+
echo "lavap rpcprovider $PROVIDER3_LISTENER LAV1 rest '$LAVA_REST' $PROVIDER3_LISTENER LAV1 tendermintrpc '$LAVA_RPC,$LAVA_RPC_WS' $PROVIDER3_LISTENER LAV1 grpc '$LAVA_GRPC' $EXTRA_PROVIDER_FLAGS --geolocation 1 --log_level debug --from servicer3 --chain-id lava --metrics-listen-address ':7746'"

scripts/useful_commands.sh

+1
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ get_base_specs() {
183183
"specs/mainnet-1/specs/ethereum.json"
184184
"specs/mainnet-1/specs/solana.json"
185185
"specs/mainnet-1/specs/aptos.json"
186+
"specs/mainnet-1/specs/btc.json"
186187
)
187188

188189
(IFS=,; echo "${priority_specs[*]}")

0 commit comments

Comments
 (0)