Skip to content

Sending message with Send({device="PATCH", ...}) currently stops the syncing of a process completely. #566

Description

@saklani

Hi, just wanted to discuss possible solutions to this.

The USDA process at some point had a Send({device = "PATCH", ...}) which stops the syncing of the process at that point.
A local hyperbeam instance I ran gives this output.

== HB DEBUG ===[21ms in aerfP..pZyl4 (<0.5000.0>) @ hb_http_server:443]==>
returning_500_error: Termination type: 'throw'
  
  Stacktrace:
  
    hb_ao_device:message_to_device/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao_device.erl:134]
    hb_ao_device:info/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao_device.erl:372]
    hb_ao_device:do_is_direct_key_access/3 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao_device.erl:422]
    hb_cache:read_resolved/3 [/Users/ss/Documents/Development/HyperBEAM/src/hb_cache.erl:718]
    hb_cache_control:lookup/3 [/Users/ss/Documents/Development/HyperBEAM/src/hb_cache_control.erl:59]
    hb_ao:resolve_stage/4 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:373]
    hb_ao:do_resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:204]
    hb_ao:resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:194]
    hb_ao:get/4 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:924]
    dev_patch:'-move/4-fun-0-'/4 [/Users/ss/Documents/Development/HyperBEAM/src/dev_patch.erl:110]
    maps:fold_1/4 [maps.erl:860]
    dev_patch:move/4 [/Users/ss/Documents/Development/HyperBEAM/src/dev_patch.erl:108]
    hb_ao:resolve_stage/6 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:533]
    hb_ao:do_resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:204]
    hb_ao:resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:194]
    hb_ao:subresolve/4 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:740]
    hb_ao:do_resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:204]
    hb_ao:resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:194]
    dev_genesis_wasm:do_compute/3 [/Users/ss/Documents/Development/HyperBEAM/src/dev_genesis_wasm.erl:80]
    dev_genesis_wasm:compute/3 [/Users/ss/Documents/Development/HyperBEAM/src/dev_genesis_wasm.erl:32]
    hb_ao:resolve_stage/6 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:533]
    hb_ao:do_resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:204]
    hb_ao:resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:194]
    dev_process:run_as/4 [/Users/ss/Documents/Development/HyperBEAM/src/dev_process.erl:730]
    dev_process:compute_slot/5 [/Users/ss/Documents/Development/HyperBEAM/src/dev_process.erl:387]
    dev_process:compute_to_slot/5 [/Users/ss/Documents/Development/HyperBEAM/src/dev_process.erl:336]
    hb_ao:resolve_stage/6 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:533]
    hb_ao:do_resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:204]
    hb_ao:resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:194]
    hb_ao:resolve_stage/6 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:533]
    hb_ao:do_resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:204]
    hb_ao:resolve_many/2 [/Users/ss/Documents/Development/HyperBEAM/src/hb_ao.erl:194]
    dev_meta:handle_resolve/3 [/Users/ss/Documents/Development/HyperBEAM/src/dev_meta.erl:237]
    hb_http_server:handle_request/3 [/Users/ss/Documents/Development/HyperBEAM/src/hb_http_server.erl:401]
    cowboy_handler:execute/2 [/Users/ss/Documents/Development/HyperBEAM/_build/default/lib/cowboy/src/cowboy_handler.erl:37]
    cowboy_stream_h:execute/3 [/Users/ss/Documents/Development/HyperBEAM/_build/default/lib/cowboy/src/cowboy_stream_h.erl:310]
    cowboy_stream_h:request_process/3 [/Users/ss/Documents/Development/HyperBEAM/_build/default/lib/cowboy/src/cowboy_stream_h.erl:299]
    proc_lib:init_p_do_apply/3 [proc_lib.erl:329]
  
  
  Error details:
  
    {error,
        {device_not_loadable,<<"PATCH">>,
            {module_not_admissable,<<"PATCH">>,
                [#{<<"module">> => dev_arweave,
                   <<"name">> => <<"arweave@2.9-pre">>},
                 #{<<"module">> => dev_apply,<<"name">> => <<"apply@1.0">>},
                 #{<<"module">> => dev_auth_hook,
                   <<"name">> => <<"auth-hook@1.0">>},
                 #{<<"module">> => dev_codec_ans104,
                   <<"name">> => <<"ans104@1.0">>},
                 #{<<"module">> => dev_bundler,<<"name">> => <<"bundler@1.0">>},
                 #{<<"module">> => dev_cu,<<"name">> => <<"compute@1.0">>},
                 #{<<"module">> => dev_cache,<<"name">> => <<"cache@1.0">>},
                 #{<<"module">> => dev_cacheviz,
                   <<"name">> => <<"cacheviz@1.0">>},
                 #{<<"module">> => dev_codec_cookie,
                   <<"name">> => <<"cookie@1.0">>},
                 #{<<"module">> => dev_cron,<<"name">> => <<"cron@1.0">>},
                 #{<<"module">> => dev_dedup,<<"name">> => <<"dedup@1.0">>},
                 #{<<"module">> => dev_delegated_compute,
                   <<"name">> => <<"delegated-compute@1.0">>},
                 #{<<"module">> => dev_faff,<<"name">> => <<"faff@1.0">>},
                 #{<<"module">> => dev_codec_flat,<<"name">> => <<"flat@1.0">>},
                 #{<<"module">> => dev_genesis_wasm,
                   <<"name">> => <<"genesis-wasm@1.0">>},
                 #{<<"module">> => dev_green_zone,
                   <<"name">> => <<"greenzone@1.0">>},
                 #{<<"module">> => dev_codec_httpsig,
                   <<"name">> => <<"httpsig@1.0">>},
                 #{<<"module">> => dev_codec_http_auth,
                   <<"name">> => <<"http-auth@1.0">>},
                 #{<<"module">> => dev_hook,<<"name">> => <<"hook@1.0">>},
                 #{<<"module">> => dev_hyperbuddy,
                   <<"name">> => <<"hyperbuddy@1.0">>},
                 #{<<"module">> => dev_copycat,<<"name">> => <<"copycat@1.0">>},
                 #{<<"module">> => dev_codec_json,<<"name">> => <<"json@1.0">>},
                 #{<<"module">> => dev_json_iface,
                   <<"name">> => <<"json-iface@1.0">>},
                 #{<<"module">> => dev_local_name,
                   <<"name">> => <<"local-name@1.0">>},
                 #{<<"module">> => dev_lookup,<<"name">> => <<"lookup@1.0">>},
                 #{<<"module">> => dev_lua,<<"name">> => <<"lua@5.3a">>},
                 #{<<"module">> => dev_manifest,
                   <<"name">> => <<"manifest@1.0">>},
                 #{<<"module">> => dev_message,<<"name">> => <<"message@1.0">>},
                 #{<<"module">> => dev_meta,<<"name">> => <<"meta@1.0">>},
                 #{<<"module">> => dev_monitor,<<"name">> => <<"monitor@1.0">>},
                 #{<<"module">> => dev_multipass,
                   <<"name">> => <<"multipass@1.0">>},
                 #{<<"module">> => dev_name,<<"name">> => <<"name@1.0">>},
                 #{<<"module">> => dev_node_process,
                   <<"name">> => <<"node-process@1.0">>},
                 #{<<"module">> => dev_p4,<<"name">> => <<"p4@1.0">>},
                 #{<<"module">> => dev_patch,<<"name">> => <<"patch@1.0">>},
                 #{<<"module">> => dev_poda,<<"name">> => <<"poda@1.0">>},
                 #{<<"module">> => dev_process,<<"name">> => <<"process@1.0">>},
                 #{<<"module">> => dev_profile,<<"name">> => <<"profile@1.0">>},
                 #{<<"module">> => dev_push,<<"name">> => <<"push@1.0">>},
                 #{<<"module">> => dev_query,<<"name">> => <<"query@1.0">>},
                 #{<<"module">> => dev_relay,<<"name">> => <<"relay@1.0">>},
                 #{<<"module">> => dev_router,<<"name">> => <<"router@1.0">>},
                 #{<<"module">> => dev_scheduler,
                   <<"name">> => <<"scheduler@1.0">>},
                 #{<<"module">> => dev_simple_pay,
                   <<"name">> => <<"simple-pay@1.0">>},
                 #{<<"module">> => dev_snp,<<"name">> => <<"snp@1.0">>},
                 #{<<"module">> => dev_stack,<<"name">> => <<"stack@1.0">>},
                 #{<<"module">> => dev_codec_structured,
                   <<"name">> => <<"structured@1.0">>},
                 #{<<"module">> => dev_test,<<"name">> => <<"test-device@1.0">>},
                 #{<<"module">> => dev_trie,<<"name">> => <<"trie@1.0">>},
                 #{<<"module">> => dev_codec_tx,<<"name">> => <<"tx@1.0">>},
                 #{<<"module">> => dev_volume,<<"name">> => <<"volume@1.0">>},
                 #{<<"module">> => dev_secret,<<"name">> => <<"secret@1.0">>},
                 #{<<"module">> => dev_wasi,<<"name">> => <<"wasi@1.0">>},
                 #{<<"module">> => dev_wasm,<<"name">> => <<"wasm-64@1.0">>},
                 #{<<"module">> => dev_whois,<<"name">> => <<"whois@1.0">>}]}}}
  
=== HB DEBUG ===[4ms in aerfP..pZyl4 (<0.5000.0>) @ hb_http:498]==>
sent, status: 500, duration: 67341, method: GET, path: /FBt9A5GA_KXMMSxA2DJ0xZbAq8sLLU2ak-YJe9zDvg8~process@1.0/compute/balances/serialize~json@1.0, body_size: 17567

So, now we are left with two options:

  1. Migrate to a new process which is not ideal.
  2. Potentially ignoring any type of invalid device at the hyperbeam level.

Just wanted to know if 2 is possible to support since migrating to a new process is not ideal.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions