Logs indicate issues with Kepler helm chart installation on a Kind cluster

Describe the bug
Just started exploring Kepler that seems to be an exciting initiative in the Green Software area.
I'm running a Kind cluster (our node - three workers, one controller) on an on-prem Ubuntu 20x VM. Kubernetes v1.26.3
Have installed Kepler using the latest available Helm Chart. The Kepler exporter pods are running but the logs indicate errors as part of the setup.
To Reproduce
Steps to reproduce the behavior:

Install Kepler using the latest available Helm Chart and using the default values.yaml
# helm install kepler . --values values.yaml --create-namespace -n kepler

NAME: kepler
LAST DEPLOYED: Mon Apr 10 16:54:47 2023
NAMESPACE: kepler
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace kepler -l "app.kubernetes.io/name=kepler-exporter,app.kubernetes.io/instance=kepler" -o jsonpath="{.items[0].metadata.name}")
  export CONTAINER_PORT=$(kubectl get pod --namespace kepler $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  echo "Visit http://<IP_ADDRESS>:8080 to use your application"
  kubectl --namespace kepler port-forward $POD_NAME 8080:$CONTAINER_PORT

Validate the Helm deployment and pod status
# helm ls -n kepler

# kubectl get all -n kepler
The kepler-exporter service and the 3 pods running

Review the logs of the running kepler exporter pods that has errors
# kubectl logs pod/kepler-exporter-g5ftw -n kepler

~/Kepler# kubectl logs pod/kepler-exporter-g5ftw -n kepler
I0411 08:35:26.401399       1 gpu.go:43] Failed to init nvml, err: could not init nvml: error opening libnvidia-ml.so.1: libnvidia-ml.so.1: cannot open shared object file: No such file or directory
I0411 08:35:26.403749       1 exporter.go:149] Kepler running on version: 5b9c91a
I0411 08:35:26.403794       1 config.go:169] using gCgroup ID in the BPF program: true
I0411 08:35:26.403885       1 config.go:170] kernel version: 5.15
I0411 08:35:26.403963       1 rapl_msr_util.go:122] failed to open path /dev/cpu/0/msr: no such file or directory
I0411 08:35:26.405297       1 power.go:64] Not able to obtain power, use estimate method
I0411 08:35:26.550052       1 exporter.go:167] Initializing the GPU collector
xz: (stdin): Read error: No such device
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
chdir(/lib/modules/5.15.0-69-generic/build): No such file or directory
I0411 08:35:38.046491       1 bcc_attacher.go:64] failed to attach the bpf program: <nil>
I0411 08:35:38.046548       1 bcc_attacher.go:124] failed to attach perf module with options [-DNUM_CPUS=4]: failed to attach the bpf program: <nil>, not able to load eBPF modules
I0411 08:35:38.046608       1 exporter.go:184] failed to start : failed to attach bpf assets: failed to attach the bpf program: <nil>
I0411 08:35:38.046743       1 exporter.go:209] Started Kepler in 11.643043983s

# kubectl logs pod/kepler-exporter-g7d6r -n kepler
~/Kepler# kubectl logs pod/kepler-exporter-g7d6r -n kepler
I0411 08:35:23.814418       1 gpu.go:43] Failed to init nvml, err: could not init nvml: error opening libnvidia-ml.so.1: libnvidia-ml.so.1: cannot open shared object file: No such file or directory
I0411 08:35:23.817037       1 exporter.go:149] Kepler running on version: 5b9c91a
I0411 08:35:23.817219       1 config.go:169] using gCgroup ID in the BPF program: true
I0411 08:35:23.817463       1 config.go:170] kernel version: 5.15
I0411 08:35:23.817689       1 rapl_msr_util.go:122] failed to open path /dev/cpu/0/msr: no such file or directory
I0411 08:35:23.817995       1 power.go:64] Not able to obtain power, use estimate method
I0411 08:35:23.881693       1 exporter.go:167] Initializing the GPU collector
perf_event_open: No such file or directory
I0411 08:35:39.480026       1 bcc_attacher.go:98] failed to attach perf event cpu_cycles_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: Invalid argument
I0411 08:35:39.480139       1 bcc_attacher.go:98] failed to attach perf event cpu_ref_cycles_hc_reader: failed to open bpf perf event: invalid argument
perf_event_open: No such file or directory
I0411 08:35:39.480456       1 bcc_attacher.go:98] failed to attach perf event cpu_instr_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: No such file or directory
I0411 08:35:39.480608       1 bcc_attacher.go:98] failed to attach perf event cache_miss_hc_reader: failed to open bpf perf event: no such file or directory
I0411 08:35:39.480633       1 bcc_attacher.go:135] Successfully load eBPF module with option: [-DNUM_CPUS=4]
I0411 08:35:39.498904       1 exporter.go:209] Started Kepler in 15.681913307s

# kubectl logs pod/kepler-exporter-l9fsn -n kepler
~/Kepler# kubectl logs pod/kepler-exporter-l9fsn -n kepler
I0411 11:15:33.138778       1 gpu.go:43] Failed to init nvml, err: could not init nvml: error opening libnvidia-ml.so.1: libnvidia-ml.so.1: cannot open shared object file: No such file or directory
I0411 11:15:33.143044       1 exporter.go:149] Kepler running on version: 5b9c91a
I0411 11:15:33.143159       1 config.go:169] using gCgroup ID in the BPF program: true
I0411 11:15:33.143388       1 config.go:170] kernel version: 5.15
I0411 11:15:33.143607       1 rapl_msr_util.go:122] failed to open path /dev/cpu/0/msr: no such file or directory
I0411 11:15:33.143983       1 power.go:64] Not able to obtain power, use estimate method
I0411 11:15:33.624353       1 exporter.go:167] Initializing the GPU collector
perf_event_open: No such file or directory
I0411 11:15:42.034885       1 bcc_attacher.go:98] failed to attach perf event cpu_instr_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: No such file or directory
I0411 11:15:42.035050       1 bcc_attacher.go:98] failed to attach perf event cache_miss_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: No such file or directory
I0411 11:15:42.035185       1 bcc_attacher.go:98] failed to attach perf event cpu_cycles_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: Invalid argument
I0411 11:15:42.035343       1 bcc_attacher.go:98] failed to attach perf event cpu_ref_cycles_hc_reader: failed to open bpf perf event: invalid argument
I0411 11:15:42.035376       1 bcc_attacher.go:135] Successfully load eBPF module with option: [-DNUM_CPUS=4]
I0411 11:15:42.099191       1 exporter.go:209] Started Kepler in 8.956189783s

Expected behavior
The running kepler-exporter pods should be capturing the metrics without any errors in the logs as showcased in the Kepler deployment and demo link - https://www.youtube.com/watch?v=P5weULiBl60.

perf_event_open: No such file or directory
I0411 11:15:42.034885       1 bcc_attacher.go:98] failed to attach perf event cpu_instr_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: No such file or directory
I0411 11:15:42.035050       1 bcc_attacher.go:98] failed to attach perf event cache_miss_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: No such file or directory
I0411 11:15:42.035185       1 bcc_attacher.go:98] failed to attach perf event cpu_cycles_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: Invalid argument
I0411 11:15:42.035343       1 bcc_attacher.go:98] failed to attach perf event cpu_ref_cycles_hc_reader: failed to open bpf perf event: invalid argument

if you are talking about those logs , it's fine because in kind cluster you are not able to obtain because it's baremetal only enabled
did you see metrics in curl command?

failed to attach perf event is expected on VMs. If the HW are not presented to the VMs, then ebpf program will report this message. This helps us to identify the runtime environment. If better wording helps, @sprathod369 please submit a PR

Thanks @jichenjc for the inputs - the below are the metrics I see in my browser for the Energy Stats Exporter (kepler-exporter service) running on port 9102.
I'm wondering if a Kind based cluster good enough to understand, explore and supported by Kepler? Though I've multiple pods running as part of the Temporal workload in this cluster, the metrics do not capture any pod_* metrics as I see in the video running curl command. Looking at the below output, I'm certain that if I set up Prometheus and Grafana, all the metrics counter may end up being 0 or null. It seems something is amiss in my setup to get the required energy metrics on my local cluster.
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 5.5501e-05
go_gc_duration_seconds{quantile="0.25"} 0.000120208
go_gc_duration_seconds{quantile="0.5"} 0.000142096
go_gc_duration_seconds{quantile="0.75"} 0.000197469
go_gc_duration_seconds{quantile="1"} 0.000445609
go_gc_duration_seconds_sum 0.002138696
go_gc_duration_seconds_count 13
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 10
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.18.1"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 1.0898e+06
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 9.367976e+06
# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
# TYPE go_memstats_buck_hash_sys_bytes gauge
go_memstats_buck_hash_sys_bytes 1.449563e+06
# HELP go_memstats_frees_total Total number of frees.
# TYPE go_memstats_frees_total counter
go_memstats_frees_total 22771
# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.
# TYPE go_memstats_gc_sys_bytes gauge
go_memstats_gc_sys_bytes 4.78384e+06
# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.
# TYPE go_memstats_heap_alloc_bytes gauge
go_memstats_heap_alloc_bytes 1.0898e+06
# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.
# TYPE go_memstats_heap_idle_bytes gauge
go_memstats_heap_idle_bytes 9.863168e+06
# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.
# TYPE go_memstats_heap_inuse_bytes gauge
go_memstats_heap_inuse_bytes 2.260992e+06
# HELP go_memstats_heap_objects Number of allocated objects.
# TYPE go_memstats_heap_objects gauge
go_memstats_heap_objects 11223
# HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.
# TYPE go_memstats_heap_released_bytes gauge
go_memstats_heap_released_bytes 9.715712e+06
# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.
# TYPE go_memstats_heap_sys_bytes gauge
go_memstats_heap_sys_bytes 1.212416e+07
# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.
# TYPE go_memstats_last_gc_time_seconds gauge
go_memstats_last_gc_time_seconds 1.6814450112840195e+09
# HELP go_memstats_lookups_total Total number of pointer lookups.
# TYPE go_memstats_lookups_total counter
go_memstats_lookups_total 0
# HELP go_memstats_mallocs_total Total number of mallocs.
# TYPE go_memstats_mallocs_total counter
go_memstats_mallocs_total 33994
# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.
# TYPE go_memstats_mcache_inuse_bytes gauge
go_memstats_mcache_inuse_bytes 4800
# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.
# TYPE go_memstats_mcache_sys_bytes gauge
go_memstats_mcache_sys_bytes 15600
# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.
# TYPE go_memstats_mspan_inuse_bytes gauge
go_memstats_mspan_inuse_bytes 78336
# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.
# TYPE go_memstats_mspan_sys_bytes gauge
go_memstats_mspan_sys_bytes 81600
# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.
# TYPE go_memstats_next_gc_bytes gauge
go_memstats_next_gc_bytes 4.194304e+06
# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.
# TYPE go_memstats_other_sys_bytes gauge
go_memstats_other_sys_bytes 830237
# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.
# TYPE go_memstats_stack_inuse_bytes gauge
go_memstats_stack_inuse_bytes 458752
# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.
# TYPE go_memstats_stack_sys_bytes gauge
go_memstats_stack_sys_bytes 458752
# HELP go_memstats_sys_bytes Number of bytes obtained from system.
# TYPE go_memstats_sys_bytes gauge
go_memstats_sys_bytes 1.9743752e+07
# HELP go_threads Number of OS threads created.
# TYPE go_threads gauge
go_threads 8
# HELP kepler_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which kepler_exporter was built.
# TYPE kepler_exporter_build_info gauge
kepler_exporter_build_info{branch="",goversion="go1.18.1",revision="",version=""} 1
# HELP kepler_node_energy_stat Several labeled node metrics
# TYPE kepler_node_energy_stat counter
kepler_node_energy_stat{cpu_architecture="unknown",node_block_devices_used="0",node_curr_bytes_read="0",node_curr_bytes_writes="0",node_curr_cache_miss="0",node_curr_container_cpu_usage_seconds_total="0",node_curr_container_memory_working_set_bytes="0",node_curr_cpu_cycles="0",node_curr_cpu_instr="0",node_curr_cpu_time="0",node_curr_energy_in_core_joule="0",node_curr_energy_in_dram_joule="0",node_curr_energy_in_gpu_joule="0",node_curr_energy_in_other_joule="0",node_curr_energy_in_pkg_joule="0",node_curr_energy_in_uncore_joule="0",node_name="kind-worker"} 0
# HELP kepler_node_nodeInfo Labeled node information
# TYPE kepler_node_nodeInfo counter
kepler_node_nodeInfo{cpu_architecture="unknown"} 1
# HELP kepler_node_other_host_components_joules_total Aggregated RAPL value in other components (platform - package - dram) in joules
# TYPE kepler_node_other_host_components_joules_total counter
kepler_node_other_host_components_joules_total{instance="kind-worker",mode="dynamic"} 0
kepler_node_other_host_components_joules_total{instance="kind-worker",mode="idle"} 0
# HELP kepler_node_platform_joules_total Aggregated RAPL value in platform (entire node) in joules
# TYPE kepler_node_platform_joules_total counter
kepler_node_platform_joules_total{instance="kind-worker",mode="dynamic",source="acpi"} 0
kepler_node_platform_joules_total{instance="kind-worker",mode="idle",source="acpi"} 0
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 318.3
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1.048576e+06
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 34
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 1.2771328e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.68137636424e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 2.0066304e+07
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 11
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

