Gdb call stack information：
Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
0x00007ffff685d207 in raise () from /lib64/libc.so.6
(gdb) bt
Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
Python Exception <type 'exceptions.ImportError'> No module named gdb.frames:
#0  0x00007ffff685d207 in raise () from /lib64/libc.so.6
#1  0x00007ffff685e8f8 in abort () from /lib64/libc.so.6
Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
#2  0x00007ffff689fd27 in __libc_message () from /lib64/libc.so.6
Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
#3  0x00007ffff68a8489 in _int_free () from /lib64/libc.so.6
Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
#4  0x0000000000cd0b60 in __gnu_cxx::new_allocator<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session > >::deallocate (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb178, __p=0x1530a7d0)
at /opt/rh/devtoolset-7/root/usr/include/c++/7/ext/new_allocator.h:125
#5  0x0000000000cbf35a in std::allocator_traits<std::allocator<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session > > >::deallocate (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
__a=..., __p=0x1530a7d0, __n=25)
at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/alloc_traits.h:462
#6  0x0000000000cae7b8 in std::_Vector_base<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session >, std::allocator<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session > > >::_M_deallocate (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb178, __p=0x1530a7d0, __n=25) at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/stl_vector.h:180
#7  0x0000000000c9f339 in std::_Vector_base<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session >, std::allocator<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session > > >::~_Vector_base (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb178, __in_chrg=) at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/stl_vector.h:162
#8  0x0000000000c8f583 in std::vector<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session >, std::allocator<std::unique_ptr<chainbase::abstract_session, std::default_deletechainbase::abstract_session > > >::~vector (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb178, __in_chrg=) at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/stl_vector.h:435
#9  0x0000000000c705aa in chainbase::database::session::~session (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb178, __in_chrg=) at /home/dell/evs/eosis-clwv/libraries/chainbase/include/chainbase/chainbase.hpp:725
#10 0x0000000000c92449 in fc::optionalchainbase::database::session::reset (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb170) at /home/dell/evs/eosis-clwv/libraries/fc/include/fc/optional.hpp:240
#11 0x0000000000c922f6 in fc::optionalchainbase::database::session::~optional (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb170, __in_chrg=) at /home/dell/evs/eosis-clwv/libraries/fc/include/fc/optional.hpp:28
#12 0x0000000000c7dd86 in eosio::chain::transaction_context::~transaction_context (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffb140, __in_chrg=) at /home/dell/evs/eosis-clwv/libraries/chain/include/eosio/chain/transaction_context.hpp:21
#13 0x0000000000c80eb2 in eosio::chain::controller_impl::push_transaction (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x3a04210, trx=..., deadline=..., billed_cpu_time_us=0, explicit_billed_cpu_time=false)
at /home/dell/evs/eosis-clwv/libraries/chain/controller.cpp:1013
#14 0x0000000000c66fac in eosio::chain::controller::push_transaction (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x395a870, trx=..., deadline=..., billed_cpu_time_us=0) at /home/dell/evs/eosis-clwv/libraries/chain/controller.cpp:1793
#15 0x0000000000bc5b7b in eosio::producer_plugin_impl::start_block (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x399dcb0) at /home/dell/evs/eosis-clwv/plugins/producer_plugin/producer_plugin.cpp:1235
#16 0x0000000000bcbdf2 in eosio::producer_plugin_impl::schedule_production_loop (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x399dcb0) at /home/dell/evs/eosis-clwv/plugins/producer_plugin/producer_plugin.cpp:1420
#17 0x0000000000bcdd64 in eosio::producer_plugin_impl::<lambda(const boost::system::error_code&)>::operator()(const boost::system::error_code &) const (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
__closure=0x7fffffffd580, ec=...)
at /home/dell/evs/eosis-clwv/plugins/producer_plugin/producer_plugin.cpp:1508
#18 0x0000000000bd5fbd in boost::asio::detail::binder1<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::system::error_code>::operator()(void) (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffd580) at /home/dell/opt/boost/include/boost/asio/detail/bind_handler.hpp:65
#19 0x0000000000bd5876 in boost::asio::asio_handler_invoke<boost::asio::detail::binder1<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::system::error_code> >(boost::asio::detail::binder1<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::system::error_code> &, ...) (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
function=...) at /home/dell/opt/boost/include/boost/asio/handler_invoke_hook.hpp:69
#20 0x0000000000bd524d in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::system::error_code>, eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)> >(boost::asio::detail::binder1<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::system::error_code> &, eosio::producer_plugin_impl::<lambda(const boost::system::error_code&)> &) (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
function=..., context=...)
at /home/dell/opt/boost/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#21 0x0000000000bd4c73 in boost::asio::detail::handler_work<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::asio::system_executor>::complete<boost::asio::detail::binder1<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::system::error_code> >(boost::asio::detail::binder1<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)>, boost::system::error_code> &, eosio::producer_plugin_impl::<lambda(const boost::system::error_code&)> &) (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x7fffffffd5af, function=..., handler=...)
at /home/dell/opt/boost/include/boost/asio/detail/handler_work.hpp:82
#22 0x0000000000bd44cc in boost::asio::detail::wait_handler<eosio::producer_plugin_impl::schedule_delayed_production_loop(const std::weak_ptreosio::producer_plugin_impl&, const block_timestamp_type&)::<lambda(const boost::system::error_code&)> >::do_complete(void *, boost::asio::detail::operation *, const boost::system::error_code &, std::size_t) (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
owner=0x395a350, base=0x15144e60) at /home/dell/opt/boost/include/boost/asio/detail/wait_handler.hpp:72
#23 0x000000000045ed9c in boost::asio::detail::scheduler_operation::complete (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x15144e60, owner=0x395a350, ec=..., bytes_transferred=0) at /home/dell/opt/boost/include/boost/asio/detail/scheduler_operation.hpp:40
#24 0x000000000047555b in boost::asio::detail::scheduler::do_run_one (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x395a350, lock=..., this_thread=..., ec=...) at /home/dell/opt/boost/include/boost/asio/detail/impl/scheduler.ipp:401
#25 0x0000000000475304 in boost::asio::detail::scheduler::run (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x395a350, ec=...) at /home/dell/opt/boost/include/boost/asio/detail/impl/scheduler.ipp:154
#26 0x0000000000475745 in boost::asio::io_context::run (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x395a2e0) at /home/dell/opt/boost/include/boost/asio/impl/io_context.ipp:62
#27 0x0000000000470ff4 in appbase::application::exec (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
this=0x392f700 appbase::application::instance()::_app) at /home/dell/evs/eosis-clwv/libraries/appbase/application.cpp:260
#28 0x000000000045a1f5 in main (Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
argc=3, argv=0x7fffffffe258) at /home/dell/evs/eosis-clwv/programs/nodeos/main.cpp:112

Would you like to share the steps to reproduce this crash?

Would you like to share the steps to reproduce this crash?
Below is my process：

Start 3 producer nodes.(mainnet-1.6.2)
Deploy the eosio.token contract, issue a token, create accounts
Run the script to perform a transfer test (approximately 50 TPS).
It will crash in about 10 minutes.

In addition:
fork_databse will prompt  fork message before crash
hard disk is HDD. (IO is larger)
There may be network congestion. (One of the computer blocks sometimes falls behind a few seconds)

Please provide your config.ini

the endpoint upon which to listen for incoming connections (eosio::bnet_plugin)
bnet-endpoint = <IP_ADDRESS>:4321
this peer will request only irreversible blocks from other nodes (eosio::bnet_plugin)
bnet-follow-irreversible = 0
the number of threads to use to process network messages (eosio::bnet_plugin)
bnet-threads =
remote endpoint of other node to connect to; Use multiple bnet-connect options as needed to compose a network (eosio::bnet_plugin)
bnet-connect =
this peer will request no pending transactions from other nodes (eosio::bnet_plugin)
bnet-no-trx = false
The string used to format peers when logging messages about them.  Variables are escaped with ${}.
Available Variables:
_name  	self-reported name

_id    	self-reported ID (Public Key)

_ip    	remote IP address of peer

_port  	remote port number of peer

_lip   	local IP address connected to peer

_lport 	local port number connected to peer

