diff --git a/protocol/messenger.go b/protocol/messenger.go index f4581e814..ec5f8038e 100644 --- a/protocol/messenger.go +++ b/protocol/messenger.go @@ -684,7 +684,8 @@ func (m *Messenger) shouldResendMessage(message *common.RawMessage, t common.Tim return false, nil } //exponential backoff depends on how many attempts to send message already made - backoff := uint64(math.Pow(2, float64(message.SendCount-1))) * uint64(m.config.messageResendMinDelay) * uint64(time.Second.Milliseconds()) + power := math.Pow(2, float64(message.SendCount-1)) + backoff := uint64(power) * uint64(m.config.messageResendMinDelay.Milliseconds()) backoffElapsed := t.GetCurrentTime() > (message.LastSent + backoff) return backoffElapsed, nil } diff --git a/protocol/messenger_config.go b/protocol/messenger_config.go index 79fe2c9ed..564a9cf8e 100644 --- a/protocol/messenger_config.go +++ b/protocol/messenger_config.go @@ -3,6 +3,7 @@ package protocol import ( "database/sql" "encoding/json" + "time" "github.com/status-im/status-go/account" "github.com/status-im/status-go/rpc" @@ -114,13 +115,13 @@ type config struct { telemetryServerURL string wakuService *wakuv2.Waku - messageResendMinDelay int + messageResendMinDelay time.Duration messageResendMaxCount int } func messengerDefaultConfig() config { c := config{ - messageResendMinDelay: 30, + messageResendMinDelay: 30 * time.Second, messageResendMaxCount: 3, } @@ -153,7 +154,7 @@ func WithVerifyTransactionClient(client EthClient) Option { } } -func WithResendParams(minDelay int, maxCount int) Option { +func WithResendParams(minDelay time.Duration, maxCount int) Option { return func(c *config) error { c.messageResendMinDelay = minDelay c.messageResendMaxCount = maxCount diff --git a/protocol/messenger_offline_test.go b/protocol/messenger_offline_test.go index d2e4fd74e..45fdd5c87 100644 --- a/protocol/messenger_offline_test.go +++ b/protocol/messenger_offline_test.go @@ -18,6 +18,9 @@ import ( "github.com/status-im/status-go/protocol/tt" ) +const minimumResendDelay = 500 * time.Millisecond +const waitForResentDelay = minimumResendDelay + 100*time.Millisecond + type MessengerOfflineSuite struct { suite.Suite @@ -91,7 +94,7 @@ func (s *MessengerOfflineSuite) newMessenger(waku types.Waku, logger *zap.Logger testMessengerConfig: testMessengerConfig{ logger: s.logger, extraOptions: []Option{ - WithResendParams(3, 3), + WithResendParams(minimumResendDelay, 1), }, }, }) @@ -134,7 +137,7 @@ func (s *MessengerOfflineSuite) TestCommunityOfflineEdit() { // Check that message is re-sent once back online wakuv2.SkipPublishToTopic(false) - time.Sleep(5 * time.Second) + time.Sleep(waitForResentDelay) s.checkMessageDelivery(ctx, inputMessage) @@ -151,7 +154,7 @@ func (s *MessengerOfflineSuite) TestCommunityOfflineEdit() { // Check that message is re-sent once back online wakuv2.SkipPublishToTopic(false) - time.Sleep(5 * time.Second) + time.Sleep(waitForResentDelay) inputMessage.Text = editedText s.checkMessageDelivery(ctx, inputMessage) diff --git a/server/pairing/sync_device_test.go b/server/pairing/sync_device_test.go index 10bbcb5a6..1b5517d0b 100644 --- a/server/pairing/sync_device_test.go +++ b/server/pairing/sync_device_test.go @@ -662,7 +662,7 @@ func defaultNodeConfig(installationID, keyUID string) (*params.NodeConfig, error // Set mainnet nodeConfig := ¶ms.NodeConfig{} nodeConfig.NetworkID = 1 - nodeConfig.LogLevel = "ERROR" + nodeConfig.LogLevel = "DEBUG" nodeConfig.DataDir = filepath.Join("ethereum/mainnet_rpc") nodeConfig.KeyStoreDir = filepath.Join(keystoreDir, keyUID) nodeConfig.KeycardPairingDataFile = filepath.Join("keycard", "pairings.json")