knowm / XChange

XChange is a Java library providing a streamlined API for interacting with 60+ Bitcoin and Altcoin exchanges providing a consistent interface for trading and accessing market data.
http://knowm.org/open-source/xchange/
MIT License
3.84k stars 1.94k forks source link

Bitfinex: Nonce is too small #3840

Open gewure opened 3 years ago

gewure commented 3 years ago

i discovered this occassionally using bitfinex-streaming:

2020-12-16 06:57:44.137 ERROR 2502740 --- [or-http-epoll-2] a.w.r.e.AbstractErrorWebExceptionHandler : [01a211a4-1]  500 Server Error for HTTP GET "/run"

org.knowm.xchange.bitfinex.v1.dto.BitfinexExceptionV1: Nonce is too small.
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
    |_ checkpoint ⇢ HTTP GET "/run" [ExceptionHandlingWebHandler]
Stack trace:
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[na:na]
        at com.fasterxml.jackson.databind.introspect.AnnotatedConstructor.call(AnnotatedConstructor.java:124) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:283) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.deser.ValueInstantiator.createFromObjectWith(ValueInstantiator.java:229) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:202) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:424) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.deser.std.ThrowableDeserializer.deserializeFromObject(ThrowableDeserializer.java:65) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:164) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4526) ~[jackson-databind-2.11.3.jar:2.11.3]
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3468) ~[jackson-databind-2.11.3.jar:2.11.3]
        at si.mazi.rescu.serialization.jackson.JacksonResponseReader.read(JacksonResponseReader.java:53) ~[rescu-2.0.4.jar:na]
        at si.mazi.rescu.serialization.jackson.JacksonResponseReader.readException(JacksonResponseReader.java:58) ~[rescu-2.0.4.jar:na]
        at si.mazi.rescu.ResponseReader.read(ResponseReader.java:82) ~[rescu-2.0.4.jar:na]
        at si.mazi.rescu.RestInvocationHandler.mapInvocationResult(RestInvocationHandler.java:179) ~[rescu-2.0.4.jar:na]
        at si.mazi.rescu.RestInvocationHandler.receiveAndMap(RestInvocationHandler.java:167) ~[rescu-2.0.4.jar:na]
        at si.mazi.rescu.RestInvocationHandler.invoke(RestInvocationHandler.java:123) ~[rescu-2.0.4.jar:na]
        at com.sun.proxy.$Proxy80.balances(Unknown Source) ~[na:na]
        at org.knowm.xchange.bitfinex.service.BitfinexAccountServiceRaw.getBitfinexAccountInfo(BitfinexAccountServiceRaw.java:62) ~[xchange-bitfinex-5.0.4.jar:na]
        at org.knowm.xchange.bitfinex.service.BitfinexAccountService.getAccountInfo(BitfinexAccountService.java:37) ~[xchange-bitfinex-5.0.4.jar:na]
earce commented 3 years ago

May be worth changing the nonce factory on this class and using the new default to see if you have anymore luck. The existing implementation AtomicLongIncrementalTime2013NonceFactory probably shouldn't be used anymore.

garciapd commented 3 years ago

Hi @gewure , did you manage to change it and make it work?