@rootfs - Thanks!! Do we have a better detailed or alternative documentation to Kepler installation than this ? I'm still struggling and trying to figure out a successful way to build the manifest and deploy from source code as an alternative to Helm.
Is Kind based Kubernetes cluster good enough to understand, explore and supported for Kepler use cases?

@rootfs - Yes, that's what I suspected after going through the Troubleshooting pointers mentioned in the doc. The kernel headers are probably missing on the nodes (docker containers) in my Kind cluster. I'll fix that and test. Thanks!!

@rootfs - Created a new single node Kind cluster based on configuration you suggested here to make sure extraMounts: cover linux header and BCC. Logged in to the kind docker node to confirm that my kind cluster node has the kernel headers
root:~# docker exec -it f4e1307faf50 bash
root@kind-control-plane:/# ls -l /usr/src/linux-headers-$(uname -r)
total 1804
lrwxrwxrwx 1 root root      49 Mar 20 15:32 Documentation -> ../linux-hwe-5.15-headers-5.15.0-69/Documentation
lrwxrwxrwx 1 root root      42 Mar 20 15:32 Kbuild -> ../linux-hwe-5.15-headers-5.15.0-69/Kbuild
lrwxrwxrwx 1 root root      43 Mar 20 15:32 Kconfig -> ../linux-hwe-5.15-headers-5.15.0-69/Kconfig
lrwxrwxrwx 1 root root      44 Mar 20 15:32 Makefile -> ../linux-hwe-5.15-headers-5.15.0-69/Makefile
-rw-r--r-- 1 root root 1814929 Mar 20 15:32 Module.symvers
drwxr-xr-x 3 root root    4096 Mar 31 00:59 arch
lrwxrwxrwx 1 root root      41 Mar 20 15:32 block -> ../linux-hwe-5.15-headers-5.15.0-69/block
lrwxrwxrwx 1 root root      41 Mar 20 15:32 certs -> ../linux-hwe-5.15-headers-5.15.0-69/certs
lrwxrwxrwx 1 root root      42 Mar 20 15:32 crypto -> ../linux-hwe-5.15-headers-5.15.0-69/crypto
lrwxrwxrwx 1 root root      43 Mar 20 15:32 drivers -> ../linux-hwe-5.15-headers-5.15.0-69/drivers
lrwxrwxrwx 1 root root      38 Mar 20 15:32 fs -> ../linux-hwe-5.15-headers-5.15.0-69/fs
drwxr-xr-x 4 root root    4096 Mar 31 00:59 include
lrwxrwxrwx 1 root root      40 Mar 20 15:32 init -> ../linux-hwe-5.15-headers-5.15.0-69/init
lrwxrwxrwx 1 root root      44 Mar 20 15:32 io_uring -> ../linux-hwe-5.15-headers-5.15.0-69/io_uring
lrwxrwxrwx 1 root root      39 Mar 20 15:32 ipc -> ../linux-hwe-5.15-headers-5.15.0-69/ipc
drwxr-xr-x 2 root root    4096 Mar 31 00:59 kernel
lrwxrwxrwx 1 root root      39 Mar 20 15:32 lib -> ../linux-hwe-5.15-headers-5.15.0-69/lib
lrwxrwxrwx 1 root root      38 Mar 20 15:32 mm -> ../linux-hwe-5.15-headers-5.15.0-69/mm
lrwxrwxrwx 1 root root      39 Mar 20 15:32 net -> ../linux-hwe-5.15-headers-5.15.0-69/net
lrwxrwxrwx 1 root root      43 Mar 20 15:32 samples -> ../linux-hwe-5.15-headers-5.15.0-69/samples
drwxr-xr-x 7 root root   12288 Mar 31 00:59 scripts
lrwxrwxrwx 1 root root      44 Mar 20 15:32 security -> ../linux-hwe-5.15-headers-5.15.0-69/security
lrwxrwxrwx 1 root root      41 Mar 20 15:32 sound -> ../linux-hwe-5.15-headers-5.15.0-69/sound
drwxr-xr-x 4 root root    4096 Mar 31 00:59 tools
lrwxrwxrwx 1 root root      42 Mar 20 15:32 ubuntu -> ../linux-hwe-5.15-headers-5.15.0-69/ubuntu
lrwxrwxrwx 1 root root      39 Mar 20 15:32 usr -> ../linux-hwe-5.15-headers-5.15.0-69/usr
lrwxrwxrwx 1 root root      40 Mar 20 15:32 virt -> ../linux-hwe-5.15-headers-5.15.0-69/virt

Manually build the manifest using make build-manifest OPTS="CI_DEPLOY", and then applied the generated deployment.yaml
kubectl apply -f _output/generated-manifest/deployment.yaml
Below are the logs for the kepler-exporter but still something is amiss based on comparing it with the demo video
~# kubectl logs pod/kepler-exporter-4g8kc -n kepler
I0419 03:45:32.846266       1 gpu.go:43] Failed to init nvml, err: could not init nvml: error opening libnvidia-ml.so.1: libnvidia-ml.so.1: cannot open shared object file: No such file or directory
I0419 03:45:32.849142       1 exporter.go:149] Kepler running on version: d1bfdc4
I0419 03:45:32.849191       1 config.go:169] using gCgroup ID in the BPF program: true
I0419 03:45:32.849357       1 config.go:170] kernel version: 5.15
I0419 03:45:32.849525       1 rapl_msr_util.go:129] failed to open path /dev/cpu/0/msr: no such file or directory
I0419 03:45:32.849743       1 power.go:64] Not able to obtain power, use estimate method
I0419 03:45:33.624165       1 exporter.go:167] Initializing the GPU collector
perf_event_open: No such file or directory
I0419 03:45:35.573617       1 bcc_attacher.go:98] failed to attach perf event cpu_cycles_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: Invalid argument
I0419 03:45:35.573811       1 bcc_attacher.go:98] failed to attach perf event cpu_ref_cycles_hc_reader: failed to open bpf perf event: invalid argument
perf_event_open: No such file or directory
I0419 03:45:35.573976       1 bcc_attacher.go:98] failed to attach perf event cpu_instr_hc_reader: failed to open bpf perf event: no such file or directory
perf_event_open: No such file or directory
I0419 03:45:35.574108       1 bcc_attacher.go:98] failed to attach perf event cache_miss_hc_reader: failed to open bpf perf event: no such file or directory
I0419 03:45:35.574167       1 bcc_attacher.go:135] Successfully load eBPF module with option: [-DNUM_CPUS=4]
I0419 03:45:35.596341       1 exporter.go:209] Started Kepler in 2.747228921s

Even when I run curl http://localhost:9102/metrics I still do not see any pod_* stats / counters (like pod_gpu_energy, pod_cpu_energy, pod_dram_energy etc.) even though I have the sample bookinfo app workloads deployed and running on this single node kind cluster.
What am I missing?

The prometheus metrics does not have the pod string in the name.
We follow the general prometheus metrics name recommendation and report the metrics per container.
Can you try to see if you have the metrics:
kepler_container_joules_total
kepler_container_package_joules_total

Thanks @marceloamaral for the response. Yes, I can see the below metrics in the kepler exporter
kepler_container_joules_total
kepler_container_package_joules_total

Actually I was referring to the Kepler demo video that showcases the pod_ stats / metrics* (that are also seen in Prometheus and Grafana). Please see the screenshot below

For me, the kepler_pod_energy_stat metrics are showing zero in the kepler exporter even though I've workloads deployed and running (bookinfo and yelp app) on this single node KIND cluster.  After setting up the monitoring stack based on in the kepler installation guide, when I visualize the power consumption metrics made available by the Kepler Exporter by importing the pre-generated Kepler Dashboard into Grafana, all metrics are zero so I was wondering if anything is missing in my setup on a KIND cluster.

aha，
Kepler Installation
Requirements
Kernel 4.18+
Access to a Kubernetes cluster
kubectl v1.21.0+

https://sustainable-computing.io/installation/kepler/#requirements
we'd better enhance this part of document with bcc?

@sprathod369 cgroup v1 should work now. There are some changes in metrics names. kepler_pod_energy_stat is no longer supported. Can you check from your curl http://localhost:9102/metrics output and see if kepler_container_joules_total is there and what values does it have?

Here's what I did to test the latest changes