(eosio::bnet_plugin)
bnet-peer-log-format = ["${_name}" ${_ip}:${_port}]
the location of the blocks directory (absolute path or relative to application data dir) (eosio::chain_plugin)
blocks-dir = "blocks"
Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. (eosio::chain_plugin)
checkpoint =
Override default WASM runtime (eosio::chain_plugin)
wasm-runtime =
Override default maximum ABI serialization time allowed in ms (eosio::chain_plugin)
abi-serializer-max-time-ms = 15000
Maximum size (in MiB) of the chain state database (eosio::chain_plugin)
chain-state-db-size-mb = 40960
Safely shut down node when free space remaining in the chain state database drops below this size (in MiB). (eosio::chain_plugin)
chain-state-db-guard-size-mb = 128
Maximum size (in MiB) of the reversible blocks database (eosio::chain_plugin)
reversible-blocks-db-size-mb = 340
Safely shut down node when free space remaining in the reverseible blocks database drops below this size (in MiB). (eosio::chain_plugin)
reversible-blocks-db-guard-size-mb = 2
Number of worker threads in controller thread pool (eosio::chain_plugin)
chain-threads = 8
print contract's output to console (eosio::chain_plugin)
contracts-console = true
Account added to actor whitelist (may specify multiple times) (eosio::chain_plugin)
actor-whitelist =
Account added to actor blacklist (may specify multiple times) (eosio::chain_plugin)
actor-blacklist =
Contract account added to contract whitelist (may specify multiple times) (eosio::chain_plugin)
contract-whitelist =
Contract account added to contract blacklist (may specify multiple times) (eosio::chain_plugin)
contract-blacklist =
Action (in the form code::action) added to action blacklist (may specify multiple times) (eosio::chain_plugin)
action-blacklist =
Public key added to blacklist of keys that should not be included in authorities (may specify multiple times) (eosio::chain_plugin)
key-blacklist =
Deferred transactions sent by accounts in this list do not have any of the subjective whitelist/blacklist checks applied to them (may specify multiple times) (eosio::chain_plugin)
sender-bypass-whiteblacklist =
Database read mode ("speculative", "head", or "read-only").
In "speculative" mode database contains changes done up to the head block plus changes made by transactions not yet included to the blockchain.
In "head" mode database contains changes done up to the current head block.
In "read-only" mode database contains incoming block changes but no speculative transaction processing.
(eosio::chain_plugin)
read-mode = speculative
Chain validation mode ("full" or "light").
In "full" mode all incoming blocks will be fully validated.
In "light" mode all incoming blocks headers will be fully validated; transactions in those validated blocks will be trusted
(eosio::chain_plugin)
validation-mode = full
Disable the check which subjectively fails a transaction if a contract bills more RAM to another account within the context of a notification handler (i.e. when the receiver is not the code of the action). (eosio::chain_plugin)
disable-ram-billing-notify-checks = false
Indicate a producer whose blocks headers signed by it will be fully validated, but transactions in those validated blocks will be trusted. (eosio::chain_plugin)
trusted-producer =
Track actions which match receiver:action:actor. Actor may be blank to include all. Action and Actor both blank allows all from Recieiver. Receiver may not be blank. (eosio::history_plugin)
filter-on = *
Do not track actions which match receiver:action:actor. Action and Actor both blank excludes all from Reciever. Actor blank excludes all from reciever:action. Receiver may not be blank. (eosio::history_plugin)
filter-out =
PEM encoded trusted root certificate (or path to file containing one) used to validate any TLS connections made.  (may specify multiple times)
(eosio::http_client_plugin)
https-client-root-cert =
true: validate that the peer certificates are valid and trusted, false: ignore cert errors (eosio::http_client_plugin)
https-client-validate-peers = 1
The local IP and port to listen for incoming http connections; set blank to disable. (eosio::http_plugin)
http-server-address = <IP_ADDRESS>:8888
The local IP and port to listen for incoming https connections; leave blank to disable. (eosio::http_plugin)
https-server-address =
Filename with the certificate chain to present on https connections. PEM format. Required for https. (eosio::http_plugin)
https-certificate-chain-file =
Filename with https private key in PEM format. Required for https (eosio::http_plugin)
https-private-key-file =
Specify the Access-Control-Allow-Origin to be returned on each request. (eosio::http_plugin)
access-control-allow-origin = *
Specify the Access-Control-Allow-Headers to be returned on each request. (eosio::http_plugin)
access-control-allow-headers =
Specify the Access-Control-Max-Age to be returned on each request. (eosio::http_plugin)
access-control-max-age =
Specify if Access-Control-Allow-Credentials: true should be returned on each request. (eosio::http_plugin)
access-control-allow-credentials = false
The maximum body size in bytes allowed for incoming RPC requests (eosio::http_plugin)
max-body-size = 1048576
Append the error log to HTTP responses (eosio::http_plugin)
verbose-http-errors = false
If set to false, then any incoming "Host" header is considered valid (eosio::http_plugin)
http-validate-host = 0
Additionaly acceptable values for the "Host" header of incoming HTTP requests, can be specified multiple times.  Includes http/s_server_address by default. (eosio::http_plugin)
http-alias =
The maximum number of pending login requests (eosio::login_plugin)
max-login-requests = 1000000
The maximum timeout for pending login requests (in seconds) (eosio::login_plugin)
max-login-timeout = 60
The target queue size between nodeos and MongoDB plugin thread. (eosio::mongo_db_plugin)
mongodb-queue-size = 1024
The maximum size of the abi cache for serializing data. (eosio::mongo_db_plugin)
mongodb-abi-cache-size = 2048
Required with --replay-blockchain, --hard-replay-blockchain, or --delete-all-blocks to wipe mongo db.This option required to prevent accidental wipe of mongo db. (eosio::mongo_db_plugin)
mongodb-wipe = false
If specified then only abi data pushed to mongodb until specified block is reached. (eosio::mongo_db_plugin)
mongodb-block-start = 0
MongoDB URI connection string, see: https://docs.mongodb.com/master/reference/connection-string/. If not specified then plugin is disabled. Default database 'EOS' is used if not specified in URI. Example: mongodb://<IP_ADDRESS>:27017/EOS (eosio::mongo_db_plugin)
mongodb-uri =
Update blocks/block_state with latest via block number so that duplicates are overwritten. (eosio::mongo_db_plugin)
mongodb-update-via-block-num = 0
Enables storing blocks in mongodb. (eosio::mongo_db_plugin)
mongodb-store-blocks = 1
Enables storing block state in mongodb. (eosio::mongo_db_plugin)
mongodb-store-block-states = 1
Enables storing transactions in mongodb. (eosio::mongo_db_plugin)
mongodb-store-transactions = 1
Enables storing transaction traces in mongodb. (eosio::mongo_db_plugin)
mongodb-store-transaction-traces = 1
Enables storing action traces in mongodb. (eosio::mongo_db_plugin)
mongodb-store-action-traces = 1
Track actions which match receiver:action:actor. Receiver, Action, & Actor may be blank to include all. i.e. eosio:: or :transfer:  Use * or leave unspecified to include all. (eosio::mongo_db_plugin)
mongodb-filter-on =
Do not track actions which match receiver:action:actor. Receiver, Action, & Actor may be blank to exclude all. (eosio::mongo_db_plugin)
mongodb-filter-out =
The actual host:port used to listen for incoming p2p connections. (eosio::net_plugin)
p2p-listen-endpoint = <IP_ADDRESS>:9876
An externally accessible host:port for identifying this node. Defaults to p2p-listen-endpoint. (eosio::net_plugin)
p2p-server-address = <IP_ADDRESS>:9876
The public endpoint of a peer node to connect to. Use multiple p2p-peer-address options as needed to compose a network. (eosio::net_plugin)
p2p-peer-address = <IP_ADDRESS>:9876
p2p-peer-address = <IP_ADDRESS>:9876
p2p-peer-address = <IP_ADDRESS>:9876
p2p-peer-address = <IP_ADDRESS>:9876
Maximum number of client nodes from any single IP address (eosio::net_plugin)
p2p-max-nodes-per-host = 5
The name supplied to identify this node amongst the peers. (eosio::net_plugin)
agent-name = "tokyo agent"
Can be 'any' or 'producers' or 'specified' or 'none'. If 'specified', peer-key must be specified at least once. If only 'producers', peer-key is not required. 'producers' and 'specified' may be combined. (eosio::net_plugin)
allowed-connection = any
Optional public key of peer allowed to connect.  May be used multiple times. (eosio::net_plugin)
peer-key =
Tuple of [PublicKey, WIF private key] (may specify multiple times) (eosio::net_plugin)
peer-private-key =
Maximum number of clients from which connections are accepted, use 0 for no limit (eosio::net_plugin)
max-clients = 25
number of seconds to wait before cleaning up dead connections (eosio::net_plugin)
connection-cleanup-period = 30
max connection cleanup time per cleanup call in millisec (eosio::net_plugin)
max-cleanup-time-msec = 10
True to require exact match of peer network version. (eosio::net_plugin)
network-version-match = 0
number of blocks to retrieve in a chunk from any individual peer during synchronization (eosio::net_plugin)
sync-fetch-span = 100
maximum sizes of transaction or block messages that are sent without first sending a notice (eosio::net_plugin)
max-implicit-request = 1500
Enable expirimental socket read watermark optimization (eosio::net_plugin)
use-socket-read-watermark = 0
The string used to format peers when logging messages about them.  Variables are escaped with ${}.
Available Variables:
_name  	self-reported name

_id    	self-reported ID (64 hex characters)

_sid   	first 8 characters of _peer.id

_ip    	remote IP address of peer

_port  	remote port number of peer

_lip   	local IP address connected to peer

_lport 	local port number connected to peer

(eosio::net_plugin)
peer-log-format = ["${_name}" ${_ip}:${_port}]
Enable block production, even if the chain is stale. (eosio::producer_plugin)
enable-stale-production = false
Start this node in a state where production is paused (eosio::producer_plugin)
pause-on-startup = false
Limits the maximum time (in milliseconds) that is allowed a pushed transaction's code to execute before being considered invalid (eosio::producer_plugin)
max-transaction-time = 30
Limits the maximum age (in seconds) of the DPOS Irreversible Block for a chain this node will produce blocks on (use negative value to indicate unlimited) (eosio::producer_plugin)
max-irreversible-block-age = -1
ID of producer controlled by this node (e.g. inita; may specify multiple times) (eosio::producer_plugin)
producer-name = tokyo
(DEPRECATED - Use signature-provider instead) Tuple of [public key, WIF private key] (may specify multiple times) (eosio::producer_plugin)
private-key =
Key=Value pairs in the form =
Where:
    	is a string form of a vaild EOSIO public key

 	is a string in the form :

 	is KEY, or KEOSD

KEY:      	is a string form of a valid EOSIO private key which maps to the provided public key

KEOSD:    	is the URL where keosd is available and the approptiate wallet(s) are unlocked (eosio::producer_plugin)
signature-provider = EVS5TqRSpe4X8kAVtqQbSQCSinDTFYcjrQmqMZ3vThi7JptGHESMc=KEY:5JE5tGPoG6rcPyvrFsGLZzJqw6dQbfjVTnAjravtbkhysNvBcGF
Limits the maximum time (in milliseconds) that is allowd for sending blocks to a keosd provider for signing (eosio::producer_plugin)
keosd-provider-timeout = 5
account that can not access to extended CPU/NET virtual resources (eosio::producer_plugin)
greylist-account =
offset of non last block producing time in microseconds. Negative number results in blocks to go out sooner, and positive number results in blocks to go out later (eosio::producer_plugin)
produce-time-offset-us = 0
offset of last block producing time in microseconds. Negative number results in blocks to go out sooner, and positive number results in blocks to go out later (eosio::producer_plugin)
last-block-time-offset-us = 0
ratio between incoming transations and deferred transactions when both are exhausted (eosio::producer_plugin)
incoming-defer-ratio = 1
the location of the snapshots directory (absolute path or relative to application data dir) (eosio::producer_plugin)
snapshots-dir = "snapshots"
the location of the state-history directory (absolute path or relative to application data dir) (eosio::state_history_plugin)
state-history-dir = "state-history"
enable trace history (eosio::state_history_plugin)
trace-history = false
enable chain state history (eosio::state_history_plugin)
chain-state-history = false
the endpoint upon which to listen for incoming connections (eosio::state_history_plugin)
state-history-endpoint = <IP_ADDRESS>:8080
Lag in number of blocks from the head block when selecting the reference block for transactions (-1 means Last Irreversible Block) (eosio::txn_test_gen_plugin)
txn-reference-block-lag = 0
Plugin(s) to enable, may be specified multiple times
plugin =
plugin = eosio::producer_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::history_plugin
plugin = eosio::history_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::bnet_plugin

Below is my configuration file:
# the endpoint upon which to listen for incoming connections (eosio::bnet_plugin)
bnet-endpoint = <IP_ADDRESS>:4321

# this peer will request only irreversible blocks from other nodes (eosio::bnet_plugin)
bnet-follow-irreversible = 0

# the number of threads to use to process network messages (eosio::bnet_plugin)
# bnet-threads =

# remote endpoint of other node to connect to; Use multiple bnet-connect options as needed to compose a network (eosio::bnet_plugin)
# bnet-connect =

# this peer will request no pending transactions from other nodes (eosio::bnet_plugin)
bnet-no-trx = false

# The string used to format peers when logging messages about them.  Variables are escaped with ${<variable name>}.
# Available Variables:
#    _name  	self-reported name
#
#    _id    	self-reported ID (Public Key)
#
#    _ip    	remote IP address of peer
#
#    _port  	remote port number of peer
#
#    _lip   	local IP address connected to peer
#
#    _lport 	local port number connected to peer
#
#  (eosio::bnet_plugin)
bnet-peer-log-format = ["${_name}" ${_ip}:${_port}]

# the location of the blocks directory (absolute path or relative to application data dir) (eosio::chain_plugin)
blocks-dir = "blocks"

# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. (eosio::chain_plugin)
# checkpoint =

# Override default WASM runtime (eosio::chain_plugin)
# wasm-runtime =

# Override default maximum ABI serialization time allowed in ms (eosio::chain_plugin)
abi-serializer-max-time-ms = 15000

