hedera-mirror-node
hedera-mirror-node copied to clipboard
Mirror Node Web3 returns exception when nonce is more consensus node
Description
In case that account ethereum nonce is different from the one in the consensus node. And this difference is larger than 1, this results in web3 exception, which breaks the flow of sending the transaction.
org.springframework.dao.IncorrectResultSizeDataAccessException: Query did not return a unique result: 2 results were returned
2024-02-13 13:49:47 at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:301)
2024-02-13 13:49:47 at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244)
2024-02-13 13:49:47 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550)
2024-02-13 13:49:47 at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
2024-02-13 13:49:47 at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335)
2024-02-13 13:49:47 at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
2024-02-13 13:49:47 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
2024-02-13 13:49:47 at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:135)
2024-02-13 13:49:47 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
2024-02-13 13:49:47 at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
2024-02-13 13:49:47 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
2024-02-13 13:49:47 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:220)
2024-02-13 13:49:47 at jdk.proxy2/jdk.proxy2.$Proxy206.findByEvmAddressAndDeletedIsFalse(Unknown Source)
2024-02-13 13:49:47 at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
2024-02-13 13:49:47 at java.base/java.lang.reflect.Method.invoke(Unknown Source)
2024-02-13 13:49:47 at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351)
2024-02-13 13:49:47 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
2024-02-13 13:49:47 at jdk.proxy2/jdk.proxy2.$Proxy206.findByEvmAddressAndDeletedIsFalse(Unknown Source)
2024-02-13 13:49:47 at com.hedera.mirror.web3.evm.store.accessor.EntityDatabaseAccessor.lambda$getEntityByEvmAddressAndTimestamp$3(EntityDatabaseAccessor.java:64)
2024-02-13 13:49:47 at java.base/java.util.Optional.orElseGet(Unknown Source)
2024-02-13 13:49:47 at com.hedera.mirror.web3.evm.store.accessor.EntityDatabaseAccessor.getEntityByEvmAddressAndTimestamp(EntityDatabaseAccessor.java:64)
2024-02-13 13:49:47 at com.hedera.mirror.web3.evm.store.accessor.EntityDatabaseAccessor.get(EntityDatabaseAccessor.java:47)
2024-02-13 13:49:47 at com.hedera.mirror.web3.evm.store.accessor.AccountDatabaseAccessor.get(AccountDatabaseAccessor.java:79)
2024-02-13 13:49:47 at com.hedera.mirror.web3.evm.store.DatabaseBackedStateFrame.getValue(DatabaseBackedStateFrame.java:56)
2024-02-13 13:49:47 at com.hedera.mirror.web3.evm.store.CachingStateFrame$AccessorImpl.get(CachingStateFrame.java:176)
2024-02-13 13:49:47 at com.hedera.mirror.web3.evm.store.ROCachingStateFrame.lambda$getValue$0(ROCachingStateFrame.java:40)
Steps to reproduce
- Start local-node
- Change account nonce to be at least 2 more than the one in the consensus node
- Try to send ETHEREUMTRANSACTION
- Observe mirror-node-web3
Additional context
No response
Hedera network
other
Version
main
Operating system
None