Deleted the old KIND cluster and created a new single node KIND cluster - based on extraMounts configuration here. Ran the below checks inside the Kind node (container) to validate
ls -l /usr/src/linux-headers-$(uname -r) -  Yes, Linux Headers are installed
stat -fc %T /sys/fs/cgroup/ - the output is tmpfs so Yes, the cluster node is still using cgroup v1
Deployed sample apps like bookinfo and yelb as part of the cluster workload
Using the latest Kepler code-base, build the manifest using make build-manifest OPTS="CI_DEPLOY", and then applied the generated deployment.yaml kubectl apply -f _output/generated-manifest/deployment.yaml
Also deployed the entire kube-prometheus monitoring stack

@rootfs , @SamYuan1990 - Thanks!! The metrics for kepler_container_joules_total and kepler_container_package_joules_total are attached. If they are good, how do we ensure they reflect in Prometheus and also the pre-generated Kepler Dashboard into Grafana as mentioned in the docs?
Observation - Pod line items with mode="dynamic" have non-zero values and the same pod entries with mode="idle" seem to have 0 value in the attached metrics file.
Kepler-Exporter_kepler_container_joules_total.txt
Kepler-Exporter_kepler_container_package_joules_total.txt

@sprathod369 this is the expected behaviour.
Since you are running in a VM, with no real-time power metrics, Kepler is using the power estimation mode.
I0411 08:35:23.817995       1 power.go:64] Not able to obtain power, use estimate method

Currently, the power estimation algorithm only calculates the dynamic power. This is because the idle power needs to be distributed among all VMs running on the node. The amount of idle power consumed by a virtual machine (VM) depends on the number of concurrently running VMs. However, it is not possible to determine the number of VMs running on the system from within the VM. Then, we only estimate the dynamic power.

@sprathod369 kepler_container_joules_total look good. The reason your dashboard doesn't show any plotting could have quite some possibilities:

can you check if the kepler ServiceMonitor is present?  kubectl get servicemonitor -n kepler will do the trick
can you query kepler metrics (e.g. kepler_container_joules_total from Prometheus UI, to make sure Prometheus actually scrapes the kepler endpoint?
In grafana, can you click into the panel and run the query manually?

cc @jiangphcn for helm chart connection

Within the Prometheus UI, there is a tab labeled "targets," which allows users to verify whether Prometheus is actively collecting metrics from an endpoint or not.

Thanks @marceloamaral , @rootfs for the support.
Yes, seems kepler ServiceMonitor was absent based on running kubectl get servicemonitor -n kepler as I only deployed the generated "deployment.yaml" to my cluster in the kepler namespace and the default kube-prometheus project as mentioned in the installation guide
This is what I have in my _output folder after building all the manifests using the CI_DEPLOY option
~/Kepler/kepler/_output/generated-manifest# ls
base  cluster-prereqs  dashboard  deployment.yaml  exporter  model-server  rbac

~/Kepler/kepler/_output/generated-manifest# ls exporter/
exporter.yaml  kustomization.yaml  kustomizeconfig.yaml  openshift_scc.yaml  patch  prometheus_service_monitor.yaml

I tried deploying the generated prometheus_service_monitor.yaml but I do not see any metrics if I search using "kepler" or even "energy" in the Prometheus metrics explorer so Prometheus is not actively collecting any kepler related metrics.

Different Prometheus deployments might have different labels to discover the servicemonitor.
We use the label app.kubernetes.io/component: exporter but you might need to use another one.
To verify which label you need check the serviceMonitorSelector configuration of your prometheus object.
 kubectl get prometheus -A
 kubectl get prometheus -n $namespace $name -o yaml

Btw, we probably need to include this in our Documentation....

@marceloamaral - I'm on a learning curve with Prometheus and Grafana so will look at the labels, configuration etc. to troubleshoot the Grafana dashboard and Kepler metrics scrapping by Prometheus. Appreciate your inputs!!
Closing this issue as the Kepler metrics issue seems to be now resolved based on fix for cgroup v1  and @rootfs feedback / review of the data in Kepler Exporter logs. Thanks!!


Produce some useful command line tools for the Chinese language

For example, a tool to convert a text in traditional characters to simplified. This should handle standard input/output correctly

This is another example of a place where having a dictionary package that is uncoupled from HAnziToAnki would be nice.

We started splitting dictionary stuff to a separate package. It can later become a separate repo which becomes more powerful.


Use soft references in SQL query engine to avoid OOM

Hi,
I'm not yet 100% convinced by this solution, for have this solution working i saw that we have to use Xms == Xmx that may work when we control the setup(server dist) but it won't work when we don't control the setup(embedding), as well for the case of embedding OOM may come from a different source so soft reference will solve only half of the problem, and probably introducing some not deterministic behaviour(really hard to reproduce in case of error), like a result set disappearing while  iterating it, due to some other part of an application being overloaded(by design or mistake).
Regards

@tglman you are right that is in case of xms=xmx because our commercial server users suffer from this problem and we have several issues in a critical state where they ping us to solve it. This solution will solve all those issues.

Seems like we resolved all questions with @tglman .

Hi,
From a quick private chat: if Xms != Xml the soft reference check is turned off, and if is on and is triggered a free of a soft reference the query get killed without not deterministic behaviour, this is good enough for me now.


Failed to connect with Safari browser

It seams to related to str0m webrtc library, I just post a issue https://github.com/algesten/str0m/issues/448

cleanup for new version


Fix dependencies

Should fix the warnings in windows

The zstd-warning is wrong. For some reason, it doesn't find the DLL (see warning further up), but I added those specifically after double-checking the logs in #206.

clang.exe does not work correctly in windows. It fails with zstd.dll not found. This PR would fix that.

These are the logs from the last build on main:
   INFO (clang-16,Library/bin/clang-16.exe): Needed DSO C:/Windows/System32/ADVAPI32.dll found in $SYSROOT
WARNING (clang-16,Library/bin/clang-16.exe): Needed DSO zlib.dll found in ['libzlib']
WARNING (clang-16,Library/bin/clang-16.exe): .. but ['libzlib'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)
WARNING (clang-16,Library/bin/clang-16.exe): $RPATH/zstd.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
.. is this binary repackaging?

The zlib one is because our runexport for that doesn't actually contain the metadata that the linkcheck is looking for (therefore an expected warning, and still necessary as a host dep), and zstd seems to run into a similar issue, at least in principle.
I'm removing the automerge for now (I don't understand how this should affect clang detection for scikit-image at all, if someone really needs this PR go ahead and merge it)

The zlib warning is telling you that you need libzlib in run, which means the ignore_run_exports_from is wrong.
As I told you before clang.exe does not work correctly on windows as I have checked on windows. I don't know what else to tell you.

clang.exe does not work correctly in windows. It fails with zstd.dll not found. This PR would fix that.

Ah ok, thanks. I misinterpreted the diff at first (on a phone with awkward line breaks in the UI), now I get that it's undoing a couple of ignored run exports for windows.
It seems we should ignore libxml2 in a few places also on windows, but otherwise this LGTM.

As I told you before clang.exe does not work correctly on windows as I have checked on windows. I don't know what else to tell you.

We cross-postes and I hadn't seen your answer

Fixed libxml2 too. Let me know what you think


Realsense camera cannot be instantiated more than once

Describe the bug
cannot run a script that opens a realsense camera more than once.
To Reproduce
Steps to reproduce the behavior:
run the manual tests twice. first time works. second time gives error:
(airo-mono) (base) tlips@olifant:~/Code/contact_graspnet$ python robot/airo-mono/airo-camera-toolkit/airo_camera_toolkit/cameras/realsense/realsense.py
the rectified intrinsics matrix =
 [[1372.6    0.   956.7]
 [   0.  1369.6  557. ]
 [   0.     0.     1. ]]
Camera matrix should be as expected:
     cx,cy are +- 1/2 of the image resolution
     and fx,fy should match the camera documentation.
     All values are in pixels.
     Press a key if all seems reasonable.
Traceback (most recent call last):
  File "/home/tlips/Code/contact_graspnet/robot/airo-mono/airo-camera-toolkit/airo_camera_toolkit/cameras/realsense/realsense.py", line 148, in <module>
    test.manual_test_rgb_camera(camera)
  File "/home/tlips/Code/contact_graspnet/robot/airo-mono/airo-camera-toolkit/airo_camera_toolkit/cameras/manual_test_hw.py", line 25, in manual_test_rgb_camera
    image = camera.get_rgb_image()
  File "/home/tlips/Code/contact_graspnet/robot/airo-mono/airo-camera-toolkit/airo_camera_toolkit/interfaces.py", line 63, in get_rgb_image
    self._grab_images()
  File "/home/tlips/Code/contact_graspnet/robot/airo-mono/airo-camera-toolkit/airo_camera_toolkit/cameras/realsense/realsense.py", line 107, in _grab_images
    self._composite_frame = self.pipeline.wait_for_frames()
RuntimeError: Frame didn't arrive within 5000

unplugging the camera fixes the issue.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment:

Python:

Additional context
Add any other context about the problem here.

This fix seems to work for me. Needs more testing.
Basically, add
ctx = rs.context()
devices = ctx.query_devices()
for dev in devices:
    dev.hardware_reset()

on line 62 of realsense.py


Could not execute buy.

Every time i'm trying to use manual buy fiture i'm getting the same error.
$ buy poloniex.ETH-BTC
placing order...
placing order...
placing order...
placing order...
placing order...
placing order...
placing order...
placing order...
placing order...
placing order...
placing order...
placing order...
{ Error: unable to buy
    at /home/kusayu/zenbot/extensions/exchanges/poloniex/exchange.js:197:17
    at Request._callback (/home/kusayu/zenbot/node_modules/poloniex.js/lib/poloniex.js:79:7)
    at Request.self.callback (/home/kusayu/zenbot/node_modules/poloniex.js/node_modules/request/request.js:122:22)
    at emitTwo (events.js:125:13)
    at Request.emit (events.js:213:7)
    at Request.<anonymous> (/home/kusayu/zenbot/node_modules/poloniex.js/node_modules/request/request.js:888:14)
    at emitOne (events.js:120:20)
    at Request.emit (events.js:210:7)
    at IncomingMessage.<anonymous> (/home/kusayu/zenbot/node_modules/poloniex.js/node_modules/request/request.js:839:12)
    at emitNone (events.js:110:20)
    at IncomingMessage.emit (events.js:207:7)
    at endReadableNT (_stream_readable.js:1045:12)
    at _combinedTickCallback (internal/process/next_tick.js:102:11)
    at process._tickCallback (internal/process/next_tick.js:161:9)
  body: { error: 'Order execution timed out.' },
  desc: 'could not execute buy: error placing order' }

How can i fix it?

Sounds like you cannot connect to the API. Closing this ticket due to inactivity.


Bug Report

