Не удается запустить Xandra с Cassandra 3 - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь работать с библиотекой Elixir / Xandra (https://github.com/lexhide/xandra)

У меня проблемы с правильной настройкой. Вот мой сеанс оболочки iex:

defmodule MyApp.CassandraAuth do
  @behaviour Xandra.Authenticator

  def response_body(options) do
    ["user:", "cassandra", "_password:", "cassandra"]
  end
end

{:ok, conn} = Xandra.start_link(
  nodes: ["127.0.0.1:9042", "127.0.0.1:9043"],
  authentication: {MyApp.CassandraAuth, user: "cassandra", password: "cassandra"},
  name: :xandra_pool,
  pool: Xandra.Cluster,
  after_connect: fn(conn) -> Xandra.execute(conn, "USE ks_test") end
)

{:ok, prepared} = Xandra.prepare(
  conn,
  "SELECT * FROM ts WHERE datapoint_id = ? ORDER BY time ASC LIMIT 10"
)

Результат последнего вызовав следующей ошибке:

17:09:24.134 [error] GenServer :xandra_pool terminating
** (FunctionClauseError) no function clause matching in Xandra.Cluster.handle_call/3
(xandra) lib/xandra/cluster.ex:162: Xandra.Cluster.handle_call({:checkout, #Reference<0.1872713690.1148452865.108070>, true, 15000}, {#PID<0.299.0>, #Reference<0.1872713690.1148452865.108071>}, %Xandra.Cluster{load_balancing: :random, node_refs: [{#Reference<0.1872713690.1148452865.107855>, nil}, {#Reference<0.1872713690.1148452865.107860>, nil}], options: [prepared_cache: #Reference<0.1872713690.1148583937.107852>, idle_timeout: 30000, authentication: {MyApp.CassizerAuth, [user: "cassandra", password: "cassandra"]}, after_connect: #Function<6.99386804/1 in :erl_eval.expr/5>], pool_module: DBConnection.Connection, pool_supervisor: #PID<0.302.0>, pools: %{}})
(stdlib) gen_server.erl:636: :gen_server.try_handle_call/4
(stdlib) gen_server.erl:665: :gen_server.handle_msg/6
(stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message (from #PID<0.299.0>): {:checkout, #Reference<0.1872713690.1148452865.108070>, true, 15000}
State: %Xandra.Cluster{load_balancing: :random, node_refs: [{#Reference<0.1872713690.1148452865.107855>, nil}, {#Reference<0.1872713690.1148452865.107860>, nil}], options: [prepared_cache: #Reference<0.1872713690.1148583937.107852>, idle_timeout: 30000, authentication: {MyApp.CassandraAuth, [user: "cassandra", password: "cassandra"]}, after_connect: #Function<6.99386804/1 in :erl_eval.expr/5>], pool_module: DBConnection.Connection, pool_supervisor: #PID<0.302.0>, pools: %{}}
Client #PID<0.299.0> is alive
(stdlib) gen.erl:169: :gen.do_call/4
(stdlib) gen_server.erl:210: :gen_server.call/3
(db_connection) lib/db_connection/connection.ex:50:   DBConnection.Connection.checkout/2
(db_connection) lib/db_connection.ex:928: DBConnection.checkout/2
(db_connection) lib/db_connection.ex:750: DBConnection.run/3
(db_connection) lib/db_connection.ex:1141: DBConnection.run_meter/3
(db_connection) lib/db_connection.ex:538: DBConnection.prepare/3
(xandra) lib/xandra.ex:382: Xandra.prepare!/3

Затем следует

17:09:24.135 [error] GenServer #PID<0.302.0> terminating
** (FunctionClauseError) no function clause matching in Xandra.Cluster.handle_call/3
(xandra) lib/xandra/cluster.ex:162: Xandra.Cluster.handle_call({:checkout, #Reference<0.1872713690.1148452865.108070>, true, 15000}, {#PID<0.299.0>, #Reference<0.1872713690.1148452865.108071>}, %Xandra.Cluster{load_balancing: :random, node_refs: [{#Reference<0.1872713690.1148452865.107855>, nil}, {#Reference<0.1872713690.1148452865.107860>, nil}], options: [prepared_cache: #Reference<0.1872713690.1148583937.107852>, idle_timeout: 30000, authentication: {PortalTimeseries.CassizerAuth, [user: "cassandra", password: "cassandra"]}, after_connect: #Function<6.99386804/1 in :erl_eval.expr/5>], pool_module: DBConnection.Connection, pool_supervisor: #PID<0.302.0>, pools: %{}})
(stdlib) gen_server.erl:636: :gen_server.try_handle_call/4
(stdlib) gen_server.erl:665: :gen_server.handle_msg/6
(stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: {:EXIT, #PID<0.301.0>, {:function_clause, [{Xandra.Cluster, :handle_call, [{:checkout, #Reference<0.1872713690.1148452865.108070>, true, 15000}, {#PID<0.299.0>, #Reference<0.1872713690.1148452865.108071>}, %Xandra.Cluster{load_balancing: :random, node_refs: [{#Reference<0.1872713690.1148452865.107855>, nil}, {#Reference<0.1872713690.1148452865.107860>, nil}], options: [prepared_cache: #Reference<0.1872713690.1148583937.107852>, idle_timeout: 30000, authentication: {MyApp.CassandraAuth, [user: "cassandra", password: "cassandra"]}, after_connect: #Function<6.99386804/1 in :erl_eval.expr/5>], pool_module: DBConnection.Connection, pool_supervisor: #PID<0.302.0>, pools: %{}}], [file: 'lib/xandra/cluster.ex', line: 162]}, {:gen_server, :try_handle_call, 4, [file: 'gen_server.erl', line: 636]}, {:gen_server, :handle_msg, 6, [file: 'gen_server.erl', line: 665]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 247]}]}}
State: {:state, {#PID<0.302.0>, Supervisor.Default}, :one_for_one, [], :undefined, 0, 5, [], 0, Supervisor.Default, {:ok, {%{intensity: 0, period: 5, strategy: :one_for_one}, []}}}

Что я делаю не так?

...