# Maximum size (in MiB) of the chain state database (eosio::chain_plugin)
chain-state-db-size-mb = 40960

# Safely shut down node when free space remaining in the chain state database drops below this size (in MiB). (eosio::chain_plugin)
chain-state-db-guard-size-mb = 128

# Maximum size (in MiB) of the reversible blocks database (eosio::chain_plugin)
reversible-blocks-db-size-mb = 340

# Safely shut down node when free space remaining in the reverseible blocks database drops below this size (in MiB). (eosio::chain_plugin)
reversible-blocks-db-guard-size-mb = 2

# Number of worker threads in controller thread pool (eosio::chain_plugin)
chain-threads = 8

# print contract's output to console (eosio::chain_plugin)
contracts-console = true

# Account added to actor whitelist (may specify multiple times) (eosio::chain_plugin)
# actor-whitelist =

# Account added to actor blacklist (may specify multiple times) (eosio::chain_plugin)
# actor-blacklist =

# Contract account added to contract whitelist (may specify multiple times) (eosio::chain_plugin)
# contract-whitelist =

# Contract account added to contract blacklist (may specify multiple times) (eosio::chain_plugin)
# contract-blacklist =

# Action (in the form code::action) added to action blacklist (may specify multiple times) (eosio::chain_plugin)
# action-blacklist =

# Public key added to blacklist of keys that should not be included in authorities (may specify multiple times) (eosio::chain_plugin)
# key-blacklist =

# Deferred transactions sent by accounts in this list do not have any of the subjective whitelist/blacklist checks applied to them (may specify multiple times) (eosio::chain_plugin)
# sender-bypass-whiteblacklist =

# Database read mode ("speculative", "head", or "read-only").
# In "speculative" mode database contains changes done up to the head block plus changes made by transactions not yet included to the blockchain.
# In "head" mode database contains changes done up to the current head block.
# In "read-only" mode database contains incoming block changes but no speculative transaction processing.
#  (eosio::chain_plugin)
read-mode = speculative

# Chain validation mode ("full" or "light").
# In "full" mode all incoming blocks will be fully validated.
# In "light" mode all incoming blocks headers will be fully validated; transactions in those validated blocks will be trusted
#  (eosio::chain_plugin)
validation-mode = full

# Disable the check which subjectively fails a transaction if a contract bills more RAM to another account within the context of a notification handler (i.e. when the receiver is not the code of the action). (eosio::chain_plugin)
disable-ram-billing-notify-checks = false

# Indicate a producer whose blocks headers signed by it will be fully validated, but transactions in those validated blocks will be trusted. (eosio::chain_plugin)
# trusted-producer =

# Track actions which match receiver:action:actor. Actor may be blank to include all. Action and Actor both blank allows all from Recieiver. Receiver may not be blank. (eosio::history_plugin)
filter-on = *

# Do not track actions which match receiver:action:actor. Action and Actor both blank excludes all from Reciever. Actor blank excludes all from reciever:action. Receiver may not be blank. (eosio::history_plugin)
# filter-out =

# PEM encoded trusted root certificate (or path to file containing one) used to validate any TLS connections made.  (may specify multiple times)
#  (eosio::http_client_plugin)
# https-client-root-cert =

# true: validate that the peer certificates are valid and trusted, false: ignore cert errors (eosio::http_client_plugin)
https-client-validate-peers = 1

# The local IP and port to listen for incoming http connections; set blank to disable. (eosio::http_plugin)
http-server-address = <IP_ADDRESS>:8888

# The local IP and port to listen for incoming https connections; leave blank to disable. (eosio::http_plugin)
# https-server-address =

# Filename with the certificate chain to present on https connections. PEM format. Required for https. (eosio::http_plugin)
# https-certificate-chain-file =

# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
# https-private-key-file =

# Specify the Access-Control-Allow-Origin to be returned on each request. (eosio::http_plugin)
access-control-allow-origin = *

# Specify the Access-Control-Allow-Headers to be returned on each request. (eosio::http_plugin)
# access-control-allow-headers =

# Specify the Access-Control-Max-Age to be returned on each request. (eosio::http_plugin)
# access-control-max-age =

# Specify if Access-Control-Allow-Credentials: true should be returned on each request. (eosio::http_plugin)
access-control-allow-credentials = false

# The maximum body size in bytes allowed for incoming RPC requests (eosio::http_plugin)
max-body-size = 1048576

# Append the error log to HTTP responses (eosio::http_plugin)
verbose-http-errors = false

# If set to false, then any incoming "Host" header is considered valid (eosio::http_plugin)
http-validate-host = 0

# Additionaly acceptable values for the "Host" header of incoming HTTP requests, can be specified multiple times.  Includes http/s_server_address by default. (eosio::http_plugin)
# http-alias =

# The maximum number of pending login requests (eosio::login_plugin)
max-login-requests = 1000000

# The maximum timeout for pending login requests (in seconds) (eosio::login_plugin)
max-login-timeout = 60

# The target queue size between nodeos and MongoDB plugin thread. (eosio::mongo_db_plugin)
mongodb-queue-size = 1024

# The maximum size of the abi cache for serializing data. (eosio::mongo_db_plugin)
mongodb-abi-cache-size = 2048

# Required with --replay-blockchain, --hard-replay-blockchain, or --delete-all-blocks to wipe mongo db.This option required to prevent accidental wipe of mongo db. (eosio::mongo_db_plugin)
mongodb-wipe = false

# If specified then only abi data pushed to mongodb until specified block is reached. (eosio::mongo_db_plugin)
mongodb-block-start = 0

# MongoDB URI connection string, see: https://docs.mongodb.com/master/reference/connection-string/. If not specified then plugin is disabled. Default database 'EOS' is used if not specified in URI. Example: mongodb://<IP_ADDRESS>:27017/EOS (eosio::mongo_db_plugin)
# mongodb-uri =

# Update blocks/block_state with latest via block number so that duplicates are overwritten. (eosio::mongo_db_plugin)
mongodb-update-via-block-num = 0

# Enables storing blocks in mongodb. (eosio::mongo_db_plugin)
mongodb-store-blocks = 1

# Enables storing block state in mongodb. (eosio::mongo_db_plugin)
mongodb-store-block-states = 1

# Enables storing transactions in mongodb. (eosio::mongo_db_plugin)
mongodb-store-transactions = 1

# Enables storing transaction traces in mongodb. (eosio::mongo_db_plugin)
mongodb-store-transaction-traces = 1

# Enables storing action traces in mongodb. (eosio::mongo_db_plugin)
mongodb-store-action-traces = 1

# Track actions which match receiver:action:actor. Receiver, Action, & Actor may be blank to include all. i.e. eosio:: or :transfer:  Use * or leave unspecified to include all. (eosio::mongo_db_plugin)
# mongodb-filter-on =

# Do not track actions which match receiver:action:actor. Receiver, Action, & Actor may be blank to exclude all. (eosio::mongo_db_plugin)
# mongodb-filter-out =

# The actual host:port used to listen for incoming p2p connections. (eosio::net_plugin)
p2p-listen-endpoint = <IP_ADDRESS>:9876

# An externally accessible host:port for identifying this node. Defaults to p2p-listen-endpoint. (eosio::net_plugin)
p2p-server-address = <IP_ADDRESS>:9876

# The public endpoint of a peer node to connect to. Use multiple p2p-peer-address options as needed to compose a network. (eosio::net_plugin)
p2p-peer-address = <IP_ADDRESS>:9876
p2p-peer-address = <IP_ADDRESS>:9876
p2p-peer-address = <IP_ADDRESS>:9876
p2p-peer-address = <IP_ADDRESS>:9876
# Maximum number of client nodes from any single IP address (eosio::net_plugin)
p2p-max-nodes-per-host = 5

# The name supplied to identify this node amongst the peers. (eosio::net_plugin)
agent-name = "tokyo agent"

# Can be 'any' or 'producers' or 'specified' or 'none'. If 'specified', peer-key must be specified at least once. If only 'producers', peer-key is not required. 'producers' and 'specified' may be combined. (eosio::net_plugin)
allowed-connection = any

# Optional public key of peer allowed to connect.  May be used multiple times. (eosio::net_plugin)
# peer-key =

# Tuple of [PublicKey, WIF private key] (may specify multiple times) (eosio::net_plugin)
# peer-private-key =

# Maximum number of clients from which connections are accepted, use 0 for no limit (eosio::net_plugin)
max-clients = 25

# number of seconds to wait before cleaning up dead connections (eosio::net_plugin)
connection-cleanup-period = 30

# max connection cleanup time per cleanup call in millisec (eosio::net_plugin)
max-cleanup-time-msec = 10

# True to require exact match of peer network version. (eosio::net_plugin)
network-version-match = 0

# number of blocks to retrieve in a chunk from any individual peer during synchronization (eosio::net_plugin)
sync-fetch-span = 100

# maximum sizes of transaction or block messages that are sent without first sending a notice (eosio::net_plugin)
# max-implicit-request = 1500

# Enable expirimental socket read watermark optimization (eosio::net_plugin)
use-socket-read-watermark = 0

# The string used to format peers when logging messages about them.  Variables are escaped with ${<variable name>}.
# Available Variables:
#    _name  	self-reported name
#
#    _id    	self-reported ID (64 hex characters)
#
#    _sid   	first 8 characters of _peer.id
#
#    _ip    	remote IP address of peer
#
#    _port  	remote port number of peer
#
#    _lip   	local IP address connected to peer
#
#    _lport 	local port number connected to peer
#
#  (eosio::net_plugin)
peer-log-format = ["${_name}" ${_ip}:${_port}]

# Enable block production, even if the chain is stale. (eosio::producer_plugin)
enable-stale-production = false

# Start this node in a state where production is paused (eosio::producer_plugin)
pause-on-startup = false

# Limits the maximum time (in milliseconds) that is allowed a pushed transaction's code to execute before being considered invalid (eosio::producer_plugin)
max-transaction-time = 30

# Limits the maximum age (in seconds) of the DPOS Irreversible Block for a chain this node will produce blocks on (use negative value to indicate unlimited) (eosio::producer_plugin)
max-irreversible-block-age = -1

# ID of producer controlled by this node (e.g. inita; may specify multiple times) (eosio::producer_plugin)
producer-name = tokyo

# (DEPRECATED - Use signature-provider instead) Tuple of [public key, WIF private key] (may specify multiple times) (eosio::producer_plugin)
# private-key =

# Key=Value pairs in the form <public-key>=<provider-spec>
# Where:
#    <public-key>    	is a string form of a vaild EOSIO public key
#
#    <provider-spec> 	is a string in the form <provider-type>:<data>
#
#    <provider-type> 	is KEY, or KEOSD
#
#    KEY:<data>      	is a string form of a valid EOSIO private key which maps to the provided public key
#
#    KEOSD:<data>    	is the URL where keosd is available and the approptiate wallet(s) are unlocked (eosio::producer_plugin)
signature-provider = EVS5TqRSpe4X8kAVtqQbSQCSinDTFYcjrQmqMZ3vThi7JptGHESMc=KEY:5JE5tGPoG6rcPyvrFsGLZzJqw6dQbfjVTnAjravtbkhysNvBcGF

