Charge gas in do_humanize_address and do_canonicalize_address

Closes #471

Stepping back from the implementation and challenging the status quo: do we really want two different metering for storage and API calls into the Cosmos SDK? Can't we use the SDK metering for all of them or for none of them?

I had to think on this one for a while. My first response was simply the type system. Api is defined to be "stateless", supports Copy and cannot contain the SDK gas meter. Thus we cannot do that. The storage calls update the SDK gas meter internally (we cannot change that), so we have to use external metering there.
Then, I thought "well... why not just add a writable gas meter into Api state and adjust types as needed". Let's open up the design. After some reflection, I realized why not:
Api is also known as "precompiles" are are not supposed to be tied deeply to the SDK. a number of people ask for support for various crypto operations. Why don't we just implement those in rust and expose them on the Api, rather than forcing people to call into the go runtime and implement it there? We could easily add secp256k1 and ed25519 sig verification and a few other goodies in cosmwasm_vm and just charge gas there. Since this is all CPU gas usage we could find a constant value relating to CPU cycles used to run the wasm code. Unlike the SDK gas, which is actually "storage gas" and needs to allow some app-levle adjustment to find the balance between CPU usage and storage usage.
TL;DR I think we will (soon) want Api functions that are not implemented in the cosmos-sdk and won't be able to use that gas meter, so it makes sense to have a different way to measure.

Waiting for https://github.com/CosmWasm/cosmwasm/pull/480 now

This is updated and should include all feedback. The heart of this PR is
pub fn process_gas_info<S: Storage, Q: Querier>(ctx: &mut Ctx, info: GasInfo) -> VmResult<()> {
    decrease_gas_left(ctx, info.cost)?;
    account_for_externally_used_gas::<S, Q>(ctx, info.externally_used)?;
    Ok(())
}

which is called consistently for every type FfiSuccess<T> = (T, GasInfo).

Another small comment on APIs:
You mentioned in one of the discussions above that you might want to add other functions under Api which could be implemented in pure Rust. I'd argue that you should really consider implementing humanize and canonicalize on the rust side. It's much, much faster, and requires no jump from Rust to Go and back (FFI, wrappers, runtime overhead, GC...). In the SecretNetwork we basically had no other option but do this, both because we have more FFI bridges to hop, but it wouldv'e made the responses from these APIs unreliable.
Anyways, I'm not familliar with the address formats but is it really too expensive to just implement this in cosmwasm-std? you'd save so much code and headaches...

you use GasInfo to tell whether gas was charged by the SDK or the cosmwasm environment.

Almost: To tell whether gas was charged by the SDK (in the past) or to be charged after execution the cosmwasm environment (in the furture).

This feels really overkill because in the packages/vm/src/imports.rs layer you know that gas charged by read/write/etc is externally used, and humanize/canonicalize are internally used. you're adding a lot of pluming here that feels unnecessary.

The primary reason for doing this is expliciteness. I created a horribly wrong calculation initially here because the code did not make clear that there are different types of gas usages. It adds the nice-to-have flexibility to report a mixture of SDK gas and unmetered computational gas cost.

* I can see that at some point you rename `try_use_gas` to `account_for_externally_used_gas` and then to `process_gas_info`.

The second step (process_gas_info) was not a renaming but is a wapper around the first one. What I dislike about the term "use" is that it does not make clear the gas was used already. The computation was done and SDK already metered it. It is more a sync operation than gas consumption. The prefix "try_" seems unnecessary, since basically every function that returns a Result is trying to perform an operation.

* My mental model for how gas consumption works is that if you imagine a horizontal-tube gas tank, then internally used gas is consumed from the left, and externally used gas is consumed from the right. In the middle, you have the remaining gas reserves. In the end, the module should be reporting only the left section of this description. Looking at the original implementation, I did indeed write a bug where we double-charged, because what we did was subtract the middle section from the total, and not taking into account how the gas was consumed. So i think the "gas report" you added is a good idea, as it will allow go-cosmwasm to correctly find the amount of gas used just by the VM.

Nice 👍

The primary reason for doing this is expliciteness. I created a horribly wrong calculation initially here because the code did not make clear that there are different types of gas usages. It adds the nice-to-have flexibility to report a mixture of SDK gas and unmetered computational gas cost.

Yes, the old naming led to two large mistakes. I double-charged the sdk/storage gas in go-cosmwasm. And frankly there was no way to get the number I actually needed from the sdk (until Simon just added in in 0.9.4).  And secondly, the "try_use_gas" seemed like a natural fit to charge for API, but only after inspection, I found the issue with it.
The naming is very explicit, but given we had 2 mistakes from the simpler naming, I prefer a slightly heavier and more complicated API.

I'd argue that you should really consider implementing humanize and canonicalize on the rust side. It's much, much faster, and requires no jump from Rust to Go and back

@reuvenpo the problem here is that even if you assume it is bech32, you need the proper prefix to parse and serialize. Where does that info come from? The info is inside the sdk and many projects change this, and best to automatically set it for them.
For secret network, you are maintaining a custom rust lib, so you are fine to specify this in Rust, as you can set it to your network. If someone else imported you rust lib and changed their go app to have the copycat prefix, suddenly the addresses would be broken for the contract.
In short, we focus on correctness more than the cost of passing 40 bytes over FFI a few times.

BTW, I like the process_gas explicitness


Shouldn't timeout or OOM when pipeline_dop or is parallel_fragment_exec_instance_num very large

for TPC-H SF500 Q2, varying pipeline_dop from 1 to 10 and parallel_fragment_exec_instance_num from 1 to 10, there are some timeout and OOM.
(4,2) means as follows:
set session pipeline_dop=4;
set session parallel_fragment_exec_instance_num = 2;

(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
(6,1)
(7,1)
(8,1)
(9,1)
(10,1)

q2
2,456
1,381
1,604
1,247
1,209
1,230
1,231
1,218
734
timeout

(1,2)
(2,2)
(3,2)
(4,2)
(5,2)

q2
1,869
1,344
1,517
1,156
timeout

(1,3)
(2,3)
(3,3)
(4,3)

q2
1,224
1,082
996
timeout

(1,4)
(2,4)
(3,4)

q2
1,869
1,044
OOM

(1,5)
(2,5)

q2
1,285
timeout

(1,6)
(2,6)

q2
1,406
timeout

(1,7)
(2,7)

q2
1,220
timeout

(1,8)
(2,8)

q2
1,194
OOM

(1,9)
(2,9)

q2
1,085
OOM

(1,10)

q2
OOM

At least, we shouldn't timeout when (10, 1), we should fix it.
For the (1,10), I think we shouldn't OOM, we should fix it.

@ZiheLiu please fix the timeout issue.  @stdpain please fix the OOM issue

I can't reproduce this case in my environment (1FE 4BE 32GB 14cpu)
maybe more information is needed.

I can't reproduce this case in my environment (1FE 4BE 64GB 14cpu Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz) maybe more information is needed.

Have you tried to run the query just after analyze table ...?

Here is the profile result captured while running q2 just after analyze table ...:
 ==========
 Properties
 ==========
 Session
               Host: cde-new-cluster1-3
          Boot Time: 2022. 6. 8 오전 10:14:58
         Begin Time: 2022. 8. 23 오후 8:09:25
           End Time: 2022. 8. 23 오후 8:09:58

 Configuration
 A sample is taken every 10.0ms (CPU Time).
  Record Callstacks: true
 Monitor Process Exits: true
 Allow Power Management: false
 Gather Kernel Symbols: true
     Profile Driver: rrprofile
 Profile Driver per-CPU Buffer Size: 192.00KB
 Profile Driver Event Buffer Multiple: 0x
 Profile Driver Event Buffer Watershed: 25%
      Notify Driver: rrnotify
 Notify Driver Buffer: 1.00MB
 Notify Driver Buffer Watershed: 25%

 Software
        Application: Zoom 3.3.3
  Application Build: 1 (x86-64)
                 OS: CentOS Linux release 7.9.2009 (Core) 3.10.0-1160.el7.x86_64
           OS Build: #1 SMP Mon Oct 19 16:18:59 UTC 2020 (x86_64)
    Virtual Machine: No

 Hardware
          Processor: 48 x 3.10GHz Intel Haswell
             Memory: 125.64GB
            Machine: Supermicro X10DRi

 ========================================
 Hotspot - Process 'starrocks_be [30018]'
 ========================================
       Total Time (%)        Self Time (%) Symbol                                                                                Size                                          Module
    5.2min    (21.8%)    5.2min    (21.8%) void starrocks::vectorized::JoinHashMap<(starrocks::PrimitiveType)25, starrocks::vectorized::JoinBuildFunc<(starrocks::PrimitiveType)25>, starrocks::vectorized::JoinProbeFunc<(starrocks::PrimitiveType)25> >::_probe_from_ht<false>(starrocks::RuntimeState*, std::vector<long, std::allocator<long> > const&, std::vector<long, std::allocator<long> > const&) [clone .isra.0]       320B                                    starrocks_be
    4.1min    (17.0%)    4.1min    (17.0%) void starrocks::vectorized::JoinHashMap<(starrocks::PrimitiveType)7, starrocks::vectorized::FixedSizeJoinBuildFunc<(starrocks::PrimitiveType)7>, starrocks::vectorized::FixedSizeJoinProbeFunc<(starrocks::PrimitiveType)7> >::_probe_from_ht<true>(starrocks::RuntimeState*, std::vector<__int128, std::allocator<__int128> > const&, std::vector<__int128, std::allocator<__int128> > const&)     1.42KB                                    starrocks_be
  2.3min       (9.5%)  1.7min       (7.1%) starrocks::vectorized::FixedLengthColumnBase<long>::append_selective(starrocks::vectorized::Column const&, unsigned int const*, unsigned int, unsigned int)       192B                                    starrocks_be
  1.4min       (5.6%)  1.3min       (5.6%) LZ4_compress_fast_extState                                                              11.25KB                                    starrocks_be
  1.1min       (4.6%)  1.1min       (4.5%) starrocks::vectorized::FixedSizeJoinProbeFunc<(starrocks::PrimitiveType)7>::lookup_init(starrocks::vectorized::JoinHashTableItems const&, starrocks::vectorized::HashTableProbeState*)     2.19KB                                    starrocks_be
 59.5sec       (4.1%) 59.5sec       (4.1%) starrocks::vectorized::FixedLengthColumnBase<long>::serialize_batch_at_interval(unsigned char*, unsigned long, unsigned long, unsigned long, unsigned long)        48B                                    starrocks_be
 57.1sec       (4.0%) 57.1sec       (4.0%) __memset_sse2                                                                              352B                                    libc-2.17.so
 51.9sec       (3.6%) 51.9sec       (3.6%) LZ4_decompress_safe                                                                      2.66KB                                    starrocks_be
    4.6min    (19.2%) 49.5sec       (3.4%) starrocks::pipeline::ExchangeSinkOperator::push_chunk(starrocks::RuntimeState*, std::shared_ptr<starrocks::vectorized::Chunk> const&)     3.98KB                                    starrocks_be
 44.0sec       (3.0%) 44.0sec       (3.0%) __memcpy_ssse3_back                                                                     10.69KB                                    libc-2.17.so
 16.7sec       (1.2%) 16.7sec       (1.2%) starrocks::vectorized::FixedLengthColumnBase<long>::fnv_hash(unsigned int*, unsigned int, unsigned int) const     3.06KB                                    starrocks_be
 15.4sec       (1.1%) 15.4sec       (1.1%) copy_user_enhanced_fast_string                                                              32B                                         vmlinux
 12.3sec       (0.9%) 12.3sec       (0.9%) __libc_malloc                                                                              320B                                    starrocks_be
 33.7sec       (2.3%) 12.1sec       (0.8%) <Unknown Symbol>                                                                                <Unknown>
 12.1sec       (0.8%) 12.1sec       (0.8%) sysret_check                                                                               255B                                         vmlinux
 20.3sec       (1.4%) 10.5sec       (0.7%) starrocks::pipeline::PipelineDriverPoller::run_internal()                                5.98KB                                    starrocks_be
    3.5min    (14.5%)  8.2sec       (0.6%) starrocks::pipeline::ExchangeSinkOperator::Channel::add_rows_selective(starrocks::vectorized::Chunk*, int, unsigned int const*, unsigned int, unsigned int, starrocks::RuntimeState*)     1.64KB                                    starrocks_be
  7.8sec       (0.5%)  7.8sec       (0.5%) TCMallocImplementation::GetAllocatedSize(void const*)                                      304B                                    starrocks_be
  7.0sec       (0.5%)  7.0sec       (0.5%) clock_gettime                                                                            1.33KB                                            vdso
   18.2min    (75.8%)  6.5sec       (0.4%) starrocks::pipeline::PipelineDriver::process(starrocks::RuntimeState*, int)              5.25KB                                    starrocks_be
 12.0sec       (0.8%)  6.2sec       (0.4%) tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned int, int)       336B                                    starrocks_be
  6.3sec       (0.4%)  5.8sec       (0.4%) find_busiest_group                                                                       2.39KB                                         vmlinux
  5.8sec       (0.4%)  5.8sec       (0.4%) std::vector<long, std::allocator<long> >::_M_fill_insert(__gnu_cxx::__normal_iterator<long*, std::vector<long, std::allocator<long> > >, unsigned long, long const&)     1.28KB                                    starrocks_be
  5.5sec       (0.4%)  5.5sec       (0.4%) __GI___pthread_mutex_lock                                                                  396B                              libpthread-2.17.so
  4.8sec       (0.3%)  4.8sec       (0.3%) std::vector<long, std::allocator<long> >::_M_default_append(unsigned long)                 416B                                    starrocks_be
  4.3sec       (0.3%)  4.3sec       (0.3%) starrocks::DataStreamRecvr::has_output_for_pipeline(int) const                             336B                                    starrocks_be
  4.2sec       (0.3%)  4.2sec       (0.3%) __GI___pthread_mutex_unlock                                                                148B                              libpthread-2.17.so
  1.4min       (5.9%)  4.1sec       (0.3%) starrocks::vectorized::Chunk::append_selective(starrocks::vectorized::Chunk const&, unsigned int const*, unsigned int, unsigned int)       128B                                    starrocks_be
  1.6sec       (0.1%)  1.6sec       (0.1%) starrocks::pipeline::SinkBuffer::is_full() const                                           432B                                    starrocks_be
  5.8sec       (0.4%)  3.8sec       (0.3%) memcpy_toiovec                                                                             176B                                         vmlinux
  1.7sec       (0.1%)  1.5sec       (0.1%) void starrocks::vectorized::RuntimeBloomFilter<(starrocks::PrimitiveType)6>::t_evaluate<true>(starrocks::vectorized::Column*, starrocks::vectorized::JoinRuntimeFilter::RunningContext*) const     1.33KB                                    starrocks_be
  3.6sec       (0.2%)  3.6sec       (0.2%) system_call_after_swapgs                                                                   314B                                         vmlinux
  7.1sec       (0.5%)  3.6sec       (0.2%) try_to_wake_up                                                                             912B                                         vmlinux
  4.4sec       (0.3%)  3.4sec       (0.2%) tcmalloc::CentralFreeList::ReleaseToSpans(void*)                                           384B                                    starrocks_be
  3.0sec       (0.2%)  3.0sec       (0.2%) idle_cpu                                                                                80B                                         vmlinux

