Skip to content

Commit 0a271bd

Browse files
committed
feat: retries on mempool full
2 parents 309317a + b0a524c commit 0a271bd

File tree

20 files changed

+141
-115
lines changed

20 files changed

+141
-115
lines changed

packages/exceptions/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/exceptions",
33
"description": "List of exceptions that can be reused throughout Injective's projects.",
4-
"version": "1.14.34-beta.3",
4+
"version": "1.14.34-beta.4",
55
"sideEffects": false,
66
"license": "Apache-2.0",
77
"types": "dist/cjs/index.d.ts",

packages/networks/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/networks",
33
"description": "Endpoints, networks, etc. Can be reused throughout Injective's projects.",
4-
"version": "1.14.34-beta.3",
4+
"version": "1.14.34-beta.4",
55
"sideEffects": false,
66
"license": "Apache-2.0",
77
"author": {
@@ -55,9 +55,9 @@
5555
"start": "node dist/index.js"
5656
},
5757
"dependencies": {
58-
"@injectivelabs/exceptions": "^1.14.34-beta.3",
58+
"@injectivelabs/exceptions": "^1.14.34-beta.4",
5959
"@injectivelabs/ts-types": "^1.14.34-beta.2",
60-
"@injectivelabs/utils": "^1.14.34-beta.3",
60+
"@injectivelabs/utils": "^1.14.34-beta.4",
6161
"shx": "^0.3.2"
6262
},
6363
"gitHead": "6442ae377bbfb3459d2fb3a44c650630a5b7f445"