# Limits the maximum time (in milliseconds) that is allowd for sending blocks to a keosd provider for signing (eosio::producer_plugin)
keosd-provider-timeout = 5

# account that can not access to extended CPU/NET virtual resources (eosio::producer_plugin)
# greylist-account =

# offset of non last block producing time in microseconds. Negative number results in blocks to go out sooner, and positive number results in blocks to go out later (eosio::producer_plugin)
produce-time-offset-us = 0

# offset of last block producing time in microseconds. Negative number results in blocks to go out sooner, and positive number results in blocks to go out later (eosio::producer_plugin)
last-block-time-offset-us = 0

# ratio between incoming transations and deferred transactions when both are exhausted (eosio::producer_plugin)
incoming-defer-ratio = 1

# the location of the snapshots directory (absolute path or relative to application data dir) (eosio::producer_plugin)
snapshots-dir = "snapshots"

# the location of the state-history directory (absolute path or relative to application data dir) (eosio::state_history_plugin)
state-history-dir = "state-history"

# enable trace history (eosio::state_history_plugin)
trace-history = false

# enable chain state history (eosio::state_history_plugin)
chain-state-history = false

# the endpoint upon which to listen for incoming connections (eosio::state_history_plugin)
state-history-endpoint = <IP_ADDRESS>:8080

# Lag in number of blocks from the head block when selecting the reference block for transactions (-1 means Last Irreversible Block) (eosio::txn_test_gen_plugin)
txn-reference-block-lag = 0

# Plugin(s) to enable, may be specified multiple times
# plugin =
plugin = eosio::producer_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::history_plugin
plugin = eosio::history_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::bnet_plugin

Can you remove the eosio::bnet_plugin and try again.

I removed bnet_plugin once, but it will also crash.

Can I know your hardware config and the script as well?

@qmarliu can you tell the impact  ?

@qmarliu are you still seeing this crash with 1.6.4 or 1.7.2 ?

Have not heard back from the reporter, closing.


Fix oplog index parsing error when reading from S3

Please see the below error :
https://github.com/golemcloud/golem-cloud/actions/runs/9463481259/job/26069194051?pr=1398
e matching version with:
cargo install<EMAIL_ADDRESS>
Updated component with ID cc946cb1-983c-4728-a2ec-2df8778dfa4a. New version: 3. Component size is 430072 bytes.
Component name: shopping-cart-ci-rust-1-ubuntu-latest-large.
Exports:
	golem:it/api/initialize-cart(user-id: string)
	golem:it/api/add-item(item: record { product-id: string, name: string, price: float32, quantity: u32 })
	golem:it/api/remove-item(product-id: string)
	golem:it/api/update-item-quantity(product-id: string, quantity: u32)
	golem:it/api/checkout() -> variant { error(string), success(record { order-id: string }) }
	golem:it/api/get-cart-contents() -> list<record { product-id: string, name: string, price: float32, quantity: u32 }>
# Invoke worker shopping-cart-1-ci-rust-1-ubuntu-latest-large
Warning: golem-cli 0.0.102 is older than the targeted Golem servers (0.1.0)
Install the matching version with:
cargo install<EMAIL_ADDRESS>
Error: InternalError: GolemErrorBody { golem_error: RuntimeError(GolemErrorRuntimeError { details: "status: Cancelled, message: \"h2 protocol error: http2 error: stream error received: stream no longer needed\", details: [], metadata: MetadataMap { headers: {} }" }) }
[cargo-make] ERROR - Error while executing command, exit code: 1
[cargo-make] WARN - Build Failed.
Error: Process completed with ex

and the cause is

{"timestamp":"2024-06-11T10:06:08.330721Z","level":"INFO","message":"Recovering workers","target":"golem_worker_executor_base::durable_host","span":{"api":"assign_shards","name":"grpc_request"},"spans":[{"api":"assign_shards","name":"grpc_request"}]}
{"timestamp":"2024-06-11T10:06:08.970916Z","level":"INFO","message":"Finished recovering workers","target":"golem_worker_executor_base::durable_host","span":{"api":"assign_shards","name":"grpc_request"},"spans":[{"api":"assign_shards","name":"grpc_request"}]}
{"timestamp":"2024-06-11T10:06:08.970958Z","level":"INFO","message":"gRPC request succeeded in 640ms","target":"golem_worker_executor_base::metrics::grpc","span":{"api":"assign_shards","name":"grpc_request"},"spans":[{"api":"assign_shards","name":"grpc_request"}]}
{"timestamp":"2024-06-11T10:18:12.424849Z","level":"INFO","message":"Get workers for component: cc946cb1-983c-4728-a2ec-2df8778dfa4a, filter: name == shopping-cart-1-ci-rust-1-ubuntu-latest-large, cursor: 0/0, count: 2, precise: true","target":"golem_worker_executor_base::services::worker_enumeration","span":{"api":"get_workers_metadata","component_id":"cc946cb1-983c-4728-a2ec-2df8778dfa4a","name":"grpc_request"},"spans":[{"api":"get_workers_metadata","component_id":"cc946cb1-983c-4728-a2ec-2df8778dfa4a","name":"grpc_request"}]}
{"timestamp":"2024-06-11T10:18:12.427658Z","level":"INFO","message":"identity cache miss occurred; added new identity (took Ok(3.71819ms))","target":"aws_smithy_runtime::client::identity::cache::lazy","span":{"name":"lazy_load_identity"},"spans":[{"api":"get_worker_metadata","worker_id":"cc946cb1-983c-4728-a2ec-2df8778dfa4a/shopping-cart-1-ci-rust-1-ubuntu-latest-large","name":"grpc_request"},{"name":"lazy_load_identity"}]}
{"timestamp":"2024-06-11T10:18:12.446553Z","level":"INFO","message":"gRPC request succeeded in 21ms","target":"golem_worker_executor_base::metrics::grpc","span":{"api":"get_workers_metadata","component_id":"cc946cb1-983c-4728-a2ec-2df8778dfa4a","name":"grpc_request"},"spans":[{"api":"get_workers_metadata","component_id":"cc946cb1-983c-4728-a2ec-2df8778dfa4a","name":"grpc_request"}]}
{"timestamp":"2024-06-11T10:18:12.461603Z","level":"ERROR","message":"Checking existence of blob at<PHONE_NUMBER>14-component-store-dev::\"root/cc946cb1-983c-4728-a2ec-2df8778dfa4a/shopping-cart-1-ci-rust-1-ubuntu-latest-large\" failed with non-retriable error after 1 attempts with service error","target":"golem_common::retries","span":{"api":"get_worker_metadata","worker_id":"cc946cb1-983c-4728-a2ec-2df8778dfa4a/shopping-cart-1-ci-rust-1-ubuntu-latest-large","name":"grpc_request"},"spans":[{"api":"get_worker_metadata","worker_id":"cc946cb1-983c-4728-a2ec-2df8778dfa4a/shopping-cart-1-ci-rust-1-ubuntu-latest-large","name":"grpc_request"}]}
thread 'tokio-runtime-worker' panicked at /home/runner/.cargo/git/checkouts/golem-d4897a888ca93a37/e1d0750/golem-worker-executor-base/src/services/oplog/blob.rs:268:32:
failed to parse oplog index from path: "root/cc946cb1-983c-4728-a2ec-2df8778dfa4a/shopping-cart-1-ci-rust-1-ubuntu-latest-large/__dir_marker"
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panicking.rs:645:5
   1: core::panicking::panic_fmt
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panicking.rs:72:14
   2: golem_worker_executor_base::services::oplog::blob::BlobOplogArchive::path_to_oplog_index
   3: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
   4: alloc::vec::in_place_collect::<impl alloc::vec::spec_from_iter::SpecFromIter<T,I> for alloc::vec::Vec<T>>::from_iter
   5: <alloc::collections::btree::map::BTreeMap<K,V> as core::iter::traits::collect::FromIterator<(K,V)>>::from_iter
   6: <golem_worker_executor_base::services::oplog::blob::BlobOplogArchiveService as golem_worker_executor_base::services::oplog::multilayer::OplogArchiveService>::open::{{closure}}
   7: <golem_worker_executor_base::services::oplog::blob::BlobOplogArchiveService as golem_worker_executor_base::services::oplog::multilayer::OplogArchiveService>::read::{{closure}}
   8: <golem_worker_executor_base::services::oplog::multilayer::MultiLayerOplogService as golem_worker_executor_base::services::oplog::OplogService>::read::{{closure}}
   9: <golem_worker_executor_base::services::worker::DefaultWorkerService as golem_worker_executor_base::services::worker::WorkerService>::get::{{closure}}
  10: <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll
  11: <golem_worker_executor_base::grpc::WorkerExecutorImpl<Ctx,Svcs> as golem_api_grpc::proto::golem::workerexecutor::worker_executor_server::WorkerExecutor>::get_worker_metadata::{{closure}}
  12: <<golem_api_grpc::proto::golem::workerexecutor::worker_executor_server::WorkerExecutorServer<T> as tower_service::Service<http::request::Request<B>>>::call::GetWorkerMetadataSvc<T> as tonic::server::service::UnaryService<golem_api_grpc::proto::golem::workerexecutor::GetWorkerMetadataRequest>>::call::{{closure}}
  13: <golem_api_grpc::proto::golem::workerexecutor::worker_executor_server::WorkerExecutorServer<T> as tower_service::Service<http::request::Request<B>>>::call::{{closure}}
  14: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
  15: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
  16: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
  17: <tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll
  18: <tower::util::either::Either<A,B> as core::future::future::Future>::poll
  19: <tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll
  20: <hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll
  21: tokio::runtime::task::harness::Harness<T,S>::poll
  22: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
  23: tokio::runtime::scheduler::multi_thread::worker::Context::run
  24: tokio::runtime::context::set_scheduler
  25: tokio::runtime::context::runtime::enter_runtime
  26: tokio::runtime::scheduler::multi_thread::worker::run
  27: tokio::runtime::task::core::Core<T,S>::poll
  28: tokio::runtime::task::harness::Harness<T,S>::poll
  29: tokio::runtime::blocking::pool::Inner::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
^C

As of now we have a single bucket, and assuming prefixes will save us from using it for different buckets.
The first thing is to isolate various use cases with different buckets, and take it for a team discussion


pyrsia build throws error 500