query dump.pdf

{"statement":"--Q2
select /* TPC-H Q2 */
s_acctbal,
s_name,
n_name,
p_partkey,
p_mfgr,
s_address,
s_phone,
s_comment
from
part,
supplier,
partsupp,
nation,
region
where
p_partkey = ps_partkey
and s_suppkey = ps_suppkey
and p_size = 38
and p_type like '%STEEL'
and s_nationkey = n_nationkey
and n_regionkey = r_regionkey
and r_name = 'ASIA'
and ps_supplycost = (
select
min(ps_supplycost)
from
partsupp,
supplier,
nation,
region
where
p_partkey = ps_partkey
and s_suppkey = ps_suppkey
and s_nationkey = n_nationkey
and n_regionkey = r_regionkey
and r_name = 'ASIA'
)
order by
s_acctbal desc,
n_name,
s_name,
p_partkey
limit 100;
","table_meta":{"tpch.nation":"CREATE TABLE nation (
n_nationkey int(11) NOT NULL COMMENT "",
n_name char(25) NOT NULL COMMENT "",
n_regionkey int(11) NOT NULL COMMENT "",
n_comment varchar(152) NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(n_nationkey)
COMMENT "OLAP"
DISTRIBUTED BY HASH(n_nationkey) BUCKETS 1
PROPERTIES (
"replication_num" = "3",
"in_memory" = "false",
"storage_format" = "DEFAULT",
"enable_persistent_index" = "false"
);","tpch.part":"CREATE TABLE part (
p_partkey bigint(20) NOT NULL COMMENT "",
p_name varchar(55) NOT NULL COMMENT "",
p_mfgr char(25) NOT NULL COMMENT "",
p_brand char(10) NOT NULL COMMENT "",
p_type varchar(25) NOT NULL COMMENT "",
p_size bigint(20) NOT NULL COMMENT "",
p_container char(10) NOT NULL COMMENT "",
p_retailprice decimal64(15, 2) NOT NULL COMMENT "",
p_comment varchar(23) NOT NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(p_partkey)
COMMENT "OLAP"
DISTRIBUTED BY HASH(p_partkey) BUCKETS 24
PROPERTIES (
"replication_num" = "1",
"colocate_with" = "group_tpch_500p",
"in_memory" = "false",
"storage_format" = "DEFAULT",
"enable_persistent_index" = "false"
);","tpch.partsupp":"CREATE TABLE partsupp (
ps_partkey bigint(20) NOT NULL COMMENT "",
ps_suppkey bigint(20) NOT NULL COMMENT "",
ps_availqty bigint(20) NOT NULL COMMENT "",
ps_supplycost decimal64(15, 2) NOT NULL COMMENT "",
ps_comment varchar(199) NOT NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(ps_partkey, ps_suppkey)
COMMENT "OLAP"
DISTRIBUTED BY HASH(ps_partkey) BUCKETS 24
PROPERTIES (
"replication_num" = "1",
"colocate_with" = "group_tpch_500p",
"in_memory" = "false",
"storage_format" = "DEFAULT",
"enable_persistent_index" = "false"
);","tpch.region":"CREATE TABLE region (
r_regionkey bigint(20) NOT NULL COMMENT "",
r_name char(25) NOT NULL COMMENT "",
r_comment varchar(152) NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(r_regionkey)
COMMENT "OLAP"
DISTRIBUTED BY HASH(r_regionkey) BUCKETS 1
PROPERTIES (
"replication_num" = "3",
"in_memory" = "false",
"storage_format" = "DEFAULT",
"enable_persistent_index" = "false"
);","tpch.supplier":"CREATE TABLE supplier (
s_suppkey bigint(20) NOT NULL COMMENT "",
s_name char(25) NOT NULL COMMENT "",
s_address varchar(40) NOT NULL COMMENT "",
s_nationkey bigint(20) NOT NULL COMMENT "",
s_phone char(15) NOT NULL COMMENT "",
s_acctbal decimal64(15, 2) NOT NULL COMMENT "",
s_comment varchar(101) NOT NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(s_suppkey)
COMMENT "OLAP"
DISTRIBUTED BY HASH(s_suppkey) BUCKETS 12
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"storage_format" = "DEFAULT",
"enable_persistent_index" = "false"
);"},
"table_row_count":{"tpch.nation":{"nation":25},
"tpch.part":{"part":100000000},
"tpch.partsupp":{"partsupp":400000000},
"tpch.region":{"region":5},
"tpch.supplier":{"supplier":5000000}},
"session_variables":"{"enable_resource_group":false,
"codegen_level":0,
"cbo_cte_reuse":false,
"character_set_connection":"utf8",
"cbo_use_correlated_join_estimate":true,
"enable_insert_strict":true,
"join_implementation_mode":"hash",
"tx_isolation":"REPEATABLE-READ",
"wait_timeout":28800,
"cbo_cte_reuse_rate":1.2,
"foreign_key_checks":true,
"character_set_results":"utf8",
"enable_global_runtime_filter":true,
"forward_to_master":false,
"cbo_enable_low_cardinality_optimize":true,
"new_planner_optimize_timeout":3000,
"force_schedule_local":false,
"cbo_enable_greedy_join_reorder":true,
"prefer_join_method":"broadcast",
"load_mem_limit":0,
"profiling":false,
"sql_safe_updates":0,
"global_runtime_filter_probe_min_size":102400,
"enable_vectorized_engine":true,
"query_delivery_timeout":300,
"net_write_timeout":60,
"collation_database":"utf8_general_ci",
"hash_join_push_down_right_table":true,
"new_planner_agg_stage":0,
"collation_connection":"utf8_general_ci",
"resource_group":"",
"broadcast_row_limit":15000000,
"exec_mem_limit":107374182400,
"cbo_max_reorder_node_use_dp":10,
"disable_join_reorder":false,
"is_report_success":false,
"enable_hive_column_stats":true,
"enable_groupby_use_output_alias":false,
"net_buffer_length":16384,
"query_timeout":300,
"cbo_max_reorder_node":50,
"max_execution_time":3000000,
"runtime_filter_scan_wait_time":20,
"SQL_AUTO_IS_NULL":false,
"event_scheduler":"OFF",
"disable_streaming_preaggregations":false,
"chunk_size":4096,
"disable_bucket_join":false,
"runtime_join_filter_push_down_limit":1024000,
"global_runtime_filter_probe_min_selectivity":0.5,
"query_mem_limit":0,
"enable_tablet_internal_parallel":true,
"enable_filter_unused_columns_in_scan_stage":true,
"div_precision_increment":4,
"auto_increment_increment":1,
"sql_mode_v2":32,
"character_set_client":"utf8",
"autocommit":true,
"enable_column_expr_predicate":true,
"pipeline_profile_level":1,
"parallel_fragment_exec_instance_num":10,
"max_scan_key_num":-1,
"net_read_timeout":60,
"streaming_preaggregation_mode":"auto",
"storage_engine":"olap",
"enable_optimizer_trace_log":false,
"cbo_enable_dp_join_reorder":true,
"tx_visible_wait_timeout":10,
"cbo_max_reorder_node_use_exhaustive":4,
"enable_sql_digest":false,
"profile_timeout":2,
"pipeline_dop":1,
"enable_query_dump":false,
"single_node_exec_plan":false,
"global_runtime_filter_build_max_size":67108864,
"sql_select_limit":9223372036854775807,
"statistic_collect_parallel":24,
"query_cache_type":0,
"disable_colocate_join":false,
"max_pushdown_conditions_per_column":-1,
"enable_exchange_pass_through":true,
"enable_predicate_reorder":false,
"workgroup_id":0,
"transmission_compression_type":"LZ4",
"enable_vectorized_insert":true,
"interactive_timeout":3600,
"enable_spilling":false,
"batch_size":0,
"cbo_enable_replicated_join":true,
"max_allowed_packet":1048576,
"enable_cbo":true,
"collation_server":"utf8_general_ci",
"time_zone":"Asia/Seoul",
"character_set_server":"utf8",
"enable_pipeline":true,
"cbo_use_nth_exec_plan":0,
"rewrite_count_distinct_to_bitmap_hll":true,
"parallel_exchange_instance_num":-1,
"allow_default_partition":false}",
"column_statistics":{"tpch.nation":{"n_nationkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"n_regionkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN", "n_name":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN"},
"tpch.part":{"p_partkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"p_type":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"p_mfgr":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"p_size":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN"},
"tpch.partsupp":{"ps_suppkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"ps_partkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"ps_supplycost":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN"},
"tpch.region":{"r_regionkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"r_name":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN"},
"tpch.supplier":{"s_comment":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"s_phone":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"s_nationkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"s_name":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"s_address":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"s_acctbal":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN",
"s_suppkey":"[-Infinity, Infinity, 0.0, 1.0, 1.0] UNKNOWN"}},
"be_number":3,
"exception":[],
"version":"2.3.1",
"commit_version":"fe5d830"}

I reproduced the OOM problem.
env: 1FE 3BE  64G TPCH-1T 16c

./bin/stop_fe.sh
./bin/start_fe.sh --daemon

by default: (DOP=0, fragment=1)
ERROR 1064 (HY000): Memory of process exceed limit. try consume:0 Used:<PHONE_NUMBER>0, Limit:<PHONE_NUMBER>0. Mem usage has exceed the limit of BE

I reproduced the timeout problem.

env: 1 FE, 3 BE (each with 16GB RAMD and 16 cores), TPCH-1T.

After restarting FE or analyzing table, the first Q2 will be timeout. The reason is that table analysis information are fetched by FE after the first query running, and the plan of the first query is not well.
@dbjoa @kyuhomania Except the first query after restarting FE or analyzing table, is non-first Q2 still timeout or OOM?
And do you analyze full table again after each q2 running? (We only need analyze tables once, regardless of restarting FE)

Except the first query after restarting FE or analyzing table, is non-first Q2 still timeout or OOM?
When I tested on the 12 BE nodes environment(i3en.3xlarge X 12EA) with 10TB data, I saw the OOM. The OOM occurred with a random query. The query stopped with OOM can finish with the result next trial. I think it is a different reason from the first Q2 issue.

And do you analyze full table again after each q2 running? (We only need analyze tables once, regardless of restarting FE)
We mean the first q2 query is the first trial just after analyze full table or analyze table. Non-first q2 query is all trials after the first q2 query.

(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
(6,1)
(7,1)
(8,1)
(9,1)
(10,1)

q2
2,456
1,381
1,604
1,247
1,209
1,230
1,231
1,218
734
timeout

(1,2)
(2,2)
(3,2)
(4,2)
(5,2)

q2
1,869
1,344
1,517
1,156
timeout

(1,3)
(2,3)
(3,3)
(4,3)

q2
1,224
1,082
996
timeout

...

@kyuhomania @dbjoa  As for the above test result, which of the following ways do you use to execute analyze [full] table?

analyze [full] table only once at first. Then set (pipeline_dop, parallel_fragment_exec_instance_num) to each pair of values, and execute Q2.
For each pair value of (pipeline_dop, parallel_fragment_exec_instance_num), analyze [full] table again, and then execute Q2.

The root cause is same with https://github.com/StarRocks/starrocks/issues/10141


WIP: use runtime api

Description
if only set shared , without remotes , it will throe error handler is not funtcion , because .f.remotes not exist

Related Issue

Types of changes

[ ] Docs change / refactoring / dependency upgrade
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)

Checklist

[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.
[ ] I have updated the documentation.

@squadronai review

@squadronai review

@squadronai review

@squadronai review

@squadronai review


Information not visible on the desktop

Information not visible on the desktop

since a few updates ago u are able to pick an other color not sure if a change in the Ambiance is still needed?

Yes, you are right


[Possible bug report] - Proceeding tab

I found that the inline code and code block which are proceeded by tab wouldn't be translated by readme2tex.
For instances:
    $A^2 + B^2 = C^2$

    $$
    A^2 + B^2 = C^2
    $$

The output translated from the above LaTeX expressions is still the same.

Relative info:
Package version: 0.0.1b2
Python version: Python 2.7.17 / Python 3.6.9
Platform: x86_64 GNU/Linux

Thanks for your consideration!

I have the same issue when working with bullet points and sub bullet points.

it works at this level (0 preceding spaces)

it works at this level (2 preceding spaces)

it does not work at this level or beyond (4 preceding spaces)

Basically, anywhere the line is preceded by 4 spaces or more, it does not work.
Thanks!


Switch to ExtractCssChunksPlugin

What problem does this feature solve?
Just a suggestion / maybe worth looking at: https://github.com/faceyspacey/extract-css-chunks-webpack-plugin
After several issues with mini-css-extract-plugin we could maybe provide an option to switch to the plugin (if it's worth)
Key improvements:

HMR!
DropIn replacement

This feature request is available on Nuxt community (#c7988)

Well, if there no downside we can just replace it without options :)

@manniL @aldarund I think it's a great idea, current behavior of mini-css-extract-plugin as well as sass-loader causes a lot of issues as well as very slow recompilation of sass assets

It's a good idea for, I'll try to work on it and use a compatible way to implement it.

After discussion with @pi0 , we decide to replace it completely.


⚠ ClamAV has degraded performance

In fd5d789, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 447 ms

Resolved: ClamAV performance has improved in 144bcbf.


Tusk for lesson 9 is done

Please check my answer for lesson 9.
I am not sure about tusk 2. May be I was cheating, but I used iteration as said in the task.
If it is neaded to create my own class for iteration just let me know.
Thank you.

I make fixes for tusk 1 and 3, and also add a new wariant for tusk 2.


can't set context_settings with chain=true

@click.group(chain=True) cannot be combined with @click.command(context_settings=CONTEXT_SETTINGS).

Expected Behavior
I should see Error: No such command "test".
Suppose we name the following script debug, and we invoke using debug test. This works:
#!/usr/bin/env python
import click

CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
@click.group(chain=True)
@click.pass_context
@click.command(context_settings=CONTEXT_SETTINGS)
def main(ctx):
    print("hi")

if __name__ == '__main__':
    main()

Also works:
#!/usr/bin/env python
import click

CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
@click.group()
@click.command(context_settings=CONTEXT_SETTINGS)
def main():
    print("hi")

if __name__ == '__main__':
    main()

Actual Behavior
Both, however, fail if we instead do @click.group(chain=True). The error messages are confusing. In case (1): TypeError: 'Context' object is not iterable. For (2): TypeError: Attempted to convert a callback into a command twice.
Environment

Python version: 3.7
Click version: 7.0

Chain is not supported going forward #1323. If you have a fix for this, I'm happy to consider a PR, but given its issues I don't plan to do more work on it myself.

First, I really appreciate your work on Click--it's a fantastic library. Thank you.
I've been using chain for 3 years in production, including 7.0, and haven't had any issues with Chain until this one, and even then this is a minor one that I can live with. The only restriction I've noticed was described in https://github.com/pallets/click/issues/1269#issuecomment-478374133.
I use Click specifically because I can design pipeline CLI tools for scientific applications.
E.g. I have a command create_nwb from_tiff -n calcium_imaging ca.tif from_tiff -n potassium_imaging k.tif that allows for arbitray number of from_tiff subcommands. Is there another way to implement this without chain?

We're no longer planning to remove chain, so no worries about that at least.

I think you're getting that error message because you're decorating your main function with @click.group and @click.command, which AFAIK is not legal?
If I create separate functions for the group and the command it seems to work as expected:
#!/usr/bin/env python
import click

CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"])
@click.group(chain=True, context_settings=CONTEXT_SETTINGS)
@click.pass_context
def cli(ctx):
    print("cli")

@cli.command()
@click.pass_context
def foo(ctx):
    print("foo")

if __name__ == '__main__':
    cli()

use:
$ python debug.py foo -h
cli
Usage: debug.py foo [OPTIONS]

Options:
  -h, --help  Show this message and exit.
$ python debug.py test
cli
Usage: debug.py [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...
Try "debug.py -h" for help.

Error: No such command "test".

Thank you both so much!


Are cls_token and pos_embed not used in models_mage.py?

https://github.com/LTH14/mage/blob/main/models_mage.py#L188-L189
cls_token and pos_embed are defined here but they don't seem to be used?

Yes, they are deprecated here.

Yes, they are deprecated here.

why pos_embed is not used? I see it is used in MAE.


Update UDF native example libcudf dependency to 0.20

#2226 originally targeted branch-0.5 which is based on cudf 0.19, but when it was retargeted to branch-0.6 the cudf dependency wasn't updated to 0.20.  This doesn't break the build given the simple libcudf interfaces the UDF native examples require, as they haven't changed between libcudf 0.19 and 0.20.  However it's best to be consistent with the libcudf dependency.

build


[macos ci] fix bug in OnlyTest

it always prints "regression" instead of checking the output of vcpkg.

Thanks :)


Refactor / write tests

Clean up code and write tests

[ ] Find untested code

[ ] Add tests

[ ] Update old tests

I will do it

Test added for editexercises

Test was done for addexercises

[ ] delete exercises

DeleleEx tests are there.


Ri ga livetests

Packages impacted by this P
health-insights-radiologyinsights-rest
Issues associated with this PR
fixing the livetest for the package
Describe the problem that is addressed by this PR
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

/azp run js - healthinsights - tests

/azp run js - healthinsights - tests

/azp run js - healthinsights - tests

/azp run prepare-pipelines

/azp run js - healthinsights - tests


How to indicate to user that new config has been applied

This ticket is not urgent, I am creating it so we do not forget about this possible enhancement for our next meeting.
We got a good question from a user, they were wondering how to tell that a new config has been applied to their lives stream. Serban was thinking we would have have a tab in the stream detail view which shows a the most recent probe in a table format. We dont have to show the whole probe but mainly the details that matter such as

streams and their indexes
audio sample rates
frame rates
bitrates (if present)
stream ids (for udp and srt)
codecs for audio and video
channel layouts for audio

feel free to add other things that might be relevant.

We can also trigger one of these notifications when we successfully probe/configure a stream


Other apps try to open folders in Contour rather than the file manager

Contour Terminal version
0.4.2-master-dbb8f274
Installer source
AUR (tried both stable and git)
Operating System
CachyOS (Arch Linux) with GNOME
Architecture
x86-64
Steps to reproduce
When Contour is installed, other apps try to open folders in Contour, rather than Nautilus. Removing Contour fixes the issue.
Expected Behavior
Having Contour installed shouldn't interfere with the file manager.
Actual Behavior
Contour opens and interprets the folder path as a shell to use. For example, when trying to browse the files of a Steam game:
Failed to spawn /home/myuser/.local/share/Steam/steamapps/common/Unrailed
Trying login shell: "/usr/bin/nu"

Hey @jobukkit, many thanks for this report. This is really weird. I'm mainly using KDE. Would you mind trying out another desktop or window manager, just for the test to see if this is a GNOME-specific behaviour or not? Many thanks.

I have a feeling that this cause by some keywords from our .desktop file
https://github.com/contour-terminal/contour/blob/f3c3334aa5c861348c5bbe8ffe572c872eef2e08/src/contour/contour.desktop#L12
and i think that @jobukkit you can directly test if this will resolve this issue by modifiing contour.desktop file on your system

Seems like the line above that is the culprit.
https://github.com/contour-terminal/contour/blob/f3c3334aa5c861348c5bbe8ffe572c872eef2e08/src/contour/contour.desktop#L11
> xdg-mime query default inode/directory
org.contourterminal.Contour.desktop

xdg-mime default org.gnome.Nautilus.desktop inode/directory fixes the problem.
Maybe something other than the .desktop file sets it too.


adding random option for daily scheduling

Hello,
I have 133 agents actually and more than 60 for daily check. Is it possible adding random option for daily check ? 60 checks are scheduling at the same time. It should be cool to be reparted better in the daily.
Regards,

Hi,
there isn't an easy way to do this. Even if we would introduce randomness to the scheduler, the same offset would be applied to all Agents configured to be run at the selected schedule. This is because the scheduler works "per schedule", i.e. it runs during the preconfigured times and runs all Agents that have the current schedule selected.
You could manually spread the Agents over a few hours by selecting different schedules or use a SchedulerAgent if you need finer control over the time.

OK thank you 👍


New slate doc site - incorrect svg?

Can you double check if the correct svg is checked-in?

@pierre we don't use it. Could be deleted

Fixed in d745f053c48c69b3daf2f9ccbc1fbebf1d510cce.


adds tokio_util to test to resolve local build/test error from compiler

running cargo test locally was throwing an error, so I dug around and noticed that tokio_util was referenced in the network test target, but not defined in Cargo.toml - so I added it to fix my local build. Not sure why CI didn't see it...

I'm getting this warning when running cargo test off of this branch:
warning: invalid feature tokio_utilin required-features of targetnetwork: tokio_util is not present in [features] section


quickstart documentation and SEV documentation

quickstart documentation and SEV documentation
Signed-Off-By: Ryan Savino<EMAIL_ADDRESS>

Except for the typo, the instructions work like a charm, and are quite easy to follow. Thank you @ryansavino.
Tested-by: Christophe de Dinechin<EMAIL_ADDRESS>OS: RHEL 9.1 beta
AMD EPYC 7401P.

@c3d If the instructions look good to you, could you please remove the request for changes and formally approve the PR? Thanks.


[Feature] Explore showing less lines when the editor is resized

Develop something similar to what exists in the explorer view. When the explorer view is made smaller, the sticky lines disappear, so that sticky scroll never takes up more than a certain percentage of the space.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


fix: fix error when loading SequenceMeta as dict

fix SequenceMeta /dict error in tests not passing both locally and in in #309: FAILED tests/test_multid_widget.py::test_saving_mda[splitC-nT=0-nZ=0-nC=1] - AttributeError: 'dict' object has no attribute 'split_channels'
note: new test added

#311 was a more granular fix to the test.   the underlying issue has to do with useq schema's replace() method converting objects to dicts.  while this approach would technically work, it depends on the sequence first going through a widget setValue method.  So, it's not "wrong" per se, but it's a bit orthogonal to the core problem.  I'm going to reduce this down to a simple cast-dict-to-sequence and remove the rest of the PR


feat: Proposal for Modularizing the UI

The following is a proposal to move the current UI to a mono repo.

@scholzj @tombentley I updated the wording through out the document.  When you have a second can you take another look.  Thanks.

@scholzj @tombentley I updated the wording through out the document.  When you have a second can you take another look.  Thanks.

This proposal has been approved by 5 out of 5 maintainers + 2 additional approvers. Thanks @dlabaj for putting this together and everyone else for reviewing.

This proposal has been approved by 5 out of 5 maintainers + 2 additional approvers. Thanks @dlabaj for putting this together and everyone else for reviewing.


Embroider compatibility

When trying to build the loket app under Embroider I encountered the following errors related to the editor addon:

1. Unsafe dynamic component

Unsafe dynamic component: this.componentPath in<EMAIL_ADDRESS>
Which comes from this file: https://github.com/lblod/ember-rdfa-editor/blob/8261f1ef8a2b35dd8fc9650832ec4605c68497dd/addon/utils/_private/ember-node.ts#L151-L163
This should be solvable by passing the component class instead of the path and invoking it without the component helper:
this.template = hbs`
  <this.component
    @getPos=this.getPos
    @node=this.node
    @updateAttribute=this.updateAttribute
    @controller=this.controller
    @view=this.view
    @selected=this.selected
    @contentDecorations=this.contentDecorations
  >
    {{#unless this.atom}}
      <EmberNode::Slot @contentDOM={{this.contentDOM}}/>
    {{/unless}}
  </this.component>`;

I'm not sure if this is something used outside of the addon itself, but if it is then I guess it's a breaking change 😄.

2. Ember Velcro component not found
The following error is thrown at build time:

ERROR in<EMAIL_ADDRESS>1:0-58
Module not found: Error: Can't resolve '#embroider_compat/components/velcro' in '/Users/windvis/Development/Projects/digitaal-loket/frontend-digitaal-loket/node_modules/@lblod/ember-rdfa-editor'

I briefly looked at it and don't see anything wrong so this is probably an Embroider Bug, I'll try to find out more about this.

3. `crypto` fallback error
The addon includes some ember-auto-import configuration to provide fallbacks for node-only code. This config isn't used by Embroider, so the build fails.
ERROR in<EMAIL_ADDRESS>1:15-32
Module not found: Error: Can't resolve 'crypto' in<EMAIL_ADDRESS>
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
	- add a fallback 'resolve.fallback: { "crypto": require.resolve("crypto-browserify") }'
	- install 'crypto-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
	resolve.fallback: { "crypto": false }

It's solvable by adding the same config in the app. I'm not sure if there is a way to handle this from the addon, but I think documenting that it's needed is a good short term solution. I noticed it only seems to complain about the crypto module at the moment, so I'm not sure if the other config is still needed?

4. App reexports for components that no longer exist [DONE]
This is resolved by #953
Embroider "safe" also complains about 2 components that don't seem to exist (anymore):
https://github.com/search?q=repo%3Alblod%2Fember-rdfa-editor editor-components&type=code

Embroider safe also found 2 components that are reexported, but no longer exist. I added it to the description.

Issue 2 is an Embroider issue, I was able to reproduce it in a test. We can probably work around it by importing the Velcro component and using it as a reference instead:
import { Velcro } from 'ember-velcro';

class SomeComponent {
  Velcro = Velcro;
}

<this.Velcro>...

It's not really a waste since .gjs requires importing component anyways.


Get an error when trying to run your gem

Hi,
I was testing your gem, but got the following error when trying to restart server after bundle install:
bin/rails:6: warning: already initialized constant APP_PATH /Users/xxxxx/Sites/xx/bin/rails:6: warning: previous definition of APP_PATH was here

Hi can you try to use the master branch? Do note that this gem is not being maintained anymore.

I just included 'kaltura_box' into my Gemfile. Is there some other way to make sure the master branch is loaded?

Great it works! Just a small extra question... update_all_videos! method creates new records in my table. Shouldn't it be using update in the case the video exists? I'll maybe fork it, since it seems to be working fine!

Sorry to bother you again... but I managed to get the gem working again! Fetching video's, uploading video's. Only thing is: this stuff works from Rails Console, but when I try the same code on the server (rails s) it fails. Any ideas? Doesn't sound like to big of a bug, but I'm not really capable of debugging this stuff, so your help is much appreciated!

@bo-oz Glad that you managed to get this working! If it doesn't work for your application it's most likely the application issue. Some code snippets and the error backtrace will definitely help.
The update_all_videos! method is meant to sync the entries from Kaltura to the local application. I'd say it's a very customized method that I've been using for one of my prototyping project previously. Feel free to fork and change it.


secret in the logs

Hello,
Can you tell me how to not show the decrypted secret in the log of puppet  for exemple ?
Thks,

@lovilak - If you are using a recent Puppet version you can mark the values that you want to hide using the Sensitive(T) type - https://docs.puppet.com/puppet/latest/lang_data_sensitive.html

I'm fairly new to puppet and hiera. How would you use Sensitive on user passwords?  You can't call the function from within Hiera (can you?), so would you modify the userclass in site.pp?  something like
class user{
password => Sensitive(hiera('user::password'))
}
?  Or is there something else basic i'm missing?

Watching.

The Sensitive type is helpful and could be used as @Loshea suggests, as is the show_diff setting (defaults to false, but enabled with -t when you use puppet agent -t; instead try puppet agent -t --no-show_diff).

Closing as the question has to do with Puppet itself, not hiera-eyaml.


Fix words endpoint for protected words

Describe the Bug
Requesting https://lunes-test.tuerantuer.org/api/words/1648 with correct api-key returns 404 Not Found.
Requesting https://lunes-test.tuerantuer.org/api/documents/248 with same api-key returns the word.
Expected Behavior
/words/:id-of-word should return the word also for protected vocabulary.
Actual Behavior
/words/:id-of-word returns 404 for protected vocabulary.
Additional Information
We need this feature for the app, as users can save vocabulary as favorites. We only save the id's and api-keys for favorites, so we cannot use the documents-endpoint, as we do not know the discipline-id of the word in this context.

I think this was a known caveat when implementing the feature, see #304.
Nevertheless it should be possible to add support for protected words without too much effort.


Deep sleep(system off) is not working with LVGL and display driver

After wake up of system if (!device_is_ready(display_dev)) return false.
If we add return our display driver is not working.
But if we skip return statement all works as expected.
Not sure why little vgl or zephyr thinks that display driver is not ready.

Seems like maybe before going to power off mode we need to disable something in lvgl. Not usre but would be nice to know.

Hi @RuslanSpartak,
Can you maybe share what display and SoC you are using, as well as the Zephyr version you are experiencing these issues on?
How exactly are you using the power management subsystem? Can you maybe provide your configuration or short MRE as well?

nRF52840 and SSD1306. SDK version 2.5.0. No power management.

About deep sleep I meant SYSTEM OFF mode on nRF52840. After so called wake up - display driver function device_is_ready(display_dev) return false. If not use return fucntion I see that lvgl is working and all is fine. But question is why display driver function device_is_ready(display_dev) return false?

@RuslanSpartak you seem to be reporting an issue in the Nordic SDK. Unless you are quite sure that the issue is present in upstream Zephyr and can provide an appropriate way of reproduce it in vanilla Zephyr I would request you to file a bug report in the Nordic SDK.


[useResponseCache] Ignore specfic schemaCoordinates for IdFields which are not the root of a subgraph

🚨 IMPORTANT: Please do not create a Pull Request without creating an issue first.
Any change needs to be discussed before proceeding. Failure to do so may result in the rejection of
the pull request.
Description
Add a new optionalList of schemaCoordinates to the useResponseCacheParamters, which is used to exclude fields on specific objects in the mapSchema step.
Fixes #2247
Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)

Screenshots/Sandbox (if appropriate/relevant):
N/A
How Has This Been Tested?
Testet fix first on our case and environment by maintaining a parallel instance of this plugin. Further added Unit tests to first reproduce the Issue and proof the fix works.

[x] Added Test "'id field in body overwritten and request fails'"
[x] Added Test "'id field in body is returned as is and not overwritten'"

Test Environment:

OS: macOs: Sonoma 14.5
@envelop/response-cache: 6.2.0
NodeJS: 10.5.0

Checklist:

[ x] I have followed the
CONTRIBUTING doc and the
style guidelines of this project
[ x] I have performed a self-review of my own code
[x] I have commented on my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

Further comments
N/A

@ardatan  is anythign missing ? Should the changeset be created by me ?

@EmrysMyrddin Could you review?

Hi, I'm not entirely against this feature, but I'm afraid we are introducing it to workaround an actual bug.
I'm not sure to entirely understand what is happening here. We should probably first investigate why the plugin behave like this.

@EmrysMyrddin  how would you suggest to move forward ?
From my expierience/debugging suggestion the plugin identifies every object with an "id" field (configurable) as a cachable entity from a subgraph.  If Subgraph A returns a value containing a field with an "id", the plugin seems to remove this part of the resonse while stitching the response together from a non existing subgraph B. Therefore setting the field to null.


how we can select More than 15 image

Is your feature request related to a problem? Please describe.
we want to select more than 15 image
Describe the solution you'd like
can you change select image range up-to 20 to 30
Describe alternatives you've considered
no alternative now we need to choose 20 image
Additional context

Hi @NavjotSinghSeraphic
Thank you for bringing this up. I understand that you want to select more than 15 images. In our demo, the maximum selection count is set to 15 by default. However, you can easily customize this limit when implementing the image picker in your application.
You can adjust the maxCount parameter as shown in the following code snippet to set the selection limit to any value you need:
imagePicker
    .title("My Picker")
    .multipleSelection(enable = true, maxCount = 5)  // Customize maxCount here
    .showCountInToolBar(false)
    .showFolder(true)
    .cameraIcon(true)
    .doneIcon(true)
    .allowCropping(true)
    .compressImage(false)
    .maxImageSize(2)
    .extension(PickExtension.JPEG)

imagePicker.open(PickerType.GALLERY)

Feel free to adjust the maxCount to suit your needs.
If you have any further questions or need additional assistance, don't hesitate to reach out!

@Aayush-Sarikhada
Thanks for replying
i am getting  crash i am changed the count value up- to  15

companion object {
fun default(): PickerOptions {
return PickerOptions(
pickerType = PickerType.GALLERY,
showCountInToolBar = true,
showFolders = true,
allowMultipleSelection = false,
maxPickCount = 20,
maxPickSizeMB = 2.5f,
pickExtension = PickExtension.ALL,
showCameraIconInGallery = true,
isDoneIcon = true,
openCropOptions = false,
openSystemPicker = false,
compressImage = false
)
}
}
}

@NavjotSinghSeraphic,
Thank you for the update. The error you're encountering is likely due to the fact that the value you're providing is outside the defined range of the slider, which is set between 1.0 and 15.0 by default.
To resolve this, please navigate to the PickerOptionsBottomSheet.kt file in the demo project. Then, search for pickCountSlider.valueTo and change its value to match the maximum value you want to set for image selection.
NOTE: Please understand that you're making these changes in the demo, which is intended to showcase what the library can do. When you integrate our library into your actual application, you can customize parameters like maxCount according to your specific needs. You can check our readme.md file to further understand the functioning of our library.
Let me know if you need any further assistance, and please update me on whether your issue has been resolved so I can close the issue.

@Aayush-Sarikhada
Thank you for replying.
I can't change the max value in the library, it's the only readable file in my app so how can I change this value
If I change this value I am facing a crash, I have already sent a screen shot above

@NavjotSinghSeraphic
Actually you are not supposed to change the constant MAX_PICK_LIMIT.  Are you trying to use the function multipleSelection(enable: Boolean)? If yes then please use the overloaded function which has one more parameter called maxCount.  This function is also visible in your ScreenShot as well

@Aayush-Sarikhada
`  private fun openGalley() {
imagePicker
.title("Gallery")
.multipleSelection(enable = true, maxCount = 20)
.showCountInToolBar(true)
.showFolder(true)
.cameraIcon(false)
.doneIcon(true)
.allowCropping(false)
.compressImage(false)
.maxImageSize(2.5f)
.extension(PickExtension.ALL)
if (HelperUtils.isAtLeast11()) {
imagePicker.systemPicker(true)
}
imagePicker.open(PickerType.GALLERY)
//        pickMultipleImagesLauncher.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
}`
 i have already done this but i am getting crash because `library` not allowed to apply range up to 15

@Aayush-Sarikhada    kindly you need to change your slider range  and maxCount limit  in library, thanks

@Aayush-Sarikhada  thanks
its working thanks a lot

Hi @NavjotSinghSeraphic,
You're welcome! I'm glad the issue is resolved. Thank you for trying out our library. If you found it helpful, please consider giving it a star on GitHub—we'd really appreciate it!


cMake File

need to create a cmake file to compile the code with the tensor flow lite and openCV files. @lorcanmcd

The current cmake file in the src file will need to be altered when the GUI is made to be compatible with the video processing code.


signal_returns: add slip argument

this needs a slip parameter similar to CategoryRelations

Implementing assuming the following specification:
def apply_slip(self, target_df: pd.DataFrame, slip: int,
                cids: List[str], xcats: List[str],
                metrics: List[str]) -> pd.DataFrame:
    """
    Applied a slip, i.e. a negative lag, to the target DataFrame
    for the given cross-sections and categories, on the given metrics.

    Parameters
    ----------
    :param <pd.DataFrame> target_df: DataFrame to which the slip is applied.
    :param <int> slip: Slip to be applied.
    :param <List[str]> cids: List of cross-sections.
    :param <List[str]> xcats: List of categories.
    :param <List[str]> metrics: List of metrics to which the slip is applied.
    :return <pd.DataFrame> target_df: DataFrame with the slip applied.
    :raises <TypeError>: If the provided parameters are not of the expected type.
    :raises <ValueError>: If the provided parameters are semantically incorrect.
    """

Also adding the docstring to the existing function in CategoryRelations.apply_slip in https://github.com/macrosynergy/macrosynergy/pull/818


Any way to disable TwirlFeatureImports or the implicit conversions to Boolean?

I'm working on a play/twirl app, and we just got burned badly by the twirlOptionToBoolean implicit conversion in TwirlFeatureImports.scala, and I suspect we have many other cases where we have Options or other non-boolean values in our if statements because of presumed safety with if.
Is there any way to disable these implicit conversions so we can seek and destroy other non-boolean if expressions?
https://github.com/playframework/twirl/blob/master/api/shared/src/main/scala/play/twirl/api/TwirlFeatureImports.scala#L33-L38
/** Adds "truthiness" to iterables, making them false if they are empty. */
  implicit def twirlIterableToBoolean(x: Iterable[_]): Boolean = x != null && !x.isEmpty
  /** Adds "truthiness" to options, making them false if they are empty. */
  implicit def twirlOptionToBoolean(x: Option[_]): Boolean = x != null && x.isDefined
  /** Adds "truthiness" to strings, making them false if they are empty. */
  implicit def twirlStringToBoolean(x: String): Boolean = x != null && !x.isEmpty

Hey @andywhite37, you can set templateImports to Nil and add imports selectively, without the implicit conversions (or maybe only remove "_root_.play.twirl.api.TwirlFeatureImports._" from the setting).
Moreover, our forums would be a better place to discuss this. Github issues are for reporting bugs and feature requests in Play, not for general discussion and getting help. Given that, I'm closing this.
Best.

@marcospereira - thanks for the comment.  I understand about where to post questions in the future.
I was able to address my problem by doing what you suggested, so thanks for that.  I added the following to my build.sbt:
TwirlKeys.templateImports := (
  TwirlKeys.templateImports.value.toList
    .filter(_ != "_root_.play.twirl.api.TwirlFeatureImports._") ++
    List(
      "_root_.play.twirl.api.TwirlFeatureImports.defining",
      "_root_.play.twirl.api.TwirlFeatureImports.using"
    )
  )


How to clone filters from a spirte applied to anther sprite ?

Sprite A has filters effets，Sprite B inherits filters from A and make some changes.
Two sprite filters work at the same time with no-interference each other.

cloneFilters(srcActor, destActor) => {      ...     Object.entries(srcFilters).forEach(([effect, filter]) => {       const destFilter = this.findOrCreateFilter(destActor.sprite, effect);       Object.getOwnPropertyNames(filter).forEach(prop => {         if (typeof filter[prop] !== 'function') {           destFilter[prop] = filter[prop];         }       });     });
solved in this way ...


[Bug] Controller window stays open when opening sidebar windows using shortcuts

Branch:
1.0-rc
Expected behavior:
When opening other sidebar window using shortcuts, Controller window should close as when clicking on sidebar buttons.
Actual behavior:
Controller window stays open when opening sidebar windows using shortcuts:
https://github.com/user-attachments/assets/b1403413-0211-4eff-a0f0-5301f786b8ff

no longer relevant


Value Error in Chapter 2

I am following the code as per notebook and i am getting some dimension error in cell [81]:
# let's try the full preprocessing pipeline on a few training instances

some_data = housing.iloc[:5]
some_labels = housing_labels.iloc[:5]
some_data_prepared = full_pipeline.transform(some_data)

print("Predictions:", lin_reg.predict(some_data_prepared))

ValueError: shapes (5,14) and (16,) not aligned: 14 (dim 1) != 16 (dim 0)

But when i try with the following code it is working fine:
# let's try the full preprocessing pipeline on a few training instances

some_data = housing.iloc[:5]
some_labels = housing_labels.iloc[:5]
#some_data_prepared = full_pipeline.transform(some_data)
some_data_prepared = housing_prepared[:5]
print("Predictions:", lin_reg.predict(some_data_prepared))

Please help me getting this.

I too am grappling with the same issue. I searched around but did not find a solution.
@ageron Can you please help us with resolving this?

Hi @snehitkrishna ,
Thanks for your feedback. That's odd, perhaps the lin_reg model was trained on unprepared data? Please make sure that the training set is prepared in exactly the same way as the new data before training the model. If it still does not work, please get the latest version of notebook 2 and run the cells in order. Hope this helps.

Hi @snehitkrishna
I think this might be due to the fact that some_data has only 5 rows of data.
So, when the cat_pipeline is called, and inside that when LabelBinarizer or whichever encoder you have used in your program is called, it returns a NumPy array with different dimensions than when you used the same pipeline with the full data before.
In my case:

when I use the entire data, after calling the pipeline, my prepared data is of shape: (16512, 16)
when i use only 5 rows of data, after calling the pipeline, the prepared data is of shape: (5, 14)

Hi @snehitkrishna ,
Make sure you do not call fit() or fit_transform() on some_data, only transform() (your code example above does the right thing, but perhaps another part of your code fits some_data?). If you call fit() or fit_transform() then indeed you might get the problem you mention.  You only want to fit the training data, no other data, especially not test data. That's the only reason I can see for the pipeline's output shape being different.
For example, check out this code:
from sklearn.preprocessing import OneHotEncoder
import numpy as np

X_train = np.array([["cat", "apple"], ["dog", "cherry"], ["cat", "cherry"]])
encoder = OneHotEncoder()
X_train_encoded = encoder.fit(X_train)

some_data = np.array([["dog", "apple"]])
some_data_encoded = encoder.transform(some_data)
print(some_data_encoded.todense()) # prints [[0. 1. 1. 0.]]

As you can see, there are 22 columns in the output, even though some_data only has a single value for each column. It learned from the training set that both columns can have two values each, which is why it outputs 22 columns.
Hope this helps.

There are some tests.
some_data = housing.iloc[:6860] some_data_prepared = all_pipeline.fit_transform(some_data) print(some_data_prepared.shape)
output is (6860, 15)
some_data = housing.iloc[:6861] some_data_prepared = all_pipeline.fit_transform(some_data) print(some_data_prepared.shape)
output is (6860, 16)
And this is ISLAND's first appearance.  @biplobmanna is right

Hi @SparkOfLife,
Thanks for your comment. As I mentioned in my comment above, you should not use fit_transform() with some_data.  Any method with fit in its name should only be called on the training data, never on validation, test or new data.

Hello,
I am also getting the same error. I haven't used some_data anywhere except with transform().
Here is my full code https://github.com/guptas08/ML_1/tree/master/LinearRegression/LR2


Update styling for deleted, action messages

PR #161 fixed styling for deleted messages by making them
display:flex, but the Cord CSS uses grid and that means we basically
stomp all over the default styling.  Instead, just apply our custom
grid message layout if it's not a deleted or action message, which
means other things use the default styling.

#164  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @flooey and the rest of your teammates on  Graphite


Can we able to store this file

I want to edit file in canvas and want to store in system

The underlying json data parsed from the DXF be stored in a file, but editing and saving capabilities are beyond the scope of this project. This is just a viewer.


Export everything from types module

The main module was missing a lot of headers and a status.
Also added documentation to statusCode and statusMessage as those were the last undocumented symbols in the library.

Holding release until more of the "refurbishing" of the package is completed, but merging this in because it's fine as it is.


ABCI Node and Context system

This PR adds a high-level ABCI state machine driver, which uses the new Call and Query systems.

Codecov Report

Merging #58 (f819387) into develop (f22b243) will decrease coverage by 1.84%.
 Consider uploading reports for the commit e6cc87f to get more accurate results

@@             Coverage Diff             @@
##           develop      #58      +/-   ##
===========================================
- Coverage    60.91%   59.06%   -1.85%
===========================================
  Files           24       26       +2
  Lines         2259     2382     +123
===========================================
+ Hits          1376     1407      +31
- Misses         883      975      +92

Impacted Files
Coverage Δ

src/abci/mod.rs
0.00% <ø> (ø)

src/abci/node.rs
0.00% <0.00%> (ø)

src/contexts/abci.rs
0.00% <0.00%> (ø)

src/contexts/signer.rs
0.00% <0.00%> (ø)

src/merk/backingstore.rs
0.00% <0.00%> (ø)

src/merk/proofbuilder.rs
0.00% <ø> (ø)

src/store/store.rs
96.36% <ø> (ø)

src/tendermint/mod.rs
0.00% <0.00%> (ø)

src/collections/map.rs
92.25% <68.29%> (+0.23%)
:arrow_up:

src/contexts/context.rs
83.78% <83.78%> (ø)

... and 7 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f22b243...e6cc87f. Read the comment docs.


Pass relative path using resourcePath to data option

I'm wondering how I can get the current sass file path (resourcePath in the loader src), to the data option to use in my sass file.
My use case is i'm trying to pass path.relative(...) from the sass file to the images folder, so I won't have to write url(../../../../dist/images/foo.jpg) in scss files. Ideally it might look something like this:
...
sassLoader: {
    includePaths: [
        path.resolve(__dirname, 'src/scss')
        , path.resolve(__dirname, 'craft/templates/components')
    ],
    outputStyle: ISPROD ? 'compressed' : 'expanded'
    , data: `
             $image-path: ${path.relative(resourcePath, 'src/images/')}; // no good :(
             $env: ${process.env.NODE_ENV};
            `
},
...

This way, no matter how deep a sass file might be in the folder structure, it'll have a relative path to the images folder - and hopefully url()'s can then be properly parsed by file/url loaders!

You can try webpack's resolve.root option. Just set the dist folder as resolve.root and you should be able to just write url(images/foo.jpg).
I won't add any environment variables because this makes everything even a lot more hackier. The data option is already hacky enough.

Sweet thanks.


[MWPW-1228224] Pricing Content Toggle block variants

Please always provide the JIRA issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix https://jira.corp.adobe.com/browse/MWPW-122824
Test URLs (for previous works involving the content toggle block):

Before: https://main--express-website--adobe.hlx.page/education/express/
After: https://m-122824-1--express-website--webistry-development.hlx.page/education/express/?lighthouse=on

Test URLs (for new variants):

Before: https://main--express-website--adobe.hlx.page/drafts/casey/content-toggle/pricing
After: https://m-122824-1--express-website--webistry-development.hlx.page/drafts/casey/content-toggle/pricing?lighthouse=on

Feedback for the Pull Request (the work is done by @toka1300 but reviewed by me):

The external linking functionality needs to be functional at a global level, not variant restricted.
The tooltip display functionality should also be functional at a global level, not variant restricted.
There is a weird right spacing issue between the last button and the end of the box.
Rather than wrapping a link tag around the button if the link is external, replace the button with a link.
When an external button is clicked, the tab searching functionality should be prevented.
I feel off about the toggleMargin function, let's review this after my feedback is implemented.

@williambsm @toka1300 do we still need this?

I don't think so, if my memory serves, we switched to a different branch for merging into main?

Closing this PR as discussed in the technical since it is not needed and required changes are already merged through different PR.


Enable global response transformer

Enabling response transformer as also requested in issue #14 .

This functionality would also be very useful for the project that I'm working on. Is this something that should be enabled by default, or would it make sense to enable/disable it via a boolean config property on DevServicesConfig?

Sorry for my late response. Unfortunately, the project has not been maintained well. Anyway, global response templating is supported now. Thus I'll close it in favor of https://github.com/quarkiverse/quarkus-wiremock/pull/51


🐛 [Plex NAS] Issue description

Plex NAS

Addon name : Plex NAS
Addon version :  <IP_ADDRESS>13-f4cdfea9c-ls135

Describe the bug
Whenever I try and update the addon, it throws an error and fails. I'm trying to update to version <IP_ADDRESS>16-f4cdfea9c-ls139.
The error it throws mentions trying a new claim code, I made a new one and it still fails the same way. Restarting supervisor and rebooting didn't help either.
Error
The command '/bin/sh -c file="$(grep -sril 'Server claimed successfully, navigate to http://serverip:32400/web to complete plex setup' /etc/cont-init.d /etc/services.d /etc/s6-overlay/s6-rc.d)" && sed -i 's/with-contenv bash/with-contenv bashio/g' "$file" && sed -i '2iexport PLEX_CLAIM=$(bashio::config "claim")' "$file" && sed -i '3i[ $PLEX_CLAIM = "Get_from_https://www.plex.tv/claim" ] && bashio::log.warning "Please change the PLEX_CLAIM code from the options" && exit 1 || true' "$file"' returned a non-zero code: 2

Full addon log

s6-rc: info: service fix-attrs: starting
s6-rc: info: service 00-legacy: starting
s6-rc: info: service 00-legacy successfully started
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/00-aaa_dockerfile_backup.sh
cont-init: info: /etc/cont-init.d/00-aaa_dockerfile_backup.sh exited 0
cont-init: info: running /etc/cont-init.d/00-banner.sh
-----------------------------------------------------------
 Add-on: Plex NAS
 Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices.
-----------------------------------------------------------
 Add-on version: <IP_ADDRESS>13-f4cdfea9c-ls135
 There is an update available for this add-on!
 Latest add-on version: <IP_ADDRESS>16-f4cdfea9c-ls139
 Please consider upgrading as soon as possible.
 System: Home Assistant OS 9.3  (amd64 / generic-x86-64)
 Home Assistant Core: 2022.10.5
 Home Assistant Supervisor: 2022.10.1
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums
 https://github.com/alexbelgium/hassio-addons
-----------------------------------------------------------
cont-init: info: /etc/cont-init.d/00-banner.sh exited 0
cont-init: info: running /etc/cont-init.d/01-envfile
cont-init: info: /etc/cont-init.d/01-envfile exited 0
cont-init: info: running /etc/cont-init.d/01-migrations
[migrations] started
[migrations] no migrations found
cont-init: info: /etc/cont-init.d/01-migrations exited 0
cont-init: info: running /etc/cont-init.d/10-adduser
-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/
Brought to you by linuxserver.io
-------------------------------------
To support LSIO projects visit:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------
User uid:    0
User gid:    0
-------------------------------------
cont-init: info: /etc/cont-init.d/10-adduser exited 0
cont-init: info: running /etc/cont-init.d/21-folders.sh
Database stored in /share/plex
... creating /symlink
cont-init: info: /etc/cont-init.d/21-folders.sh exited 0
cont-init: info: running /etc/cont-init.d/40-chown-files
cont-init: info: /etc/cont-init.d/40-chown-files exited 0
cont-init: info: running /etc/cont-init.d/45-plex-claim
cont-init: info: /etc/cont-init.d/45-plex-claim exited 0
cont-init: info: running /etc/cont-init.d/50-gid-video
**** permissions for /dev/dri/card0 are good ****
**** permissions for /dev/dri/renderD128 are good ****
cont-init: info: /etc/cont-init.d/50-gid-video exited 0
cont-init: info: running /etc/cont-init.d/60-plex-update
Docker is used for versioning skip update check
cont-init: info: /etc/cont-init.d/60-plex-update exited 0
cont-init: info: running /etc/cont-init.d/90-create_links.sh
Using existing config
cont-init: info: /etc/cont-init.d/90-create_links.sh exited 0
cont-init: info: running /etc/cont-init.d/92-local_mounts.sh
cont-init: info: /etc/cont-init.d/92-local_mounts.sh exited 0
cont-init: info: running /etc/cont-init.d/92-smb_mounts.sh
Mounting smb share(s)...
Using PUID 0 and PGID 0
[21:39:47] INFO: ... //<IP_ADDRESS>/Storage successfully mounted to /mnt/Storage with options
cont-init: info: /etc/cont-init.d/92-smb_mounts.sh exited 0
cont-init: info: running /etc/cont-init.d/99-custom-files
[custom-init] No custom files found, skipping...
cont-init: info: /etc/cont-init.d/99-custom-files exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service init-mods: starting
s6-rc: info: service init-mods successfully started
s6-rc: info: service init-mods-package-install: starting
s6-rc: info: service init-mods-package-install successfully started
s6-rc: info: service init-mods-end: starting
s6-rc: info: service init-mods-end successfully started
s6-rc: info: service init-services: starting
s6-rc: info: service init-services successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun plex (no readiness notification)
Starting Plex Media Server.
s6-rc: info: service legacy-services successfully started
s6-rc: info: service 99-ci-service-check: starting
[ls.io-init] done.
s6-rc: info: service 99-ci-service-check successfully started

Addon Config
PUID: 0
cifspassword: "!secret cifspassword"
cifsusername: "!secret cifsusername"
claim: claim-#################
networkdisks: "!secret smb"
smbv1: false

System

Supervisor version: 2022.10.1
Host system version: HassOS 9.3

Build now works but that means they have modified the upstream container structure so other things could break https://github.com/alexbelgium/hassio-addons/actions/runs/3302330450


[FX-394] Add vault metrics logs

What

View dashboards here in Datadog
View related metrics logs  (and their context/attributes)
TODOs:

[x] Dashboards for error count (last 15 minutes) and error rate (errors / attempts)
[x] Complete rest of dashboards: https://app.datadoghq.com/dashboard/82m-czd-39c/vaulting-metrics?from_ts=1692199494998&to_ts=1692200394998&live=true

Why

https://linear.app/joinforage/issue/FX-394/ios-add-latency-vault-type-response-code-to-dd-logs
Test Plan

✅ iOS QA Tests passed locally
✅ Unit Tests passed locally

How

Can be released as-is

Current dependencies on/for this PR:

main

PR #54

PR #55

PR #65   👈

This comment was auto-generated by Graphite.

Current dependencies on/for this PR:

main

PR #54

PR #55

PR #65   👈

This comment was auto-generated by Graphite.

Thanks for considering upgrading the struct to be a class! I think there is one more opportunity to keep the VaultProxyResponseMonitor.swift internals out of the implementation details of Collector.swift.
Since I don't have Xcode on my machine, I expressed this idea via Github comments which I admit is a bit awkward, so I appreciate your putting up with that.
The last opportunity that I see is basically to avoid passing details that the monitor/measurement cares about as params through sendData and instead only pass an instance of monitor/measurement as a param to sendData that is already configured with as much information as possible when passed as the arg. In this case, it seems like the monitor/measurement can be created already knowing its vaultAction since this is a decision made above the level of Collector.swift. In addition, we can spare Collector.swift from needing to be aware of the enum VaultAction and instead store that as a private implementation detail within VaultProxyResponseMonitor.swift. We can keep this detail private by using factory methods that initialize instances with the vaultAction already set.
If this makes sense and you find it agreeable, then great! If this doesn't make sense and you want to chat about it, I'm definitely down for that. And, if this doesn't make sense and you'd prefer just to ship this PR, that's OK as well 🙂

Thank you for the thoughtful and thorough review @devinmorgan. I'm open to re-visiting this later and will ship now to expedite the release of these metrics.
I intentionally wanted vaultAction to be a parameter as I anticipated that it may be helpful for other purposes beyond performance metrics (ex: logging).
I also wanted the performance measuring to live closely to the part we're monitoring (i.e. be handled by the Collector, rather than the LiveForageService).

Thanks for considering upgrading the struct to be a class! I think there is one more opportunity to keep the VaultProxyResponseMonitor.swift internals out of the implementation details of Collector.swift.
Since I don't have Xcode on my machine, I expressed this idea via Github comments which I admit is a bit awkward, so I appreciate your putting up with that.
The last opportunity that I see is basically to avoid passing details that the monitor/measurement cares about as params through sendData and instead only pass an instance of monitor/measurement as a param to sendData that is already configured with as much information as possible when passed as the arg. In this case, it seems like the monitor/measurement can be created already knowing its vaultAction since this is a decision made above the level of Collector.swift. In addition, we can spare Collector.swift from needing to be aware of the enum VaultAction and instead store that as a private implementation detail within VaultProxyResponseMonitor.swift. We can keep this detail private by using factory methods that initialize instances with the vaultAction already set.
If this makes sense and you find it agreeable, then great! If this doesn't make sense and you want to chat about it, I'm definitely down for that. And, if this doesn't make sense and you'd prefer just to ship this PR, that's OK as well 🙂

Thank you for the thoughtful and thorough review @devinmorgan. I'm open to re-visiting this later and will ship now to expedite the release of these metrics.
I intentionally wanted vaultAction to be a parameter as I anticipated that it may be helpful for other purposes beyond performance metrics (ex: logging). I also wanted the performance measuring to live closely to the part we're monitoring (i.e. be handled by the Collector, rather than the LiveForageService).

Revisiting sounds good, time to ship! 🚢


Dt issue

Fedoraware Version Date:
Latest
Config used:
Pretty sure it works with any config
Description:
When fake lag is on and teleport mode is set to smooth, dt completely breaks it stays like that until you restart tf2.
Steps to reproduce the behavior:

Turn on fake lag (disable on key option)
Turn on smooth teleport mode
Recharge
Can't move
Try to rejoin
Can't charge

Additional context
Another issue is that Charged dt doesn't work with fake lag on idk might be intended feature

Smooth teleport appears to be broken.
Instant teleport still works.

seems like an issue with my cyoa code, id recommend downloading an earlier build until i fix it

Another issue is that Charged dt doesn't work with fake lag on idk might be intended feature
youre already choking packets


Make it possible to customize package prefix

As proposed in #77
Also added a few pkg test and updated a few functions to use <<< instead of an echo + pipe.

Would be good to test w/o any prefix. Would it make sense to default to no prefix and fall back to dot- if repo missing?

It makes sense, but I'm not sure it's worth the added complexity. Installs will also be slower because of the extra git or curl requests. Users might also get confused what will be used when.
Another approach would be to always do installs based on the full name (no prefixes) and have an alias setting in ellipsis.sh thats used as name for the installation folder and CLI interaction.
The implementation in this PR just makes the current behavior more flexible. So it might be a good intermediate step to a bigger change?

I second testing an empty prefix.  Some of the friends I recommend ellipsis to would prefer having no prefix.

As the prefixing stuff only matters at installation time I wouldn't mind to alter the default to an empty prefix and just break backward compatibility. (won't affect installed packages)
Just not a big fan of the extra repo selection magic, but that's a personal opinion. :slightly_smiling_face:
So if I get it right we all wan't to default to an empty prefix, and the question is if we should break backward compatibility for dot-* packages or not?

@zeekay what's your opinion on those ideas?

I chose dot- so I could easily filter/identify my packages, locally and on GitHub. Assuming everyone else adopts the convention, it could make discovery on GitHub easier. Then again, if no one knows about / understands the convention it's a net negative.
I don't mind switching to empty prefix, but it would be nice to gather community consensus somehow.

@zeekay @kevinkjt2000 Is it ok if I merge this in? It's not changing the current behavior, but will provide some flexibility until we sort this out. If ok, I'll make an issue about defaulting to en empty prefix, so people searching about this can leave their preferences or ideas there.

Yeah that sounds good!


Error: LPUSH can't be processed. The connection has already been closed.

Occasionally, usually when deploying, I get this redis error.
Error: LPUSH can't be processed. The connection has already been closed.
    at RedisClient.send_command (/mnt/app/node_modules/redis/index.js:788:23)
    at RedisClient.(anonymous function).RedisClient.(anonymous function) (/mnt/app/node_modules/redis/index.js:966:25)
    at Command.callback (/mnt/app/node_modules/kue/lib/queue/worker.js:271:19)
    at RedisClient.return_reply (/mnt/app/node_modules/redis/index.js:664:25)
    at HiredisReplyParser.reply_parser.send_reply (/mnt/app/node_modules/redis/index.js:332:14)
    at HiredisReplyParser.execute (/mnt/app/node_modules/redis/lib/parsers/hiredis.js:30:18)
    at Socket.<anonymous> (/mnt/app/node_modules/redis/index.js:131:27)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:146:16)
    at Socket.Readable.push (_stream_readable.js:110:10)
    at TCP.onread (net.js:523:20)

Looking at worker.js#L271, it appears that this redis call is missing a callback. I'm not sure what the correct behavior should be for the callback. If the LPUSH failure is like mine where the Redis connection is closed, we can't undo the BLPOP since we're no longer connected. At the least we should prevent pass a callback to this redis call to prevent an uncaught exception.

Can you create a PR to provide a callback and test this?

This is occurring for me as well. I will try to get a PR soon.


run_model_bpa_bulk fails if modelbparesults table is empty

run_model_bpa_bulk fails if modelbparesults  is empty
Let's assume I ran run_model_bpa_bulk and it created and saved results in modelbparesults then I moved this result to some other table and deleted data from modelbparesults table and made it empty to collect result next day. Then next day it doesn't work. It throws error.
Current solution is I need to DROP modelbparesults table and then only I can run run_model_bpa_bulk again
So summary is run_model_bpa_bulk  doesn't work if my modelbparesults table is empty.

Fixed in 0.8.5.

Fixed in 0.8.5.


Why CS0236

[Enter feedback here]
I mean Why Compiler will report this error . What happened in Compiler when this error occurs?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 19167a3c-283f-e0c1-d1cb-3b773954779b
Version Independent ID: 360140ec-e61d-3117-e7a7-92473887f7b6
Content: Compiler Error CS0236
Content Source: docs/csharp/misc/cs0236.md
Product: dotnet-csharp
Technology: csharp-diagnostics
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

The compiler follows the spec here:
https://github.com/dotnet/csharplang/blob/main/spec/classes.md#instance-field-initialization

A variable initializer for an instance field cannot reference the instance being created. Thus, it is a compile-time error to reference this in a variable initializer, as it is a compile-time error for a variable initializer to reference any instance member through a simple_name.

related to #24002


types/api.lua does not have vim.api.nvim_create_autocmd

nvim_create_autocmd was added in neovim version 0.7.
I saw a previous commit (https://github.com/folke/lua-dev.nvim/commit/60637315d665652c59a6a4f99a82f2308d11dd8f) with the title 'feat: updated docs to 0.7' which is why I thought the lua-dev does support the entire 0.7 neovim api.
However I dont see it in the docs (I checked types/api.lua and types/api1.lua). Is there anyway this could be added ?

I just updated the API docs. Thanks!


paths matcher in version 4.7.5 resolves incorrect paths

Problem
paths matcher in version 4.7.5 resolves incorrect paths
steps to reproduce:

git clone https://github.com/stefanprobst/issue-get-tsconfig && cd issue-get-tsconfig && pnpm install
node index.mjs
see a paths ending in "e2e/e2e/src/check.ts" being logged (note the duplicated "e2e")

to see the behavior in previous version 4.7.3, check out branch "previous-version":

git checkout previous-version && pnpm install
node index.mjs
see a path ending in "e2e/src/check.ts" being logged

Expected behavior
paths should resolve correctly (like in v4.7.3)
Minimal reproduction URL
https://github.com/stefanprobst/issue-get-tsconfig
Version
4.7.5
Node.js version
20.15.0
Package manager
pnpm
Operating system
Linux
Bugs are expected to be fixed by those affected by it

[ ] I'm interested in working on this issue

Compensating engineering work financially will speed up resolution

[ ] I'm willing to offer financial support

also experiencing this with pnpm and tsx

:tada: This issue has been resolved in version 4.7.6 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Compliance of SMTs with AAS specification

I noticed that multiple SMTs are not compliant to the AAS specification and therefore fail to load with some implementations. For example, the SMT Digital Nameplate defines the globally unique identifier https://admin-shell.io/zvei/nameplate/2/0/Nameplate/Markings/Marking/ExplosionSafeties/ExplosionSafety/SpecificConditionsForUse two times which is an obvious violation of the uniqueness constraint.
I also noticed that many SMTs have a comment with the commit message

Updated AASX file for compatibility with AAS metamodel version 3.0(Tested with BaSyx)

However, IDTA should not rely on one arbitrary implementation of many available to test conformity, especially when this implementation does not seem to really ensure compliance.
As developers of an AAS implementation, this causes problems for us, e.g., when users try to load a SMT with our implementation and it fails because the model is not valid but the official Github repository hosting the SMT says that the SMT has been tested to be compatible with the specification. This leads the user to think our software is bad/not working correctly while it actually is correct but the official files are not valid and they have been tested to be compliant with a tool that does not guarantee compliance.
To resolve this, why not use the official IDTA verification tool https://github.com/admin-shell-io/aas-test-engines for validation?
Although I am not sure if the AAS test engine currently does find these constraint violations of duplicate unique IDs but this needs to be fixed nonetheless.

@mjacoby Thank you for raising the issue and it is resolved please check the latest version of the SMT's

Thanks!
Maybe in the future we can also have a Github workflow that checks all model files on commit/push automatically to ensure that only valid models are published.
I created a new issue for that https://github.com/admin-shell-io/submodel-templates/issues/77 so that we can close this one.


picinpic support for gumps sent by the server.

This should add the picinpic support for the gumps that are sent by the server.
This follows the issue: https://github.com/ClassicUO/ClassicUO/issues/1595

@SaschaKP Anything wrong with the implementation?


Consider appending data to a contract's bytecode which decribes which abis the contract implements.

In Solidity it’s faily common to register each interface that a contract implements and provide a getter for this, so that other contracts can query it to see if it can for example receive erc-721 tokens safely. This is done according to https://eips.ethereum.org/EIPS/eip-165 , where “interface detection” is achieved via registering interface signatures in storage manually.
I think we could do better than this. The compiler already knows whether a contract implements an abi or not when compiling; seems like it could append that data somewhere in a common format (like the hash, or the first 4 bytes or whatever).
It was suggested by @adlerjohn @sezna that it could be added to the bytecode:

standardizing it as a blob suffix to the bytecode sounds clean

We would still need to determine the best format to use to represent an abi in a standardized way.
From eip-165 :

We define the interface identifier as the XOR of all function selectors in the interface. This code example shows how to calculate an interface identifier:

pragma solidity ^0.4.20;

interface Solidity101 {
    function hello() external pure;
    function world(int) external pure;
}

contract Selector {
    function calculateSelector() public pure returns (bytes4) {
        Solidity101 i;
        return i.hello.selector ^ i.world.selector;
    }
}

We could also just expose an implicit ABI method (that can be toggled on with an annotation) a la supportsInterface from the above-linked EIP. E.g.
fn supports_interface(selector: u32) -> bool

I like that approach.
Any implicit ABI methods we want to expose like this could be achived through a "base contract abi" with default function implementations that all contracts implement by default.

I've been thinking more about this in the context of both:
a. the problems it attempts to solve, and
b. FuelVM / Sway specific things that allow us to do better than how this is achieved on Ethereum.
A few points to consider:

on Ethereum, the first standard to emerge related to Interface detection/discoverability was erc-165.
More recently, erc-1820 has been used (an improvement on erc-820), and it includes functionality to make it backwards-compatible with erc-165. A couple of key benefits of erc-1820:

provides a "caching" service to help minimize gas costs
allows for both contracts and addresses to "delegate" implementors for a given interface (so not just for contracts like erc-165
requires a registry contract deployed at the same ContractId on each network, which we can do trivially on Fuel. (This required jumping through some hoops to achieve on ethereum via "Nick's method"

We don't need to maintain backward compatibility with erc165, so we could simplify things a fair bit.

So, one way we could support interface detection/ discoverability is as follows:

Append a bytecode blob to the end of each compiled contract (maybe optionally, but done by default).

must contain the interface identifier for each interface/abi implemented by the contract
must be easy to find the location of this blob, i.e: at a constant offset from the end of the contract bytecode or something
ideally this blob could be loaded from another contract with ldc allowing contracts to discover all the interfaces another contract implements without the need for multiple contract calls.
an abi in sway should have a method like `.identifier()' which just calculates & returns the identifier for the abi. This is simply calculated as the XOR of all function signatures in a given abi. This way, when doing an abi cast, you get the abi identifier as a bonus, and can then check an external contract's bytecode to see if it implements this abi as well.

Deploy a Fuel-upgraded version of an erc-1820 Registry contract.

the caching service provided by this contract on Ethereum is meant to save gas. When the registry is called to inquire about Contract Foo, and whether or not it implements the Bar interface,  the local cache in the registry can be checked first to see if Foo has already registered itself as implementing Bar. If so, no need to call Foo to check, if not, then call Foo, ask it if it implements Bar, and then update the cache.
With ldc + appended bytecode blob, we could skirt the whole need for a cache, or at least make it way cheaper to initialize/update the cache.
The main functions the registry (on Ethereum) are:
a. caching
b. erc-165 backwards compatibility
c. supporting interface lookup (important for token standards like erc-777) for both contracts and Externally-owned Addresses.
"a" is optional, but maybe still beneficial; "b" is not needed, and "c" is still important.

This seems unnecessarily complicated compared to
https://github.com/FuelLabs/sway/issues/3234#issuecomment-1298445249

the caching service provided by this contract on Ethereum is meant to save gas

ERC-1820 doesn't provide a cache, it provides a registry. It's also not clear how calling the registry then the contract is cheaper than calling the contract then the contract. The registry is itself a contract. The actual motivation for ERC-1820 is:

There have been different approaches to define pseudo-introspection in Ethereum. The first is ERC-165 which has the limitation that it cannot be used by regular accounts. The second attempt is ERC-672 which uses reverse ENS. Using reverse ENS has two issues. First, it is unnecessarily complicated, and second, ENS is still a centralized contract controlled by a multisig. This multisig theoretically would be able to modify the system.

This seems unnecessarily complicated

It may be slightly more complicated, but if we separate the core ideas into:

Appending some bytecode to the end of a contract, and
creating an ERC-1820 style registry

then for the purpose of this issue, we're only concerned with number 1. (Number 2 is related, but not necessary for 1 to be useful).

ERC-1820 doesn't provide a cache, it provides a registry.

The ERC-1820 registry contract is indeed first and foremost a registry. It does however have some features meant to provide backward compatibility with ERC-165, and a couple of these functions are caching-related:

This contract also acts as an ERC-165 cache to reduce gas consumption.

Given that I don't think? we don't need to provide backward compatibility with ERC-165, we can disregard any of my previous comments related to caching.

It's also not clear how calling the registry then the contract is cheaper than calling the contract then the contract.

The beauty of the proposed change here (appending bytecode to a known location) is that we can discover which abis a given contract implements, without ever making a call ! (via ldc.

Oops, closed by mistake yesterday, so I reopened it.

@adlerjohn Any more thoughts on this given my response to your critique above?

A call shouldn't be much more expensive than loading code, if contracts are small. If contracts are larger, then an optimizoooor may well split it up into multiple contracts so that only what's necessary is loaded.
The benefit of a standard code location is being able to get the supported ABI methods without calling (but you still have to load, which as above isn't in all cases meaningfully cheaper). The downside of a standard code location is that it doesn't work with proxies.

My thinking here was that when loading code via ldc for the purpose of discovering the abis the target-contract implements, you would only need to load the appended blob of bytes which contain this information, regardless of the size of the contract. This would take advantage of the ability to specify the number of bytes to lode when calling ldc.
So even with a massive contract that implemented 10 different abis, you would only need to load ~40 bytes (10 * 4 bytes per interface-identifier).


Implement collision handling for tiled maps

TiledMap objects don't fit into the entity component system framework. Implement a way for these disparate systems to communicate collisions.

Pass bounding box to TiledMap. Convert bounding box to tile coordinates. Use coordinates to lookup tile types. Check if type is collidable.


Unsupported Ops in the model before optimization OneShotIterator, IteratorGetNext?

Unsupported Ops in the model before optimization OneShotIterator, IteratorGetNext ?

Unfortunately, TensorSpace haven't reached pre-processing layer step. However, its really an interesting idea to add pre-processing layers to TensorSpace, if you have any idea which layers can be included, what these layers shall look like, feel free to propose it to us ~