Crash on poloniex maintenance mode #261
Labels
No labels
blocked
breaking
bug
dependencies
duplicate
enhancement
good first issue
help wanted
question
tech debt
testing
wontfix
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set.
Reference
scion/arbitrader#261
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
arbitrader $ docker-compose up
Starting arbitrader_arbitrader_1 ... done
Attaching to arbitrader_arbitrader_1
arbitrader_1 | Listening for transport dt_socket at address: 5005
arbitrader_1 |
arbitrader_1 | $$$$$$\ $$\ $$\ $$\ $$
arbitrader_1 |
\| _|||arbitrader_1 |
/| $$$$$$\ $$$$$$$\ $$\ $$$$$$\ $$$$$$\ $$$$$$\ $$$| $$$$$$\ $$$$$$arbitrader_1 | $$$$
|__\_\|__|$$\ _\__|__\__$$arbitrader_1 |
__|| \__|||||| _|$$$|/|$$$$|| _|arbitrader_1 |
|||||||\|__|||____||arbitrader_1 |
||| $$$|| $$ || $$$|$$$|$$$$$\|arbitrader_1 | _| _|_| _/ _| _/ _| _| _| _____|_|
arbitrader_1 |
arbitrader_1 | 2020-11-15 10:29:19.725 INFO 1 --- [ main] com.r307.arbitrader.Arbitrader : Starting Arbitrader on 943aa89af536 with PID 1 (/opt/app/app.jar started by root in /)
arbitrader_1 | 2020-11-15 10:29:19.745 INFO 1 --- [ main] com.r307.arbitrader.Arbitrader : No active profile set, falling back to default profiles: default
arbitrader_1 | 2020-11-15 10:29:25.010 INFO 1 --- [ main] org.knowm.xchange.quoine.QuoineExchange : Calling Remote Init...
arbitrader_1 | 2020-11-15 10:29:25.012 INFO 1 --- [ main] org.knowm.xchange.quoine.QuoineExchange : No remote initialization implemented for Quoine. The exchange meta data for this exchange is loaded from a json file containing hard-coded exchange meta-data. This may or may not be OK for you, and you should understand exactly how this works. Each exchange can either 1) rely on the hard-coded json file that comes packaged with XChange's jar, 2) provide your own override json file, 3) properly implement the
remoteInit()method for the exchange (please submit a pull request so the whole community can benefit) or 4) a combination of hard-coded JSON and remote API calls. For more info see: https://github.com/timmolter/XChange/wiki/Design-Notes#exchange-metadataarbitrader_1 | 2020-11-15 10:29:27.008 INFO 1 --- [ main] o.k.xchange.poloniex.PoloniexExchange : Calling Remote Init...
arbitrader_1 | 2020-11-15 10:29:27.216 WARN 1 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tradingService': Invocation of init method failed; nested exception is org.knowm.xchange.exceptions.ExchangeException: si.mazi.rescu.HttpStatusIOException: HTTP status code was not OK: 403
arbitrader_1 | 2020-11-15 10:29:27.273 ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed
arbitrader_1 |
arbitrader_1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tradingService': Invocation of init method failed; nested exception is org.knowm.xchange.exceptions.ExchangeException: si.mazi.rescu.HttpStatusIOException: HTTP status code was not OK: 403
arbitrader_1 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160)
arbitrader_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:415)
arbitrader_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786)
arbitrader_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
arbitrader_1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
arbitrader_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
arbitrader_1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
arbitrader_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
arbitrader_1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
arbitrader_1 | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
arbitrader_1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
arbitrader_1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
arbitrader_1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
arbitrader_1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
arbitrader_1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
arbitrader_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
arbitrader_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
arbitrader_1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
arbitrader_1 | at com.r307.arbitrader.Arbitrader.main(Arbitrader.java:13)
arbitrader_1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
arbitrader_1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
arbitrader_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
arbitrader_1 | at java.lang.reflect.Method.invoke(Method.java:498)
arbitrader_1 | at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
arbitrader_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
arbitrader_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
arbitrader_1 | at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
arbitrader_1 | Caused by: org.knowm.xchange.exceptions.ExchangeException: si.mazi.rescu.HttpStatusIOException: HTTP status code was not OK: 403
arbitrader_1 | at org.knowm.xchange.BaseExchange.applySpecification(BaseExchange.java:109)
arbitrader_1 | at org.knowm.xchange.ExchangeFactory.createExchange(ExchangeFactory.java:130)
arbitrader_1 | at com.r307.arbitrader.service.TradingService.lambda$connectExchanges$1(TradingService.java:145)
arbitrader_1 | at java.util.ArrayList.forEach(ArrayList.java:1259)
arbitrader_1 | at com.r307.arbitrader.service.TradingService.connectExchanges(TradingService.java:111)
arbitrader_1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
arbitrader_1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
arbitrader_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
arbitrader_1 | at java.lang.reflect.Method.invoke(Method.java:498)
arbitrader_1 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
arbitrader_1 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
arbitrader_1 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
arbitrader_1 | ... 26 common frames omitted
arbitrader_1 | Caused by: si.mazi.rescu.HttpStatusIOException: HTTP status code was not OK: 403
arbitrader_1 | at si.mazi.rescu.ResponseReader.read(ResponseReader.java:104)
arbitrader_1 | at si.mazi.rescu.RestInvocationHandler.mapInvocationResult(RestInvocationHandler.java:175)
arbitrader_1 | at si.mazi.rescu.RestInvocationHandler.receiveAndMap(RestInvocationHandler.java:163)
arbitrader_1 | at si.mazi.rescu.RestInvocationHandler.invoke(RestInvocationHandler.java:119)
arbitrader_1 | at com.sun.proxy.$Proxy53.getCurrencyInfo(Unknown Source)
arbitrader_1 | at org.knowm.xchange.poloniex.service.PoloniexMarketDataServiceRaw.getPoloniexCurrencyInfo(PoloniexMarketDataServiceRaw.java:40)
arbitrader_1 | at org.knowm.xchange.poloniex.PoloniexExchange.remoteInit(PoloniexExchange.java:56)
arbitrader_1 | at org.knowm.xchange.BaseExchange.applySpecification(BaseExchange.java:107)
arbitrader_1 | ... 37 common frames omitted
arbitrader_1 |
arbitrader_arbitrader_1 exited with code 1
Is not it better for the software to stay running and check each 5 minutes or so if we have exchange connection instead
crashing ?
Currently i think poloniex is in maintenance mode and thats why it crashes.
This looks like a duplicate of #151 . Arbitrader will throw an exception on startup if it can’t connect to any of its exchanges.
I commented #151