Steps taken/Steps to reproduce
steve@pyrsia-nightly-build:~$ pyrsia inspect-log docker --image debian:unstable-20221114-slim
[]
steve@pyrsia-nightly-build:~$ pyrsia build docker --image debian:unstable-20221114-slim
Build request failed with error: HTTP status server error (500 Internal Server Error) for url (http://localhost:7888/build/docker)

Pyrsia CLI log
Trying to add an image which doesn't exist in Pyrsia.  E.g. bash:3.2.57
manasd@manasd-mac 22-11-18 10:03:05 pyrsia % ./target/debug/pyrsia ping
Connection Successful !!
manasd@manasd-mac 22-11-18 10:05:43 pyrsia % curl http://<IP_ADDRESS>:7888/status
{"peers_count":1,"peer_id":"12D3KooWE89gSwyp1R8yi9CAhC6EB6AhnKfn7CmoTd2cf61ZY4x3","peer_addrs":["/ip4/<IP_ADDRESS>/tcp/53833/p2p/12D3KooWE89gSwyp1R8yi9CAhC6EB6AhnKfn7CmoTd2cf61ZY4x3","/ip4/<IP_ADDRESS>/tcp/53833/p2p/12D3KooWE89gSwyp1R8yi9CAhC6EB6AhnKfn7CmoTd2cf61ZY4x3","/ip4/<IP_ADDRESS>/tcp/53833/p2p/12D3KooWE89gSwyp1R8yi9CAhC6EB6AhnKfn7CmoTd2cf61ZY4x3"]}%                                                                            manasd@manasd-mac 22-11-18 10:05:50 pyrsia % ./target/debug/pyrsia config -s
Config file path: /Users/manasd/Library/Preferences/rs.pyrsia-cli/default-config.toml
host = '<IP_ADDRESS>'
port = '7888'
disk_allocated = '5.84 GB'
manasd@manasd-mac 22-11-18 10:17:26 pyrsia % ./target/debug/pyrsia inspect-log docker --image bash:3.2.57
[]
manasd@manasd-mac 22-11-18 10:06:00 pyrsia % ./target/debug/pyrsia build docker --image bash:3.2.57
Build request failed with error: HTTP status server error (500 Internal Server Error) for url (http://<IP_ADDRESS>:7888/build/docker)
manasd@manasd-mac 22-11-18 10:06:06 pyrsia %

Pyrsia Node log
2022-11-18T18:14:00.631Z DEBUG pyrsia::artifact_service::service    > Request build of Docker "bash:3.2.57"
2022-11-18T18:14:00.631Z DEBUG pyrsia::artifact_service::service    > Got local node with peer_id: PeerId("12D3KooWE89gSwyp1R8yi9CAhC6EB6AhnKfn7CmoTd2cf61ZY4x3")
2022-11-18T18:14:00.633Z DEBUG pyrsia::artifact_service::service    > Got authorized node with peer_id: PeerId("12D3KooWESWCgqtTAD7kJ6inmNZymaNWPZjzQJEsC4ApkvVY19k7")
2022-11-18T18:14:00.635Z DEBUG pyrsia::artifact_service::service    > Request build in authorized node from p2p network
2022-11-18T18:14:00.635Z DEBUG pyrsia::network::client              > p2p::Client::request_build PeerId("12D3KooWESWCgqtTAD7kJ6inmNZymaNWPZjzQJEsC4ApkvVY19k7"): Docker: "bash:3.2.57"
2022-11-18T18:14:00.635Z DEBUG pyrsia::network::client              > Build requested successfully
2022-11-18T18:14:00.635Z DEBUG pyrsia::network::event_loop          > Event loop :: send build request
2022-11-18T18:14:00.635Z DEBUG pyrsia::network::event_loop          > Event loop :: build request sent with id RequestId(4)
2022-11-18T18:14:00.635Z DEBUG pyrsia::network::event_loop          > RequestResponseMessage::OutboundFailure RequestId(4) with error DialFailure
2022-11-18T18:14:00.636Z DEBUG pyrsia::docker::error_util           > Rejection: Rejection(RegistryError { code: Unknown("Failed to initialize a build: Failed to dial the requested peer") })
2022-11-18T18:14:00.636Z DEBUG pyrsia::docker::error_util           > ErrorMessage: ErrorMessage { code: Unknown(""), message: "Failed to initialize a build: Failed to dial the requested peer" }
2022-11-18T18:14:00.636Z INFO  pyrsia_registry                      > <IP_ADDRESS>:53985 "POST /build/docker HTTP/1.1" 500 "-" "-" 4.940568ms

Expected Behavior
Build should be run
Experienced Instance of the bug
pyrsia-node-0.2.0+2520

I tried images alpine:3.16 and bash:3.2.57 using the latest code with commit ce8eb66838c31bd00b1aa178c0d0003a3a73412c, but couldn't reproduce the issue.
xuefeihan@xuefeih-mac pyrsia % ./target/debug/pyrsia inspect-log docker --image alpine:3.16
[]
xuefeihan@xuefeih-mac pyrsia % ./target/debug/pyrsia build docker --image alpine:3.16
Build request successfully handled. Build with ID 6c7c1435-171a-4a2f-b667-79d4f2884277 has been started.
xuefeihan@xuefeih-mac pyrsia % ./target/debug/pyrsia inspect-log docker --image bash:3.2.57
[]
xuefeihan@xuefeih-mac pyrsia % ./target/debug/pyrsia build docker --image bash:3.2.57
Build request successfully handled. Build with ID fe42ec34-e8d0-4a28-8680-eeee50722bcd has been started.

I was able to reproduce against the nightly cluster. The reason is very simple: the nightly cluster has a bunch of blocks/logs already and it takes some time to download them. So basically what is happening is that you're trying to request a build, but the log that marks who is an authorized build node wasn't received yet.
If you leave your node running for a couple of minutes, you'll see logs like 'Transparency log inserted into database' then the build trigger will succeed.
So first task resulting from this problem:

Improve error messaging while the Pyrsia node is initializing (and doesn't know which node is authorized yet)

However, I'll also create another follow-up issue to

investigate / speed-up the block initialization at start-up.

This was fixed by reinitializing the artifact directory.


Display signatures in CodeLens above functions

It would greatly help my development experience if the signature of functions appeared above their definition, like in VS Code (perhaps using CodeLens?).

Hey look into #2967 that's my PR for Code Lens. It's unfortunately currently blocked. We need to wait till Microsoft opens their API.
Also this is a duplicate I think.

Great, thanks. I searched for "signature", but found no relevant issues from the first few search result pages.
Not holding my breath, though - it's been requested for a long time...

Wait, why is it blocked again? From the GIFs it seems it's working great, even though the CodeLens API is not open.

Haha thanks :smile:
Well it's problematic. It's difficult to achieve, I've developed I think 4 different caching systems in combination with the UI system. The last two caching system didn't work well but would prove best caching capabilities. If I choose an older version with worse caching I can get it working again.

@cartermp told me that movement happens @cmeeren

Would it be possible to offer a current implementation as a default-off option that users can turn on? Because IMHO this is certainly THE single most significant feature that would drastically improve my F# dev experience. I find myself mouseover-ing absolutely everything all the time to check signatures while I code.

My point being, I would gladly sacrifice some UI responsiveness for signatures.

I can update my old versions. However be aware of that it doesn't work well with duplicates!

What do you mean by duplicates, and how could I get this functionality?

I'll answer you later. Currently in a meeting :smile Ping me in at least 2 hours

Can I find you on the FSSF slack @cmeeren?

Sorry, I'm not on slack.

I'm for merging the feature PR, off by default. Code lens is quite tricky to implement in a bug free and fast way, look at Ionide, for example (I cannot test VS for Mac implementation though (no a Mac around), but it may make a sense to see how it's done there (if it's OSS, which might be not the case)).

@cmeeren let us talk over gitter, https://gitter.im/Microsoft/visualfsharp

Decided to join FSSF on slack, see you there. :)

Closing as dupe of #2364


Send raised exception: (dut) contains no object named (J = array of vectors = RAM)

I'm using Icarus verilog 0.9.7 on Ubuntu, and I can't access or view a multiple dimension array. Here is an adder modified example.
// Adder DUT
module adder #(
    parameter   DATA_WIDTH = 4
) (
    input      [DATA_WIDTH-1:0] A,
    input      [DATA_WIDTH-1:0] B,
    output reg [DATA_WIDTH:0] X
    );

  reg [DATA_WIDTH-1:0] J [1:0];

  always @(A or B) begin
    X <= A + B;
    J[1] <= A; J[0] <= B;
  end

endmodule

# Simple tests for an adder module
import cocotb
from cocotb.triggers import Timer

@cocotb.test()
def adder_basic_test(dut):
    """Test for 5 + 10"""
    yield Timer(2)
    dut.A = 5
    dut.B = 2

    yield Timer(2)

    #cocotb.log.info(dut.J[0])
    dut.J[0] = 2;
    #print (dut.J)
#any of these 3 intructions fails

and I get the following error:

Send raised exception: adder contains no object named J
File "/cocotb/decorators.py", line 212, in send
return self._coro.send(value)
File "/examples/adder/tests/test_adder.py", line 14, in adder_basic_test
dut.J[0] = 2;
File "***/cocotb/handle.py", line 289, in getattr
raise AttributeError("%s contains no object named %s" % (self._name, name))
5000000000.00ns ERROR    cocotb.regression                         regression.py:286  in handle_result                   Test Failed: adder_basic_test (result was TestError)
5000000000.00ns ERROR    cocotb.regression                         regression.py:196  in tear_down                       Failed 1 out of 1 tests (0 skipped)

Any help would be appreciated

I seem to remember this being and issue with Icarus, can you try the latest master or Icarus?

I've downloaded the lastest git repo of cocotb, iverilog, and also tryied the lastest release of both and I keep getting the same error

I've read in EDA playground that Iverilog 10 isn't compatible with cocotb, but it seems its no longer true.
I will try with different versions of icarus

It doesn't seem to be icarus fault, previous versions behave the same. Cocotb downgrade doesn't seems to work either. Could it be a python version issue ? or maybe a gcc or g++ one

When I try to make the program identify the array with _discover_all or iter, I get the following warning, wich is just a stdout, not a cocotb error, so maybe its a c compile error in handilng the variables

4000000000.00ns WARNING  cocotb.gpi                                GpiCommon.cpp:392  in gpi_next                        Unable to create J via any registered implementation

GHDL throws me the same error

no one else has this problem ?

That output above it from cocotb. Support for different types is dependent on the simulator, the open sources ones do not provide as much coverage as the aid for ones unfortunately. I'm inclined to close this as I don't believe at the moment the issue is related to cocotb. If you try this on modelsim (also free, well at one time) and see the same issue then please re-open.


Perform all CPG loading via CpgLoader

We currently have two public classes for CPG loading: CPGLoader and ProtoCpgLoader. This is due to the fact that we supported multiple CPG formats in the past. As of today, only the proto format survived. As I was documenting CPG loading, I was wondering whether we should make ProtoCpgLoader a private class that provides the default implementation for CpgLoader. Let's locate all the places where ProtoCpgLoader is used directly and see if we can instead use CpgLoader. If this is not possible, we may need to make modifications to CpgLoader.
If this all works well, I think we should round off the CPG loading topic by creating unit tests against CpgLoader. What do you guys think?

Agreed, that makes sense. @lifecoder can you take this?

@mpollmeier Sure

It is used by fuzzyc2cpg and codescience/cpgqueryingtests:
https://github.com/ShiftLeftSecurity/fuzzyc2cpg/blob/29dbc250f8d75fe3be8dd8f910e16f513f0b3108/src/main/java/io/shiftleft/fuzzyc2cpg/output/inmemory/OutputModule.java#L54
codescience/cpgqueryingtests:
https://github.com/ShiftLeftSecurity/codescience/blob/5c2e6618a86ed984b88ecf68df1568cb5dd8459e/cpgqueryingtests/src/test/scala/io/shiftleft/cpgqueryingtests/codepropertygraph/ProtoCpgTestFixture.scala#L60
https://github.com/ShiftLeftSecurity/codescience/blob/d3f81a3b70e06b16b63bfc9a013997d55318cab7/cpgqueryingtests/src/test/scala/io/shiftleft/cpgqueryingtests/codepropertygraph/CpgPreprocessor.scala#L58

Concerning this ticket: I just found that cpgqueryingtests in codescience actually has a few tests for CPG loading based on the proto loader (ProtoLoaderTests). However, those tests are full-on integration tests and the fact that this is a bad idea is pointed out in a TODO. After gettings tests into codepropertygraph for CpgLoading, I think it's fine if we remove those tests in codescience.

@lifecoder just so you don't get confused, the TODO @fabsx00 refers to is not the one in the test, but the one in ProtoCpgTestFixture:
// TODO Rewirte this tests. This is acutally a full integration test which is way to much here.
// What we need is some code which composes a proto CPG structure, feed this structure to the ProtoCpgLoader
// and than query the graph. But query the graph without our cpg steps. Pure gremlin scala to keep it simple and
// separated.

Correct.

Added tests: https://github.com/ShiftLeftSecurity/codepropertygraph/pull/339

Outdated.


Major Rewrite

[W.I.P] Massive rewrite for Reader Discord bot.
Closes #5, closes #13, closes #1

Note that this significant rewrite that fixes #13 is temporary. This issue is site-related and there's not much to resolve this.

Change Logs

Better code styling.

Main and core implementation are done via a custom local framework. All custom classes/modules have been adequately sorted in their separate file.

Improved localisations.

ReaderClient#translate method is now exist. All available translations can be found in the localisation folder.

Fully migrated from normal message to slash commands.
Fully migrated from SQLite3 database to MongoDB.
Dashboard has been fully removed

Plan on a major rewrite with NuxtJS.

Improved ESLint rules
And more...

I'm planning to improve even more but it's best to cover and fix everything from the previous version. Other improvements and features will be done in a separate pull request.

Looks like everything is ready. Some features will be implemented in future versions.


Add TOTP 2FA

Add two-factor authentication using TOTP (using authenticator app).
See reference here.

This issue has been deferred because of the limited time and technical complexity involved in implementing two-factor authentication.

The reference in the issue description is outdated. Laravel Orchid has already dropped two-factor authentication support in 9.0.
Future developers might need to implement Laravel Jetstream since Laravel Orchid recommends it.


Compressed Sass output support

If the output style is changed from expanded to compressed here
https://github.com/twbs/bootstrap/blob/f1f320461066aec558a2a11cfb2f73c841434732/package.json#L24
the build fails, because keywords like white are converted to #fff. By converting the keys to strings, Sass won't recognize the keys as colors anymore.
I've opened https://github.com/twbs/bootstrap/issues/29701 to have a look at testing this by default.

Do we have any other places?

BTW this would maybe make sense to have it as a rule in stylelint or stylelint-scss. Not sure where, and how hard it will be to implement.

Yeah, I've been thinking about that too, probably something for stylelint-scss since it's about Sass maps.

Please make a feature request in stylelint-scss so that we track this and we'll see if anyone will jump in to provide a patch :)

It seems this is already a thing, I've opened https://github.com/twbs/stylelint-config-twbs-bootstrap/issues/35 to have a look at this, but this will be quite a bulky change.


spec file need updating

Spec file is referencing some old locations and should be updated for the new pathing of this repo

#4 resolves this problem @dbmurphy

Closed Per PR #4


[Task]: Create a POC for implementing a library for design system

Motivation

To implement a POC that will help to package our components via npm.
This POC will act as a library for the new design system for the platform and the widget level.

Requirements
The requirement is to create a simple project that would help to package the components that are developed for the Appsmith's platform and on the widget level. A user should be able to do the following if he/she wants to use our design system library: npm install @appsmith/appsmith-design-system

Here is the NPM Packaging POC.
Link to the POC: https://github.com/keyurparalkar/npm-packaging-example
Note: Please switch to the feat/code-spliting branch
It is a POC for implementing a component library to package the components that are developed for the Appsmith’s platform level components and widget level components. Below is the set of features that it implements:

Code Splitting
Tree shaking
Support imports: import { Button } from "npm-packaging-poc" AND import Button from "npm-packaging-poc/lib/Button"
Installable package (Locally)

Here is the notion doc which describes the researches, list of features, Things that went well and didn’t go as expected. https://www.notion.so/appsmith/NPM-Packaging-POC-78da5be80eeb40d99035c536bb3e480d

Looks good to me. Implemented these in the repo


pep8 for mnist examples; minor fix for latest spark/mnist_dist.py

I agree with you, we should write codes using coding standards.


Analysis io tests

Added test_h5.py.
Added test functions for read_timeseries and write_timeseries, checking their arguments, return values and weather they are reading and writing to the hd5 file correctly.
modified h5.py as follows:

line 35: f[key] = value
was throwing the following error: TypeError: Object dtype dtype('O') has no native HDF5 equivalent
solution:
replaced line 35 with f.create_dataset(name=key, data=str(value))
line 46: outputs.append(f[dataset][:].reshape(-1)
was throwing multiple errors:
ValueError: Illegal slicing argument for scalar dataspace
AttributeError: 'bytes' object has no attribute 'reshape'
solution:
replaced with: outputs.append(np.asarray(f[dataset][:]).reshape(-1))

I think I have resolved all issues except the one where the code needs to run through pre-commit hooks and proper formatting. Not sure what that means.
Please review the changes that I have committed to my branch

Hi Alec,
I didn't see anyone in the zoom room last week during our regular meeting
on Thursday. I wanted to ask you if there is anything you would like me to
work on. Let me know.
Thanks
Rafia
On Tue, Jun 21, 2022 at 3:11 PM Alec Gunny @.***> wrote:

Closed #1 https://github.com/alecgunny/BBHNet/pull/1.
—
Reply to this email directly, view it on GitHub
https://github.com/alecgunny/BBHNet/pull/1#event-6850694710, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ANHQOKYVJZ5IWBI525MNZULVQIOY5ANCNFSM5XFWO2LQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

I guess I may have messed up stuff while merging last night. It was very
difficult and there were quite a few diffs/ changes. I thought I had them
all sorted out but I guess not so. My vscode shows my branch
(analysis-io-tests) up to date with alec:gunny which is another nuisance as
I am seeing repeatedly that github, git and vscode don't seem to be in sync.
I think it's best to just checkout/add one file that I am working on, like
you said. That will keep things intact.
Rafia
On Mon, Jun 6, 2022 at 1:44 PM Alec Gunny @.***> wrote:

This does not appear to be up-to-date with the latest changes to the
alecgunny:analysis branch, and as a result it's very hard to tell what
are changes that were made deliberately, and what are resulting from being
out-of-date. It also unfortunately appears that these changes have somehow
been added as later commits, so they're not appearing as conflicted
files but rather as updates that would be applied. Have you run git
merge analysis recently?
Also, I'm not sure it makes sense to commit your .vscode settings in to
the repo.
—
Reply to this email directly, view it on GitHub
https://github.com/alecgunny/BBHNet/pull/1#issuecomment-1147769086, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ANHQOK4OBGHSWJSZM6T5YLDVNZBKFANCNFSM5XFWO2LQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

Hi Alec,
Nice to hear from you! Yes, definitely I would like to restart - will slack
you soon to see what might be a good place to start.
Thanks again for the opportunity!
Rafia
On Wed, Oct 12, 2022 at 9:35 AM Alec Gunny @.***> wrote:

Hi @rafia17 https://github.com/rafia17 , as you mentioned there's been
quite a few changes since this was last open, and I think the issue this
was meant to address has been resolved at this point anyway. I would say if
you want to jump back in it would make sense to take a look at the issues
page and see if there's anything open you might like to try your hand at!
Happy to help get you back up and running, feel free to Slack me and we can
talk more about what a good path for that might be
—
Reply to this email directly, view it on GitHub
https://github.com/alecgunny/BBHNet/pull/1#issuecomment-1276286034, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ANHQOK46OWB5SRAFQ7CXYL3WC3EC3ANCNFSM5XFWO2LQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


startx display manager does not support autoLogin... :(

hi,
In options at "services.xserver.displayManager" branch, when i "startx.enable=true;" and "autologin.enable=true;" ... nothing happens... :(
I expected the startx would be started, and restarted when ever exited.
Also would be nice to have a ...startx.xinitrc option.

This is the bug tracker for https://search.nixos.org and not the right place to ask general nix or nixpkgs questions.
startx is not a real display manager, it's a program that allows you to start X manually from the console. Enabling the option simply turns off the default display manager, so you can log in at the TTY. If you want that to happen automatically, have a look at services.getty.autologinUser.

Please, when suggesting me to go somewhere else, give me a more direct link to where should i ask what ever i may not here.
I'm asking about options not packages, what should i ask here then?
... though is at "displayManager.startx"... o.O?... :), if is to simply have the startx command available, i would install the package where startx is. It would make sense that this option would go well with the "autologin.enable=true", and behave like a restarting-"window manager".
I'm migrating from debian, where i do auto-login only at tty1 and run startx (which then requests the passord) from .bashrc, just like you seam to suggest. But in nixos "services.getty.autologinUser" does login into all tty*, leaving 5 open consoles... i searched for some option like "services.getty.<tty?>.autologinUser", but found none... any suggestion?

https://search.nixos.org is only a web interface that allows you to search through nixpkgs packages and options. This bug tracker is for reporting issues with the website itself. For issues with nixpkgs (or NixOS, which is a part of nixpkgs), you can open an issue in the nixpkgs repository.
For questions rather than issues, prefer asking on Matrix or on Discourse.
If you're curious about how displayManager.startx is implemented, you can search for the option on https://search.nixos.org and click the "Declared in" link to see the source of the module.

i'll set my sails to nixpkgs repository.
i prefer avoiding opening new accounts arround.
yes... maybe i even try to implement the solution my self, if easy enough.
& thank you for the clarification and information...  :)


Add aliases for multiple sites and loss of configurations

Hello, i have a drupal  multisite , I have added the scripts where I define the aliases of these sites and they work well, the problem is that when for example my work day ends, I turn off the computer, the next day, start with ddev start, the files of configuration are no longer. I know it has to do with the docker containers, but is there any way I can keep these files and not have to add them every time I start the containers?
Forgive my ignorance, have a little information on how to deal with this situation is very useful.
Thank you

Hi @Gonzalo2683. When you say you've added the scripts, where do those live? Are you generating them into the container? Can they be committed to the codebase and available when ddev start occurs? One way to do this programmatically with each start is to, in config.yml, use a post-start action to perform drush or shell commands to set things up the way you want them each time. https://ddev.readthedocs.io/en/latest/users/extending-commands/

Hi @rickmanelius , the alias scripts are the following location:
Enter the server by ssh
ddev ssh --service web
cd ~/.drush

There you find a folder called aliases

This is the place where you add the aliases

I recommend the technique in https://stackoverflow.com/questions/51065163/how-can-i-get-my-drush-aliases-into-the-ddev-web-container

Excellent, everything is working successfully

Glad to hear it! Closing this, happy to continue the conversation though.


merge() with a leading join() doesn't overwrite

I'm trying to load configuration variables from various sources using figment. The module looks like this:
#[derive(Deserialize)]
pub struct Config {
    pub port: u16,
    pub host: String,
}

pub fn load_config() -> Config {
    let file_name = "config";

    Figment::new()
        .join(("port", 8080))
        .join(("host", "localhost"))
        .merge(Env::raw())
        .extract()
        .expect("Fail to load config")
}

When I'm tried to test the load_condig function, it seems that the environment variables don't get loaded. Here is my test module
#[cfg(test)]
mod tests {
    use super::*;
    use std::env;

    #[test]
    fn loads_defaults() {
        let res = load_config();
        assert_eq!(res.host, "localhost");
        assert_eq!(res.port, 8080);
    }

    #[test]
    fn environment_variables_override_defaults() {
        env::set_var("port", "8888");
        let res = load_config();
        assert_eq!(res.port, 8888);
    }
}

The first test run successfully.  But the second test fails - the port stays unchanged although I expected it to be overwritten in the figment with 8888.
What I am doing wrong? It seems that the env vars don't get loaded or not overwritten correctly.  I also tested with Jail as follows, but with the same result with the port variables don't get overwritten.
#[test]
  fn environment_variables_override_defaults_in_jail() {
      figment::Jail::expect_with(|jail| {
          jail.set_env("port", 8888);
          let res = load_config();
          assert_eq!(res.port, 8888);
          Ok(())
      });
  }

I also wanted to load configuration variables from a file which should overwrite the defaults. But this doesn't seem to work either, although I basically used this example from the docs
  #[test]
    fn file_overwrites_defaults_with_jail() {

        figment::Jail::expect_with(|jail| {
            jail.create_file("config.toml", r#"
        port = 9999
    "#)?;

            let config: Config = Figment::new()
                .join(("port", 8080))
                .join(("host", "localhost"))
                .merge(Toml::file("config.toml"))
                .extract().expect("extract result");

            assert_eq!(config, Config {
                port: 9999,
                host: "localhost".to_string()
            });

            Ok(())
        });
    }

Hello! I was looking at this issue as I seem to have the same problem. But I made an interesting observation when working with @jaads example test.
At first glance, the issue seems to be in the merge/join logic (from looking at the code, the term coalescence is used internally). But if you replace the Toml::file(...) call. The issue seems to go away.
#[test]
fn file_overwrites_defaults_with_jail() {

    #[derive(Debug, Deserialize, PartialEq)]
    pub struct Config {
        pub port: u16,
    }

    figment::Jail::expect_with(|jail| {

        let config: Config = Figment::new()
            .join(("port", 8080))
            // Note the inlining of the config file vs `Toml::file("config.toml")` before
            .merge(("port", 9999))
            .extract().expect("extract result");

        // Test passes!
        assert_eq!(config, Config {
            port: 9999,
        });

        Ok(())
    });
}

This suggests that there is a problem in the interaction between Data::file (the internal impl of Toml::file) and coalescing. I'll be taking a look later to see if I can find the actual issue there.

I have found the issue with the example test case that you provided @jaads . At first glance it seems to be an issue with the join & merge operators. But it actually boils down to interaction between profiles.
a good way to visualise this is using the .data() method available on anything that implements Provider. This gives the first clue to what actually is going on.
If we visualise the data shape of ("port", 8080)
#[test]
fn visualise_tuple() {
    let config = ("port", 8080);
    let shape = dbg!(&config.data());
}

We see the following (cleaned up for readability):
&config.data() = Ok(
    {
        Profile(string: "global"): {
            "port": Num(8080),
        },
    },
)

Note the Profile(string: "global"). This means that the data is assigned to the global profile. Which influences merging & joining. If we visualise the result of Toml::File (using Toml::string() so we don't actually need a file).
#[test]
fn visualise_toml_data() {
    let toml = Data::<Toml>::string("port = 9999");
    let shape = dbg!(&toml.data());
}

we see (again, cleaned up for readability):
&toml.data() = Ok(
    {
        Profile(string: "default"): {
            "port": Num(9999),
        },
    },
)

Where you can see that the value is under a different profile. If you use the toml & tuple file and try to combine them inside a Figment, you don't get what you expect.
What actually happens inside the test case then?
first, an empty Figment is constructed (let config: Config = Figment::new()). The internal .data() looks like this
{
   // No data here
}

The first set of port information is joined (.join(("port", 8080))). The data inside figment looks like this.
{
   // Data is joined against an empty dictionary, so the port is set
   Profile(string: "global"): {
       "port": Num(8080),
   },
}

Then we merge the toml file .merge(Toml::file("config.toml"))
{
   // Original data was not touched because it has the `global` profile.
   Profile(string: "global"): {
       "port": Num(8080),
   },
   // Because the data was merged with a different profile (`default`), the data was not combined
   Profile(string: "default"): {
       "port": Num(9999),
   },
}

So the data never actually got combined! But how do we get 9999 as extracted value then? That's the next part of this rabbit hole...
Default combining behaviour of Figment
If we take a look at Figment::extract() we see that it first retrieves a the current value of the Figment using the merged() method. What does that do? We can get a clue from the profiles section in the docs

There are two built-in profiles: the aforementioned default profile and the Global profile. As the name implies, the default profile contains default values for all profiles. The global profile also contains values that correspond to all profiles, but those values supersede values of any other profile except the global profile, even when another source is merged.

merged() implements this behaviour. The internal steps basically boil down to this:

Is the currently selected profile default?

Take the value of the current (the default) profile
Merge global into it.

So when deserializing your port value:

take 9999
Merge 8080 on top.

The end result becomes 8080!
Original code example
The bug becomes easy to see once you know all this:
#[derive(Deserialize)]
pub struct Config {
    pub port: u16,
    pub host: String,
}

pub fn load_config() -> Config {
    let file_name = "config";

    Figment::new()
        .join(("port", 8080))        // Loaded in global profile
        .join(("host", "localhost")) // Loaded in global profile
        .merge(Env::raw())           // Loaded in default profile
        .extract()                   // Values were not actually combined at this point. Combined using the `default combining behaviour`
        .expect("Fail to load config") // Values were "not joined" at this point (correct, they were merged)
}

Hope this helps :)

nice thanks for the update 👍

btw, I overcame this issue by using this approach for declaring default values for host and port.
the issue still exists though I'd say


WIP - release notes.

How about this for servant-foreign:
`servant-foreign` is a library purposed to address the common code-generation needs. It derives the term-level endpoints descriptions from the servant typelevel API DSL. Once you have this, it's easy to implement code-generation for any target language. In the nutshell it allows you to generate http api clients for servant servers and incorporate that into your build/CI process. `servant-js` and some other libraries use `servant-foreign` under the hood to achieve this.

Closing in favour of #44


issue converting proxied v8 java array to java object

Proxied Java V8 object is manipulated in javascript to set array field but it doesn't set. However List works.
`
public class Apple {
private String[] appleColors;
public String[] getAppleColors() {
    return appleColors;
}

public void setAppleColors(String[] appleColors) {
    this.appleColors = appleColors;
}

}
//kotlin test
@Test
fun testSamp() {
try {
val javetV8Engine = javetEngineV8Pool.getEngine()
val javetV8Runtime = javetV8Engine.v8Runtime
val javetBridgeConverter = JavetBridgeConverter()
javetBridgeConverter.config.setReflectionObjectFactory(JavetReflectionObjectFactory.instance);
javetV8Runtime.setConverter(javetBridgeConverter)
val apple = Apple()
javetV8Runtime.globalObject.set("apple", apple);
javetV8Runtime.getExecutor("""
apple.appleColors = ['a']
""".trimIndent()).executeVoid();
println(apple.appleColors)
javetV8Runtime.lowMemoryNotification()
} catch (javetException: JavetException) {
println(javetException)
}
}
Above test outputs
null
if the appleColors is changed to List<String> the output is
[a]
`

This is the expected behavior: Native JS array is always converted to List<Object>.

@caoccao the object classes are of third party libs, so there is not way I can change from Array to List, isn't there any workaround?
Do you mean List is set to Object[] type?

I think you may inject a JS function as follows.

Write a Java method (e.g. list2Array) that converts List<Object> to Object[].
Inject that Java method as a JS function list2Array.
Call external.acceptObjectArray(list2Array(nativeJSArray)).

That might be possible, and indirect. I'll investigate that later. Please stay in tune.

Thank you, I guess this should be handled by JavetProxyPluginArray.

I just added V8ValueSealedArray. Just call Object.seal() and you will get Object[] instead of List<Object>.
assertArrayEquals(
        new Object[]{1, 2},
        v8Runtime.getExecutor("Object.seal([1,2])").executeObject());
assertArrayEquals(
        new Object[]{"a", "b"},
        v8Runtime.getExecutor("Object.seal(['a','b'])").executeObject());
assertArrayEquals(
        new Object[]{},
        v8Runtime.getExecutor("Object.seal([])").executeObject());

Please check this commit out. By calling Object.seal(), JS array will be converted to Object[] instead of List<Object>. This feature will be included in the next release. Please let me know if you have any questions. By the way, thank you for the donation!
assertArrayEquals(
        new Object[]{1, 2},
        v8Runtime.getExecutor("Object.seal([1,2])").executeObject());
assertArrayEquals(
        new Object[]{"a", "b"},
        v8Runtime.getExecutor("Object.seal(['a','b'])").executeObject());
assertArrayEquals(
        new Object[]{},
        v8Runtime.getExecutor("Object.seal([])").executeObject());

@caoccao
I tested out this feature, however I see the the java array field is not set.
`
public class Apple {
private String[] appleColors;
public String[] getAppleColors() {
    return appleColors;
}

public void setAppleColors(String[] appleColors) {
    this.appleColors = appleColors;
}

}
@Test
fun testSamp() = try {
val javetV8Engine = javetEngineV8Pool.getEngine()
val javetV8Runtime = javetV8Engine.v8Runtime
val javetBridgeConverter = JavetBridgeConverter()
javetBridgeConverter.config.setReflectionObjectFactory(JavetReflectionObjectFactory.instance);
javetBridgeConverter.config.setSealedEnabled(true)
javetV8Runtime.converter = javetBridgeConverter
val apple = Apple()
javetV8Runtime.globalObject.set("apple", apple);
javetV8Runtime.getExecutor("""
apple.appleColors = Object.seal(['narsi'])
""".trimIndent()).executeVoid()
println(apple.appleColors)
javetV8Runtime.lowMemoryNotification()
} catch (javetException: JavetException) {
    println(javetException)

}

`
output is
null
However if I change appleColors type to Object[] its works.

That is unfortunate. It's hard to cast Object[] to any other types of array, because:

The converter doesn't know the target type.
Even if the target type is known, the converter has to go over every element to validate the type. That's O(N) and impacts the performance considerably.

In this case, I suggest you implement your own proxy plugin. Please let me know if you have any questions.


How to turn off packets merging?

Hi!
I'm testing different RUDP libraries, and LiteNetLib is one of them. For example, I've tried to check how many packets per second one can handle. However, I've found that the number is way too small. After some debugging, seems like that's because all packets are automatically merged. In my case, packets have a size of 64 bytes and hence 21 of them are batched into 1.
Is there any way to turn off automatic merging?

@JoshuaLight packet merging cannot be disabled using some bool. You can remove this logic from code - but this doesn't have any big sense.
Unreliable Packet's per second count will be close to simple C# Socket usage (but if you enable native mode in LiteNetLib it will be better).
Also there is already some benchmarks - https://github.com/JohannesDeml/NetworkBenchmarkDotNet (but it doesn't use native mode)
But they in 95% cases doesn't have any sense because "packets per second" is hardware dependent and you will have lags in your game logic more than network layer.

@JoshuaLight also merging isn't a problem here. If you need tons of Reliable packets per second just use TCP.

Thanks a lot for the info! I think this issue can be closed.


HoloLens 2 hand tracking mesh and pointer direction not working in HoloLens 2 and RC2.1

Describe the bug
Articulated hand mesh is very unstable. The joint cubes appear to always align well, but the hand mesh is either missing or at a fixed location in space (though fingers still move when the user moves their physical fingers.
The raycasts also point in the wrong direction.
Once in a while, the hand mesh will briefly superimpose perfectly on the hand. When that happens, the pointer points in the correct direction. But the hand mesh is easily lost again.
To reproduce
Steps to reproduce the behavior:
Deploy any RC2.1 app with the default mixed reality toolkit profile to a HoloLens 2. W
We tried with two different apps.
We tried with a MRTK RC1 app, and the issue did not appear.
Expected behavior
Hand mesh superimposed on hand.
Hand pointers pointing in the correct direction
Screenshots

Your Setup (please complete the following information)

Unity Version  2018.4.2f1
MRTK Version RC2.1

Target Platform (please complete the following information)

HoloLens 2

Additional context
Running the latest build of HoloLens 2 as of 6/20/2019 - tagging @jessemcculloch

HoloLens build 18362.1072.19h1_release_svc_sydney.190613-1404 (UUP-CTv2)

Latest HoloLens 2 Build has fixed the issue.


Update client.js

I've been trying to use the Conventional Commits standard so we can more easily generate changelogs. Also, I'd prefer it if progress bars still worked on hosts that support it but I still can't really develop right now.


Load Segments from ELF files, not just Sections

Correct way of loading elf files is to load Segments defined in Program Headers, not just Sections. Some elf files may contain data which belong to some Segment but does not belong to any Section. With current implementation this data is skipped during programming.

Steps to reproduce are simple:

Erase the device
Program attached elf file with vanilla pyOCD
Open SEGGER Ozone and try to program the same elf:

J-Link: Flash download: Bank 0 @ 0x10000000: 1 range affected (1536 bytes)
J-Link: Flash download: Total time needed: 1.531s (Prepare: 0.067s, Compare: 1.217s, Erase: 0.081s, Program: 0.083s, Verify: 0.072s, Restore: 0.010s)

Program with pyOCD, verify with OpenOCD:

Error: checksum mismatch - attempting binary compare
diff 0 address 0x10008a98. Was 0x00 instead of 0x80
diff 1 address 0x10008a99. Was 0x00 instead of 0xb5
diff 2 address 0x10008a9a. Was 0x00 instead of 0x88
....
With this patch
Ozone:
J-Link: Flash download: Bank 0 @ 0x10000000: Skipped. Contents already match
OpenOCD:
verified 35332 bytes in 0.131700s (261.989 KiB/s)
ble_app.elf.gz

/morph test

If an ELF has data that belongs to a segment but not a section, it is an invalid ELF. The Arm linker has a known bug (at least, we strongly believe it's a bug, but the linker team doesn't necessarily agree…) that causes it generate ELF files with some data not covered by a section.
From ELF specification v1.2 (with my bolding):

Sections contain all information in an object file except the ELF header, the program header table, and the section header table. Moreover, object files' sections satisfy several conditions.

Every section in an object file has exactly one section header describing it. Section headers may exist that do not have a section.
Each section occupies one contiguous (possibly empty) sequence of bytes within a file.
Sections in a file may not overlap. No byte in a file resides in more than one section.
An object file may have inactive space. The various headers and the sections might not "cover'' every byte in an object file. The contents of the inactive data are unspecified.

/morph test

/morph test

/morph test


Use resource_for_node() instead of hardcoding User

With Chef 12.14.89 the Chef::Resource::User class isn't "real" and
throws NotImplementedError (with no message, grrr) and shows up
in the output as user_resource_abstract_base_class.
Instead, Chef::Resource.resource_for_node(:user, node) has to be
used to get the real user class (e.g. LinuxUser)
Fixes #513

This probably should be done for all other Chef::Resource::Foo occurrences as well.

Paging dr. @tas50
Also, I filed chef/chef#5412 to have Chef explain itself better in the future.

@iennae is working on a fix using build_resource

@docwhat Thanks for your contribution here, but I'm not going to be pulling this in. As @lamont-granquist mentioned I'm going to be fixing the Chef::Resource::* issues via build_resource as this cookbook has already moved to a 12+ model.


Database creation and connection

Creation and connection to the database.
Added test posts to the database with PHPmyAdmin.
Time : half a day.

OLD / First version of this blog, you can see it in the branch : ProjetBlog_v1
ProjetBlog_MVC is the newer / better version.


Bump Apache Pulsar version to 2.9.3

Motivation
Bump Apache Pulsar version to 2.9.3
Modifications

Bump Apache Pulsar version to 2.9.3

Verifying this change

[x] Make sure that the change passes the CI checks.

I guess tags referencing 2.9.2 should also be updated in .ci/clusters/values-pulsar-image.yaml file.


TS migration: < InformationBox />, < InformationBoxTitle />, < Frame />

Monday ticket
Typescript migration guideline

Wait you already did CSS modules migration) So now it's about TS migration
Sorry for confusion

Assigned to you :)

Sorry going crazy already 🤪
Closing this one


executing shell commands in Scala kernel

How come something like !pwd to check present working directory works in python kernel but not scala kernel? How do i issue shell commands from the notebook whilst using scala kernel?

I have the same the question. Could this be implemented in some way?
In the meantime, using the %%bash cell magic works.

Hi
I've just added an example of executing shell commands,
the result looks like below

please let us know if that works for you

@jaroslawmalekcodete Thanks. I'd prefer something that works across various kernels (ergo the "!pwd" example) but this works too.


feat(rpc): bumped starknet.rs to match v0.6.0

feat(rpc): bumped starknet.rs to match v0.6.0
The first step to implement v0.6.0 into madara is to bump starknet rs to this commit. This implies bumping https://github.com/keep-starknet-strange/blockifier and https://github.com/keep-starknet-strange/starknet-api.
Please notify me when you have a working version ready to merge into Madara

@antiyro can you assign it to me ?

@ybensacq you should actually wait for this one to be merged to avoid doubling work: https://github.com/keep-starknet-strange/madara/pull/1313

@ybensacq @antiyro is this issue still a thing? Should it be re-activated or closed?

Is it required for #1352

I'm not sure. @antiyro ?

It's an easy task that could be pushed already but I would like to wait for the other components (including starknet.rs) to rebase on v0.13 to start anything related to the v0.6.0 JSON-RPC integration. I'm closing this one.


Allows a Shadow to search for and add themself to an interview.

Let me know if the text in the modals needs to be changed more to be Shadow Specific.

Null name bug is back...


[FEATURE] Use RTC for reduction ops

Description
This PR is a continuation of the work started in #18622. It changes the reduction operations to be compiled with runtime compilation (RTC).
As the work progresses I will update the description.
Checklist
Essentials

[x] PR's title starts with a category (e.g. [BUGFIX], [MODEL], [TUTORIAL], [FEATURE], [DOC], etc)
[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage
[x] Code is well-documented

Changes

Changed reduction kernels to RTC
Removed duplication (broadcast_reduce-inl.cuh, broadcast_reduce_customized-inl.h)
Removed allocations/memcpies/synchronizations from forward of NumPy norm operator (ReduceAxesComputeImplWithReducer)
Fixed handling of workspace in backward of kron operator
Fixed handling of workspace in NumPy argmin/argmax operators
Fixed the logic of choosing argmin/argmax (if the values are the same, index should be lower)
During the process of working on this PR noticed bug in workspace handling in tensordot operator, filed issue #19458.

Comparing the idle GPU memory usage by executing (on V100)
import mxnet as mx
a = mx.nd.zeros((1,), ctx=mx.gpu())

Without this PR: 1356MB used
With this PR: 1232 MB used -> 124MB saved.

@mxnet-bot run ci [all]

@mxnet-bot run ci [unix-cpu]

@ptrendx what's the status for this change?

The change is complete (and working in our container for some time now), patiently waiting for some review :-).

@mxnet-bot run ci [unix-cpu]

Nice work! This will be an important and complementary addition to the work you already PR'd in #18622.  Some high-level questions:
Do you have any data on the overheads involved in RTC launch vs. compiled kernel launch, e.g. on the first iteration and thereafter (perhaps for both hybridized and unhybridized models)?
I'm sorry to see all those floating point constants in the MXNet RTC code.  Are there no compiler-defined constants that can be used, or is there a motivation for avoiding them?
Having worked on these reduce functions quite a bit, you probably have a good sense of the level of testing.  Do you feel it's adequate?  Can RTC-based reduction invoke any new regions of the operator parameter space?

Do you have any data on the overheads involved in RTC launch vs. compiled kernel launch, e.g. on the first iteration and thereafter (perhaps for both hybridized and unhybridized models)?

There is an overhead on the first launch of the given kernel of 10ms-100ms since it needs to be compiled before use. After the compilation it is stored in a cache and any subsequent call is fast - I measured ~2us overhead for constructing the kernel code and cache lookup, which is comparable with the cudaLaunchKernel itself. There is not really any difference between the hybridized and nonhybridized models since the functionality works irrespective of hybridization.

I'm sorry to see all those floating point constants in the MXNet RTC code. Are there no compiler-defined constants that can be used, or is there a motivation for avoiding them?

No floating point constants are compiler defined - they all come from header files (e.g. ). The motivation of avoiding including external headers is to avoid the potential issues of finding the headers' location and the fact that in NVRTC we cannot include any header which contains host-only code.

Having worked on these reduce functions quite a bit, you probably have a good sense of the level of testing. Do you feel it's adequate? Can RTC-based reduction invoke any new regions of the operator parameter space?

I think the level of testing is generally adequate and the change to RTC does not introduce any additional parameters to be tested. It actually consolidates the functionality and so improves the testing coverage (since previously some functions were using customized versions of the kernel e.g. from src/operator/numpy/linalg/broadcast_reduce_customized-inl.cuh and now all the usecases are handled by the same kernel code).

@mxnet-bot run ci [centos-gpu, unix-cpu]


I can’t find the FaceID setting anywhere in my settings tab but when I gesture up on the lock scree it say “face ID required”  I’m on and iPhone SE 2020 with iOS 13+ please help.

I can’t find the FaceID setting anywhere in my settings tab but when I gesture up on the lock scree it say “face ID required”  I’m on and iPhone SE 2020 with iOS 13+ please help.

Yeah I don't this our iPhone generation doesn't come woth that type of hardware man. I've sought out multiple tweaks that have this feature and none of them end up working out