basho / riak_core

Distributed systems infrastructure used by Riak.
Apache License 2.0
1.23k stars 392 forks source link

Riak Core needs to run 'compiler' under its applications #989

Closed fkrause98 closed 2 years ago

fkrause98 commented 2 years ago

Hi! I'm using OTP 24 (also have tried OTP25) and I was trying to set up a basic riak core project, but when I try to run the release binary, I get the following error:

=INFO REPORT==== 24-May-2022::10:21:46.140166 ===
Setup running ...
=INFO REPORT==== 24-May-2022::10:21:46.140375 ===
    alarm_handler: {set,{system_memory_high_watermark,[]}}
=INFO REPORT==== 24-May-2022::10:21:46.142945 ===
Directories verified. Res = ok
=INFO REPORT==== 24-May-2022::10:21:46.143966 ===
Setup finished processing hooks (Mode=normal)...
=SUPERVISOR REPORT==== 24-May-2022::10:21:46.190093 ===
    supervisor: {local,riak_core_sup}
    errorContext: start_error
    reason: {undef,
                [{compile,forms,
                     [[{attribute,0,module,'mochiglobal:riak_ring_id_epoch'},
                       {attribute,0,export,[{term,0}]},
                       {function,0,term,0,[{clause,0,[],[],[{integer,0,1}]}]}],
                      [verbose,report_errors]],
                     []},
                 {riak_core_mochiglobal,compile,2,
                     [{file,
                          "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl"},
                      {line,51}]},
                 {riak_core_mochiglobal,put,3,
                     [{file,
                          "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl"},
                      {line,31}]},
                 {riak_core_ring_manager,reset_ring_id,0,
                     [{file,
                          "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                      {line,573}]},
                 {riak_core_ring_manager,setup_ets,1,
                     [{file,
                          "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                      {line,557}]},
                 {riak_core_ring_manager,init,1,
                     [{file,
                          "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                      {line,338}]},
                 {gen_server,init_it,2,[{file,"gen_server.erl"},{line,848}]},
                 {gen_server,init_it,6,[{file,"gen_server.erl"},{line,811}]}]}
    offender: [{pid,undefined},
               {id,riak_core_ring_manager},
               {mfargs,{riak_core_ring_manager,start_link,[]}},
               {restart_type,permanent},
               {significant,false},
               {shutdown,5000},
               {child_type,worker}]

=CRASH REPORT==== 24-May-2022::10:21:46.190366 ===
  crasher:
    initial call: application_master:init/4
    pid: <0.158.0>
    registered_name: []
    exception exit: {{shutdown,
                      {failed_to_start_child,riak_core_ring_manager,
                       {undef,
                        [{compile,forms,
                          [[{attribute,0,module,
                             'mochiglobal:riak_ring_id_epoch'},
                            {attribute,0,export,[{term,0}]},
                            {function,0,term,0,
                             [{clause,0,[],[],[{integer,0,1}]}]}],
                           [verbose,report_errors]],
                          []},
                         {riak_core_mochiglobal,compile,2,
                          [{file,
                            "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl"},
                           {line,51}]},
                         {riak_core_mochiglobal,put,3,
                          [{file,
                            "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl"},
                           {line,31}]},
                         {riak_core_ring_manager,reset_ring_id,0,
                          [{file,
                            "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                           {line,573}]},
                         {riak_core_ring_manager,setup_ets,1,
                          [{file,
                            "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                           {line,557}]},
                         {riak_core_ring_manager,init,1,
                          [{file,
                            "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                           {line,338}]},
                         {gen_server,init_it,2,
                          [{file,"gen_server.erl"},{line,848}]},
                         {gen_server,init_it,6,
                          [{file,"gen_server.erl"},{line,811}]}]}}},
                     {riak_core_app,start,[normal,[]]}}
      in function  application_master:init/4 (application_master.erl, line 142)
    ancestors: [<0.157.0>]
    message_queue_len: 1
    messages: [{'EXIT',<0.159.0>,normal}]
    links: [<0.157.0>,<0.44.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 610
    stack_size: 28
    reductions: 180
  neighbours:

=INFO REPORT==== 24-May-2022::10:21:46.191752 ===
    application: riak_core
    exited: {{shutdown,
                 {failed_to_start_child,riak_core_ring_manager,
                     {undef,
                         [{compile,forms,
                              [[{attribute,0,module,
                                    'mochiglobal:riak_ring_id_epoch'},
                                {attribute,0,export,[{term,0}]},
                                {function,0,term,0,
                                    [{clause,0,[],[],[{integer,0,1}]}]}],
                               [verbose,report_errors]],
                              []},
                          {riak_core_mochiglobal,compile,2,
                              [{file,
                                   "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl"},
                               {line,51}]},
                          {riak_core_mochiglobal,put,3,
                              [{file,
                                   "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl"},
                               {line,31}]},
                          {riak_core_ring_manager,reset_ring_id,0,
                              [{file,
                                   "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                               {line,573}]},
                          {riak_core_ring_manager,setup_ets,1,
                              [{file,
                                   "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                               {line,557}]},
                          {riak_core_ring_manager,init,1,
                              [{file,
                                   "/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl"},
                               {line,338}]},
                          {gen_server,init_it,2,
                              [{file,"gen_server.erl"},{line,848}]},
                          {gen_server,init_it,6,
                              [{file,"gen_server.erl"},{line,811}]}]}}},
             {riak_core_app,start,[normal,[]]}}
    type: permanent

=INFO REPORT==== 24-May-2022::10:21:46.192738 ===
    alarm_handler: {clear,system_memory_high_watermark}
{"Kernel pid terminated",application_controller,"{application_start_failure,riak_core,{{shutdown,{failed_to_start_child,riak_core_ring_manager,{undef,[{compile,forms,[[{attribute,0,module,'mochiglobal:riak_ring_id_epoch'},{attribute,0,export,[{term,0}]},{function,0,term,0,[{clause,0,[],[],[{integer,0,1}]}]}],[verbose,report_errors]],[]},{riak_core_mochiglobal,compile,2,[{file,\"/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl\"},{line,51}]},{riak_core_mochiglobal,put,3,[{file,\"/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_mochiglobal.erl\"},{line,31}]},{riak_core_ring_manager,reset_ring_id,0,[{file,\"/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl\"},{line,573}]},{riak_core_ring_manager,setup_ets,1,[{file,\"/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl\"},{line,557}]},{riak_core_ring_manager,init,1,[{file,\"/Users/fran/Programming/Erlang/rc_example/_build/default/lib/riak_core/src/riak_core_ring_manager.erl\"},{line,338}]},{gen_server,init_it,2,[{file,\"gen_server.erl\"},{line,848}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,811}]}]}}},{riak_core_app,start,[normal,[]]}}}"}

Seems like this happens If I don't have 'compiler' in my applications, like this:

{application, rc_example,
 [{description, "An OTP application"},
  {vsn, "0.1.0"},
  {registered, []},
  {mod, {rc_example_app, []}},
  {applications,
   [kernel,
    stdlib,
    %% compiler,
    cuttlefish,
    riak_core
   ]},
  {env,[]},
  {modules, []},

  {licenses, ["Apache 2.0"]},
  {links, []}
 ]}.

If I uncomment it, and rebuilt everything again, the release works.

It seemed a bit strange to me why I need this, if this is not an issue with riak, please disregard this. I'm also a bit new with Erlang (I'm more experienced with Elixir, so maybe I'm doing something wrong?).

Thanks! 😄

martinsumner commented 2 years ago

I'm not sure. Riak Core is primarily used in Riak, and there the .app file doesn't include compiler.

If you're starting a riak_core project as an experiment, it may be worth trying first to use Riak Core Lite. The Riak Core Lite project has some tutorials and is more actively used as a general platform for distributed applications, whereas the focus here is on riak_core as a building block for Riak.

fkrause98 commented 2 years ago

Hey, thanks for the answer! :)

I was following this tutorial, that is a bit outdated, and seems like it's using an old fork of riak core, I thought that this repo's riak core version would be the one to replace it.