English counterpart of TROUBLESHOOTING.md. | Türkçe
Collect this information first without printing credential values:
java -version
clojure -Sdescribe
clojure -M:run
clojure -M:verify-environment
java or clojure Not Foundscripts/install-portable-jdk.ps1..toolchains/jdk-25* when a portable JDK is present.invalid-timestamp / Binance -1021Likely causes are clock drift, a stale offset in a long-lived client, or the wrong time unit.
(client/synchronize-time! connector)
Retry the signed workflow after synchronization. If you injected a custom :clock, offset management is your responsibility. Blindly increasing recvWindow does not fix the underlying clock problem.
invalid-signature / Binance -1022If credentials were exposed, revoke or rotate them at Binance.
api-key-ip-or-permission-rejected / -2015order/test and new orders require TRADE permission.order-not-found / -2013A query immediately after a new order can temporarily return -2013 during the Memory → Database visibility window. This alone does not prove rejection.
submit-order!.executionReport events.:unresolved cases to a manual or asynchronous reconciliation queue.illegal-characters / -1100A wire parameter violates Binance's lexical contract:
1E-8.float or double.BigDecimal or a plain-decimal string.decimal/normalize without changing the value.-1013exchangeInfo snapshot.PRICE_FILTER, LOT_SIZE, MIN_NOTIONAL, and NOTIONAL.PERCENT_PRICE(_BY_SIDE) are not fully reproduced by local V1 preflight.insufficient-balanceUse free balance from the account response; locked funds are unavailable. For BUY, account for quote notional; for SELL, base quantity and fees. Testnet resets may alter balances and order history.
429 or 418429: request/order limit exceeded. The connector honors Retry-After for safe reads when available, but the application must still reduce request rate.418: IP ban. The connector does not retry automatically. Do not create a request storm before the ban expires.5xxThe outcome of a state-changing command can be unknown. The most important rule is not to resend the same order.
(def lifecycle (spot/submit-order! connector symbol-info order))
For :unresolved, use the client order ID with REST queries and signed UDS. Raise a visible alert for a human operator.
wss traffic.:status, :last-error-category, and :reconnect-attempt in the snapshot.nil event-poll result can be a normal timeout; do not confuse it with disconnection.(streams/snapshot stream)
(user-stream/snapshot stream)
If :dropped increases, the consumer is too slow:
Binance WebSocket connections have a lifetime limit. The connector performs planned renewal/reconnect and restores subscriptions. A short gap remains possible; REST snapshots and reconciliation must be part of the design.
Default clojure -X:integration-test is offline. Live gates require explicit environment flags, which the release script scopes for you:
.\scripts\verify-phase-9.ps1 -RunFullTestnet
This command requires real Spot Testnet credentials and creates then cancels one virtual LIMIT order.
The scanner may have found an exact process credential value in repository text. Do not print the value again:
clojure -M:secret-scan again.clojure -X:test
clojure -X:integration-test
clojure -M:secret-scan
clojure -M:lint
clojure -M:format-check
Include operating system, JDK/Clojure versions, commit/tag, a minimal example, and secret-safe error ex-data. Never include an API key, secret, private key, signature, or signed query.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |