Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bitmex.Rest.RateLimiter ArgumentError #7

Open
masterkain opened this issue Mar 2, 2019 · 1 comment
Open

Bitmex.Rest.RateLimiter ArgumentError #7

masterkain opened this issue Mar 2, 2019 · 1 comment

Comments

@masterkain
Copy link

I'm trying a simple Bitmex.Rest.Order.delete(order_ids) against bitmex live:

04:08:06.439 [error] GenServer Bitmex.Rest.RateLimiter terminating
** (ArgumentError) argument error
    :erlang.element(2, nil)
    (bitmex) lib/bitmex/rest/rate_limiter.ex:57: Bitmex.Rest.RateLimiter.parse_to_int/2
    (bitmex) lib/bitmex/rest/rate_limiter.ex:35: Bitmex.Rest.RateLimiter.handle_call/3
    (stdlib) gen_server.erl:661: :gen_server.try_handle_call/4
    (stdlib) gen_server.erl:690: :gen_server.handle_msg/6
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Last message (from #PID<0.1411.0>): {:set_rate, [{"Date", "Sat, 02 Mar 2019 03:08:06 GMT"}, {"Content-Type", "application/json; charset=utf-8"}, {"Content-Length", "86"}, {"Connection", "keep-alive"}, {"Set-Cookie", "AWSALB=xxxx+; Expires=Sat, 09 Mar 2019 03:08:06 GMT; Path=/"}, {"ETag", "W/\"56-ClBa+ONjQwDiPDbsrZZF0fLcWX4\""}, {"Strict-Transport-Security", "max-age=31536000; includeSubDomains"}]}
State: %{rate: %{limit: 300, remaining: 300, reset: nil}}
Client #PID<0.1411.0> is alive

    (stdlib) gen.erl:169: :gen.do_call/4
    (elixir) lib/gen_server.ex:986: GenServer.call/3
    (bitmex) lib/bitmex/rest/requester.ex:46: Bitmex.Rest.Requester.handle_info/2
    (stdlib) gen_server.erl:637: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:711: :gen_server.handle_msg/6
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
04:08:06.443 [error] GenServer #PID<0.1411.0> terminating
** (stop) exited in: GenServer.call(Bitmex.Rest.RateLimiter, {:set_rate, [{"Date", "Sat, 02 Mar 2019 03:08:06 GMT"}, {"Content-Type", "application/json; charset=utf-8"}, {"Content-Length", "86"}, {"Connection", "keep-alive"}, {"Set-Cookie", "AWSALB=xxxx+; Expires=Sat, 09 Mar 2019 03:08:06 GMT; Path=/"}, {"ETag", "W/\"56-ClBa+ONjQwDiPDbsrZZF0fLcWX4\""}, {"Strict-Transport-Security", "max-age=31536000; includeSubDomains"}]}, 5000)
    ** (EXIT) an exception was raised:
        ** (ArgumentError) argument error
            :erlang.element(2, nil)
            (bitmex) lib/bitmex/rest/rate_limiter.ex:57: Bitmex.Rest.RateLimiter.parse_to_int/2
            (bitmex) lib/bitmex/rest/rate_limiter.ex:35: Bitmex.Rest.RateLimiter.handle_call/3
            (stdlib) gen_server.erl:661: :gen_server.try_handle_call/4
            (stdlib) gen_server.erl:690: :gen_server.handle_msg/6
            (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
    (elixir) lib/gen_server.ex:989: GenServer.call/3
    (bitmex) lib/bitmex/rest/requester.ex:46: Bitmex.Rest.Requester.handle_info/2
    (stdlib) gen_server.erl:637: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:711: :gen_server.handle_msg/6
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Last message: %HTTPoison.AsyncHeaders{headers: [{"Date", "Sat, 02 Mar 2019 03:08:06 GMT"}, {"Content-Type", "application/json; charset=utf-8"}, {"Content-Length", "86"}, {"Connection", "keep-alive"}, {"Set-Cookie", "AWSALB=xxxx+; Expires=Sat, 09 Mar 2019 03:08:06 GMT; Path=/"}, {"ETag", "W/\"56-ClBa+ONjQwDiPDbsrZZF0fLcWX4\""}, {"Strict-Transport-Security", "max-age=31536000; includeSubDomains"}], id: #Reference<0.994756842.2994995206.103419>}
State: %{async_id: #Reference<0.994756842.2994995206.103419>, client: {#PID<0.1201.0>, #Reference<0.994756842.2994995206.103385>}, request_url: "https://www.bitmex.com/api/v1/order", response: "", status_code: 400, user: {#PID<0.1227.0>, #Reference<0.994756842.2994995206.103384>}}
04:08:06.444 [error] GenServer #PID<0.1227.0> terminating
** (stop) exited in: GenServer.call(Bitmex.Rest.Client, {:auth_delete, "/order", "647811ea-f93a-6ce6-e1a4-55c6821cd8aa"}, :infinity)
    ** (EXIT) exited in: GenServer.call(Bitmex.Rest.RateLimiter, {:set_rate, [{"Date", "Sat, 02 Mar 2019 03:08:06 GMT"}, {"Content-Type", "application/json; charset=utf-8"}, {"Content-Length", "86"}, {"Connection", "keep-alive"}, {"Set-Cookie", "AWSALB=xxxx+; Expires=Sat, 09 Mar 2019 03:08:06 GMT; Path=/"}, {"ETag", "W/\"56-ClBa+ONjQwDiPDbsrZZF0fLcWX4\""}, {"Strict-Transport-Security", "max-age=31536000; includeSubDomains"}]}, 5000)
        ** (EXIT) an exception was raised:
            ** (ArgumentError) argument error
                :erlang.element(2, nil)
                (bitmex) lib/bitmex/rest/rate_limiter.ex:57: Bitmex.Rest.RateLimiter.parse_to_int/2
                (bitmex) lib/bitmex/rest/rate_limiter.ex:35: Bitmex.Rest.RateLimiter.handle_call/3
                (stdlib) gen_server.erl:661: :gen_server.try_handle_call/4
                (stdlib) gen_server.erl:690: :gen_server.handle_msg/6
                (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
    (elixir) lib/gen_server.ex:989: GenServer.call/3
    (myproj) lib/myproj/order.ex:102: Myproj.Order.ensure_stop_loss/2
    (myproj) lib/myproj/brain.ex:8: Myproj.Brain.make_decision/1
    (elixir) lib/enum.ex:769: Enum."-each/2-lists^foreach/1-0-"/2
    (elixir) lib/enum.ex:769: Enum.each/2
    (myproj) lib/myproj/brain_scheduler.ex:28: Myproj.Brain.Scheduler.handle_info/2
    (stdlib) gen_server.erl:637: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:711: :gen_server.handle_msg/6
Last message: :tick
State: []

any idea? thanks

@masterkain
Copy link
Author

masterkain commented Mar 2, 2019

on testnet (in my case MIX_ENV=dev) it seems to work:

{:ok,
 %HTTPoison.Response{
   body: %{"error" => %{"message" => "Not Found", "name" => "HTTPError"}},
   headers: [
     {"Date", "Sat, 02 Mar 2019 16:46:22 GMT"},
     {"Content-Type", "application/json; charset=utf-8"},
     {"Content-Length", "52"},
     {"Connection", "keep-alive"},
     {"X-RateLimit-Limit", "300"},
     {"X-RateLimit-Remaining", "294"},
     {"X-RateLimit-Reset", "1551545183"},
     {"X-Powered-By", "Profit"},
     {"ETag", "W/\"34-RQXM2uXYmuIoWfjaEE+8njrbtb0\""},
     {"Strict-Transport-Security", "max-age=31536000; includeSubDomains"}
   ],
   request: nil,
   request_url: "https://testnet.bitmex.com/api/v1/order",
   status_code: 404
 }}

maybe in live there are no X-RateLimit headers at the moment? not sure.

another issue with async httpoison requests is that at present time it makes not possible to work out specs with exvcr due to this: parroty/exvcr#75

Repository owner deleted a comment from H4wk-eye Feb 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants
@masterkain and others