rbino / tigerbeetlex

An Elixir client for TigerBeetle
Apache License 2.0
35 stars 6 forks source link

mix test error - tigerbeetle - reason=release_too_high (0.15.4) #47

Open jeryldev opened 1 month ago

jeryldev commented 1 month ago

Steps to reproduce

  1. git clone --recurse-submodules https://github.com/rbino/tigerbeetlex.git
  2. cd tigerbeetlex/src/tigerbeetle
  3. scripts/install_zig.sh
  4. zig/zig build
  5. ./tigerbeetle version
  6. ./tigerbeetle format --cluster=0 --replica=0 --replica-count=1 --development 0_0.tigerbeetle
  7. ./tigerbeetle start --addresses=3000 --development 0_0.tigerbeetle
  8. Open another terminal and run the following commands:
    • cd tigerbeetlex
    • mix deps.get
    • mix test

Error messages shown after running mix test

Running ExUnit with seed: 793230, max_cases: 32

error(client): 23646605303667990745101654218979763187: session evicted: reason=release_too_high (cluster_release=0.0.1)
thread 36150 panic: session evicted
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/vsr/client.zig:372:13: 0x7f30f1a5fd10 in on_eviction (tigerbeetlex)
            @panic("session evicted");
            ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/vsr/client.zig:180:50: 0x7f30f1a415b3 in on_message (tigerbeetlex)
                .eviction => |m| self.on_eviction(m),
                                                 ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/message_bus.zig:848:40: 0x7f30f1addc52 in on_message (tigerbeetlex)
                bus.on_message_callback(bus, message);
                                       ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/message_bus.zig:730:42: 0x7f30f1adcd9d in parse_messages (tigerbeetlex)
                    connection.on_message(bus, message);
                                         ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/message_bus.zig:987:42: 0x7f30f1adcc9c in on_recv (tigerbeetlex)
                connection.parse_messages(bus);
                                         ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/io/linux.zig:945:29: 0x7f30f1adc7d4 in wrapper (tigerbeetlex)
                    callback(
                            ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/io/linux.zig:625:28: 0x7f30f1a6281a in call_callback (tigerbeetlex)
        completion.callback(completion.context, completion, result);
                           ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/io/linux.zig:503:34: 0x7f30f1a44800 in complete (tigerbeetlex)
                    call_callback(completion, &result, callback_tracer_slot);
                                 ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/io/linux.zig:152:70: 0x7f30f1a43737 in flush (tigerbeetlex)
        while (self.completed.pop()) |completion| completion.complete(&self.callback_tracer_slot);
                                                                     ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/io/linux.zig:112:27: 0x7f30f1abfd46 in run_for_ns (tigerbeetlex)
            try self.flush(1, &timeouts, &etime);
                          ^
/home/jeryl/code/tigerbeetlex/src/tigerbeetle/src/clients/c/tb_client/context.zig:257:35: 0x7f30f1aa65dd in run (tigerbeetlex)
                self.io.run_for_ns(constants.tick_ms * std.time.ns_per_ms) catch |err| {
                                  ^
/home/jeryl/code/tigerbeetlex/deps/build_dot_zig/priv/zig-x86_64-linux-0.13.0/lib/std/Thread.zig:408:13: 0x7f30f1a7e3fa in callFn__anon_14187 (tigerbeetlex)
            @call(.auto, f, args);
            ^
/home/jeryl/code/tigerbeetlex/deps/build_dot_zig/priv/zig-x86_64-linux-0.13.0/lib/std/Thread.zig:674:30: 0x7f30f1a63732 in entryFn (tigerbeetlex)
                return callFn(f, args_ptr.*);
                             ^
???:?:?: 0x7f31c58cc3eb in ??? (libc.so.6)
Unwind information for `libc.so.6:0x7f31c58cc3eb` was not available, trace may be incomplete

Aborted

Logs shown on the running cluster ./tigerbeetle start --addresses=3000 --development 0_0.tigerbeetle

info(io): opening "0_0.tigerbeetle"...
warning(main): Grid cache size of 32MiB is small. See --cache-grid
info(main): multiversioning: disabled for development (0.0.1) release.
info(main): release=0.0.1
info(main): release_client_min=0.0.1
info(main): releases_bundled={ 0.0.1 }
info(main): git_commit=14abaeabd09bd7c78a95b6b990748f3612b3e4cc
info(replica): superblock release=0.0.1
info(main): 0: Allocated 673MiB during replica init
info(main): 0: Grid cache: 32MiB, LSM-tree manifests: 128MiB
info(main): 0: cluster=0: listening on 127.0.0.1:3000
warning(main): 0: started with constants.verify - expect reduced performance. Recompile with -Dconfig=production if unexpected.
info(message_bus): connection from client 23646605303667990745101654218979763187
warning(replica): 0: on_request: ignoring invalid version (client=23646605303667990745101654218979763187 version=0.15.4>0.0.1)
error(replica): 0: sending eviction message to client=23646605303667990745101654218979763187 reason=release_too_high
info(message_bus): peer performed an orderly shutdown: message_bus.MessageBusType(.replica).Connection.Peer{ .client = 23646605303667990745101654218979763187 }

Screenshot

image

rbino commented 1 month ago

I think you have to use a stable release of TigerBeetle (i.e. download the binaries from here) or (if you want to build TigerBeetle locally) pass the right flags to set its release number to the correct version, otherwise the client and server can't agree on a version and abort like you're seeing.

jeryldev commented 1 month ago

I am also not able to use tigerbeetlex as a dependency at the moment. Here is the repo for reference: https://github.com/jeryldev/hello

hello (main) $ iex -S mix
Erlang/OTP 27 [erts-15.0.1] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]

Interactive Elixir (1.17.2) - press Ctrl+C to exit (type h() ENTER for help)
iex [12:07 :: 1] >       valid_opts = [
... [12:07 :: 1] >         name: :tb,
... [12:07 :: 1] >         cluster_id: <<0::128>>,
... [12:07 :: 1] >         addresses: ["3000"]
... [12:07 :: 1] >       ]
[
  name: :tb,
  cluster_id: <<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>>,
  addresses: ["3000"]
]
iex [12:07 :: 2] > {:ok, pid} = TigerBeetlex.Connection.start_link valid_opts
{:ok, #PID<0.360.0>}
iex [12:07 :: 3] > error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                                             error(message_bus): error connecting to replica 0: error.ConnectionRefused
      error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                                error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                                                                                                          error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                   error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                                                                                             error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                      error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                                                                                error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                         error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                                                                   error(message_bus): error connecting to replica 0: error.ConnectionRefused
                            error(message_bus): error connecting to replica 0: error.ConnectionRefused
                                                                                                      error(message_bus): error connecting to replica 0: error.ConnectionRefused

BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
       (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution
error(message_bus): error connecting to replica 0: error.ConnectionRefused
error(message_bus): error connecting to replica 0: error.ConnectionRefused
error(message_bus): error connecting to replica 0: error.ConnectionRefused
error(message_bus): error connecting to replica 0: error.ConnectionRefused
error(message_bus): error connecting to replica 0: error.ConnectionRefused
error(message_bus): error connecting to replica 0: error.ConnectionRefused
error(message_bus): error connecting to replica 0: error.ConnectionRefused
^Chello (main) $