Describe the bug
Radiocarbon dates for GLZ001 for Yu et al 2020 in hostassociated-singlegenome are wrong

More info please, where/why is it wrong?


Fix diagnosis for multi files and deleted file

For includes, the xmake check will check those included files along the way, so the result could be multi-files
And when a file is deleted, the diagnosis should be deleted as well
NOTE: this doesn't parse the includes failure, like when included file doesn't exist, since this failure doesn't specify the file that actually includes the target file, so no way to put it in the right place

btw, i realize that this intellisense could work with Lua-LS addon, as long as we set xmake.lua language to Lua instead of xmake.
This intellisense focuses on file name xmake.lua, while Lua-LS addon focuses on Lua language.
so setting xmake.lua to Lua gets the better parts of both extensions.


fix(mongoose): Fix the serialization and the problem with Date

Information

Type
Breaking change

Fix
No

Fix the following issue:
TypeError: object.toISOString is not a function
    at DateMapper.serialize

:tada: This PR is included in version 6.17.4 :tada:
The release is available on:

v6.17.4
GitHub release

Your semantic-release bot :package::rocket:


add example of how to create civis futures to user guide

The issue of how to create futures objects has come up a few times recently, so I think it'd be worth adding an example to the documentation.

@stephen-hoover or @keithing, could one of you please take a look?

@keithing, does ad3b944 work?

does ad3b944 work?

Yeah, thanks!

rebased


Hide line number from buffers

Hello,
First, thanks for this plugin. It looks very complete, and has been very useful. I have been trying to remove the line number that appears with the buffers() command to no avail. Basically, instead of seeing
some/file:123

I would like to see
some/file

The --delimiter and --with-nth options of fzf can't be used, because they include the delimiter at the end. Basically, --delimiter : --with-nth 1 displays
some/file:

Is there any way to solve this? What would be the best way? Would it be possible with fn_transform?
Thanks again

Using --with-nth is the best option, but as you discovered it won't hide the ::
:lua require("fzf-lua").buffers({fzf_opts={["--with-nth"]="..-2"}})

Is there any way to solve this? What would be the best way? Would it be possible with fn_transform?

fn_transform doesn't get called here, it's used when you wish to transform the output of a shell command, not with exisiting providers.
I can pretty quickly add a variable to not print the line number but that would have the unintended consequence of setting the cursor to line 1 when switching between buffers, that would mean that I also need to adjust the buf_edit action to discern between buffers with lines and without, TBH I don't think it's worth it for the minor inconvineince of having an extra : displayed.


Usage documentation is outdated after 1.0.17 and 1.0.18 released

From the docs:
$ profiler -h
usage: profiler [-h] [-c CHANNEL | -f FREQUENCY] [-i INTERFACE] [-s SSID] [--config FILE]
                [--files_path PATH] [--hostname_ssid] [--debug] [--logging [{debug,warning}]]
                [--noprep] [--noAP] [--no11r] [--no11ax] [--oui_update] [--read PCAP]
                [--no_bpf_filters] [--list_interfaces] [--version]

options:
  -h, --help            show this help message and exit
  -c CHANNEL            set the channel to broadcast on
  -f FREQUENCY          set the frequency to broadcast on
  -i INTERFACE          set network interface for profiler
  -s SSID               set profiler SSID name
  --config FILE         customize path for configuration file
                            (default: /etc/wlanpi-profiler/config.ini)
  --files_path PATH     customize default directory where analysis is saved on local system
                            (default: /var/www/html/profiler)
  --hostname_ssid       use the WLAN Pi's hostname as SSID name (default: False)
  --debug               enable debug logging output
  --logging [{debug,warning}]
                        change logging output
  --noprep              disable interface preperation (default: False)
  --noAP                enable Rx only mode (default: False)
  --no11r               turn off 802.11r Fast Transition (FT) reporting
  --no11ax              turn off 802.11ax High Efficiency (HE) reporting
  --oui_update          initiates update of OUI database (requires Internet connection)
  --read PCAP           read and analyze association request frames from pcap
  --no_bpf_filters      removes BPF filters from sniffer() but may impact profiler performance
  --list_interfaces     print out a list of interfaces with an 80211 stack
  --version, -V         show program's version number and exit

Needs updated accordingly:
usage: profiler [-h] [-c CHANNEL | -f FREQUENCY] [-i INTERFACE] [-s SSID] [--config FILE] [--files_path PATH] [--hostname_ssid] [--debug] [--noprep]
                   [--noAP] [--no11r] [--no11ax] [--no11be] [--noprofilertlv] [--wpa3_personal_transition | --wpa3_personal] [--oui_update] [--read PCAP]
                   [--no_bpf_filters] [--list_interfaces] [--version]

wlanpi-profiler is an 802.11 client capabilities profiler. If installed via apt package manager, read the manual with: man wlanpi-profiler

optional arguments:
  -h, --help            show this help message and exit
  -c CHANNEL            set the channel to broadcast on
  -f FREQUENCY          set the frequency to broadcast on
  -i INTERFACE          set network interface for profiler
  -s SSID               set profiler SSID name
  --config FILE         customize path for configuration file (default: /etc/wlanpi-profiler/config.ini)
  --files_path PATH     customize default directory where analysis is saved on local system (default: /var/www/html/profiler)
  --hostname_ssid       use the WLAN Pi's hostname as SSID name (default: False)
  --debug               enable debug logging output
  --noprep              disable interface preperation (default: False)
  --noAP                enable Rx only mode (default: False)
  --no11r               turn off 802.11r Fast Transition (FT) reporting
  --no11ax              turn off 802.11ax High Efficiency (HE) reporting
  --no11be              turn off 802.11be Extremely High Throughput (EHT) reporting
  --noprofilertlv       disable generation of Profiler specific vendor IE
  --wpa3_personal_transition
                        enable WPA3 Personal Transition in the RSNE for 2.4 / 5 GHz
  --wpa3_personal       enable WPA3 Personal only in the RSNE for 2.4 / 5 GHz
  --oui_update          initiates update of OUI database (requires Internet connection)
  --read PCAP           read and analyze association request frames from pcap
  --no_bpf_filters      removes BPF filters from sniffer() but may impact profiler performance
  --list_interfaces     print out a list of interfaces with an 80211 stack
  --version, -V         show program's version number and exit

https://github.com/WLAN-Pi/wlanpi-profiler/pull/201

Closed by #201. Thanks @lisamessier


Run tests on linux

This PR is opened against version-4.0-changes branch.

Stop using NSDictionary
This fixes attributes tests on Linux.
Add Swift-3.1 and Swift-4.0 jobs to travis
Skip failing tests on Linux

LazyWhiteSpaceParsingTests.testShouldBeAbleToCorrectlyParseCDATASectionsWithWhitespace
WhiteSpaceParsingTests.testShouldBeAbleToCorrectlyParseCDATASectionsWithWhitespace

Codecov Report

Merging #138 into version-4.0-changes will decrease coverage by 0.83%.
The diff coverage is 38.46%.

@@                  Coverage Diff                  @@
##           version-4.0-changes   #138      +/-   ##
=====================================================
- Coverage                26.83%    26%   -0.84%
=====================================================
  Files                       13     13
  Lines                     1930   1919      -11
=====================================================
- Hits                       518    499      -19
- Misses                    1412   1420       +8

Impacted Files
Coverage Δ

Tests/SWXMLHashTests/WhiteSpaceParsingTests.swift
0% <0%> (ø)
:arrow_up:

...ts/SWXMLHashTests/LazyWhiteSpaceParsingTests.swift
0% <0%> (ø)
:arrow_up:

Source/SWXMLHash.swift
75.22% <100%> (-1.03%)
:arrow_down:

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 ed5f34c...09ae63e. Read the comment docs.


feat: ticket archiving

This PR implements ticket archiving.
A new column (ticketArchivesChannel) is added to the guilds table in the database which can be get & set using the settings commands. If a guild has its archives channel set, the bot will automatically send an output txt file in that channel when a ticket is closed.
Messages older than 2 weeks cannot be fetched in a reliable way and thus won't be included in the archives.
This PR resolves #140

Correction: it can log messages older than two weeks old. Mixed some things up with another Discord endpoint that does have this restriction.


Backup Possibility

How can backup server and client settings and transfer it to another server? is it possible?

Try installing it using the script and then copy recursively /etc/openvpn from the old server to the new one to restore everything. Overwrite if asked.
For clients backup the .ovpn files, but you don't need them on the server if this is what you ask.

Yep. Also update the hostname/IP on the clients if needed.

Hi, today I made a backup of the "/etc/openvpn" folder and put it in a new installation. Everything works and old clients are able to talk to the server.
The problem is created when I try to create a new client through the "openvpn-install.sh" script. The latter is generated but not work. Inside the certificate the private key is missing.
Am I doing something wrong or isn't the script meant to do what I want?


make logsumexp error out on a masked array

TL;DR: This is an alternative to gh-3036. That PR was proposing to pass all array subclasses to logsumexp. Here I instead propose to error out and give a workaround in the docstring.
On master, logsumexp simply ignores the mask and does the calculation with both masked and non-masked data:
In [45]: a = np.ma.array([np.log(2), 2, np.log(3)], mask=[False, True, False])

In [46]: logsumexp(a.data)
Out[46]: 2.5168135102475446

In [47]: logsumexp(a)
Out[47]: 2.5168135102475446

In this PR, logsumexp(a) errors out instead of returning garbage. Also, the docstring now lists a workaround:
 >>> a = np.ma.array([np.log(2), 2, np.log(3)],
...                  mask=[False, True, False])
>>> b = (~a.mask).astype(int)
>>> logsumexp(a.data, b=b), np.log(5)
1.6094379124341005, 1.6094379124341005

closes gh-3036, closes gh-3034.

LGTM, I prefer this over gh-3036

I didn't check the details, but setting weights to zero to handle missing values only works if there is no inf, AFAIK.

Josef: https://github.com/scipy/scipy/pull/6160/files#diff-3e1b3e11c2cba8dec2c82f4d73af1132R110: a[b == 0] = -np.inf

Good, I didn't know.
(sounds like a reasonable default treatment for zero weights, I need to remember this for next time I need it.)

Allright, no objections and the inf/nan cases are covered as well, so in it goes. Thanks @ev-br @josef-pkt

@jordi-vaquero it never did. The previous behavior was plain buggy: the mask was ignored.


PseudoTerminal as Terminal Profile broken location

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.66.2
OS Version: Ubuntu 20.04.4 LTS

Steps to Reproduce:

Create an extension providing a terminal profile for external terminal aka pty
See https://github.com/microsoft/vscode-extension-samples Extension Terminal sample and Terminal sample
Create a split terminal with this profile
It appears as in a new tab. Not splited

Probably related issue:

Same extension
Set terminal.integrated.defaultLocation to editor
Into panel, create a terminal with this profile
It appears in edtior area. But other profiles like bash appears in terminal panel

