marco_polo icon indicating copy to clipboard operation
marco_polo copied to clipboard

Error when trying to connect to Orientdb 2.2.5

Open ospaarmann opened this issue 8 years ago • 9 comments

When upgrading OrientDB to 2.2.5 and trying to connect I get the following error:

** (Mix) Could not start application my_api: MyApi.start(:normal, []) returned an error: shutdown: failed to start child: MyApi.OrientdbPool
    ** (EXIT) shutdown: failed to start child: :orientdb_poolboy
        ** (EXIT) an exception was raised:
            ** (MatchError) no match of right hand side value: {:error, {:EXIT, {{:badarg, [{MarcoPolo.Protocol.Types, :encode, 1, [file: 'lib/marco_polo/protocol/types.ex', line: 48]}, {Enum, :"-map/2-lists^map/1-0-", 2, [file: 'lib/enum.ex', line: 1088]}, {Enum, :"-map/2-lists^map/1-0-", 2, [file: 'lib/enum.ex', line: 1088]}, {MarcoPolo.Protocol, :encode_op, 2, [file: 'lib/marco_polo/protocol.ex', line: 31]}, {MarcoPolo.Connection.Auth, :authenticate, 1, [file: 'lib/marco_polo/connection/auth.ex', line: 48]}, {MarcoPolo.Connection, :connect, 2, [file: 'lib/marco_polo/connection.ex', line: 134]}, {Connection, :enter_connect, 5, [file: 'lib/connection.ex', line: 622]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 240]}]}, {:gen_server, :call, [#PID<0.365.0>, :fetch_schema]}}}}
                src/poolboy.erl:275: :poolboy.new_worker/1
                src/poolboy.erl:296: :poolboy.prepopulate/3
                src/poolboy.erl:145: :poolboy.init/3
                (stdlib) gen_server.erl:328: :gen_server.init_it/6
                (stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3

Edit: Just to clarify: I use poolboy to start the a pool of MarcoPolo processes. When trying to connect directly in the console, I get a timeout error:

iex(1)> {:ok, conn} = MarcoPolo.start_link(user: "root", password: "password", connection: {:db, "mydb_dev", :graph})
** (exit) exited in: :gen_server.call(#PID<0.612.0>, :fetch_schema)
    ** (EXIT) time out
    (stdlib) gen_server.erl:204: :gen_server.call/2
             lib/marco_polo/connection.ex:55: MarcoPolo.Connection.start_link/1
iex(1)> [error] GenServer #PID<0.612.0> terminating
** (stop) time out
Last message: nil
State: %{live_query_tokens: #HashDict<[]>, opts: [host: "localhost", port: 2424, user: "root", password: "password", connection: {:db, "mydb_dev", :graph}], protocol_version: 36, queue: {[], []}, schema: nil, session_id: nil, socket: #Port<0.22367>, tail: "", transaction_id: 1}
** (EXIT from #PID<0.610.0>) time out

ospaarmann avatar Jul 26 '16 19:07 ospaarmann

Hey @ospaarmann, can you show the code you're using to establish the connection? Thanks!

whatyouhide avatar Jul 29 '16 19:07 whatyouhide

I got the same error.

MarcoPolo.start_link user: "root", password: "root", connection: {:db, "demo", :graph}

ammbot avatar Aug 18 '16 08:08 ammbot

What version of MarcoPolo are you using?

whatyouhide avatar Aug 18 '16 12:08 whatyouhide

I tried with no success all versions: 0.2.x Dispite of info "warnings" during mix deps.compile
This one maybe is pretty much the bad boy causing errors

warning: function Error.exception/1 is undefined (module Error is not available) lib/marco_polo/connection/auth.ex:104

iex(1)> {:ok, conn} = MarcoPolo.start_link(host: "localhost", port: 2424, user: "root", password: "*****",connection: {:db, "test", :graph}) * (exit) exited in: :gen_server.call(#PID<0.314.0>, :fetch_schema) ** (EXIT) time out (stdlib) gen_server.erl:204: :gen_server.call/2 lib/marco_polo/connection.ex:55: MarcoPolo.Connection.start_link/1 ** (EXIT from #PID<0.312.0>) time out

Version 0.1 all works fine! :)

But it´s a shame not use all improvments u made. Do you have any idea of time to working on it ? and the next features like integrating with ecto as you said ?

We all here loves the orientdb. I decided to get away with java spring forever using phoenix and with this driver will be hard and with a lot of pain.

Tks I hope u can with orientdb make this driver official.

caiovmv avatar Sep 26 '16 04:09 caiovmv

@caiovmv can you try to use MarcoPolo from master?

Also, there won't be any Ecto integration any time soon, so please don't count on that :). And also, contributions are more than welcome to this project in case you want to get your hands dirty :)!

whatyouhide avatar Sep 26 '16 16:09 whatyouhide

Hey, sorry for the late reply. Would be great if you could have a look into this. When I'm using MarcoPolo from master, this happens:

{:ok, conn} = MarcoPolo.start_link(user: "root", password: "password", connection: {:db, "mydb_dev"})


** (EXIT from #PID<0.835.0>) an exception was raised:
    ** (ArgumentError) argument error
        lib/marco_polo/protocol/types.ex:48: MarcoPolo.Protocol.Types.encode/1
        (elixir) lib/enum.ex:1184: Enum."-map/2-lists^map/1-0-"/2
        (elixir) lib/enum.ex:1184: Enum."-map/2-lists^map/1-0-"/2
        lib/marco_polo/protocol.ex:31: MarcoPolo.Protocol.encode_op/2
        lib/marco_polo/connection/auth.ex:48: MarcoPolo.Connection.Auth.authenticate/1
        lib/marco_polo/connection.ex:134: MarcoPolo.Connection.connect/2
        lib/connection.ex:622: Connection.enter_connect/5
        (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
iex(2)> [error] GenServer #PID<0.838.0> terminating
** (ArgumentError) argument error
    lib/marco_polo/protocol/types.ex:48: MarcoPolo.Protocol.Types.encode/1
    (elixir) lib/enum.ex:1184: Enum."-map/2-lists^map/1-0-"/2
    (elixir) lib/enum.ex:1184: Enum."-map/2-lists^map/1-0-"/2
    lib/marco_polo/protocol.ex:31: MarcoPolo.Protocol.encode_op/2
    lib/marco_polo/connection/auth.ex:48: MarcoPolo.Connection.Auth.authenticate/1
    lib/marco_polo/connection.ex:134: MarcoPolo.Connection.connect/2
    lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: nil
State: %{distrib_config: nil, live_query_tokens: #HashDict<[]>, opts: [port: 2424, host: "localhost", ssl: false, user: "root", password: "password", connection: {:db, "mydb_dev"}], protocol_version: nil, queue: {[], []}, schema: nil, session_id: nil, socket: nil, socket_module: :gen_tcp, tail: "", transaction_id: 1}

And when using the latest release:

iex(1)> MarcoPolo.start_link(user: "admin", password: "password", connection: {:db, "mydb_dev", :graph})

** (exit) exited in: :gen_server.call(#PID<0.501.0>, :fetch_schema)
    ** (EXIT) time out
    (stdlib) gen_server.erl:204: :gen_server.call/2
             lib/marco_polo/connection.ex:55: MarcoPolo.Connection.start_link/1
iex(1)> [error] GenServer #PID<0.501.0> terminating
** (stop) time out
Last message: nil
State: %{live_query_tokens: #HashDict<[]>, opts: [host: "localhost", port: 2424, user: "admin", password: "password", connection: {:db, "mydb_dev", :graph}], protocol_version: 36, queue: {[], []}, schema: nil, session_id: nil, socket: #Port<0.14305>, tail: "", transaction_id: 1}
** (EXIT from #PID<0.498.0>) time out

This only happens with the latest versions of OrientDB. I have no idea why this time out occurs. Any hint or idea is highly appreciated! Thanks

ospaarmann avatar Nov 14 '16 21:11 ospaarmann

I'm experiencing the same issue as @ospaarmann with version 2.2.20

rlindgren avatar May 30 '17 19:05 rlindgren

I'm experiencing timeouts as well with version 2.2.18 and marco_polo 0.2.x (tried all versions), however marco_polo 0.1.0 works.

stoft avatar Jul 18 '17 08:07 stoft

Hey @stoft, I am not maintaining this for the time being and as far as I know there is nobody else doing so. If you manage to find a fix for this though, send a PR and I'll gladly review :)

whatyouhide avatar Jul 18 '17 09:07 whatyouhide