Open mariia-skrypnyk opened 1 week ago
Not sure if "wallet_fetchTokenDetails", "wallet_getWalletToken", "wallet_fetchPrices", and "wallet_fetchMarketValues" will affect the delay? Each of them took up around 6 seconds in the requests.log provided by @mariia-skrypnyk . And wakuext_startMessenger
only took around 1-2 seconds
The following is the requests.log provided by @pavloburykh .
t=2024-10-21T07:20:53+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchPrices\", duration=1.091404166s
t=2024-10-21T07:20:53+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchMarketValues\", duration=1.330106041s
t=2024-10-21T07:20:54+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchTokenDetails\", duration=2.265590833s
t=2024-10-21T07:20:54+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=2.838512759s
t=2024-10-21T07:21:04+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=2.760202916s
t=2024-10-21T07:21:04+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchTokenDetails\", duration=1.593322291s
t=2024-10-21T07:27:57+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_startMessenger\", duration=1.08818302s
t=2024-10-21T07:28:00+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=3.145335103s
t=2024-10-21T07:28:00+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchTokenDetails\", duration=1.827232239s
t=2024-10-21T07:28:49+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchTokenDetails\", duration=1.29525276s
t=2024-10-21T07:28:49+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=1.984796978s
t=2024-10-21T07:29:33+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=1.842255156s
t=2024-10-21T07:31:06+0000 lvl=dbug msg=logout params=[] resp="{\"error\":\"\"}" duration=4.199286353s
t=2024-10-21T07:31:09+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_startMessenger\", duration=1.896472708s
t=2024-10-21T07:31:10+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=2.572267916s
t=2024-10-21T07:31:11+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=3.326391249s
t=2024-10-21T07:31:11+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchMarketValues\", duration=1.332989583s
t=2024-10-21T07:31:11+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchTokenDetails\", duration=1.453261979s
t=2024-10-21T07:31:13+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchPrices\", duration=2.950787968s
t=2024-10-21T07:32:54+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_startMessenger\", duration=1.063248541s
t=2024-10-21T07:32:58+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=3.770931248s
t=2024-10-21T07:33:00+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchTokenDetails\", duration=3.686795155s
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=7.172142237s
emm.. after investigating Status.log
provided by @pavloburykh , I found there is around 5-6 seconds delay for the signal type messages.new
after loginAccount
, wallet_xxx
should not affect the delay relate to chat UI.
emm..
Status.log:
10-21 10:32:53.676 4318 4465 D ReactNativeJS: 2024-10-21T07:32:53.674Z DEBUG [status-im.common.signals.events:34] - Signal received {:type "node.login"}
10-21 10:32:53.681 4318 4465 D ReactNativeJS: 2024-10-21T07:32:53.679Z DEBUG [status-im.contexts.profile.login.events:154] - [signals] node.login error nil
requests.log:
t=2024-10-21T07:32:54+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_startMessenger\", duration=1.063248541s
...
t=2024-10-21T07:32:59+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_chatsPreview\", duration=409.644271ms
Look at the time. I would expect wakuext_chatsPreview
to be invoked soon after receiving signal node.login
, but actually it isn't. It gets delayed for around 5-6 seconds. So we should figure out why the delay occurs on the frontend. Could you help take a look? @ilmotta
to be clear, I made a short simplified log for requests.log:
t=2024-10-21T07:32:54+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_startMessenger\", duration=1.063248541s
t=2024-10-21T07:32:54+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_serializedCommunities\", duration=466.984635ms
t=2024-10-21T07:32:54+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getTokenList\", duration=31.441719ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=6.373854ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=9.569219ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=6.685469ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=5.012917ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=3.768177ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=10.435937ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=12.288177ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=15.324375ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=37.269271ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=43.618281ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=191.189948ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkPermissionsToJoinCommunity\", duration=241.528073ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_checkAndDeletePendingRequestToJoinCommunity\", duration=2.158906ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_collapsedCommunityCategories\", duration=3.047292ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchPrices\", duration=616.622083ms
t=2024-10-21T07:32:56+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchMarketValues\", duration=651.834114ms
t=2024-10-21T07:32:57+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletConnectActiveSessions\", duration=3.035468ms
t=2024-10-21T07:32:58+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=3.770931248s
t=2024-10-21T07:32:58+0000 lvl=dbug msg=serializeLegacyKey params=[0x04170e3288ba51cce14e6d5a9a3b09ab53c9dc35df15c429164d7c57008bd10327e51315d7e41e5cb7299c00215e09c5ae783187a76d82dcbd007b4b9d4b3445b3] resp=zQ3shgC74U8kmFyW3yKGmMsnyfMYM9y6Gj75ZxJpy1SbDcFR8 duration="60.99µs"
t=2024-10-21T07:32:58+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_activityCenterNotificationsCount\", duration=1.310469ms
t=2024-10-21T07:32:58+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_activityCenterNotifications\", duration=2.532968ms
t=2024-10-21T07:32:59+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_chatsPreview\", duration=409.644271ms
t=2024-10-21T07:33:00+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_fetchTokenDetails\", duration=3.686795155s
t=2024-10-21T07:33:00+0000 lvl=dbug msg=startLocalNotifications params=[] resp="{\"error\":\"\"}" duration="578.437µs"
t=2024-10-21T07:33:00+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"multiaccounts_getIdentityImages\", duration=1.62448ms
t=2024-10-21T07:33:00+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_myPendingRequestsToJoin\", duration=1.213489ms
t=2024-10-21T07:33:00+0000 lvl=dbug msg=serializeLegacyKey params=[0x04b77894beebf9b63c42608217d9cdd3210e322ebce301b177845c760f0c54f784293144af5a21379de2a5aee8d8cc3c021309fbf664dea61165a446a6b9fba7f0] resp=zQ3shZkz1QfcHHM3HEqs3y7mLtsJG4CV5AP53bKYcsU3Biib5 duration="67.552µs"
t=2024-10-21T07:33:00+0000 lvl=dbug msg=serializeLegacyKey params=[0x047123241193182e748f7e109280294cbfbd2dd43bc0d0b7bad715a17850dff4358b86c8d0b1008f6dd16607d227a1338917e594328762937eacedff9d48b304b9] resp=zQ3shnFkGxWSJGfzEUkQde9V5nEVoYZEMYVJ7MfYhc9XmSNFn duration="113.907µs"
t=2024-10-21T07:33:00+0000 lvl=dbug msg=serializeLegacyKey params=[] resp="{\"error\":\"invalid key length\"}" duration="166.927µs"
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wallet_getWalletToken\", duration=7.172142237s
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_contacts\", duration=176.14927ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_getBrowsers\", duration=2.393541ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"permissions_getDappPermissions\", duration=2.55276ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"localnotifications_notificationPreferences\", duration=3.479323ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"browsers_getBookmarks\", duration=6.370729ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_activityCenterNotificationsCount\", duration=3.631458ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_getOurInstallations\", duration=4.778854ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"admin_nodeInfo\", duration=1.35474ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_hasUnseenActivityCenterNotifications\", duration=4.507708ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_shareUserURLWithData\", duration=4.4725ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_statusUpdates\", duration=9.835834ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_getGroupChatInvitations\", duration=36.319896ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=getNodeConfig params=[] resp="{\"NetworkId\":1,\"DataDir\":\"/ethereum/mainnet_rpc\",\"KeyStoreDir\":\"keystore/0x9677ba828b37677c5384bfe527df96d80a10f6f9c6f40a1b65c51e22ac3a418b\",\"KeycardPairingDataFile\":\"\",\"NodeKey\":\"\",\"NoDiscovery\":true,\"ListenAddr\":\":0\",\"AdvertiseAddr\":\"\",\"Name\":\"StatusIM\",\"Version\":\"\",\"APIModules\":\"\",\"HTTPEnabled\":false,\"HTTPHost\":\"\",\"HTTPPort\":0,\"WSEnabled\":false,\"WSHost\":\"\",\"WSPort\":0,\"HTTPVirtualHosts\":null,\"HTTPCors\":null,\"IPCEnabled\":false,\"IPCFile\":\"\",\"TLSEnabled\":false,\"MaxPeers\":20,\"MaxPendingPeers\":20,\"LogEnabled\":true,\"LogMobileSystem\":false,\"LogDir\":\"/storage/emulated/0/Android/data/im.status.ethereum.pr/files/Download\",\"LogFile\":\"geth.log\",\"RuntimeLogLevel\":\"\",\"LogLevel\":\"DEBUG\",\"LogMaxBackups\":0,\"LogMaxSize\":0,\"LogCompressRotated\":false,\"LogToStderr\":false,\"EnableStatusService\":false,\"Networks\":[{\"chainId\":1,\"chainName\":\"Mainnet\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://eth-archival.rpc.grove.city/v1/1fec70c0d1247dc818107ac7\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://etherscan.io/\",\"iconUrl\":\"network/Network=Ethereum\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":false,\"layer\":1,\"enabled\":true,\"chainColor\":\"#627EEA\",\"shortName\":\"eth\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":5,\"chainName\":\"Mainnet\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://goerli.infura.io/v3/40ec14d9d9384d52b7fbcfecdde4e2c0\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://goerli.etherscan.io/\",\"iconUrl\":\"network/Network=Ethereum\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":true,\"layer\":1,\"enabled\":true,\"chainColor\":\"#627EEA\",\"shortName\":\"goEth\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":10,\"chainName\":\"Optimism\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://optimism-archival.rpc.grove.city/v1/1fec70c0d1247dc818107ac7\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://optimistic.etherscan.io\",\"iconUrl\":\"network/Network=Optimism\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":false,\"layer\":2,\"enabled\":true,\"chainColor\":\"#E90101\",\"shortName\":\"oeth\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":420,\"chainName\":\"Optimism\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://optimism-goerli.infura.io/v3/40ec14d9d9384d52b7fbcfecdde4e2c0\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://goerli-optimism.etherscan.io/\",\"iconUrl\":\"network/Network=Optimism\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":true,\"layer\":2,\"enabled\":false,\"chainColor\":\"#E90101\",\"shortName\":\"goOpt\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":42161,\"chainName\":\"Arbitrum\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://arbitrum-one.rpc.grove.city/v1/1fec70c0d1247dc818107ac7\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://arbiscan.io/\",\"iconUrl\":\"network/Network=Arbitrum\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":false,\"layer\":2,\"enabled\":true,\"chainColor\":\"#51D0F0\",\"shortName\":\"arb1\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":421613,\"chainName\":\"Arbitrum\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://arbitrum-goerli.infura.io/v3/40ec14d9d9384d52b7fbcfecdde4e2c0\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://goerli.arbiscan.io/\",\"iconUrl\":\"network/Network=Arbitrum\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":true,\"layer\":2,\"enabled\":false,\"chainColor\":\"#51D0F0\",\"shortName\":\"goArb\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":421614,\"chainName\":\"Arbitrum\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://arbitrum-sepolia-archival.rpc.grove.city/v1/1fec70c0d1247dc818107ac7\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://sepolia-explorer.arbitrum.io/\",\"iconUrl\":\"network/Network=Arbitrum\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":true,\"layer\":2,\"enabled\":false,\"chainColor\":\"#51D0F0\",\"shortName\":\"arb1\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":11155111,\"chainName\":\"Mainnet\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://sepolia-archival.rpc.grove.city/v1/1fec70c0d1247dc818107ac7\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://sepolia.etherscan.io/\",\"iconUrl\":\"network/Network=Ethereum\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":true,\"layer\":1,\"enabled\":true,\"chainColor\":\"#627EEA\",\"shortName\":\"eth\",\"tokenOverrides\":null,\"relatedChainId\":0},{\"chainId\":11155420,\"chainName\":\"Optimism\",\"defaultRpcUrl\":\"\",\"defaultFallbackURL\":\"\",\"defaultFallbackURL2\":\"\",\"rpcUrl\":\"https://optimism-sepolia-archival.rpc.grove.city/v1/1fec70c0d1247dc818107ac7\",\"originalRpcUrl\":\"\",\"fallbackURL\":\"\",\"originalFallbackURL\":\"\",\"blockExplorerUrl\":\"https://sepolia-optimism.etherscan.io/\",\"iconUrl\":\"network/Network=Optimism\",\"nativeCurrencyName\":\"Ether\",\"nativeCurrencySymbol\":\"ETH\",\"nativeCurrencyDecimals\":18,\"isTest\":true,\"layer\":2,\"enabled\":false,\"chainColor\":\"#E90101\",\"shortName\":\"oeth\",\"tokenOverrides\":null,\"relatedChainId\":0}],\"ClusterConfig\":{\"Enabled\":true,\"Fleet\":\"status.prod\",\"StaticNodes\":null,\"BootNodes\":null,\"TrustedMailServers\":null,\"PushNotificationsServers\":[\"181141b1d111908aaf05f4788e6778ec07073a1d4e1ce43c73815c40ee4e7345a1cbf5a90a45f601bf3763f12be63b01624ba1f36eeb9572455e7034b8f9f2c4\",\"401ba5eda402678dc78a0a40fd0795f4ea8b1e34972c4d15cf33ac01292341c89f0cbc637fa9f7a3ffe0b9dfe90e9cdae7a14925500ab01b6a91c67bae42a97a\",\"5ffc34d5ffda180d94cd3974d9ed2bb082ede68f342babdbe801ceffb7da902087d43f9aa961c7b85029358874c08ef04ecad9f1d95a1f0e448cbdd5d04350c7\"],\"WakuNodes\":[\"enrtree://AMOJVZX4V6EXP7NTJPMAYJYST2QP6AJXYW76IU6VGJS7UVSNDYZG4@boot.prod.status.nodes.status.im\"],\"DiscV5BootstrapNodes\":[\"enr:-QEKuED9AJm2HGgrRpVaJY2nj68ao_QiPeUT43sK-aRM7sMJ6R4G11OSDOwnvVacgN1sTw-K7soC5dzHDFZgZkHU0u-XAYJpZIJ2NIJpcISnYxMvim11bHRpYWRkcnO4WgAqNiVib290LTAxLmRvLWFtczMuc3RhdHVzLnByb2Quc3RhdHVzLmltBnZfACw2JWJvb3QtMDEuZG8tYW1zMy5zdGF0dXMucHJvZC5zdGF0dXMuaW0GAbveA4Jyc40AEAUAAQAgAEAAgAEAiXNlY3AyNTZrMaEC3rRtFQSgc24uWewzXaxTY8hDAHB8sgnxr9k8Rjb5GeSDdGNwgnZfg3VkcIIjKIV3YWt1Mg0\",\"enr:-QEcuEAoShWGyN66wwusE3Ri8hXBaIkoHZHybUB8cCPv5v3ypEf9OCg4cfslJxZFANl90s-jmMOugLUyBx4EfOBNJ6_VAYJpZIJ2NIJpcIQI2hdMim11bHRpYWRkcnO4bAAzNi5ib290LTAxLmFjLWNuLWhvbmdrb25nLWMuc3RhdHVzLnByb2Quc3RhdHVzLmltBnZfADU2LmJvb3QtMDEuYWMtY24taG9uZ2tvbmctYy5zdGF0dXMucHJvZC5zdGF0dXMuaW0GAbveA4Jyc40AEAUAAQAgAEAAgAEAiXNlY3AyNTZrMaEDP7CbRk-YKJwOFFM4Z9ney0GPc7WPJaCwGkpNRyla7mCDdGNwgnZfg3VkcIIjKIV3YWt1Mg0\",\"enr:-QEcuED7ww5vo2rKc1pyBp7fubBUH-8STHEZHo7InjVjLblEVyDGkjdTI9VdqmYQOn95vuQH-Htku17WSTzEufx-Wg4mAYJpZIJ2NIJpcIQihw1Xim11bHRpYWRkcnO4bAAzNi5ib290LTAxLmdjLXVzLWNlbnRyYWwxLWEuc3RhdHVzLnByb2Quc3RhdHVzLmltBnZfADU2LmJvb3QtMDEuZ2MtdXMtY2VudHJhbDEtYS5zdGF0dXMucHJvZC5zdGF0dXMuaW0GAbveA4Jyc40AEAUAAQAgAEAAgAEAiXNlY3AyNTZrMaECxjqgDQ0WyRSOilYU32DA5k_XNlDis3m1VdXkK9xM6kODdGNwgnZfg3VkcIIjKIV3YWt1Mg0\",\"enrtree://AMOJVZX4V6EXP7NTJPMAYJYST2QP6AJXYW76IU6VGJS7UVSNDYZG4@boot.prod.status.nodes.status.im\"],\"ClusterID\":16},\"LightEthConfig\":{\"Enabled\":false,\"DatabaseCache\":0,\"TrustedNodes\":null,\"MinTrustedFraction\":0},\"WakuConfig\":{\"Enabled\":false,\"LightClient\":false,\"FullNode\":false,\"EnableMailServer\":false,\"DataDir\":\"\",\"MinimumPoW\":0,\"MailServerPassword\":\"***\",\"MailServerRateLimit\":0,\"MailServerDataRetention\":0,\"TTL\":0,\"MaxMessageSize\":0,\"DatabaseConfig\":{\"PGConfig\":{\"Enabled\":false,\"URI\":\"\"}},\"EnableRateLimiter\":false,\"PacketRateLimitIP\":0,\"PacketRateLimitPeerID\":0,\"BytesRateLimitIP\":0,\"BytesRateLimitPeerID\":0,\"RateLimitTolerance\":0,\"BloomFilterMode\":false,\"SoftBlacklistedPeerIDs\":null,\"EnableConfirmations\":false},\"WakuV2Config\":{\"Enabled\":true,\"Host\":\"0.0.0.0\",\"Port\":0,\"LightClient\":true,\"FullNode\":false,\"DiscoveryLimit\":20,\"DataDir\":\"\",\"MaxMessageSize\":0,\"EnableConfirmations\":false,\"CustomNodes\":{},\"PeerExchange\":false,\"Nameserver\":\"\",\"EnableDiscV5\":true,\"UDPPort\":0,\"AutoUpdate\":true,\"EnableStore\":false,\"StoreCapacity\":0,\"StoreSeconds\":0,\"TelemetryServerURL\":\"\",\"EnableMissingMessageVerification\":true,\"EnableStoreConfirmationForMessagesSent\":false},\"BridgeConfig\":{\"Enabled\":false},\"ShhextConfig\":{\"PFSEnabled\":true,\"InstallationID\":\"8712b338-9a00-496b-92d4-8b6a8c53eb1f\",\"MailServerConfirmations\":true,\"EnableConnectionManager\":false,\"EnableLastUsedMonitor\":false,\"ConnectionTarget\":0,\"RequestsDelay\":0,\"MaxServerFailures\":0,\"MaxMessageDeliveryAttempts\":3,\"WhisperCacheDir\":\"\",\"DisableGenericDiscoveryTopic\":false,\"SendV1Messages\":false,\"DataSyncEnabled\":true,\"VerifyTransactionURL\":\"***\",\"VerifyENSURL\":\"***\",\"VerifyENSContractAddress\":\"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\"VerifyTransactionChainID\":5,\"DefaultPushNotificationsServers\":null,\"AnonMetricsSendID\":\"\",\"AnonMetricsServerEnabled\":false,\"AnonMetricsServerPostgresURI\":\"\",\"BandwidthStatsEnabled\":false},\"WalletConfig\":{\"Enabled\":true,\"StatusProxyEnabled\":false,\"EnableCelerBridge\":false},\"LocalNotificationsConfig\":{\"Enabled\":true},\"BrowsersConfig\":{\"Enabled\":true},\"PermissionsConfig\":{\"Enabled\":true},\"MailserversConfig\":{\"Enabled\":true},\"Web3ProviderConfig\":{\"Enabled\":false},\"ConnectorConfig\":{\"Enabled\":false},\"SwarmConfig\":{\"Enabled\":false},\"TorrentConfig\":{\"Enabled\":false,\"Port\":0,\"DataDir\":\"/data/user/0/im.status.ethereum.pr/no_backup/data/archivedata\",\"TorrentDir\":\"/data/user/0/im.status.ethereum.pr/no_backup/data/torrents\"},\"RegisterTopics\":null,\"RequireTopics\":{},\"MailServerRegistryAddress\":\"\",\"PushNotificationServerConfig\":{\"Enabled\":false,\"Identity\":null,\"GorushURL\":\"\"},\"OutputMessageCSVEnabled\":false,\"ProcessBackedupMessages\":false}" duration=26.861042ms
t=2024-10-21T07:33:01+0000 lvl=dbug msg=callPrivateRPC params="[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"wakuext_activityCenterNotifications\", duration=44.48625ms
Look at the time. I would expect wakuext_chatsPreview to be invoked soon after receiving signal node.login, but actually it isn't. It gets delayed for around 5-6 seconds. So we should figure out why the delay occurs on the frontend. Could you help take a look?
@qfrank, I can have a look yes, but at the moment, just looking at the code I don't see how the client could be the culprit of the delay.
wakuext_startMessenger
.:profile.login/messenger-started
.:fetch-chats-preview
.wakuext_chatsPreview
.I'll verify what's going on and share here 👍🏼
Look at the time. I would expect wakuext_chatsPreview to be invoked soon after receiving signal node.login, but actually it isn't. It gets delayed for around 5-6 seconds. So we should figure out why the delay occurs on the frontend
@qfrank I double-checked the code again and I'm sure now the reason for the 5-6s delay is caused by the status-go layer. When a signal node.login
arrives, the client immediately calls wakuext_startMessenger
. This endpoint will call messenger.InitFilters()
, which we know is not fast enough yet when it needs to process large communities such as Status (which is the case in the reproduction steps).
This is exactly what I expected from this issue, no? The problem is not really about the message history or how many messages are sent, it's about the time to initialize the messenger. The same root cause of issue https://github.com/status-im/status-mobile/pull/20173. On the client side we already eliminated the freeze to load large communities in https://github.com/status-im/status-mobile/pull/20164. I think all there's left to do is see if we can optimize messenger.InitFilters
any further.
In case we get stuck and can't optimize the Go code, we could initialize filters in steps (as separate goroutines) and send signals to the client as the processing progresses. For example, community chats could be a separate part of the filter initialization, but the part initializing chats from the DB could finish earlier and be processed concurrently. Or another example, the filters for pub keys from contacts could be initialized separately.
This would be a mitigation solution so that users of large communities can see other important data in the app before community filters are established. We could also consider processing communities concurrently to establish community filters (this could alleviate the problem for one of Status' users who is waiting for minutes and is part of multiple communities).
The downside is in terms of complexity on the client to process the messenger initialization using multiple signals, but the upside for the user could be a reduction in perceived latency to load data in the app.
cc @osmaczko @igor-sirotin
Thank you for the investigation! But how can we explain the timestamp 🤔
wakuext_startMessenger
finished in 1.063248541s, it was logged at 2024-10-21T07:32:54+0000, so it was invoked around at 2024-10-21T07:32:53
then frontend received node.login
at 2024-10-21T07:32:53.674Z , so wakuext_chatsPreview
should be invoked soon after 2024-10-21T07:32:53.674Z, but it was invoked at t=2024-10-21T07:32:59+0000
maybe we can draft a PR and add some log in frontend to see what the actual time when it start invoking wakuext_chatsPreview
and ask @pavloburykh to try the draft PR build ? WDYT? @ilmotta
In case we get stuck and can't optimize the Go code, we could initialize filters in steps (as separate goroutines) and send signals to the client as the processing progresses. For example, community chats could be a separate part of the filter initialization, but the part initializing chats from the DB could finish earlier and be processed concurrently. Or another example, the filters for pub keys from contacts could be initialized separately.
This would be a mitigation solution so that users of large communities can see other important data in the app before community filters are established. We could also consider processing communities concurrently to establish community filters (this could alleviate the problem for one of Status' users who is waiting for minutes and is part of multiple communities).
The downside is in terms of complexity on the client to process the messenger initialization using multiple signals, but the upside for the user could be a reduction in perceived latency to load data in the app.
This solution we definitely could try, but currently you can see that wakuext_startMessenger
only took around 1 second duration, so I'm more curious how to explain the timestamp ATM, is it because frontend not able to handle the data returned from some specific backend API efficiently or something like that?
This solution we definitely could try, but currently you can see that wakuext_startMessenger only took around 1 second duration, so I'm more curious how to explain the timestamp ATM, is it because frontend not able to handle the data returned from some specific backend API efficiently or something like that?
Doesn't hurt to ask, but are we sure the duration is calculated correctly?
You can try to comment out the line that calls [:dispatch [:community/fetch]]
in the login phase and see if it helps. That's the only event that could have significant overhead of seconds, at least that I can think of. Basically if you were able to reproduce this issue, try to comment out effects in :profile.login/login-existing-profile
and check logs.
I see the response from wakuext_startMessenger
is a large struct in status-go, but on the client we completely ignore https://github.com/status-im/status-mobile/blob/020d5cc1c124f9bd2e8931d5275102a7b093d573/src/status_im/contexts/profile/login/events.cljs#L133. Consider passing :js-response true
to the place calling wakuext_startMessenger
because otherwise the effect :json-rpc/call
will automatically transform the response as CLJS data, but we don't need that.
Edit: adding :js-response true
to can also significantly reduce freezes in lower end devices. Might be one of the reasons for freezes in https://github.com/status-im/status-mobile/issues/20283
Bug Report
Follow up of https://github.com/status-im/status-mobile/pull/21411 In this 👆 PR perfomance issue with message loading was already improved but seems that there is a way to make it more faster.
Reproduction
Expected behavior
Message history loading takes less then 20 sec
Actual behavior
Message history loading takes up to 20 sec
Receiver_1.zip Sender_1.zip
Additional Information