None of those problems when terminal profile uses shellPath

This works for me now, so believe it's been fixed


Failed to acquire bundle ownership

Pulsar version：2.9.1
2021-12-29 14:37:37.641 [metadata-store-6-1] WARN  org.apache.pulsar.broker.lookup.TopicLookupBase - Failed to lookup null for topic persistent://public/data-channel/tet-partition-30 with error org.apache.pulsar.broker.PulsarServerException: Failed to acquire ownership for namespace bundle public/data-channel/0xebf3b108_0xf0000000
java.util.concurrent.CompletionException: org.apache.pulsar.broker.PulsarServerException: Failed to acquire ownership for namespace bundle public/data-channel/0xebf3b108_0xf0000000
        at java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:326) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:338) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.uniRelay(CompletableFuture.java:911) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:899) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977) ~[?:1.8.0_102]
        at org.apache.pulsar.broker.namespace.NamespaceService.lambda$searchForCandidateBroker$15(NamespaceService.java:577) ~[org.apache.pulsar-pulsar-broker-2.9.1.jar:2.9.1]
        at java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:870) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:852) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977) ~[?:1.8.0_102]
        at org.apache.pulsar.metadata.coordination.impl.LockManagerImpl.lambda$acquireLock$2(LockManagerImpl.java:111) ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
        at java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:870) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:852) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977) ~[?:1.8.0_102]
        at org.apache.pulsar.metadata.coordination.impl.ResourceLockImpl.lambda$acquire$4(ResourceLockImpl.java:134) ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
        at java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:870) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:852) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962) ~[?:1.8.0_102]
        at org.apache.pulsar.metadata.impl.ZKMetadataStore.lambda$get$7(ZKMetadataStore.java:139) ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_102]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_102]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [io.netty-netty-common-4.1.72.Final.jar:4.1.72.Final]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_102]
Caused by: org.apache.pulsar.broker.PulsarServerException: Failed to acquire ownership for namespace bundle public/data-channel/0xebf3b108_0xf0000000
        ... 20 more
Caused by: java.util.concurrent.CompletionException: org.apache.pulsar.metadata.api.MetadataStoreException$LockBusyException: Resource at /namespace/public/data-channel/0xebf3b108_0xf0000000 is already locked
        at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577) ~[?:1.8.0_102]
        ... 17 more
Caused by: org.apache.pulsar.metadata.api.MetadataStoreException$LockBusyException: Resource at /namespace/public/data-channel/0xebf3b108_0xf0000000 is already locked
        at org.apache.pulsar.metadata.coordination.impl.ResourceLockImpl.lambda$doRevalidate$20(ResourceLockImpl.java:297) ~[org.apache.pulsar-pulsar-metadata-2.9.1.jar:2.9.1]
        at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952) ~[?:1.8.0_102]
        at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926) ~[?:1.8.0_102]
        ... 7 more

The error logs said  the resource is already locked, this means, the ZNODE of this namespace bundle created by previous broker was not removed yet.
Normally, broker would firstly query the bundle owner before tried to acquire it.
public CompletableFuture<Optional<NamespaceEphemeralData>> getOwnerAsync(NamespaceBundle suName) {
        CompletableFuture<OwnedBundle> ownedBundleFuture = ownedBundlesCache.getIfPresent(suName);
        if (ownedBundleFuture != null) {
            // Either we're the owners or we're trying to become the owner.
            return ownedBundleFuture.thenApply(serviceUnit -> {
                // We are the owner of the service unit
                return Optional.of(serviceUnit.isActive() ? selfOwnerInfo : selfOwnerInfoDisabled);
            });
        }

        // If we're not the owner, we need to check if anybody else is
        String path = ServiceUnitUtils.path(suName);
        return lockManager.readLock(path);
    }

If the ZNODE created by previous broker was not removed yet. Why lockManager.readLock(path) returned none owner of this bundle.
Reproduce step.
It's hard to reproduce, since i just unloaded  some bundle during the consumer and producer exists,.

@gaozhangmin please explain the resolution since you closed the issue.

@gaozhangmin please explain the resolution since you closed the issue without describing the resolution.

This problem occurs in 2.10

This problem occurs in 2.10

i have the problem  when i have many topics about 1million。the connections between broker and zookeeper will be disconnected and connected frequently.

This problem occurs in 2.10

i have the problem when i have many topics about 1million。the connections between broker and zookeeper will be disconnected and connected frequently. then this problem will be occurs

I think this is probably happening because two brokers make "decentralized" load decisions for the same bundle but to different brokers. Then, when each broker goes to load the bundle, one will win and one will lose.
My follow up question is whether the client should retry this type of failure or if it should propagate the failure back to the application code? It seems like a pretty retriable failure given that we know the topic was owned by another broker at a recent point in time.


cursor position incorrect after moving window across screens

Issue Type: Bug

Open VS Code
Open and begin to edit a file of any type (tested python, txt, and go).
Type some characters or a sentence, and leave the text cursor indicator at the end.
Use the mouse and move the window in any direction.
observe cursor position has moved, sometimes over the top of a character (instead of between characters) and typed characters appear in a different location

Expected result -

after moving the window the cursor stays in the same position and typing occures at the cursor location

Note - this is slightly different than BUG #45539, the cursor is not always off by 1 character
System note - working with a Surface 2017 (2736x1824 ~15" screen) and a Samsung (2560x1440 ~ 32" widescreen), may be related to the drastically different aspect ratio and pixel sizes
VS Code version: Code 1.32.0 (507312a3e3b34b084b467dfd983263bc7c9d87e0, 2019-03-06T18:57:55.589Z)
OS version: Windows_NT x64 10.0.17134

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-7660U CPU @ 2.50GHz (4 x 2496)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: enabledsurface_synchronization: enabled_onvideo_decode: enabledwebgl: enabledwebgl2: enabled

Memory (System)
15.93GB (7.95GB free)

Process Argv

Screen Reader
no

VM
0%

@bpasero Do you know if there is electron API that could tell us when the window changes screens or when the screen DPI is modified? (I would like to invalidate my font measurement cache in such cases)

@alexandrudima yeah all possible, but currently afaik not being forwarded to the renderer just yet. But see https://github.com/Microsoft/vscode/blob/13583577d9687171e4812c21acf27ac755a71009/src/vs/code/electron-main/window.ts#L393 for reference on the main side.

Let's track in #61641


Bump cibuildwheel to 1.1.0

Add support for Python 3.8.
I'm hoping this fixes the broken builds.

Thanks! merged!


chore: golf linearIsometry_apply_dfinsupp_sum_single

This fails the simpNF ("simp can prove this") linter both before and after my change locally, but apparently not in CI. Not sure what's up with that.

bors r-
(to give us some time to sort out the lean4 issue)

bors r+


postscript is read in as bytes but expects to be written out as a string

When reading a file that ends with "extra garbage" (as described in L207-208), that data is stored internally as bytes. It appears that the tobytes function later expects it to be a string.
I'm not sure what the purpose of postscript is—whether it's just for roundtripping insignificant data, or what—so I don't know for sure whether the best approach is

to change the return value of PuzzleBuffer.read_to_end() to be a string (as is the case with PuzzleBuffer.read_until())
to convert postscript to a string when it's assigned in Puzzle.load(), or
to continue to store it as bytes and just drop the .encode(ENCODING) from the tobytes() step on L273.

If one of these is preferable, I'd be happy to submit a PR to accomplish it. Even if none are suitable, I still would encourage moving the self.tobytes() step outside of the open context manager in Puzzle.save(), because in this case a failure at that step is causing the file to be opened empty and could result in data loss. (I've got a user experiencing that on an older set of puzzles.)

Oh also: postscript is initialized as an empty string (not bytes) in new blank puzzles, so I'm inclined to lean towards one of the first two options.

I appreciate the detailed report and analysis here. IMO read_to_end() is likely correct to return bytes not string. But I am tempted to convert postscript to string when the puzzle is loaded as you suggested. There are some potential compatibility issues changing the type now since it's hard to know what's in this field in the wild as I don't think I've seen it specified anywhere. What do you think about guarding the conversion to string and falling back to bytes? (then similarly in tobytes, detecting bytes vs string and handling appropriately). PR absolutely welcomed, and for the save issue you mentioned too, if you have time! Thanks for your contribution!