packages/sdk-ts/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/sdk-ts",
33
"description": "SDK in TypeScript for building Injective applications in a browser, node, and react native environment.",
4-
"version": "1.14.34-beta.19",
4+
"version": "1.14.34-beta.20",
55
"sideEffects": false,
66
"license": "Apache-2.0",
77
"author": {
@@ -123,17 +123,17 @@
123123
"@ethersproject/bytes": "^5.7.0",
124124
"@injectivelabs/abacus-proto-ts": "1.13.3",
125125
"@injectivelabs/core-proto-ts": "1.13.4",
126-
"@injectivelabs/exceptions": "^1.14.34-beta.3",
126+
"@injectivelabs/exceptions": "^1.14.34-beta.4",
127127
"@injectivelabs/grpc-web": "^0.0.1",
128128
"@injectivelabs/grpc-web-node-http-transport": "^0.0.2",
129129
"@injectivelabs/grpc-web-react-native-transport": "^0.0.2",
130130
"@injectivelabs/indexer-proto-ts": "1.13.4",
131131
"@injectivelabs/mito-proto-ts": "1.13.2",
132-
"@injectivelabs/networks": "^1.14.34-beta.3",
132+
"@injectivelabs/networks": "^1.14.34-beta.4",
133133
"@injectivelabs/olp-proto-ts": "1.13.1",
134-
"@injectivelabs/test-utils": "^1.14.34-beta.6",
134+
"@injectivelabs/test-utils": "^1.14.34-beta.7",
135135
"@injectivelabs/ts-types": "^1.14.34-beta.2",
136-
"@injectivelabs/utils": "^1.14.34-beta.3",
136+
"@injectivelabs/utils": "^1.14.34-beta.4",
137137
"@metamask/eth-sig-util": "^4.0.0",
138138
"@noble/curves": "^1.4.0",
139139
"axios": "^1.6.4",

packages/test-utils/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/test-utils",
33
"description": "List of test-utils and helper functions that can be reused throughout Injective's projects.",
4-
"version": "1.14.34-beta.6",
4+
"version": "1.14.34-beta.7",
55
"sideEffects": false,
66
"author": {
77
"name": "InjectiveLabs",
@@ -55,10 +55,10 @@
5555
"start": "node dist/index.js"
5656
},
5757
"dependencies": {
58-
"@injectivelabs/exceptions": "^1.14.34-beta.3",
59-
"@injectivelabs/networks": "^1.14.34-beta.3",
58+
"@injectivelabs/exceptions": "^1.14.34-beta.4",
59+
"@injectivelabs/networks": "^1.14.34-beta.4",
6060
"@injectivelabs/ts-types": "^1.14.34-beta.2",
61-
"@injectivelabs/utils": "^1.14.34-beta.3",
61+
"@injectivelabs/utils": "^1.14.34-beta.4",
6262
"axios": "^1.6.4",
6363
"bignumber.js": "^9.0.1",
6464
"shx": "^0.3.2",

packages/utils/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/utils",
33
"description": "List of utils and helper functions that can be reused throughout Injective's projects.",
4-
"version": "1.14.34-beta.3",
4+
"version": "1.14.34-beta.4",
55
"sideEffects": false,
66
"author": {
77
"name": "InjectiveLabs",
@@ -55,7 +55,7 @@
5555
"start": "node dist/index.js"
5656
},
5757
"dependencies": {
58-
"@injectivelabs/exceptions": "^1.14.34-beta.3",
58+
"@injectivelabs/exceptions": "^1.14.34-beta.4",
5959
"@injectivelabs/ts-types": "^1.14.34-beta.2",
6060
"axios": "^1.6.4",
6161
"bignumber.js": "^9.0.1",

packages/wallet-ts/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/wallet-ts",
33
"description": "A convenient way to use and interact with different types of wallets on Injective.",
4-
"version": "1.14.34-beta.19",
4+
"version": "1.14.34-beta.20",
55
"sideEffects": false,
66
"author": {
77
"name": "InjectiveLabs",
@@ -81,11 +81,11 @@
8181
"@cosmostation/extension-client": "^0.1.15",
8282
"@ethereumjs/common": "^3.1.1",
8383
"@ethereumjs/tx": "^4.1.1",
84-
"@injectivelabs/exceptions": "^1.14.34-beta.3",
85-
"@injectivelabs/networks": "^1.14.34-beta.3",
86-
"@injectivelabs/sdk-ts": "^1.14.34-beta.19",
84+
"@injectivelabs/exceptions": "^1.14.34-beta.4",
85+
"@injectivelabs/networks": "^1.14.34-beta.4",
86+
"@injectivelabs/sdk-ts": "^1.14.34-beta.20",
8787
"@injectivelabs/ts-types": "^1.14.34-beta.2",
88-
"@injectivelabs/utils": "^1.14.34-beta.3",
88+
"@injectivelabs/utils": "^1.14.34-beta.4",
8989
"@keplr-wallet/cosmos": "^0.12.71",
9090
"@keplr-wallet/types": "^0.12.71",
9191
"@ledgerhq/hw-app-cosmos": "^6.29.5",

packages/wallet-ts/src/broadcaster/MsgBroadcaster.ts

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -977,22 +977,37 @@ export class MsgBroadcaster {
977977
endpoints.web3gw || endpoints.indexer,
978978
)
979979

980-
const response = await transactionApi.broadcastCosmosTxRequest({
981-
address: tx.injectiveAddress,
982-
txRaw: createTxRawFromSigResponse(directSignResponse),
983-
signature: directSignResponse.signature.signature,
984-
pubKey: directSignResponse.signature.pub_key || {
985-
value: pubKey,
986-
type: '/injective.crypto.v1beta1.ethsecp256k1.PubKey',
987-
},
988-
})
980+
const broadcast = async () =>
981+
await transactionApi.broadcastCosmosTxRequest({
982+
address: tx.injectiveAddress,
983+
txRaw: createTxRawFromSigResponse(directSignResponse),
984+
signature: directSignResponse.signature.signature,
985+
pubKey: directSignResponse.signature.pub_key || {
986+
value: pubKey,
987+
type: '/injective.crypto.v1beta1.ethsecp256k1.PubKey',
988+
},
989+
})
989990

990-
// Re-enable tx gas check removed above
991-
if (walletStrategy.wallet === Wallet.Keplr) {
992-
new KeplrWallet(chainId).enableGasCheck()
993-
}
991+
try {
992+
const response = await broadcast()
993+
994+
// Re-enable tx gas check removed above
995+
if (walletStrategy.wallet === Wallet.Keplr) {
996+
new KeplrWallet(chainId).enableGasCheck()
997+
}
994998

995-
return await new TxGrpcApi(endpoints.grpc).fetchTxPoll(response.txHash)
999+
return await new TxGrpcApi(endpoints.grpc).fetchTxPoll(response.txHash)
1000+
} catch (e) {
1001+
const error = e as any
1002+
1003+
if (isThrownException(error)) {
1004+
const exception = error as ThrownException
1005+
1006+
return await this.retryOnException(exception, broadcast)
1007+
}
1008+
1009+
throw e
1010+
}
9961011
}
9971012

9981013
/**

packages/wallets/wallet-base/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/wallet-base",
33
"description": "Base wallet strategy for use with @injectivelabs/wallet-core.",
4-
"version": "1.14.34-beta.19",
4+
"version": "1.14.34-beta.20",
55
"sideEffects": false,
66
"author": {
77
"name": "InjectiveLabs",
@@ -57,11 +57,11 @@
5757
"dependencies": {
5858
"@ethereumjs/common": "^3.1.1",
5959
"@ethereumjs/tx": "^4.1.1",
60-
"@injectivelabs/exceptions": "^1.14.34-beta.3",
61-
"@injectivelabs/networks": "^1.14.34-beta.3",
62-
"@injectivelabs/sdk-ts": "^1.14.34-beta.19",
60+
"@injectivelabs/exceptions": "^1.14.34-beta.4",
61+
"@injectivelabs/networks": "^1.14.34-beta.4",
62+
"@injectivelabs/sdk-ts": "^1.14.34-beta.20",
6363
"@injectivelabs/ts-types": "^1.14.34-beta.2",
64-
"@injectivelabs/utils": "^1.14.34-beta.3",
64+
"@injectivelabs/utils": "^1.14.34-beta.4",
6565
"alchemy-sdk": "^3.4.7",
6666
"eip1193-provider": "^1.0.1",
6767
"eth-sig-util": "^3.0.1",

packages/wallets/wallet-core/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@injectivelabs/wallet-core",
33
"description": "Core wallet strategy",
4-
"version": "1.14.34-beta.20",
4+
"version": "1.14.34-beta.21",
55
"sideEffects": false,
66
"author": {
77
"name": "InjectiveLabs",
@@ -55,12 +55,12 @@
5555
"start": "node dist/index.js"
5656
},
5757
"dependencies": {
58-
"@injectivelabs/exceptions": "^1.14.34-beta.3",
59-
"@injectivelabs/networks": "^1.14.34-beta.3",
60-
"@injectivelabs/sdk-ts": "^1.14.34-beta.19",
58+
"@injectivelabs/exceptions": "^1.14.34-beta.4",
59+
"@injectivelabs/networks": "^1.14.34-beta.4",
60+
"@injectivelabs/sdk-ts": "^1.14.34-beta.20",
6161
"@injectivelabs/ts-types": "^1.14.34-beta.2",
62-
"@injectivelabs/utils": "^1.14.34-beta.3",
63-
"@injectivelabs/wallet-base": "^1.14.34-beta.19",
62+
"@injectivelabs/utils": "^1.14.34-beta.4",
63+
"@injectivelabs/wallet-base": "^1.14.34-beta.20",
6464
"eip1193-provider": "^1.0.1"
6565
},
6666
"devDependencies": {

packages/wallets/wallet-core/src/broadcaster/MsgBroadcaster.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -930,8 +930,8 @@ export class MsgBroadcaster {
930930
endpoints.web3gw || endpoints.indexer,
931931
)
932932

933-
try {
934-
const response = await transactionApi.broadcastCosmosTxRequest({
933+
const broadcast = async () =>
934+
await transactionApi.broadcastCosmosTxRequest({
935935
address: tx.injectiveAddress,
936936
txRaw: createTxRawFromSigResponse(directSignResponse),
937937
signature: directSignResponse.signature.signature,
@@ -941,13 +941,24 @@ export class MsgBroadcaster {
941941
},
942942
})
943943

944+
try {
945+
const response = await broadcast()
946+
944947
// Re-enable tx gas check removed above
945948
if (canDisableCosmosGasCheck && cosmosWallet.enableGasCheck) {
946949
cosmosWallet.enableGasCheck(chainId)
947950
}
948951

949952
return await new TxGrpcApi(endpoints.grpc).fetchTxPoll(response.txHash)
950953
} catch (e) {
954+
const error = e as any
955+
956+
if (isThrownException(error)) {
957+
const exception = error as ThrownException
958+
959+
return await this.retryOnException(exception, broadcast)
960+
}
961+
951962
throw e
952963
}
953964
}

0 commit comments

Comments
 (0)