The more I think about it, the more inclined I am to have it follow preamble, which has changed between the latest release to pypi and now, given that they appear to play pretty similar roles on each end of the file. In that spirit, I'm going to submit a PR that treats it as bytes throughout, and catches it at save if it's been written as a string for some reason. (Sorry, I know that's the opposite of my suggestion from yesterday.)
I suspect that writing data to postscript—whether as a string or as bytes—is not a very widespread use in the wild, precisely because that field is not specified in any of the documentation I've seen for the format.
If you don't like my approach, let me know and I can do it the other way instead.

the symmetry with preamble makes a lot sense to me too. let me take a look at your PR.

Looks good! thanks for your contribution!

Thank you for being so responsive and quick! Do you happen to have a pypi release planned so I can pin to the new version?

In the past @svisser handled pypi but it's been a while since I've heard from him. Let me see if I'm able to do a release.

OK I think I figured it out lol. Good luck with your project.


tpl/debug: Add debug.Timer

Closes #11580

Oh wow. And you can pass it around in context. Nice.
{{ $t := debug.Timer "TestSeq" }}
{{ partial "foo.html" (dict "page" . "timer" $t) }}

Oh wow. And you can pass it around in context. Nice.

I don't see how useful that would be in its current form:

The names are global and only the first .Stop will have an effect.

The timers are only created and logged if log level is <= INFO

The timings gets printed sorted with the slowest last (which I find helpful)

Does the above make sense?

Also, does the debug.Timer naming make sense? I thought about putting it in the time package, but I changed my mind.

I agree this should live in the debug package.
My thought on starting the timer in template A and stopping in template B was about following the chain with a single page site, but the --templateMetrics --templateMetricsHints flags already provide the important information, and the result is statistically meaningul (pages > 1).
It did make me think about page-attached timers though, which I suppose we can already do by stuffing time.Now into a scratch.

It did make me think about page-attached timers though, which I suppose we can already do by stuffing time.Now into a scratch.

Then I'd just put a timer at the top of single.html and stop it at the end, but I don't think that is particulary useful. The typically use case for this is to pinpoint performance bottle necks. I used this yesterday to easily identify a "hot loop" where I did way too much work, and shaved 70% off the build time.


Proposal for new more generic Module trait

Current Module and ModuleT traits can accept only Tensor type as input. It can be not suitable for complex models that should accept not only one tensor.
What about such trait for modules:
pub trait TypedModule {
    type Input;
    type Output;

    fn forward_t(&self, input: &Self::Input, train: bool) -> Result<Self::Output, TchError>;

    fn forward(&self, input: &Self::Input) -> Result<Self::Output, TchError> {
        self.forward_t(input, false)
    }
}

What changes:

We can define input and output types when implementing new module;
Output is wrapped in result struct for better error handling
One trait with forward_t and forward methods. Also I am not sure that we need forward  method at all.

For all current modules we can add such implementation:
impl<M> TypedModule for M
    where M: ModuleT
{
    type Input = Tensor;
    type Output = Tensor;

    fn forward_t(&self, input: &Self::Input, train: bool) -> Result<Self::Output, TchError> {
        Ok(self.forward_t(input, train))
    }
}

Sounds like an interesting idea.
The main goal of the Module and ModuleT trait is to make it easy to chain layers that are functions taking as input a tensor and returning a tensor for which the current trait work well.
It's a bit unclear to me what this parameterized version would buy us. In order to get a better sense of this, maybe you could define and use this trait in a crate that implements a model where this is actually useful (or even better in multiple models/use cases). Based on this we would have a better feeling of the generality of the thing, as well as the potential rough edges of the api.

I am not the OP, but one use case would be modules, that take multiple inputs or produce multiple outputs.


[simplify-networking] Refactor setup-ovs out of ci-tests

As setup-ovs scneario is moving to kubernetes-nmstate repo, the ci is changed to only test the ignition part.
Since this branch is not mature yet to be on coreos-ci and coreos-ci is still the preferred test-infra, we fork the relevant test to this repo and check them here. This will allow us to expand the test coverage should it be needed in the future.

Are we sure that we are moving to kubernetes-nmstate?

@kobi86 notice this is done on a separate branch.
The goal of this branch is to move to knmstate, as you formerly suggested.
It would be best to move from scripts to a formal api imo

Its fine by me, but we had a problem with this in the past.
lets talk about this

Its fine by me, but we had a problem with this in the past.
lets talk about this

Sure!

Feel free to merge this when ready. It is a development branch, so I don't think this should be waiting for the discussion to happen.

updated setup.sh for fedora users, and fixed small typo


async improvements

Async improvements and minor reorganization.

Apologies for the monster pull request.

@dshe 👍 for the PR. I will review it first 😄

@dshe by the way, would you mind I add you to the collaborator list? I mean, you could help merging & publishing new fixes to nuget when I'm busying with other things. It would be nice if you accept it 😄

@lppkarl Sure, you can add me as a collaborator. But don't be fooled. I am a real beginner with GitHub.

@dshe that's alright. Github is easy to use if you're familiar with git, I think you're capable on this 😄 The invitation should be sent once I added you, please accept it if you see it.


How to close the menu?

State Your Question

After pressing 'm' the menu is kept ON.
After further operation expands the menu window and I am not able to close the menu.

I have same question:

Forgive me if I don't understand the question, but does esc not close the menu?

Same issue as #1321?


Bug: PHPStan is broken because of service('auth')->routes($routes);

PHP Version
8.1.14
CodeIgniter4 Version
4.3.1
Shield Version
dev-devlop
Which operating systems have you tested for this bug?
macOS
Which server did you use?
cli-server (PHP built-in webserver)
Database
MariaDB 10.2
Did you customize Shield?
No
What happened?
PHPStan is broken.
Steps to Reproduce
Install appstarter
composer create-project codeigniter4/appstarter shield-phpstan-issue

Go to a directory
cd shield-phpstan-issue

Install shield
composer require codeigniter4/shield:dev-develop

Setup Shield
php spark shield:setup

Here we can skip a database migration.

Install PHPStan
composer require --dev phpstan/phpstan

Create configuration for a PHPStan like:
parameters:
    tmpDir: build/phpstan
    level: 5
    paths:
        - app
        - tests
    bootstrapFiles:
        - vendor/codeigniter4/framework/system/Test/bootstrap.php
    excludePaths:
        - **/Config/Routes.php
        - **/Views/*
    universalObjectCratesClasses:
        - CodeIgniter\Entity
        - CodeIgniter\Entity\Entity
        - Faker\Generator
        - Faker\Factory
    scanDirectories:
        - app/Helpers
        - vendor/codeigniter4/framework/system/Helpers
        - vendor/codeigniter4/settings/src/Helpers
        - vendor/codeigniter4/shield/src/Helpers
    dynamicConstantNames:
        - APP_NAMESPACE
        - CI_DEBUG
        - ENVIRONMENT

Try to analyse with PHPstan
vendor/bin/phpstan analyse

And there is an error:
Note: Using configuration file /Users/ME/CodeIgniter4/shield-phpstan-issue/phpstan.neon.dist.
Error thrown in /Users/ME/CodeIgniter4/shield-phpstan-issue/app/Config/Routes.php on line 34 while loading bootstrap file /Users/ME/CodeIgniter4/shield-phpstan-issue/vendor/codeigniter4/framework/system/Test/bootstrap.php: Call to a member function routes() on null

This error is there also in Docker environment.
Expected Output
PHPStan should work.
Anything else?
This error is there from CodeIgniter4 version 4.3.0. I'm opening issue there because Shield setup and docs are using
service('auth')->routes($routes);

to propagate routes.

Thank you.
I confirmed this issue.

@jozefrebjak Try https://github.com/codeigniter4/CodeIgniter4/pull/7193

@jozefrebjak Thank you for testing!
The PR was merged, so this issue will be fixed in CI v4.3.2.


Create 2016-01-16-namagic-clickyTreasure.md

It looks like you're a little fuzzy on the concept of return.  tina.distance() returns a number.  You can use it in a logic statement (like you did) but if you use it by itself on a line it's like typing 42.  Python will say "oh, a number." and move on.
Check out what our text has to say on the concept and I'll talk a little about it in class.
In this case it also looks like you deleted the myscreen.onclick() from the starter code, which makes your tina non-responsive to clicks.
Stopping because you get stuck is a good problem solving strategy but you need to start early enough that you can come back and keep going to solve the problem in the exercise.

I really did start early, thanks for the comment. I'll look back at the return concept.


Question no an issue - get media

How to get all media with out using this options .getMediaFeedByLocation({ locationId })
.getMediaFeedByHashtag({ hashtag })

if I use getActivity() I see the media is that the correct way to get all media?
Also how I get the image url from the code below using getActivity() results
https://instagram.flas1-1.fna.fbcdn.net/v/t51.2885-15/sh0.08/e35/c107.0.791.791a/s640x640/74674716_533191674201227_4281711618504011256_n.jpg?_nc_ht=instagram.flas1-1.fna.fbcdn.net&_nc_cat=111&_nc_ohc=zvnCpx5KJBIAX9nKvma&tp=1&oh=f9202043bb67f8274797f10d4a5e38ce&oe=6012C2FE

I figure out why the images where not displaying on Firefox it was due to a plugin was blocking facebook. And I guess getActivity() is how to get all media


NOISSUE - Use mainflux prefix for NginX certs

dhparam.pem should be prefixed with mainflux-,
as are other certs in prder to avoid collisions
when copying them to a local system.
Signed-off-by: drasko<EMAIL_ADDRESS>

Codecov Report

Merging #355 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #355   +/-   ##
=======================================
  Coverage   89.17%   89.17%
=======================================
  Files          43       43
  Lines        1469     1469
=======================================
  Hits         1310     1310
  Misses        110      110
  Partials       49       49

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 1683d17...a8d8a1e. Read the comment docs.

Indeed, this is touchy. I tried to setup NginX on my laptop and make it pick up local conf with -c, then started copying over files and wanted to facilitate this copying of certs by prefixing them with mainflux-.
I have corrected all occurrences of dhparam, but I would not like to break something :).

Dropping this one for now, due unnecessary potential danger (and extreme low priority).


[Props] Add concept of empty to property

[Props] Add concept of empty to property

This patch adds empty concept to property instead of having insensible
value inside a property as a default

before this patch,
```cpp
auto a = Property<int>();
EXPECT_EQ(a.get(), -1); // let's assume -1 is default value which might not be sensible.

after this patch
auto a = Property<int>();
EXPECT_THROW(a.get(), std::invalid_argument);
EXPECT_TRUE(a.empty());

so underlying value remains always null or valid.
Now, it became natural to distinguish mandatory props and non-mandatory
props
Self evaluation:

Build test: [X]Passed [ ]Failed [ ]Skipped
Run test: [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: Jihoon Lee<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #1206. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://nnstreamer.mooo.com/.

:octocat: cibot: @zhoonit, nntrainer/utils/base_properties.h does not include Doxygen tags such as @file @brief @author @bug. You must include the Doxygen tags in the source code. Please refer to a Doxygen manual at http://github.com/nnstreamer/TAOS-CI/blob/main/ci/doc/doxygen-documentation.md

:octocat: cibot: @zhoonit, A builder checker could not be completed because one of the checkers is not completed. In order to find out a reason, please go to http://nnstreamer.mooo.com/nntrainer/ci/repo-workers/pr-checker/1206-202106161905550.2618989944458-96c40730040cf66ee068c714910814898da2fda5/.


bower install not working

I'm running bower version 1.3.12 on Windows.
When I run bower install zeroclipboard I get an empty directory except for the bower.json and .bower.json files.

Never mind, just an issue on my end.


Is it possible to replace image preprocess(normalization) with a 1x1 conv layer?

Thanks for this wonderful  work~ @chuanqi305
Recently I was using this repo translating tensorflow mobilenetv2-ssd model into caffemodel, everything was ok. But i noticed that there was a preprocession before inference of caffe model in the demo which would cause some consume on cpu. I wonder if it's possible to replace it with a 1x1 conv layer.
Waiting for response, thanks!

Thanks for this wonderful work~ @chuanqi305
Recently I was using this repo translating tensorflow mobilenetv2-ssd model into caffemodel, everything was ok. But i noticed that there was a preprocession before inference of caffe model in the demo which would cause some consume on cpu. I wonder if it's possible to replace it with a 1x1 conv layer.
Waiting for response, thanks!

Have you implemented the replacement 1×1 conv layer,and what is the effect?


liquibase-db2i startup error by creating database-change-log-table

Environment
Liquibase Version:
4.4.3
Liquibase Integration & Version:
maven , quarkus
Liquibase Extension(s) & Version:
[liquibase-db2i](https://github.com/liquibase/liquibase-db2i 4.4.3
Database Vendor & Version:
db2 AS400
Description
At Startup we get an error
Diese Tabelle wird versucht anzulegen BOOLEAN der Art *SQLUDT in *LIBL nicht gefunden. [Failed SQL: (-204) CREATE TABLE "WUYEDT2DVL".T350_GAA_DATABASECHANGELOGLOCK (ID INTEGER NOT NULL, LOCKED BOOLEAN NOT NULL, LOCKGRANTED TIMESTAMP, LOCKEDBY VARCHAR(255), CONSTRAINT PK_DBCHGLOGLOCK PRIMARY KEY (ID))
in db2 As400 does not have the type boolean.
To fix it, the code "database.getClass().isAssignableFrom(DB2Database.class)" should be replaced with "database instanceof DB2Database"
the result of instance DB2iDatabase by"database.getClass().isAssignableFrom(DB2Database.class)" => false .it should be true.
maybe it shoould also override in the class DB2iDatabase the method supportsBooleanDataType and return false.

db2fori (db2 AS/400) supports BOOLEAN from 7.5 on (new release)
supportsBooleanDataType could check the build-in types catalog (present at least since 7.1)
select type_name
from sysibm.sqltypeinfo
where type_name = 'BOOLEAN';

empty -> false; 1 record -> true
@tiran1984: it may be an issue for liquibase/liquibase-db2? or does it belongs to the core liquibase?
I may try my first PR. an override supportsBooleanDataType did the job in the extension... but to bad the DB2 family do not have a standard build-in type catalog.

Hi @tiran1984 can you add your PR to the db2i extension?
https://github.com/liquibase/liquibase-db2i

okay, done. Review and feedback welcome.

This looks like it was resolved in https://github.com/liquibase/liquibase-db2i/pull/61
Closing


Use rustfmt-nightly 0.2.9

This fixes the Travis build. Was released a week ago, so slightly newer than the hash that was being used before.

I changed this to use rev 9754bcb535fa84c000fe78cb91b30c3f661fc849 instead, since that's what's being used in master now.


Saving note

I'm curious to find out how to properly save a note. I tried :wq, :x, :q! but each time I return back to Notes list, I only see the title and tag but not the notes.

@markphd Thats strange - it should be saved with :wq. I'll see if I can replicate it.

@autophagy It's been a while since I encountered the issue. I couldn't replicate it anymore. Everything is working fine! Thanks for checking.


[Advice] Targetting .NET 4.7

I was looking for out of the box ideas for using keycloak.
Since we will integrate keycloak v20+ for another project I am currently in the exploration phase for integrating it.
Ive found solutions targetting .net 4.7, but for lower versions of KC, and targetting higher versions of KC for .net 6.0
Assuming upgrading to 6.0 is not a viable option right now, I would be looking at making this repo compatible with 4.7.
I am asking the maintainer if this is a "no go" for syntastic reasons, dependencies. Or do you have pointers as to what and how.
Else I'll try to implement it file by file.
Kind regards,

Hi @Webrow
I don't really have any suggestions for targeting .NET 4.7 with this project, but you might have some luck with the (now abandoned) project that this project forked from https://github.com/silentpartnersoftware/Keycloak.Net/commit/65378cc8911b7f4c256eb6236db6ed599ef63d9b. It should run on .NET 4.7 the main issue is that the endpoint definitions in that project might be outdated, however depending on the features you need to use it might just work.
If it doesn't, I believe that the primary commit that was made to add support for Keycloak 17+ was this one https://github.com/silentpartnersoftware/Keycloak.Net/commit/65378cc8911b7f4c256eb6236db6ed599ef63d9b, so you might get away with adding that single change to that old project and it might be enough to get it working.
You can compare the changes that were made to this project, while there are a lot, they're not complicated, so if there is an endpoint that isn't working then you might be able to port the few changes you need for your use case.
I've never worked with the original repo, but if there is anything that I can do to help please let me know.
Campbell

Thanks Campbell,
Ill try and pick it up this way. We can close this ticket, or keep it open for correspondation, but I can imagine you want your  tracker to be empty. I see you added Flurl in there at some point, was this necessary, or does it just make things easier?
Web

@Webrow
I don't recall whether it is possible to reply to closed tickets, but if not then feel free to open another one, or start a discussion in the Discussions tab.
As for Flurl, I believe it was always in the project, and the change you are seeing is possibly just when it was upgraded to the latest version. I think you'll be fine with whatever version is present in that project.
Campbell


Compression of NetCDFs

We should have a basic standard for the compression we want to use for netcdf files stored in the object store.

Done with #755


Cannot View Failed Response Errors

Sometimes UAS sends a failed response, and when it does so it includes an error message in the body of the response. The way Zeppelin is written right now we don't have access to this message. I have two ideas concerning how to overcome this problem.
Return the Response Object Directly
Instead of simply returning true/nil/parsed response body, we return the response object itself and force the user to deal with it. This is my preference, but would be a breaking API change.
Save the Response in an Attribute
When we receive a response, we save it in an attribute called #last_response. This would not break the existing API, and would allow the user to inspect the response if need be. This is also a fairly small change compared to the first option.
i'm more than willing to do the work to achieve either, but I thought there should probably be some discussion on the matter.

Another idea: raise exceptions when errors happen. I think I like this idea the most.

I've built a proof of concept for error raising based on an experimental branch I have on my fork.


[bug] Partial HTML Drag is not work

Describe the bug
I'm writing a vue3 tauri project with typescript. The behavior of the executable packaged with tauri is not consistent with the browser preview. In the API for HTML drag, only the dragstart and dragend work for me. The other don't trigger at all.
Work:

ondragstart
ondragend

Not Work:

ondragenter
ondragleave
ondragover
ondrop

Not tested:

ondragexit

I have set "fileDropEnabled":false.
Reproduction
run:
vue create test
cd test
vue add tauri
yarn tauri:serve

HTML Example:
<ul>
        <li
            draggable="true"
            ondragstart="console.log('start')"
            ondragenter="console.log('enter')"
            ondragend="console.log('end')"
            ondragover="console.log('over')"
            ondragleave="console.log('leave')"
            ondrop="console.log('drop')"
        >
            item1
        </li>
        <li
            draggable="true"
            ondragstart="console.log('start')"
            ondragenter="console.log('enter')"
            ondragend="console.log('end')"
            ondragover="console.log('over')"
            ondragleave="console.log('leave')"
            ondrop="console.log('drop')"
        >
            item2
        </li>
</ul>

Drag item1 onto item2.
firefox output:
start
enter
over
enter
leave
over
leave
end

tauri output:
start
end

There is no Drop in this example.

Expected behavior
No response
Platform and versions
Operating System - Arch Linux, version Rolling Release X64

Node.js environment
  Node.js - 17.3.0
  @tauri-apps/cli - 1.0.0-beta.10
  @tauri-apps/api - 1.0.0-beta.8

Global packages
  npm - 8.3.2
  yarn - 1.22.17

Rust environment
  rustc - 1.56.1
  cargo - 1.56.0

App directory structure
/src
/public
/.git
/node_modules
/src-tauri

App
  tauri.rs - 1.0.0-beta.8
  build-type - bundle
  CSP - default-src blob: data: filesystem: ws: wss: http: https: tauri: 'unsafe-eval' 'unsafe-inline' 'self' img-src: 'self'
  distDir - Set automatically by Vue CLI plugin
  devPath - Set automatically by Vue CLI plugin
  framework - Vue.js (Vue CLI)
  bundler - Webpack

Stack trace
No response
Additional context
My English isn't very good, please forgive me.

Huh. That's really interesting. The app that I'm working on uses react and react-beautiful-dnd as a drag-and-drop framework. react-beautiful-dnd uses the html drag api under the hood, and I haven't noticed any bugs when dragging. Even the ondragover event fires correctly (I have a border on my drop component when a drag item is dragged over it).
Maybe try compiling my app locally to see if it's something to do with your webview provider? Go into the /src-tauri folder and run cargo tauri dev (the vite dev server takes about 10 seconds once the tauri window appears before it emits the html).
If you drag any of the list items, you should see a green outline around the list itself, and if you drag the item off of the list, the outline should go and the list should collapse to fill the space that the item took. If that all works fine for you, then either react-beautiful-dnd lied to me about using the html drag-and-drop api under the hood, or something more weird is going on in configuration somewhere for you.
Either way, please update us when you have some answers

@JamesYeoman
I have run your project, but something strange is happening. The program reloads repeatedly and very fast. i can't even distinguish the content. But you have suggested a good idea. I tried using vuedraggable. it worked. I'm guessing that the libraries modify some property, but I don't know much about that. I spent a few hours working on it, but didn't make much progress.
This is a example.
// Here is the code that does not work.

<draggable> //  This is the component of vuedraggable.
    // Here is the same code working.
</draggable>

Also I tried to open the previous code using epiphany and found it had the exact same problem. This may be a problem with webkit. It has a different implementation of dragging than the others.

@LuXts repeatedly loading? Really odd... maybe it's your arch installation that's the cause here. Maybe try running an ubuntu VM and running both the projects in that VM?

This because of a conflict with fileDropEnabled.
you have two options:

disable fileDropEnabled on your window but you won't get native file drop events.
keep fileDropEnabled and use a dragging component that has a fallback js implementation like react-beautiful-dnd.

Currently we are not aware of a fix to this conflict, so I am gonna close this issue.

@amrbashir quote from the initial issue:

I have set "fileDropEnabled":false.

The weird/bad thing is that some drag events work but not all.

sorry, didn't see they tried "fileDropEnabled":false but anyhow, I doubt we can do anything here so I will keep the issue closed but please try running your example in epiphany browser and see if the events work correctly; if it does, let me know and I will reopen the issue.

I have this problem as well, using react-dnd. I also fixed it by setting "fileDropEnabled": false. When this option is left default, the drop callback is not called, all the other events are called like the should. When I use Safari, Chrome or Firefox the drop callback is called correctly.
It says in the documentation that "fileDropEnabled": false is required on Windows only, but it seems to be required on macOS too...

I had this problem when using react-dnd on my Mac, so I looked it up and arrived at this page and fixed the problem by setting fileDropEnabled to false.
I think it's okay to add notes to the document until you have a drastic solution.

I ran into the same issue when I used react-dnd on my Mac
I didn't have to drop the file, so I was able to fix the problem by setting fileDropEnabled to false. thank you very much

Same here, onDrop events weren't firing.  Seems like a real bug to me?  Maybe this issue should be re-opened.
Environment
› OS: Mac OS 12.6.0 X64
› Node.js: 18.10.0
› npm: 8.19.2
› pnpm: Not installed!
› yarn: Not installed!
› rustup: 1.25.1
› rustc: 1.64.0
› cargo: 1.64.0
› Rust toolchain: stable-aarch64-apple-darwin
Packages
› @tauri-apps/cli [NPM]: 1.1.1
› @tauri-apps/api [NPM]: 1.1.0
› tauri [RUST]: 1.1.1,
› tauri-build [RUST]: 1.1.1,
› tao [RUST]: 0.14.0,
› wry [RUST]: 0.21.1,
App
› build-type: bundle
› CSP: unset
› distDir: ../dist
› devPath: http://localhost:1420/
› framework: React
App directory structure
├─ dist
├─ node_modules
├─ public
├─ src-tauri
├─ .vscode
├─ assets
└─ src

Docs for fileDropEnabled says:

Disabling it is required to use drag and drop on the frontend on Windows.

But this is definitely required on macOS too. I'm on macOS Sonoma 14.7 and was wondering why drag & drop does not work properly, but glad that I found this issue. After I set fileDropEnabled: false for my window it started working.
I'm using react-mosaic for layout which internally uses react-dnd and the drag & drop for that did not work on macOS until I set fileDropEnabled: false.

Resolution：
https://v1.tauri.app/v1/api/config/#windowconfig.filedropenabled
https://v2.tauri.app/zh-cn/start/migrate/from-tauri-1/#tauri-配置
v1.0：
"app": {
    "windows": [
      {
         ...
        "fileDropEnabled": false
      }
    ],

v2.0：
"app": {
    "windows": [
      {
         ...
        "dragDropEnabled": false
      }
    ],

I have discovered this issue preventing my app functioning at all on Windows systems. While the solutions above do work I would like to point out that functionality was never impaired on Linux or macOS leading this problem to be unnoticed. If it is unfixable, the property should be disabled by default and some form of notice should be shown in the documentation of the property.


New entry for tidy_tweet

I've created a new entry on the ADO website for tidy_tweet and appended the tag 'tidy'. Please feel free to add your own edits/comments 😸

Addresses this issue: https://github.com/QUT-Digital-Observatory/australian_digital_observatory_site/issues/75


Consider a less rigid version checking policy

Is your feature request related to a problem? Please describe.
Shortly after I found openHasp, I ran into a problem with the firmware: my mqtt hostname didn't fit in the allocated memory and the plates could not connect.
See:  https://github.com/HASwitchPlate/openHASP/issues/265
The fix was quickly rolled out and I was able to test a revised build soon after opening the issue.
However, I was quickly hit with another issue: the test firmware was running version 0.7 and I was unable to discover the device and integrate it with Home Assistant.
This is because the device config/registration logic requires an exact match:
https://github.com/HASwitchPlate/openHASP-custom-component/blob/762e55fbe1cf8815a1d56ed2a5f55e94d40b79be/custom_components/openhasp/config_flow.py#L97
I installed the custom component via HACS and chose the main release as the most recent release had a 0.6 in the tag.
https://hacs.xyz/docs/publish/integration#github-releases-optional
I was hoping that the main branch would work with 0.7 devices since it appeared that there were releases meant specifically for 0.6 devices.
Nope.  Even the main code wants 0.6 devices:
https://github.com/HASwitchPlate/openHASP-custom-component/blob/762e55fbe1cf8815a1d56ed2a5f55e94d40b79be/custom_components/openhasp/const.py#L5
It was an easy fix: I just modified the custom component install:
root@ha-container [/custom_components/openhasp]# diff const.py const.py.orig
5,8c5
< # 2022-01-09: trying to get things working with custom FW that I have on the test plate
< #MINOR = "6"
< MINOR = "7"
---
> MINOR = "6"

I was then able to add the latest 0.7 device and have been developing various UI and HA automations against a few different openHasp devices all running some 0.7 build.  SO far, no issues with the custom component and the devices.
That got me thinking... how strict does the version check really need to be?
Describe the solution you'd like
This has been discussed on and off on discord over the past few days but I thought I'd create a dedicated thread / issue to track all discussion in a place where more people can see it / comment.  2 weeks from now, nobody is going to be searching through discord for the conversation(s)!
I was initially planning on a simple pull request that would change the version comparison to checking if the openHasp device that was just discovered had a firmware in a list of supported versions. This approach is simple / has the least invasive code changes but is far from ideal. Who is going to maintain the list? What level of "works" will be needed to consider a firmware 'supported'?
Describe alternatives you've considered
Other suggestions:

Only check the major version, all versions within the same major version should be accepted, it's up to the users to check logs to see if anything did go wrong
If the reported firmware is more than 1 minor version, don't accept. E.G.: CC wants .6, device has .7 and since math.abs(.6-.7) <= .1, the device is accepted. If the CC wants .6 but the device has .4, that's a delta of 2 and 2 > 1 so device is rejected.
Semantic versioning in the yyyy-mm format to track the same version naming scheme that home assistant uses, use similar logic as above and only accept devices that have firmware +/- a few months from the desired...

Additional context

I found that commenting out line #102 will let you discover the 0.7 devices.
It will still generate the error in the log and warning pop-up, but at least you can discover the device as intended.
I think it can be a good start to comment that line in main so we can have users more easily test 0.7.
We can still discuss the best approach here.

I think the warning should be "one shot" after HA restart. Once dismissed, shouldn't re-appear again and again.

I think the warning should be "one shot" after HA restart. Once dismissed, shouldn't re-appear again and again.

If you assume that old / past versions won't get any cummunity support then you basically have to force people to keep relatively current. Nagging with a simple persistent notification is - i think - the right balance between a nudge to take an action and being supremely disruptive like windows or firefox; windows will just wait until you're not present to do the update and firefox will flat out refuse to open new tabs until you've restarted it.

It's enough if it appears only at each HA restart. Keep in mind that this software is not comparable to single-user scenarios, in best case only one family member handles HA truly at admin level, other users from the household find this very annoying as it appears again and again and they can't do anything about it.
One may have a good reason to update firmware to the latest by buiding own binary, while CC is not yet released.

I think adding a flag (e.g. _firmware_notice) to the device could resolve this issue.
The notification is triggered on discovery and the flag is set in the device object.
Subsequent notices can then be suppressed if the flag is set and the notice was already sent.

_firmware_notice

Does this mean that the plate phones home to check $self.current_version() relative to some public endpoint and then sets some flag for the integration to pick up / display to the user?  (this is how Shelly devices work now)
I know that HA did get some internal APIs for alerting to FW updates in preparation for HA being able to check for / push updates to various 802.15 devices so it could be that the integration does the check to figure out what latest/stable is and then compares that to the version of each discovered device?

Nope it is still checking what the plate reports versus what the CC version is...
_firmware_notice would just prevent the popup message in HA at each discovery message received.
Alternatively, we could just do away with the popup and only add a warning in the LOGs...

This has now been made into a WARNING in the logs.


Higher resolution seagrass fields

There is a need to create higher (~0.1deg) resolution data for the seagrass, near-coastal locations. These will need to be defined, so if they can be included below, ideal:
See https://github.com/durack1/Roethigetal21NatClimChg/blob/main/readNcWriteAsc.py#L200-L212
ping @lauradomar

@lauradomar, I'll await these new location deets before prepping the next round of data

@durack1 The maximum extent limits for the seagrass groups are (format: max lat, max lon, min lat, min lon):
-9, 160, -46, 113
We could just add a boundary around that to add a few degrees either side as previously I think?
Let me know of any questions and thanks! Laura

@lauradomar here is a first attempt at infilling
Native output

Zonally infilled output

I am unfamiliar with the subregions that are the focus, so it would be great to know where these seagrass beds lie, so we can ascertain that the infilling is providing a useable and representative field (e.g. the top of Australia and Gulf of Carpentaria is not usable for this infill method)

@lauradomar just pinging you on this, so we can get these fields finalized and prepped for model runs

@lauradomar just pinging you here, I am yet to provide you data, so we better get on with this!

Thanks! Sorry, had deadlines and long holiday weekend. Here the info:
The maximum extent limits for the seagrass groups are (format: max lat, max lon, min lat, min lon):
-9, 160, -46, 113
The different individual extents for the genera are:
-9, 160, -44, 113 (Halophila)
-9, 160, -46, 114 (Zostera)
-25, 153, -44, 113 (Posidonia)
-9, 149, -22, 114 (Thalassia)
-9, 147, -20, 130 (Enhalus)
We could just drop the ones that are in the North if the data would not be usable? The output otherwise looks good, I would just need to have the land based on your map removed like before so only cells in the ocean would have values that are put into the model.

@lauradomar wow, these regions are far more expansive than I would have assumed, I thought we'd be constraining to tight coastal boxes in representative zones, rather than a box that includes the whole of Australia for e.g. - red box.

red - full extent
blue - Halophila
black - Zostera
white - Posidonia
magenta - Thalassia
yellow - Enhalus


Can not upload image in ap-south-1 - Asia Pacific (Mumbai) Region using ZF 1

Hello,
I have used "Asia Pacific (Mumbai)" region for uploading images but there are error is coming:

InvalidRequestThe authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
0
Can anyone help me?
File Path: https://github.com/Shardj/zf1-future/blob/master/library/Zend/Service/Amazon/S3.php
Approx line: 784

@Shardj  Can you check this issue ?
Can any one help for this issue ?

Hi,
can you post full code which you using there? Also the whole stack trace would help.

As I always say with these kinds of things, you really need to push through and convert to using AWS's SDK https://aws.amazon.com/sdk-for-php/ . From the sounds of it you're only just starting to implement this. If you really don't want to then I'd recommend you have a look at the authentication method AWS mentioned in your error message and compare it to the one Zend is using and see what's different. If you want to try and implement a new authentication method feel free as long as it doesn't cause any backwards compatibility breaks for anyone else.

We came across this long before moving to this fork when moving our production environment over from eu-west-1 to eu-west-2.
As Shardj has mentioned, you'd be better off replacing your usage of Zend_Service_Amazon_S3 with the AWS provided SDK. For us, that was as simple as pulling in that library with composer and replacing our bootstrapping of the stream wrapper e.g.
Replacing:
$s3 = new Zend_Service_Amazon_S3($key, $secret);
$s3->registerStreamWrapper("s3");

With:
$s3Client = new Aws\S3\S3Client([
    'region' => 'eu-west-2',
    'version' => 'latest',
    'credentials' => [
        'key' => $key,
        'secret' => $secret
    ]
]);
$s3Client->registerStreamWrapper();

Thanks for the advice Dave, I hope that this helps you @vijaygarg-ahead. I'll close this as I won't be taking any action here

Thanks for the advice Dave, I hope that this helps you @vijaygarg-ahead. I'll close this as I won't be taking any action here

I will check the above solutions and update here.

We came across this long before moving to this fork when moving our production environment over from eu-west-1 to eu-west-2.
As Shardj has mentioned, you'd be better off replacing your usage of Zend_Service_Amazon_S3 with the AWS provided SDK. For us, that was as simple as pulling in that library with composer and replacing our bootstrapping of the stream wrapper e.g.
Replacing:
$s3 = new Zend_Service_Amazon_S3($key, $secret);
$s3->registerStreamWrapper("s3");

With:
$s3Client = new Aws\S3\S3Client([
    'region' => 'eu-west-2',
    'version' => 'latest',
    'credentials' => [
        'key' => $key,
        'secret' => $secret
    ]
]);
$s3Client->registerStreamWrapper();

This solution is not working for me.
@Shardj  Please can you check the above file I have mentioned and let me know the solution.

Hey @vijaygarg-ahead if you're having issues using the AWS SDK you should be able to find advice pretty much everywhere on the web since it's a very popular library. It's hard to provide a solution when I know nothing about the issue you're facing though.