Introduce interface changes to support read/write blob with object metadata

Description
This PR is a sub task of feature request https://github.com/opensearch-project/OpenSearch/issues/13022. And is being tracked here https://github.com/opensearch-project/OpenSearch/issues/13091.
This PR consists related changes for blob container interface to read/write blob object with object metadata. This will allow us to upload/download translog files to remote store with it's object metadata.
Related Issues
Resolves https://github.com/opensearch-project/OpenSearch/issues/13092

Check List

[ ] ~New functionality includes testing.~

[ ] ~All tests pass~

[x] New functionality has been documented.

[x] New functionality has javadoc added

[x] Failing checks are inspected and point to the corresponding known issue(s) (See: Troubleshooting Failing Builds)
[x] Commits are signed per the DCO using --signoff
[ ] ~Commit changes are listed out in CHANGELOG.md file (See: Changelog)~
[ ] ~Public documentation issue/PR created~

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

❌ Gradle check result for 950e55b: FAILURE
Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

Failing Tests-
org.opensearch.backwards.IndexingIT.testIndexingWithReplicaOnBwcNodes
org.opensearch.backwards.IndexingIT.testIndexingWithPrimaryOnBwcNodes
org.opensearch.backwards.IndexingIT.testIndexVersionPropagation
org.opensearch.backwards.IndexingIT.testSeqNoCheckpoints
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.indices/20_hidden/Test cat indices output for hidden index}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fielddata fields - pattern}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fields - multi metric}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=nodes.stats/20_response_filtering/Nodes Stats filtered using both includes and excludes filters}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/14_groups/Groups - one}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fields - star}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Completion fields - star}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Completion - pattern}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=nodes.stats/11_indices_metrics/Metric - _all include_segment_file_sizes}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fielddata fields - star}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fields - blank}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.indices/20_hidden/Test cat indices output for dot-hidden index and dot-prefixed pattern}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=nodes.stats/20_response_filtering/Nodes Stats with response filtering}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.indices/20_hidden/Test cat indices output with a hidden index with a hidden alias}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.indices/20_hidden/Test cat indices output with a hidden index with a visible alias}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.shards/10_basic/Test cat shards sort}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fields - pattern}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.nodes/10_basic/Test cat nodes output}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Completion fields - one}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/40_updates_on_refresh/Completion stats}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Completion - all metric}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.nodes/10_basic/Additional disk information}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fielddata fields - all metric}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=nodes.stats/30_discovery/Discovery stats}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fields - _all metric}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fields - multi}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.fielddata/10_basic/Test cat fielddata output}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/14_groups/Groups - blank}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/14_groups/Groups - pattern}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Completion - multi metric}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.indices/20_hidden/Test cat indices output with a hidden index, dot-hidden alias and dot pattern}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fielddata fields - multi metric}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fielddata fields - multi}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Completion fields - multi}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/12_level/Level - indices}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fielddata fields - one}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.indices/10_basic/Test cat indices output}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=cat.shards/10_basic/Help from 2.12.0 to 2.99.99}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=nodes.stats/11_indices_metrics/Metric - indices _all}
org.opensearch.backwards.MixedClusterClientYamlTestSuiteIT.test {p0=indices.stats/13_fields/Fields - one}

org.opensearch.backwards.IndexingIT is flaky. See https://github.com/opensearch-project/OpenSearch/issues/9407
qa:mixed-cluster:v2.14.0#mixedClusterTest is flaky. See https://github.com/opensearch-project/OpenSearch/issues/12980

❌ Gradle check result for 1f1e196: FAILURE
Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change?

flaky tests: https://github.com/opensearch-project/OpenSearch/issues/13045, https://github.com/opensearch-project/OpenSearch/issues/2348

Overall looks good, what do you think about trying to add a couple new tests specific to the interface you added and the implementation?

Yes, there will be follow up PR for the introduced interface changes implementation.

Manual Backport PR: https://github.com/opensearch-project/OpenSearch/pull/13757

The backport to 2.x failed:
The process '/usr/bin/git' failed with exit code 128

To backport manually, run these commands in your terminal:
# Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/OpenSearch/backport-2.x 2.x
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-2.x
# Create a new branch
git switch --create backport/backport-13023-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 9b0f578903f2cd56878b1c69ab6f4f05167238f8
# Push it to GitHub
git push --set-upstream origin backport/backport-13023-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-2.x

Then, create a pull request where the base branch is 2.x and the compare/head branch is backport/backport-13023-to-2.x.

Manual Backport PR: https://github.com/opensearch-project/OpenSearch/pull/13757


[Draft] Test Docker Images

Proactive tests to address #985
It might take me a few tried to get this right 😓

Going to start over again.  I messed up this PR way too much


Is there a plan to add the ability to manually adjust the number of replicas on nginx controllers in app-routing-system?

I modified the "aks-app-routing-operator" deployment to adjust the number of replica, but it was impossible.
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  creationTimestamp: "2024-03-12T08:23:16Z"
  generation: 15
  labels:
    app.kubernetes.io/component: ingress-controller
    app.kubernetes.io/managed-by: aks-app-routing-operator
    app.kubernetes.io/name: nginx
  name: nginx
  namespace: app-routing-system
  ownerReferences:
  - apiVersion: approuting.kubernetes.azure.com/v1alpha1
    controller: true
    kind: NginxIngressController
    name: default
    uid: 6ea3e476-059e-44b3-9f8d-86655ee2a5dc
  resourceVersion: "113876214"
  uid: 37ea9332-baaf-47cf-aef4-f69d0ff2abef
spec:
  progressDeadlineSeconds: 600
  replicas: 2     <=============== I want to revise this

Currently, two nging controllers seem to be the default values.
kubectl get po -n app-routing-system
NAME                     READY   STATUS    RESTARTS   AGE
nginx-5d4cbcf56b-nrt46   1/1     Running   0          40h
nginx-5d4cbcf56b-swq58   1/1     Running   0          40h

Is there a plan to add the ability to manually adjust the number of replica on the nginx controller?

I have the seem need for a current project. In addition to being able to specify the resource requests  on the pods (esp. CPU, which has a rather high default).

Yes, you will be able to adjust the min/max replicas. You will also have a mechanism to adjust how aggressively the HPA. Expect this very soon.

I have the seem need for a current project. In addition to being able to specify the resource requests on the pods (esp. CPU, which has a rather high default).

Could you help us understand why you want to tweak the resource requests?

Yes, you will be able to adjust the min/max replicas. You will also have a mechanism to adjust how aggressively the HPA. Expect this very soon.

This is great!

Could you help us understand why you want to tweak the resource requests?

We are building an app platform on top of an autoscaling AKS cluster. In it's smallest -most cost-effective- incarnation we like to offer our customers the ability to run an app on a single-node 2-core cluster.  Because the hardcoded nginx CPU request is 0.5 core, it is difficult to make our runtime fit in combination with 2 nginx replicas and the standard AKS containers. However on second thought, having the possibility of 1 nginx replica will likely suffice already. I can try that first when it is released.

Hey @OliverMKing, is there a roadmap when this feature will be rolled out?
We're currently want to set up a minimal environment for testing various pull requests, but when you choose a small VM with 2 vCPUs those 2 fixed replicas of the controller will claim 2 x 500m CPU for scheduling leaving only 1000m for all the other remaining pods. I didn't manage to override this setting, the operator always changes it back ♻

Nevermind, just found out:

It's released you just need to upgrade to Kubernetes version 1.30 (or higher) to use it. Addon release policies mean we release new features behind new preview K8s versions first.

https://github.com/Azure/aks-app-routing-operator/issues/244#issuecomment-2220937536

@Duske was the solution to just update the NginxIngressController CR? Or is it possible to provision this using the UI / az / terraform?

Hello there,
I understand that this is now possible to manually setup the number of replicas of app routing controllers.
However I agree with @MXClyde : 500m for each controller is huge, for example for a little development cluster. We would like to stay on app routing to keep the same environment as the production, and simply tweak the resources used by the controller.
@OliverMKing Is there anything in preview or in development to tweak the CPU and memory requests ?
An example in our dev cluster :
  Namespace                   Name                                                    CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------                   ----                                                    ------------  ----------  ---------------  -------------  ---
  app-routing-system          external-dns-787d4788dd-7dlqf                           100m (5%)     100m (5%)   250Mi (4%)       250Mi (4%)     2d10h
  app-routing-system          nginx-85497484cc-8fnvl                                  500m (26%)    100m (5%)   127Mi (2%)       60Mi (1%)      2d10h

@Duske Thanks, this works for replica count and is also documented at: https://learn.microsoft.com/en-us/azure/aks/app-routing-nginx-configuration?tabs=azurecli#configuration-of-the-nginx-ingress-controller
@OliverMKing We also still have a desire to lower CPU requests to 100m, is it an idea to close this issue and open a new one to track that feature request?


host_recv_pkt_cb is called from interrupt context causing a crash. (IDFGH-5265)

Environment

Development Kit:      ESP32-DevKit
Kit version (for WroverKit/PicoKit/DevKitC): [v1|v2|v3|v4]
Module or chip used:  ESP32-WROOM-32
IDF version (run git describe --tags to find it): v4.2 (PlatformIO<EMAIL_ADDRESS>Build System: PlatformIO<EMAIL_ADDRESS>Compiler version (run xtensa-esp32-elf-gcc --version to find it):
// 1.22.0-80-g6c4433a
Operating System:     Windows
Using an IDE?: PlatformIO<EMAIL_ADDRESS>Power Supply:         USB

Problem Description
https://github.com/bluekitchen/btstack/issues/357
When using the Bluekitchen BTStack as the Bluetooth stack host_recv_pkt_cb is called from interrupt context causing a crash. According to the author of BTStack this is an issue with ESP IDF and they suggested raising an issue here.
Expected Behavior
No crash.
Actual Behavior
abort() was called at PC 0x40082a4a on core 0
Steps to reproduce
Install BTStack and run the example code below. Open Bluetooth settings on iPhone and wait for ESP32 to request bonding, once accepted the ESP32 crashes.
Code to reproduce this issue
#include <stdio.h>
#include <stdlib.h>

#include "btstack_port_esp32.h"
#include "btstack_run_loop.h"
#include "btstack_run_loop_freertos.h"

#include "btstack_config.h"
#include "btstack.h"

static btstack_packet_callback_registration_t hci_event_reg_;
// Change address below to remote device (iPhone in my case)
static uint8_t remote_device_[] = {0x64, 0x70, 0x33, 0x1C, 0xAD, 0x2D};

static void handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size)
{
    // Empty, not needed for example.
}

void hci_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size)
{
    switch (hci_event_packet_get_type(packet)) {
    case BTSTACK_EVENT_STATE:
        if (btstack_event_state_get_state(packet) == HCI_STATE_WORKING) {
            printf("Starting dedicated bonding...\r\n");
            gap_dedicated_bonding(remote_device_, 1);
        }
        break;
    case GAP_EVENT_DEDICATED_BONDING_COMPLETED:
        if (gap_event_dedicated_bonding_completed_get_status(packet) == 0) {
            printf("Bonding completed, querying device.\r\n");
            sdp_client_query_uuid16(&handle_sdp_client_query_result, remote_device_, BLUETOOTH_SERVICE_CLASS_NAP);
        }
        break;
    default:
        break;
    }
}

static void task_btstack(void *param)
{
    btstack_init();
    l2cap_init();
    sdp_init();

    hci_event_reg_.callback = &hci_packet_handler;
    hci_add_event_handler(&hci_event_reg_);

    gap_ssp_set_io_capability(SSP_IO_CAPABILITY_NO_INPUT_NO_OUTPUT);
    gap_set_local_name("testdev");
    gap_set_class_of_device(0x200418); // Headphones CoD (Class of Device)

    hci_power_control(HCI_POWER_ON);
    btstack_run_loop_execute();
}

void app_main(void)
{
    task_btstack(NULL);
}

Debug Logs
Serial output only shows:
abort() was called at PC 0x40082a4a on core 0

Backtrace:0x4008e6df:0x3ffbdfd0 0x4008ed7d:0x3ffbdff0 0x400927fe:0x3ffbe010 0x40082a4a:0x3ffbe080 0x40082b6d:0x3ffbe0b0 0x400ee012:0x3ffbe0d0 0x400ee075:0x3ffbe110 0x400d958e:0x3ffbe130 0x400d959f:0x3ffbe150 0x4010c25a:0x3ffbe180 0x400fddce:0x3ffbe1a0 0x4001791d:0x3ffbe1c0 0x400fe535:0x3ffbe1e0 0x400fe612:0x3ffbe220 0x400188f5:0x3ffbe250
0x400fdfc7:0x3ffbe290 0x400175ee:0x3ffbe2b0 0x40017688:0x3ffbe2d0 0x4008dc1a:0x3ffbe300 0x4008ddf9:0x3ffbe320 0x400fdd7b:0x3ffbe340 0x4008de10:0x3ffbe360 0x400824b1:0x3ffbe380 0x40086e0e:0x3ffbc210 0x4008dbc1:0x3ffbc230 0x4010c3f9:0x3ffbc250 0x400fb30c:0x3ffbc270 0x400d9419:0x3ffbc290 0x400d3b05:0x3ffbc2b0 0x400d3c27:0x3ffbc2d0 0x400d77fb:0x3ffbc2f0 0x400d7938:0x3ffbc350 0x400d840f:0x3ffbc390 0x400d90e9:0x3ffbc3d0 0x400d1af5:0x3ffbc400 0x400d1b21:0x3ffbc420 0x400d1423:0x3ffbc440 0x400d2fb5:0x3ffbc460 0x400d327f:0x3ffbc490 0x400d62f3:0x3ffbc4c0 0x400d6842:0x3ffbc510 0x400d9524:0x3ffbc530 0x400d9575:0x3ffbc560 0x400d9c91:0x3ffbc580 0x400d28d2:0x3ffbc5b0 0x400d1455:0x3ffbc5d0 0x400d1461:0x3ffbc5f0 0x400dc9c6:0x3ffbc610 0x4008ed85:0x3ffbc640

Using EspStackTraceDecoder.jar I was able to recover the following trace:
0x4008e6df: panic_abort at C:\Users\Gino\.platformio\packages\framework-espidf\components\esp_system/panic.c:330
0x4008ed7d: esp_system_abort at C:\Users\Gino\.platformio\packages\framework-espidf\components\esp_system/system_api.c:106
0x400927fe: abort at C:\Users\Gino\.platformio\packages\framework-espidf\components\newlib/abort.c:46
0x40082a4a: lock_acquire_generic at C:\Users\Gino\.platformio\packages\framework-espidf\components\newlib/locks.c:142
0x40082b6d: _lock_acquire_recursive at C:\Users\Gino\.platformio\packages\framework-espidf\components\newlib/locks.c:170
0x400ee012: _puts_r at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/puts.c:89 (discriminator 2)
0x400ee075: puts at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/puts.c:129
0x400d958e: report_recv_called_from_isr at C:\Users\Gino\Desktop\bt/components\btstack/btstack_port_esp32.c:104
0x400d959f: host_recv_pkt_cb at C:\Users\Gino\Desktop\bt/components\btstack/btstack_port_esp32.c:128
0x4010c25a: vhci_send at ??:?
0x400fddce: r_eif_send at ??:?
0x4001791d: ?? ??:0
0x400fe535: hci_tx_start at hci_tl.c:?
0x400fe612: r_hci_tl_send at ??:?
0x400188f5: ?? ??:0
0x400fdfc7: r_hci_send_2_host_hack at ??:?
0x400175ee: ?? ??:0
0x40017688: ?? ??:0
0x4008dc1a: vhci_recv_end at vhci.c:?
0x4008ddf9: r_vhci_isr at ??:?
0x400fdd7b: r_eif_isr at ??:?
0x4008de10: r_eif_isr_wrapper at intc.c:?
0x400824b1: _xt_lowint1 at C:\Users\Gino\.platformio\packages\framework-espidf\components\freertos\xtensa/xtensa_vectors.S:1105
0x40086e0e: cause_sw_intr_to_core_wrapper at C:/Users/Gino/.platformio/packages/framework-espidf/components/bt/controller/bt.c:769
0x4008dbc1: vhci_set_interrupt at vhci.c:?
0x4010c3f9: API_vhci_host_send_packet at ??:?
0x400fb30c: esp_vhci_host_send_packet at C:/Users/Gino/.platformio/packages/framework-espidf/components/bt/controller/bt.c:1008
0x400d9419: transport_send_packet at C:\Users\Gino\Desktop\bt/components\btstack/btstack_port_esp32.c:287
0x400d3b05: hci_send_acl_packet_fragments at C:\Users\Gino\Desktop\bt/components\btstack\src/hci.c:723
0x400d3c27: hci_send_acl_packet_buffer at C:\Users\Gino\Desktop\bt/components\btstack\src/hci.c:785
0x400d77fb: l2cap_send_signaling_packet at C:\Users\Gino\Desktop\bt/components\btstack\src/l2cap.c:1287
0x400d7938: l2cap_run_for_classic_channel at C:\Users\Gino\Desktop\bt/components\btstack\src/l2cap.c:1517
0x400d840f: l2cap_run at C:\Users\Gino\Desktop\bt/components\btstack\src/l2cap.c:1874
0x400d90e9: l2cap_create_channel at C:\Users\Gino\Desktop\bt/components\btstack\src/l2cap.c:2060
0x400d1af5: sdp_client_query at C:\Users\Gino\Desktop\bt/components\btstack\src\classic/sdp_client.c:756
0x400d1b21: sdp_client_query_uuid16 at C:\Users\Gino\Desktop\bt/components\btstack\src\classic/sdp_client.c:761
0x400d1423: hci_packet_handler at C:\Users\Gino\Desktop\bt/src/main.c:31
0x400d2fb5: hci_emit_event at C:\Users\Gino\Desktop\bt/components\btstack\src/hci.c:4832
0x400d327f: hci_emit_dedicated_bonding_result at C:\Users\Gino\Desktop\bt/components\btstack\src/hci.c:5042
0x400d62f3: event_handler at C:\Users\Gino\Desktop\bt/components\btstack\src/hci.c:2720
0x400d6842: packet_handler at C:\Users\Gino\Desktop\bt/components\btstack\src/hci.c:2985
0x400d9524: transport_deliver_packets at C:\Users\Gino\Desktop\bt/components\btstack/btstack_port_esp32.c:180
0x400d9575: transport_process at C:\Users\Gino\Desktop\bt/components\btstack/btstack_port_esp32.c:196
0x400d9c91: btstack_run_loop_freertos_execute at C:\Users\Gino\Desktop\bt/components\btstack\platform\freertos/btstack_run_loop_freertos.c:231
0x400d28d2: btstack_run_loop_execute at C:\Users\Gino\Desktop\bt/components\btstack\src/btstack_run_loop.c:166
0x400d1455: task_btstack at C:\Users\Gino\Desktop\bt/src/main.c:54
0x400d1461: app_main at C:\Users\Gino\Desktop\bt/src/main.c:60
0x400dc9c6: main_task at C:\Users\Gino\.platformio\packages\framework-espidf\components\esp32/cpu_start.c:600 (discriminator 2)
0x4008ed85: vPortTaskWrapper at C:\Users\Gino\.platformio\packages\framework-espidf\components\freertos\xtensa/port.c:143

Hi, @dr-gino
Crash occurs when printf is called in an interrupt. You can replace  printf with ets_printf in report_recv_called_from_isr .
Thanks.

Hi, @dr-gino
Crash occurs when printf is called in an interrupt. You can replace printf with ets_printf in report_recv_called_from_isr .
Thanks.

Hi @xiongweichao,
You were right, there was a call to printf inside report_recv_called_from_isr commenting it out or replacing it with ets_printf prevents it from crashing but as you can probably tell from the name of the function report_recv_called_from_isr the developer of BTstack did not expect the HCI packet callback to be called in that context.
Is BTstack's author incorrect in assuming that the HCI packet handler callback registered using esp_vhci_host_register_callback is never to be called from within an ISR context?

Any news here? The issue about sending an ACL packet with a now invalid HCI Connection handle is independent from the Bluetooth stack and could happen with NimBLE or Bluedroid as well.

@mringwal Sorry for such a delayed reply.
The scenario you describe is bound to happen. Thanks a lot for your suggestion. Now I share with you our handling of this situation.
Receiving packets from an invalid HCI connection causes "OUT OF SYNC". In a certain controller status, esp32 will response with "HW ERROR".
According to Bluetooth Core Spec, "hw error event" is implementation-specific. We will evaluate your suggestion, but I can not guarantee the changes to the code.
Thanks again!

@BetterJincheng Thanks for looking at this again. I don't think that emitting a HW Error in this situation because of a race condition is a good user experience :)
If the Bluetooth Controller lib is able to respond with an HW Error Event, it should even be easier to just drop the packet.

@BetterJincheng Thanks for your reply.
A few different topics:

call to host_recv_pkt_cb  from ISR:I am still convinced that host_recv_pkt_cb should never be called from ISR. As Espressif has the source code for the Bluetooth Controller, it would be great if all calls to host_recv_pkt_cb could be checked and made sure it's never called from IR.

ACL packet with invalid con handle: Even if the host stack sends an ACL packet with an invalid connection handle. In that case, the Bluetooth Controller could just drop the packet.

I don't have a trace for this, but what about my example from May 2021: e.g. music streaming app continuously sends audio data. At one point, the remote side closes the connection and the Bluetooth Controller emits a HCI Disconnect event. In our implementation, this is queued in a ring buffer and processed the next time the Bluetooth Host thread gets executed. It's unclear to me if this can be avoided by any Bluetooth stack 100%. Here, this would be no issue if the Bluetooth Controller just silently drops the packet.

esp_vhci_host_send_packet: esp_vhci_host_send_packet is only called from our main Bluetooth thread.

Thanks

@mringwal FYI
If the UART synchronization is lost in the communication from Host to Controller, then the Controller shall send an HCI_Hardware_Error event to tell the Host about the synchronization error.

@BetterJincheng That's correct. We can handle the HCI Hardware Error as expected (assume Controller has crashed, reset and start over). However, there's no reason that this event is delivered from ISR  context.
To clarify, I think a callback should always get called back from the same type of context: either it's always called from a thread context, or, it's always called from ISR context. Otherwise, it's quite challenging to deal with. In any case, it would need to be properly documented.
So, any progress on the two issues:

host_recv_pkt_cb called from ISR - this should not happen and all errors be delivered from the regular Controller thread.
outgoing ACL packets with invalid con handle should get dropped instead of causing a Controller crash/hardware error. See reasoning on async communication above. This is not a UART synchronization error btw.

Thanks!

@mringwal

We will move the "HW_ERR_EVT" in thread context.
When we received an invalid con handle, we cannot be sure that the package is correct or not:
2.1 Host sent an invalid con handle, Controller received the same con handle;
2.2 Host sent a valid con handle, Controller errorly received the an invalid con handle.
So in the view of Controller, it is a UART synchronization error.

Hi @BetterJincheng
Thanks for moving HCI Hardware Error into thread context.
I do agree that an invalid con handle might indicate a UART synchronization error.
However, please consider this scenario:

there's an active ACL connection with handle h1
at time t1:

the Controller receives a disconnect link layer message from its peer for handle h1, discards the conection and sends a HCI Disconnect event to the Host
the Host sends an ACL packet with handle h1 as it cannot know that the connection just disappeared.

as everything is asynchronous, the Controller receives the ACL packet for handle h1 a tiny bit later.
now: two options

drop the packet for the connection that was valid a few ms before
detect a comunication error, send Hardware Error and wait for Host to reset

As this is a valid scanario that cannot be avoided, I think it's better to drop the packet instead of sending HW Error.
A compromise could be to remember which connection was active for e.g. 100 ms after it was disconnected. With that, you could distinguish a packet with a invalid / never-used connection handle from one that has just been disconnected.
In any case, it's good if each new connection gets a new connection handle (wraps at 4096). I don't know if that's the case, if not, that would be good to add.
What do you think?
Cheers,
Matthias

@mringwal

To remember connection status will introduce a timer which increased system complexity.
If Controller just dropped the packets of an invalid con handle. There is something can happen:
If Host received the disconnection event, and it still send packets on the disconnected con handle. In this scenario, dropping the packets is not a good choice.

Hi again. I do agree, there should not be an additional timer.
What about this:

on disconnect, we store the conn handle and the time stamp
when the Controller receives an ACL packet and there's no connection for this, it can check if the con handle matches the last disconnected con handle. Here, the time stamp could be used, or not. By this, all other con handles can still trigger an HW Error (as this is clearly an error in the HCI communication).

Do you agree that the Controller should not send an HW error in a situation where neither side sent incorrect data?
If the Host ist sending incorrect data, there will be other errors, too

@mringwal
ACL data on disconnected handle will be ignore by the Contrller which is accessed by 2fa475bc .
Some information needs to be noted:
If the flow control from Host to Controller is enabled, the Host expects to receive an event of NUMBER_OF_COMPLETED_PACKETS when the controller has finished processing a packet.

When the Controller has already sent the event of DISCONNECTION_COMPLETE to the Host, it will no longer report NUMBER_OF_COMPLETED_PACKETS upwards. This means that, The host is responsible for managing flow control related information, such as, credit.

ACL data on disconnected handle will be ignore by the Contrller which is accessed by 2fa475bc .

That's great!
Thanks for reminding on the Host to Host Controller flow control. After receiving a HCI Disconnected Event, we free the HCI Connection structure which includes the counter for the number of sent packets - so that's synchronized then as well.


Customize Color of Scrollbar

How would we customize the color of the scrollbar from the default of rgba(0, 0, 0, .1)?
I'd like to use this in an application with a dark background color, and rgba(0, 0, 0, .1) doesn't show up well on dark backgrounds.

@gbroques I was able to customize the color by looking at the structure of the html and realizing that I can target the last child div of the CustomScroller. It's somewhat hacky but it works given we can't directly add classes to the track element.
If you're using makeStyles from material-ui, you can do something like this
import * as React from "react";
import { makeStyles } from "@material-ui/core";
import CustomScroller from "react-custom-scroller";

const useStyles = makeStyles({
  scroller: {
    "&> div:last-child": {
      background: "rgba(34, 157, 158, 0.4)",
    },
  },
});

const CustomColorScoller = ({ children }) => {
  const classes = useStyles();
  return (
    <CustomScroller className={classes.scroller}>{children}</CustomScroller>
  );
};

export default CustomColorScoller;

@ivnflpz Thank you for the workaround! :) I will close this issue.

I'll keep it open because we plan to add an official way of doing this via props.

I'll keep it open because we plan to add an official way of doing this via props.

This would be great :)


Python package namespace support

Support Python package namespaces. This was a bit more difficult than I had anticipated because Cookiecutter doesn't provide a ton of (elegant) flexibility for conditional cases.
closes #6

This PR has quite a few changes. Some of them could be factored out into smaller PRs, which I'm happy to do.

Actually, I think these changes could all be made in a single PR/commit.
Re-requested a review because there's a potential for requesting changes based on the comment thread here https://github.com/trailofbits/cookiecutter-python/pull/8#discussion_r1376208197

Re-requested a review because there's a potential for requesting changes based on the comment thread here #8 (comment)

Yeah, based on that thread: I think a top-level src/ directory makes the most sense. That gives us the most flexibility, is supported well by Python packaging tooling, and simplifies the Makefile.

Thanks @ekilmer!


Correct handling of arrays

Highlighted in issue #66

As mentioned in #66, I think the change in this behaviour should be put behind a option. Additionally, the README should include documentation for this new option.

Look at the previous attempt for this and its review:
https://github.com/sindresorhus/query-string/pull/70

Bummer, didn't look at previous tries. My bad.
Gonna pick up from where #70 left.


Having Pi Issues..

Hi Josh,
This is just the project I am needing to get working on my Pi.
When I go through the setup instructions in the readme.md  it seems to do what is expected but when I try the "node demos/circle.js"  I get nothing on screen in the way of circles.
Here is the environment information:
Node: v0.10.35
gcc: Debian 4.6.3-14+rpi1
linux: raspberrypi 3.12.26+ #7 PREEMPT wed sep 17 14:25:24 edt 2014 armv6l gnu/linux
Screen: PiTFT 2.8  (adafruit)  Framebuffer /dev/fb1   (https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/easy-install)   used their kernel.
(Anything else that would help to know?)
Here is the console info after running the circle demo:
inside of the aminogfx main.js
sgtest =  { init: [Function],
createWindow: [Function],
setWindowSize: [Function],
getWindowSize: [Function],
createRect: [Function],
createPoly: [Function],
createGroup: [Function],
createText: [Function],
createGLNode: [Function],
createAnim: [Function],
stopAnim: [Function],
updateProperty: [Function],
updateAnimProperty: [Function],
addNodeToGroup: [Function],
removeNodeFromGroup: [Function],
tick: [Function],
selfDrive: [Function],
setEventCallback: [Function],
setRoot: [Function],
decodePngBuffer: [Function],
decodeJpegBuffer: [Function],
loadBufferToTexture: [Function],
createNativeFont: [Function],
getCharWidth: [Function],
getFontHeight: [Function],
runTest: [Function],
initColorShader: [Function],
initTextureShader: [Function],
GL_VERTEX_SHADER: 35633,
GL_FRAGMENT_SHADER: 35632,
GL_COMPILE_STATUS: 35713,
GL_LINK_STATUS: 35714,
glCreateShader: [Function],
glShaderSource: [Function],
glCompileShader: [Function],
glGetShaderiv: [Function],
glCreateProgram: [Function],
glAttachShader: [Function],
glUseProgram: [Function],
glLinkProgram: [Function],
glGetProgramiv: [Function],
glGetAttribLocation: [Function],
glGetUniformLocation: [Function],
glGetProgramInfoLog: [Function] }
fully loaded
initing input for OS  RPI
doing native init. dpi scale = 1
RPI: display size = 720 x 480
rpi.c: got to the real opengl context
you are not root. this might not work
file = event2
initing a device
Reading from: /dev/input/event2 (stmpe-ts)
Location /dev/input/event2 (stmpe-ts/input0)
event type 0x00 sync events
event type 0x01 key events
event type 0x03 abs events
file = event1
initing a device
Reading from: /dev/input/event1 (  Mini Keyboard)
Location /dev/input/event1 (usb-bcm2708_usb-1.3/input1)
event type 0x00 sync events
event type 0x01 key events
event type 0x02 rel events
event type 0x03 abs events
event type 0x04 msc events
file = event0
initing a device
Reading from: /dev/input/event0 (  Mini Keyboard)
Location /dev/input/event0 (usb-bcm2708_usb-1.3/input0)
event type 0x00 sync events
event type 0x01 key events
event type 0x04 msc events
event type 0x11 led events
event type 0x14 rep events
WARNING. got -1 for location of  opacity
WARNING. got -1 for location of  tex
loading font file /home/pi/aminogfx-master/src/../resources/SourceSansPro-ExtraLight.ttf
loading font file /home/pi/aminogfx-master/src/../resources/SourceSansPro-Light.ttf
loading font file /home/pi/aminogfx-master/src/../resources/SourceSansPro-Regular.ttf
loading font file /home/pi/aminogfx-master/src/../resources/SourceSansPro-Semibold.ttf
loading font file /home/pi/aminogfx-master/src/../resources/SourceSansPro-Bold.ttf
loading font file /home/pi/aminogfx-master/src/../resources/SourceSansPro-Black.ttf
loading font file /home/pi/aminogfx-master/src/../resources/fontawesome-webfont.ttf
PureImage loading source undefined undefined undefined
starting the event loop

I don't think this will work. I think Adafruit's screen uses an in-memory framebuffer. This means it doesn't go through the GPU.  Amino only works with OpenGL, so I think you'll have to use a screen that attaches to the HDMI port. I'm sorry.

If you haven't already. Checkout https://github.com/vesteraas/node-pitft. I had the reverse issue.


Update link gives 404

Version 2.0.20 of the CLI client is available. You can download new version following the link: https://crowdin.com/downloads/crowdin-cli.zip

wget https://crowdin.com/downloads/crowdin-cli.zip
--2017-12-04 04:31:03--  https://crowdin.com/downloads/crowdin-cli.zip
Resolving crowdin.com (crowdin.com)... <IP_ADDRESS>, <IP_ADDRESS>
Connecting to crowdin.com (crowdin.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-12-04 04:31:04 ERROR 404: Not Found.

Hi @d4rken
I replaced broken link with this https://downloads.crowdin.com/cli/v2/crowdin-cli.zip
Thanks for report!

Thanks.
You could also upload add the .zip file to github releases and then let people use that to download the latest binaries.


Schema version not set until first migration

Goals

Set the schema version to a non-zero version after a fresh install
Expected Results

When performing the first migration, I expected the oldSchemeVersion to be 3, not 0.
Actual Results

The old schema version number was 0 the first time migration was triggered.
Steps to Reproduce

fresh install schema version set to 3 > migration not called, as expected
no change in version but install/launch the app again > migration called, old version = 0 ?
no change in version, but install/launch the app one more time > migration not called, as expected
change schema to version 4, update app > migration called, old version = 3, as expected

Is step 2 the expected value for the old schema version? The reason this causes and issue, is because in the code sample below, we are trying to rename a property that does not exist and it crashes. For testing the above scenario, I commented the renameProperty line out.
Code Sample

let config = Realm.Configuration(
    schemaVersion: RealmRepositoryMigration.schemaVersion,
    migrationBlock: RealmRepositoryMigration.migrationBlock)
Realm.Configuration.defaultConfiguration = config
let realm = try! Realm()

enum RealmRepositoryMigration {

    static let schemaVersion: UInt64 = 3

    static let migrationBlock: MigrationBlock = { migration, oldSchemaVersion in
        log.d("schema: \(oldSchemaVersion)")
        if oldSchemaVersion < 1 {
            migration.enumerateObjects(ofType: UserRealmObject.className()) { _, newObject in
                guard let newObject = newObject else {
                    return
                }
                newObject["dTime"] = 0
            }
        }

        if oldSchemaVersion < 2 {
            migration.renameProperty(onType: UserRealmObject.className(), from: "userName", to: "username")
        }

        if oldSchemaVersion < 3 {
            migration.enumerateObjects(ofType: UserRealmObject.className()) { _, newObject in
                guard let newObject = newObject else {
                    return
                }
                newObject["logAs"] = ""
            }
        }
    }
}

Version of Realm and Tooling

ProductName:	Mac OS X
ProductVersion:	10.14
BuildVersion:	18A391

/Applications/Xcode.app/Contents/Developer
Xcode 10.1
Build version 10B61

/usr/local/bin/pod
1.5.3
Realm (3.12.0)
RealmSwift (3.12.0)

/bin/bash
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)

/usr/local/bin/carthage
0.31.0
(not in use here)

/usr/bin/git
git version 2.17.2 (Apple Git-113)

That is not the expected behavior, but I can't really say what could be going wrong from just that code snippet.

Thanks for the confirmation. We just found the issue on our end. We were initializing it in one more place without providing the configuration.


Using retained mqtt information, even if they're old

Is your feature request related to a problem? Please describe.
I'm using an external vehicle integration, which sends MQTT-messages for all relevant vehicle information. It sends messages with the "retain"-flag and don't send same values until they've changed.
Which leads to evcc to not know SoC and range of the vehicle
Describe the solution you'd like
Let evcc use retained messages if the vehicle changes for a loadpoint - even if the value is older than configured timeout.
Describe alternatives you've considered
tried to change the source to send MQTT-messages regularly - but it's not possible
Additional context

(1) as the vehicleStatus changed, it is "connected"
(2) as the SoC/range information didn't change, it is "unknown"

You'll have to set timeout to a long value like 365d.

yes, but that is my point: "normally" 20mins are long enough.
The request is to use retained messages "onChange" of a vehicle. Setting a 365d timeout is not the solution here.

How would you to that? I repeat:

There is no way for the client to distinguish between retained or not.

let the "onChange"-event ignore the timeout.

Thats not possible. You‘ll need to configure a higher timeout for that purpose.

I really don't understand what you're asking here. The plugins obtain data and relay the information if that data is current. They have no notion of the context they operate in (and should not). Either data is received in time per plugin or it is not. How you configure that plugin is users choice and responsibility. If that's not sufficient you'll need to workaround whatever deficit is observed outside of evcc.

evcc is not capable of processing non-live data out of context

That's just plain wrong. It can process anything as long as user declares it valid, i.e. not deprecated.

That's really not a solution, sorry.

If you know the retained messages are valid then just configure a long timeout. With plugins it is your responsibility to deliver data and manage its validity.

If you know the retained messages are valid then just configure a long timeout.

That's not the purpose of the timeout-parameter.

That's just plain wrong. It can process anything as long as user declares it valid, i.e. not deprecated.

no. evcc won't process information that were sent to it while the vehicle is not active. That's the whole point of my feature request!
You're still not answering my question: Will evcc process information in future, if all vehicle information is not loadpoint-based anymore? Then everything will be fine.

That's not the purpose of the timeout-parameter.

It is in evcc and as far as MQTT is concerned.

evcc won't process information that were sent to it while the vehicle is not active.

It doesn't- simply because there is no notion of an "inactive vehicle" entity. That is however totally independent of MQTT or whatever other protocol or retained messages.

Hope this clarifies things.

still not. sorry.
nevertheless last try: will evcc process information of not connected, but configured vehicles, once all vehicle information is moved from loadpoint to its own vehicle environment?


proto2schema 1/n: Schema generation

This is one of multiple PRs that will generate schemas from manifests via protobufs. So far, this creates a copy-and-past BUILD rule using a Kotlin CLI. Later, this will change to actually generate Kotlin jars.
This PR also introduces the first use of Kotlin Poet in the project. Schema generation via this library is exercised in a test. Once @piotrswigon 's efforts to serialize manifests (read: schemas) into protos are accomplished, we'll be able to adapt this CL to generate schemas from manifests end-to-end.
I anticipate that the names for the build macros don't quite fit our project, I'm happy to take suggestions (a nod to you, @csilvestrini).

After discussions last week, the strategy for codegeneration has changed. As a result, I'm going to close this PR.
The feedback here will be useful to future PRs, however.


ARROW-16584: [Java] Java JNI with S3 support

13157

 Quality gate: Passed
 Everything looks good
Details


ci: Boost arm build machines

this is an interim measure to reduce build times and mittigate VM overload, pending Engflow arm RBE pools coming online
after discussion we felt this was justified as without it we are likely to get jobs being retested, and larger machines should reduce the build times some

this is getting github infra failures
Warning: Failed to download action 'https://internal-api.service.iad.github.net/repos/envoyproxy/toolshed/tarball/6396ed87c2743ef71f4d4c55fd9da1a6889a60d6'. Error: Name or service not known (internal-api.service.iad.github.net:443)
Warning: Back off 20.444 seconds before retry.
Warning: Failed to download action 'https://internal-api.service.iad.github.net/repos/envoyproxy/toolshed/tarball/6396ed87c2743ef71f4d4c55fd9da1a6889a60d6'. Error: Name or service not known (internal-api.service.iad.github.net:443)
Warning: Back off 24.907 seconds before retry.
Error: Name or service not known (internal-api.service.iad.github.net:443)

fwiw unrelated to our migration - just general github flakiness

/retest


Fix typo in USE_INSTALLED_CERES clause

This fixes a trivial typo in the cmake variable when using pre-installed Ceres.

@Jerry-Ma , I think this typo was the last thing holding up the citlali build when using compilers and dependencies installed with conda.

Great catch! Thanks!


[PKG-3510] mahotas 1.4.13

Current package info

Channel
Downloads
Version
Platforms
License

main

Destination channel: Snowflake
Links

PKG-3510
release-notes: https://github.com/luispedro/mahotas/releases
release-notes-tagged: https://github.com/explosion/thinc/releases/tag/v1.4.13
changelog: https://github.com/luispedro/mahotas/blob/master/ChangeLog
license: https://github.com/luispedro/mahotas/blob/master/COPYING
requirements-tagged:

https://github.com/luispedro/mahotas/blob/v1.4.13/INSTALL
https://github.com/luispedro/mahotas/blob/v1.4.13/requirements.txt
https://github.com/luispedro/mahotas/blob/v1.4.13/setup.py
https://github.com/luispedro/mahotas/blob/v1.4.13/tests-requirements.txt

Explanation of changes:

Apply anaconda-linter . --fix:

update script
add wheel and setuptools to host
add pip check

Remove unused/redundant jinja variables
Remove blank lines

Notes:

An error on linux-aarch64:
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.9/site-packages/mahotas/tests/test_imresize.py . [ 31%]
..                                                                       [ 31%]

Fatal Python error: Segmentation fault


Themes not working

describe the bug
None of the themes aside from "Dark+" are applied when enabled.
Steps:

Enable single theme (all other themes are disabled).
Restart Notion app.

Notes:

Tested with Notion's own Dark Mode enabled and disabled.
littlepig dark: Theme's font colors appear to be applied, but that's it.

expected behaviour
Appearance should match screenshot of theme on notion-enhancer's home page.
screenshots

platform

OS: Windows 10 Pro

@archetyped are there any errors in the console of either menu or app (ctrl+shift+i to open)?
if you reload the menu, does it still say the theme is enabled?

No errors in console for either app or menu.
How do I reload the menu?  If you mean close and reopen it from the system tray, then yes, it still shows the theme as enabled.

are any other extensions enabled? does this happen with any of them or is it purely a themes issue?

Looks like there was something wonky with the WSL install (Node v14.3.0/NPM v6.14.5), as notion-enhancer/mods was missing several folders.
I uninstalled Notion Enhancer, updated Node/NPM for Windows (Node v12.18.4/NPM v6.14.6), and then reinstalled Notion Enhancer via PowerShell instead.
All themes load properly now, except that it turns out that none of themes are for me 🤷♂
Not sure why the WSL install went sideways, but I'll post an update if I ever find out.
Thanks for the help.

weird, I've never had issues with WSL. least it's working now.
but hey - if none of the themes fit your preference, try making your own.

but hey - if none of the themes fit your preference, try making your own.

Indeed, that was my next step! Thank you for the link to the docs.  I checked the wiki for pointers, but did not check the code itself.


Docs issue：the problem of "trouble shooting"

Following the instructions in the illustrated tutorial has no effect. Launched app is still Minecraft Stable, not Minecraft Preview.  The final solution is to change the path minecraft:?Editor=true to minecraft-preview:?Editor=true

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

ID: 7f970d29-d692-24c3-0ebb-53c97f19c9c8
Version Independent ID: 7f970d29-d692-24c3-0ebb-53c97f19c9c8
Content: Minecraft Bedrock Editor Installation
Content Source: creator/Documents/EditorInstallation.md
Product: gaming
GitHub Login: @iconicNurdle
Microsoft Alias: mikeam

You are correct. I fixed this and it should be visible in the published docs soon. Thanks for the catch!


Evaluate whether we really need keyrings.alt included

See comments in https://github.com/google/turbinia/pull/709/files for details.

I agree, it's something upstream. I added it as I want our builds to work (the error happens on ubuntu 18.04, it did not happen on my mac).
https://pantheon.corp.google.com/cloud-build/builds;region=global/f349ff6c-3675-4609-a2d7-19c00b1b2bbe?project=osdfir-registry
Line 1617.
I'll try to rebuild without this somewhere next week and remove the alt keyring when it succeeds/


The given API key is sometimes invalid

Did you read the instructions?

[X] I have read the README, including the known-limitations section.

The problem
Since tonight I'm getting occasional Update failed! - The given API key is invalid errors in my logs. Data is updated though.
2024-11-08 02:04:12.587 ERROR (MainThread) [custom_components.knmi] Update failed! - The given API key is invalid
2024-11-08 02:04:12.629 ERROR (MainThread) [custom_components.knmi] Error fetching knmi data:
2024-11-08 03:04:12.358 ERROR (MainThread) [custom_components.knmi] Update failed! - The given API key is invalid
2024-11-08 03:04:12.359 ERROR (MainThread) [custom_components.knmi] Error fetching knmi data:
2024-11-08 04:04:14.313 ERROR (MainThread) [custom_components.knmi] Update failed! - The given API key is invalid
2024-11-08 04:04:14.315 ERROR (MainThread) [custom_components.knmi] Error fetching knmi data:
2024-11-08 05:04:15.701 ERROR (MainThread) [custom_components.knmi] Update failed! - The given API key is invalid
2024-11-08 05:04:15.703 ERROR (MainThread) [custom_components.knmi] Error fetching knmi data:
2024-11-08 06:04:16.494 ERROR (MainThread) [custom_components.knmi] Update failed! - The given API key is invalid
2024-11-08 06:04:16.495 ERROR (MainThread) [custom_components.knmi] Error fetching knmi data:
2024-11-08 07:04:19.154 ERROR (MainThread) [custom_components.knmi] Update failed! - The given API key is invalid
2024-11-08 07:04:19.158 ERROR (MainThread) [custom_components.knmi] Error fetching knmi data:

Other times of the day queries are successfull:

The queries seem to fail every 55 minutes
Integration version
2.2.0
Home Assistant version
core-2024.10.4
Python version
3.12.4
Home Assistant log
No response
Diagnostics
No response
Additional information
No response

This is due to a server issue, better to contact the supplier. There isn't much the component can do when it returns an API key issue.
Do you have an update interval of 1 hour? As all these failures are on the 4th minute past the hour.

Yes this is just a bad server. I have added some wait/retry to my code and
that works well. But it should not be like this. Also the remaining API is
often 299
Op vr 8 nov 2024 12:22 schreef Sander @.***>:

This is due to a server issue, better to contact the supplier. There isn't
much the component can do when it returns an API key issue.
Do you have an update interval of 1 hour? As all these failures are on the
4th minute past the hour.
—
Reply to this email directly, view it on GitHub
https://github.com/golles/ha-knmi/issues/162#issuecomment-2464463044,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXDM263MC55YRZCGDVKGR5DZ7SNGHAVCNFSM6AAAAABRM3RN2CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINRUGQ3DGMBUGQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

@golles, FYI, I also mailed<EMAIL_ADDRESS>My update interval is 5 minutes, see my screenshot where the duration of the sensor being unavailable is close to 5 minutes. After 5 minutes the sensor recovers, I assume due to a successful request.
I also suspect it's some server issue, maybe some load balancing with one faulty server in it although then I would expect a bit more random behaviour.
I'll report back when I get response from the supplier


issue #683 build out some more of the site structure; implements some…

… repeatable patterns for creating components

@saadmhybris There's quite a bit here.

Refactors some of the app-level containers and adds very high-level styles so we can begin building out the site CSS esp. the top and sidenavs.
Moves primary nav out of the library and to docs since it won't be a component. I also assume based on Leo's direction that we will be using the current Yaas.io nav.
Builds out the buttons and tables DOCS pages using a repeating pattern. Sets the base component and then loops through modifiers. This may or may not hold up which is why I'm going through the specs for each component. See the Wiki.
Uses the Nunjucks macros functionality to create actual components that accept arguments to render themselves. I create in src/templates group files like actions.html that can hold all those components. These are imported into the DOCS page where arguments are defined and passed like {{ table(header=component.data.header, rows=component.data.rows) }}
Other kinds of reorganization.

Thanks.


[5.4] Support amount 0 in Arr::random()

Follow-up to #20396 and #20402.
To summarize:

Supports amount 0 in Arr::random() for consistency with Collection::random()
Supports "0" as a string, for consistency as the other numbers are accepted as strings.
A handful of additions to the tests, better this way to prevent any risk of regressions.

 ping @browner12

Added a commit to remove the redundant "enough items available" validation code.
I was tired of seeing this duplication only because the exception messages were slightly different :)


Loading from res/raw with live update on shows design switcher errors

When loading from res/raw with live update on, the design switcher tries to load from the same res/raw resource file and fail to find the root node. Fix this by making the design switcher load from its own file in assets.
Possibility: Allow loading from multiple res/raw files, each representing a different Figma document.

Spoke with @dipenpradhan and @kovmarci86, and for now will add a mapping from document ID to resource ID. This should allow multiple documents to load simultaneously from raw resources, and allow the design switcher to work as well.


documentation example gives error

dvc version v0.6 currently gives error message
'ERROR: ambiguous option: --a could match --all-branches, --all-tags'
This fix clears that error.

@amundv thanks! in the docs it is -a not --a. Have you tried to run it exactly like in the document?

@shcheklein wops thanks :)


Print appstream validation errors

This is an attempt to hopefully make the error a bit more readable, than printing the multiline output directly.
{
    "details": [
        "attribute-missing     : <release> has no timestamp",
        "tag-missing           : <content_rating> required [use https://odrs.gnome.org/oars]"
    ]
}

stderr is fail-safe, for invalid XMLs which stops at first failure eg. "failed to parse com.example.app.metainfo.xml: Error on line 31 char 13: Element “component” was closed, but the currently open element is “summary” (compose from flatpak-builder will fail before linter here)
I assume the first line will always be the filename/filepath from validation, so I strip that because its position gets messed up.

this is probably a good step.

stderr is fail-safe, for invalid XMLs which stops at first failure eg. "failed to parse com.example.app.metainfo.xml: Error on line 31 char 13: Element “component” was closed, but the currently open element is “summary” (compose from flatpak-builder will fail before linter here)

This is highly dependent on the output of the cli. And might break anytime but as we somewhat control it, maybe it's ok. Can still be fixed.

Either details should be renamed to appstream to match existing jsoncheck, or should be reworked to place either into a matching subkey.

I'll rename it, I don't like putting them into other ones.


SSR: ChunkExtractor tries to load unexisting script

🐛 Bug Report
During SSR, chunks generated with webpack and ones that loadable tries to load have different names.
It happens when we have template literals in our import paths. It this case webpack generates chunks with one extra component name in the end. Like Path-To-Component/Component-Component. 🤷♂
To Reproduce
platform is used to segrerate desktop and mobile templates.
const About = loadable(() => import(`Pages/Static/${platform}/About`));

webpack.config.js
{
  output: {
    chunkFilename: 'js/[name].[chunkhash:8].chunk.js',
}

With this setup webpack generates the following chunks structure:
├── Pages-Static
│   ├── desktop-About-About.a2ddc8ae.chunk.js
│   ├── desktop-Feedback-Feedback.83cc2d57.chunk.js

loadable-stats.json contains correct paths and names:

But for some reason, ChunkExtractor tries to load files with different names. This happens only during SSR.
node:28532) UnhandledPromiseRejectionWarning: Invariant Violation: loadable: cannot find Pages-Static/desktop-About in stats
    at invariant (/Users/forastero/www/powerthesaurus-client/node_modules/@loadable/component/dist/loadable.cjs.js:13:15)
    at ChunkExtractor.getChunkGroup (/Users/forastero/www/powerthesaurus-client/node_modules/@loadable/server/lib/ChunkExtractor.js:166:36)
    at one (/Users/forastero/www/powerthesaurus-client/node_modules/@loadable/server/lib/ChunkExtractor.js:190:30)
    at /Users/forastero/www/powerthesaurus-client/node_modules/@loadable/server/lib/ChunkExtractor.js:34:12
    at arrayMap (/Users/forastero/www/powerthesaurus-client/node_modules/lodash/lodash.js:639:23)
    at map (/Users/forastero/www/powerthesaurus-client/node_modules/lodash/lodash.js:9556:14)
    at Function.flatMap (/Users/forastero/www/powerthesaurus-client/node_modules/lodash/lodash.js:9259:26)
    at getAssets (/Users/forastero/www/powerthesaurus-client/node_modules/@loadable/server/lib/ChunkExtractor.js:33:49)
    at ChunkExtractor.getChunkAssets (/Users/forastero/www/powerthesaurus-client/node_modules/@loadable/server/lib/ChunkExtractor.js:203:14)
    at ChunkExtractor.getMainAssets (/Users/forastero/www/powerthesaurus-client/node_modules/@loadable/server/lib/ChunkExtractor.js:294:23)

I'm not sure if this is a bug with @loadable or with webpack itself. 🤔
Link to repl or repo (highly encouraged)
I'm ready to reproduce the bug, if this is not something ridiculous. Maybe I'm doing something wrong.
Run npx envinfo --system --binaries --npmPackages @loadable/component,@loadable/server,@loadable/webpack-plugin,@loadable/babel-plugin --markdown --clipboard
Paste the results here:
## System:
 - OS: macOS 10.14.3
 - CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
 - Memory: 405.02 MB / 16.00 GB
 - Shell: 5.3 - /bin/zsh
## Binaries:
 - Node: 11.7.0 - /usr/local/bin/node
 - Yarn: 1.13.0 - /usr/local/bin/yarn
 - npm: 6.5.0 - /usr/local/bin/npm
 - Watchman: 4.9.0 - /usr/local/bin/watchman
## npmPackages:
 - @loadable/babel-plugin: ^5.0.1 => 5.2.2
 - @loadable/component: ^5.1.2 => 5.2.2
 - @loadable/server: ^5.1.3 => 5.4.0
 - @loadable/webpack-plugin: ^5.0.2 => 5.4.0

Hello @ElForastero, I think it has been fixed in #219. It will be fixed in next release.

After update to 5.6.0 chunks are built without subdirectories, but the problem with chunk names during SSR is still present.
So the issue is still actual.
## System:
 - OS: macOS 10.14.3
 - CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
 - Memory: 807.32 MB / 16.00 GB
 - Shell: 5.3 - /bin/zsh
## Binaries:
 - Node: 11.7.0 - /usr/local/bin/node
 - Yarn: 1.13.0 - /usr/local/bin/yarn
 - npm: 6.5.0 - /usr/local/bin/npm
 - Watchman: 4.9.0 - /usr/local/bin/watchman
## npmPackages:
 - @loadable/babel-plugin: ^5.0.1 => 5.6.0
 - @loadable/component: ^5.1.2 => 5.6.0
 - @loadable/server: ^5.1.3 => 5.6.0
 - @loadable/webpack-plugin: ^5.0.2 => 5.5.0

Currently, we solved this issue by not using string literals inside dynamic import paths.
Like this:

@neoziro Probably it should be reopened. 🤷♂

same issue, any updates?

Hi @Volkovskiy, can you explain your specific case?

What is your import()?
What file does it try to load?
What file should it load?

Also others could answer these three questions. This way we could try to know what is exactly the problem.

I do have the same issue:

Import: import(./${props.lang}/Test)
Tries to load: en-Test
Should load: en-Test-Test (this is generated by webpack)

I think the issue is here:
https://github.com/smooth-code/loadable-components/blob/8decb0d73b1e1f1233d731ca7d1469f61d2b4231/packages/babel-plugin/src/properties/chunkName.js#L121
The pre and postfix of the template literal are added to the [request] keyword. However, this is already done in the userRequest which replaces [request] in the webpack ContextModule. Because of that the postfix is added twice.
If I replace the above line with just [request] everything works fine.

Thanks @cevou for investigating! Could you submit a PR to fix it? Also we should try to find a way to write automated tests about it.

I think it's an issue, that the babel-plugin always overrides the webpackChunkName - even if the user specifies a custom name it will be overwritten.
I don't have an immediate solution, but if it would be possible to get rid of the whole chunkName function (it is only used for the chunkExtractor.addChunk(...)) and somehow use the actual chunkNames generated by webpack based on the user's configuration it would remove a source of error.
If we change the chunkNameFromTemplateLiteral function now and webpack changes any of their code it might not be compatible again.

I just tested it in the server-side-rendering example:
const Sub = loadable(props => import(`./letters/${props.letter}/test`))

<Sub letter="Z" />

I don't have any problem:
<script async data-chunk="letters-Z-test" src="/dist/web/letters-Z-test.js"></script>

I close it for now, please submit a new issue with a good reproducible example if you experience the bug.

Thanks for looking into it @neoziro.
I can confirm I've encountered this issue also (and was able to work around it with @cevou's fix.
So I'm happy to volunteer and try reproducing it with the provided server-side example.


[BUG]  On the same physical machine, there are two PODs,  the POD accesses another POD through the Service, and the HTTP data is missing.

Agent Environment

CentOS Linux release 7.9.2009 (Core)
5.4.221-1.el7.x86_64
K8S-PODA:  <IP_ADDRESS> (node:vm50)
K8S-PODB:  <IP_ADDRESS> (node:vm50)
K8S-service:greeter-server-nodeport-3-6-1-41-1    NodePort    <IP_ADDRESS>            50051:32159/TCP
PODA -> PODB
Describe what happened:
Because PODA accesses PODB through Service, there is no NAT conversion between PODA and PODB，So the two sets of data do not match.
{ "laddr":{
        "ip":"<IP_ADDRESS>",
        "port":34347,
        "containerId":"",
        "hostId":"0",
        "hostName":""
    },
    "raddr":{
        "ip":" <IP_ADDRESS> ",
        "port":50051,
        "containerId":"",
        "hostId":"0",
        "hostName":""
    }}

{ "laddr":{
        "ip":"<IP_ADDRESS>",
        "port":34347,
        "containerId":"",
        "hostId":"0",
        "hostName":""
    },
    "raddr":{
        "ip":" <IP_ADDRESS> ",
        "port":50051,
        "containerId":"",
        "hostId":"0",
        "hostName":""
    }}

There is a problem， when GetHTTPAggregationsAndTags is aggregated, and TCP data and HTTP data cannot be aggregated
Describe what you expected:
There is a problem， when GetHTTPAggregationsAndTags is aggregated, and TCP data and HTTP data cannot be aggregated
Steps to reproduce the issue:
Put the two PODs on the same physical machine and access them through Service
Additional environment details (Operating System, Cloud provider, etc):

Hey @LeiZhang-Hunter thanks for filing the issue

What agent version are you using?
Please share details on the setup you have so we can try and reproduce it if needed

Hey @LeiZhang-Hunter thanks for filing the issue

What agent version are you using?
Please share details on the setup you have so we can try and reproduce it if needed

The problem did not occur, I temporarily closed


Add ref to ComponentProps interface

Allows ref to be used on components, and will correctly type the instance passed through in the args.

Coverage remained the same at 97.695% when pulling ec8561a6b1024d4c31a31117d53131f704d20910 on UnwrittenFun:ts-ref into 523c397a8c99560fea77ef558c04beb27c99eb7c on developit:master.

Coverage remained the same at 97.695% when pulling b06a97653189a5ecbd51c8ad4702fce73880dbf6 on UnwrittenFun:ts-ref into 043c2bb5167c815ecf338982fa24a52bd61cd59f on developit:master.


Include period name in jobs and signups page title

Originally created by Tom Smyth at 2019-02-10 10:05, migrated from redmine-#9380

Status changed from New to Closed

By Tom Smyth at 2019-02-26 01:59


[VL] Log more info for shuffle write

What changes were proposed in this pull request?
I proposed this PR to get more detailed information for shuffling writing.
I divided the shuffle writing into several small steps, We can gather the time-consuming for each step after the shuffle writing is completed by setting VELOX_SHUFFLE_WRITER_LOG_FLAG .
We can make changes to improve the shuffle writing performance and check the result by this timing info.
(Please fill in changes proposed in this fix)
(Fixes: #ISSUE-ID)
How was this patch tested?
(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests)
(If this patch involves UI changes, please attach a screenshot; otherwise, remove this)

@marin-ma Would you like to take a look? Thanks!

@winningsix @FelixYBW Do you have any comments?

Let's test the metrics and see if they really count useful values. I'd think many of them actually are very little in pipeline

I20230919 09:49:25.320734 106968 VeloxShuffleWriter.cc:373] Velox shuffle writer created, task_attempt_id:9 partitionNum:4000 partitionWriterCreator:N6gluten27LocalPartitionWriterCreatorE partitioning_name:hash buffer_size:4096 compression_type:6 codec_backend:0 compression_mode:0 prefer_evict:0 buffered_write:1 write_eos:0 partition_writer_type:local thread_id:71 offheap_per_task:9641866036
I20230919 09:49:27.930323 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingCompute count: 25, wallNanos: 284883, cpuNanos: 288853 wallNanos-avg:11395 cpuNanos-avg:11554
I20230919 09:49:27.930357 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingBuildPartition count: 25, wallNanos: 487559, cpuNanos: 492563 wallNanos-avg:19502 cpuNanos-avg:19702
I20230919 09:49:27.930362 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingEvictPartition count: 0, wallNanos: 0, cpuNanos: 0
I20230919 09:49:27.930367 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingHasNull count: 25, wallNanos: 13239, cpuNanos: 20772 wallNanos-avg:529 cpuNanos-avg:830
I20230919 09:49:27.930371 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingCalculateBufferSize count: 2118, wallNanos: 229441, cpuNanos: 818565 wallNanos-avg:108 cpuNanos-avg:386
I20230919 09:49:27.930375 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingAllocateBuffer count: 2118, wallNanos: 197147874, cpuNanos: 195445115 wallNanos-avg:93082 cpuNanos-avg:92278
I20230919 09:49:27.930383 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingCreateRbFromBuffer count: 4000, wallNanos: 73552203, cpuNanos: 74162141 wallNanos-avg:18388 cpuNanos-avg:18540
I20230919 09:49:27.930387 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingMakeRB count: 2118, wallNanos: 18510662, cpuNanos: 19069310 wallNanos-avg:8739 cpuNanos-avg:9003
I20230919 09:49:27.930390 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingCacheRB count: 0, wallNanos: 0, cpuNanos: 0
I20230919 09:49:27.930394 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingFlattenRV count: 25, wallNanos: 10806, cpuNanos: 29847 wallNanos-avg:432 cpuNanos-avg:1193
I20230919 09:49:27.930398 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingSplitRV count: 25, wallNanos: 64128193, cpuNanos: 63503576 wallNanos-avg:2565127 cpuNanos-avg:2540143
I20230919 09:49:27.930402 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingIteratePartitions count: 25, wallNanos: 200662788, cpuNanos: 198184359 wallNanos-avg:8026511 cpuNanos-avg:7927374
I20230919 09:49:27.930405 106968 VeloxShuffleWriter.cc:1676] Velox shuffle writer stat:CpuWallTimingStop count: 1, wallNanos: 91156529, cpuNanos: 90465146 wallNanos-avg:91156529 cpuNanos-avg:90465146

Let's test the metrics and see if they really count useful values. I'd think many of them actually are very little in pipeline

The result shows CpuWallTimingAllocateBuffer is the most time-consuming step.

@FelixYBW

===== Performance report for TPCH SF2000 with Velox backend, for reference only ====

query
log/native_3083_time.csv
log/native_master_09_18_2023_bb48a9970_time.csv
difference
percentage

q1
43.48
43.04
-0.437
99.00%

q2
24.57
24.97
0.399
101.62%

q3
37.53
36.87
-0.669
98.22%

q4
41.38
41.75
0.370
100.89%

q5
68.39
69.76
1.371
102.01%

q6
5.00
5.05
0.051
101.02%

q7
84.99
86.37
1.375
101.62%

q8
80.87
80.53
-0.339
99.58%

q9
117.16
117.29
0.123
100.10%

q10
45.42
47.13
1.705
103.75%

q11
19.18
19.27
0.089
100.46%

q12
27.59
25.24
-2.349
91.49%

q13
50.95
50.78
-0.165
99.68%

q14
17.52
18.15
0.630
103.60%

q15
30.46
28.92
-1.541
94.94%

q16
15.88
15.70
-0.181
98.86%

q17
120.36
120.19
-0.172
99.86%

q18
185.41
161.67
-23.740
87.20%

q19
13.44
12.35
-1.094
91.86%

q20
34.31
28.67
-5.645
83.55%

q21
248.34
243.12
-5.221
97.90%

q22
15.84
15.16
-0.679
95.72%

total
1328.08
1291.96
-36.120
97.28%


Usage instructions appear missing.

Where in the readme would a user find instructions on launching and using xterm if once installed?

Pull Request:

https://github.com/Senzing/docker-xterm/pull/36


Adding a 'makeyourown' kernel tutorial, and a 'varying biofouling parameters' tutorial.

Pull request to add two new tutorials to the examples folder.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 15.43%. Comparing base (777a8e9) to head (e183fc3).
Report is 5 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #32   +/-   ##
=======================================
  Coverage   15.43%   15.43%
=======================================
  Files           6        6
  Lines         473      473
=======================================
  Hits           73       73
  Misses        400      400

Flag
Coverage Δ

unit-tests
15.43% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Clean & Clobber

Add to make task for cleaning up generated files

clean: yarn run clean + rm -r tmp/
clobber: git clean -fxd

Test with
make clobber
make clobber # tasks are idempotent, it shouldn't do anything, but it shouldn't fail either
make integration-test

Happy to ship a separate PR to change from npm to yarn.


Add extract_as attribute.

To quote the documentation for the attribute:
(** Replaces the annotated definition
    by the specified implementation during extraction.
    There are no checks whether the implementation
    has the same semantics, or even the same type.

    For example, if you have:

    [@@extract_as (`(fun (x: nat) -> "not a number"))]
    let add_one (x: nat) : nat = x + 42

    Then `add_one` will extract to `let add_one x = "not a number"`,
    and most likely cause the extracted program to crash.

    Note that the argument needs to be a literal quotation.
 *)

That looks pretty cool, I'm thinking: this kind of lightweight OCaml "FFI" directly in the compiler F* sources would be kind of awesome, right? :smiley:

To be clear: this attribute does not replace F* by OCaml.  It replaces F* by some other F* code.  This is mainly useful when you have a type with extra structure that you want to forget during extraction; in Pulse we have the stt type which comes with extra separation logic pre- and postconditions and we just want to forget about the separation logic stuff during extraction.
For backend-specific implementations, you'd want a different attribute.  Maybe something like [@@inline_asm_for "OCaml" "fun x -> \"not a number\""].  Where the code in the second string is actual OCaml code (which can then refer to whatever OCaml libraries you'd like).

@mtzguido Do you have any thoughts on this?

I rebased this btw. If we add a comment about the recursive bit being set then I'm happy merging.

I definitely would like to see [@@inline_asm_for "FSharp" "fun x -> \"not a number\""]


use constants from chartutil

This way, there's less overall code duplication.

rebased, this should be good to go if someone wants to give a quick check!


bug:Face ID shouldn't be tried automatically after timeout on application

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
With the identity iOS app, I will set my phone down and it times out the session and presents the "Welcome back" screen.  It then immediately tries to use Face ID after this happens even if I am not in front of the phone and without me initiating Face ID.
Expected Behavior
Most applications that I have experienced on the phone will only run FaceID after some manual initiation from the user.  Having it automatically try to initiate FaceID right after locking the application doesn't seem right to me as you might not want to reopen automatically.
Steps To Reproduce

Run the application
Set your phone down
The lock screen comes up and the FaceID is tried.

Screenshots
No response
Smartphone (please complete the following information)

Device: iPhone 14
OS: 17.5.1

Anything else?
No response

Thanks, agreed!
Discussed this internally and what we're aiming for is:

Auto try biometrics on app launch
Auto try biometrics if the app is brought back into focus from the background/app switcher
Don't auto try if timed out while app still open

There's also the edge case of phone locked itself while app was open, and you unlock the phone. Considering this too

This issue has been resolved in PR #755. Thank you @bkreiser!


Needs better documentation

I have been having a lot of difficulty trying to get a simple http api server built in to my application. It will be communicating only with only other servers on the same local network so SSL is not needed.
I tried setting up uWebSockets but the documentation is not very good. I did manage to get the IDE to say all errors where good by using the command:
vcpkg install libuv uwebsockets --triplet=x64-windows
and using the following CMakeLists.txt
cmake_minimum_required(VERSION 3.21) project(exchange)

set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) set(CMAKE_CXX_STANDARD 20) set(CMAKE_C_FLAGS "-lgmp") set(ZLIB_DEPS_DIR /cygdrive/c/src/vcpkg/packages/zlib_x64-windows/bin)

set(HEADER_FILES
    long list of .h files )

set(SOURCE_FILES
    long list of .cpp files )

find_package(GMP REQUIRED)

include_directories(uWebSockets) add_executable(exchange main.cpp  ${SOURCE_FILES} ${HEADER_FILES}) target_link_libraries(exchange gmp gmpxx z uv)

set(UWEBSOCKETS_INCLUDE_DIRS /cygdrive/c/src/vcpkg/packages/uwebsockets_x64-windows/include/uwebsockets) set(ZLIB_INCLUDE_DIRS /cygdrive/c/src/vcpkg/packages/zlib_x64-windows/include) set(USOCKETS_INCLUDE_DIRS /cygdrive/c/src/vcpkg/packages/usockets_x64-windows/include)

target_include_directories(exchange PRIVATE ${ZLIB_INCLUDE_DIRS}) target_include_directories(exchange PRIVATE ${UWEBSOCKETS_INCLUDE_DIRS}) target_include_directories(exchange PRIVATE ${USOCKETS_INCLUDE_DIRS})

add_library(exchange_lib STATIC ${SOURCE_FILES} ${HEADER_FILES})

But i keep getting the error when I try to build it
/cygdrive/c/src/vcpkg/packages/uwebsockets_x64-windows/include/uwebsockets/Loop.h:31: undefined reference to us_loop_ext'`
What am I missing?

I don't really think this is any particular issue with the library, more so an issue with your setup consisting of:

Windows
CMake
vcpkg
Cygwin

None of those are supported in any way. We prefer regular macOS or Linux, on which it just works out of the box. Also, I'm pretty sure vcpkg does not affect your Cygwin universe.
That's a linker error, your linker is not linking against uSockets. I don't know how your setup is, and I cannot possibly support all combinations of all kinds of set ups, this project is just regular standard C++ and standard C, how you built it on whatever platform is up to you.
That said, on macOS and Linux it builds without any problems by just hitting "make".

@alexhultman I thought windows was supported.  I'm able to build by linking to it on Visual Studio 2022.  Not sure if this is accurate, but I followed these steps and the Visual Studio IDE recognizes the symbols.  In the linker I am linking to uSockets.lib that vcpkg installed.  I'm building a .dll for a host app with this, but when the built .dll is loaded at the host app's runtime, the host app refuses to load it.  When I remove the code for uSockets, it loads into the host app fine.  Any ideas?  If we are linking against uSocket.lib, we don't need the uSockets.dll accessible for runtime, correct?  Isn't the uSockets.lib file a static lib?

Windows is supported yes, correction.

@alexhultman Thanks for the response.  Is there a guide out there for using this library in Visual Studio somewhere?  I found this post on StackOverflow, but do the steps seem accurate?

Okay, I figured out the issue on Windows.  I had to drop the following built .dll files into the folder that contains the host app executable.
zlib1.dll
uSockets.dll
libuv.dll

This host app executable loads the .dll file I'm building with uWebSockets.  Is there any way to set up the compiler so that the built output binary does not require these .dll files to exist in order to execute at runtime?

I'm closing this. Generally speaking the lib works on windows but windows is kind of a second class citizen compared to Linux/macOS so it's not going to be "as supported" (honestly C++ on windows is cancer developer experience)

I agree with your sentiment regarding Windows, but think it's important to support Windows users since there are so many of them — and especially when it comes to productivity software which is where I am using this library.  Thanks!


Update all deps, run Prettier.

Removed xo, should probably add ESLint.

Replaces https://github.com/vercel/arg/pull/38 and https://github.com/vercel/arg/pull/42.


[0.9.{9,10}] Walker crashes with the following message

1 error(s) decoding:

* 'builtins.applications.actions' expected a map, got 'bool'
panic: 1 error(s) decoding:

	* 'builtins.applications.actions' expected a map, got 'bool' [recovered]
	panic: closure error: unexpected panic caught: 1 error(s) decoding:

	* 'builtins.applications.actions' expected a map, got 'bool'

	Closure added at:
		main.main at ./walker.go:120
		runtime.main at runtime/proc.go:272
		runtime.goexit at runtime/asm_amd64.s:1700 [recovered]
	panic: closure error: unexpected panic caught: 1 error(s) decoding:

	* 'builtins.applications.actions' expected a map, got 'bool'

	Closure added at:
		main.main at ./walker.go:120
		runtime.main at runtime/proc.go:272
		runtime.goexit at runtime/asm_amd64.s:1700

goroutine 1 [running, locked to thread]:
github.com/diamondburned/gotk4/pkg/core/closure.(*FuncStack).TryRepanic(0xc00022e090)
	github.com/diamondburned/gotk4/pkg@v0.3.1/core/closure/funcstack.go:118 +0xe6
panic({0xbeadc0?, 0xc000311a80?})
	runtime/panic.go:785 +0x132
github.com/diamondburned/gotk4/pkg/core/closure.(*FuncStack).Panicf(0xc00022e030, {0xe49cdd, 0x1b}, {0xc000272ae0, 0x1, 0x1})
	github.com/diamondburned/gotk4/pkg@v0.3.1/core/closure/funcstack.go:104 +0x908
github.com/diamondburned/gotk4/pkg/core/closure.(*FuncStack).TryRepanic(0xc00022e030)
	github.com/diamondburned/gotk4/pkg@v0.3.1/core/closure/funcstack.go:122 +0xbc
panic({0xbeadc0?, 0xc000311a70?})
	runtime/panic.go:785 +0x132
log.Panic({0xc000272d08?, 0xbbd9e0?, 0xc00018db08?})
	log/log.go:432 +0x5a
github.com/abenz1267/walker/internal/config.Get({0x0?, 0xc00022e360?})
	github.com/abenz1267/walker/internal/config/config.go:308 +0x465
main.main.Activate.func5(0xc00021dcc8)
	github.com/abenz1267/walker/internal/ui/ui.go:84 +0x9c
reflect.Value.call({0xbedb80?, 0x1112ec0?, 0x56f171?}, {0xe3a903, 0x4}, {0xc00021dcb0, 0x1, 0xc0000a4640?})
	reflect/value.go:581 +0xca6
reflect.Value.Call({0xbedb80?, 0x1112ec0?, 0xdbd240?}, {0xc00021dcb0?, 0x1115480?, 0xd9949a0?})
	reflect/value.go:365 +0xb9
github.com/diamondburned/gotk4/pkg/core/glib._gotk4_goMarshal(0xd9b60a0, 0x0, 0x1, 0x7ffeed073440, 0xc0000061c0?, 0xd9b1a20)
	github.com/diamondburned/gotk4/pkg@v0.3.1/core/glib/glib.go:306 +0x978
github.com/diamondburned/gotk4/pkg/gio/v2._Cfunc_g_application_activate(0xd9b1a20)
	_cgo_gotypes.go:13549 +0x3f
github.com/diamondburned/gotk4/pkg/gio/v2.(*Application).Activate.func1(0xd9b1a20)
	github.com/diamondburned/gotk4/pkg@v0.3.1/gio/v2/gio.go:41449 +0x34
github.com/diamondburned/gotk4/pkg/gio/v2.(*Application).Activate(0xc00021dc80)
	github.com/diamondburned/gotk4/pkg@v0.3.1/gio/v2/gio.go:41449 +0x37
main.main.func3(0xc0001fc518)
	./walker.go:212 +0x8fd
github.com/diamondburned/gotk4/pkg/gio/v2._gotk4_gio2_Application_ConnectCommandLine(0xd9b1a20?, 0xda7f990, 0x1001?)
	github.com/diamondburned/gotk4/pkg@v0.3.1/gio/v2/gio_export.go:1841 +0x102
github.com/diamondburned/gotk4/pkg/gio/v2._Cfunc_g_application_run(0xd9b1a20, 0x3, 0xd9b6380)
	_cgo_gotypes.go:14100 +0x4b
github.com/diamondburned/gotk4/pkg/gio/v2.(*Application).Run.func3(0xd9b1a20, 0x3, 0xd9b6380)
	github.com/diamondburned/gotk4/pkg@v0.3.1/gio/v2/gio.go:42200 +0x67
github.com/diamondburned/gotk4/pkg/gio/v2.(*Application).Run(0xc00021dc80, {0xc0000242a0, 0x3, 0x3})
	github.com/diamondburned/gotk4/pkg@v0.3.1/gio/v2/gio.go:42200 +0x1f1
main.main()
	./walker.go:246 +0x72a

I do not get this error using 0.9.8 or lower.

check the release notes:

break: refactored applications module config for actions, added option to hide category

Correct way to configure actions from 0.9.10 forward will be:
  "actions": {
        "enabled": true,
        "hide_category": false,
        "hide_without_query": true
      },

I do not have a file though to configure anything. Just a style.css. @abenz1267

are you on nix?

Yes, I'm using nix and I was just theming walker with home manager, that's why I forgot about config.json.

Maybe I should just use the package's config.json using home manager. This way I won't have to delete the file if something changes in the future.


⚠ Bofrost.lu has degraded performance

In 627e0ca, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1055 ms

Resolved: Bofrost.lu performance has improved in 2be39b6.


After installation, Fusion hangs at splash screen

Describe the bug
After installation, when I start Fusion 360, it hangs at the splash screen.
I've attempted this several times with different installation options and Wine versions and never got any further than this. Currently I'm trying this with OpenGL and the splash screen stays black. On most attempts the splash screen would display regularly.
In the process viewer I see Fusion360.exe and wineserver for a while taking up approximately one CPU core between them, then  senddmp.exe appears. At that moment the CPU load of Fusion360.exe and wineserver goes to zero and  senddmp.exe hangs forever doing something that takes up one CPU core. I've waited up to 30 minutes and nothing else happens afterwards. (Edited for clarity.)
Desktop (please complete the following information):

Version number of Autodesk Fusion 360: I don't far enough to see it
Graphics card model: Intel UHD620
Operating system: OpenSUSE Tumbleweed
Wine version: wine-staging 6.23-1.2 from Tumbleweed repo
Desktop environment: KDE Plasma 5.23.4 under Wayland
DXVK- or OpenGL-Mode: Tried both, with OpenGL the splash screen sometimes stays black

Additional context
I installed using the installer:
mkdir -p "$HOME/.wineprefixes/fusion360/INSTALLDIR" && cd "$HOME/.wineprefixes/fusion360/INSTALLDIR" && wget -N https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/scripts/stable-branch/fusion360-setup-wizard.sh && chmod +x fusion360-setup-wizard.sh && bash fusion360-setup-wizard.sh && exit

I select the option to use the installed version of Wine (which is wine-staging) as I got errors otherwise. Note that currently in the Tumbleweed repos wine is at 6.23.1-3, while wine-staging is at 6.23.1-2.
I've tried this several times now with different parameters. Between installation attempts I've removed the $HOME/.wineprefixes and $HOME/.local/share/application/wine/Programs/Autodesk directories.
During the installation I repeatedly got out of space errors when downloading things to /run/user/1000/.cache/winetricks, I could resolve them only by rebooting or by cleaning out the directory by hand between installation attempts, making sure that no Wine server is running.

Here's what I see. I never get any further and cannot log in.

Here's the console output: https://gist.github.com/phrxmd/d5a0f3492fd7eae2934e86fc5ea2618b
(warning: 1050 lines)

Here is the XML crash dump that Fusion360 generates (mentioned in the console output): dmpuserinfo.xml.zip
Other behaviour I've noticed is that the tmpfs filesystem /run/user/1000 is at 100%.

Are these packages also installed?

p7zip-full
curl
wget
cabextract

Yes, the packages are all there:
# # zypper se -i cabextract curl wget p7zip-full
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...

S  | Name            | Summary                                                          | Type
---+-----------------+------------------------------------------------------------------+------
i+ | cabextract      | A Program to Extract Microsoft Cabinet Files                     | Paket
i+ | curl            | A Tool for Transferring Data from URLs                           | Paket
i+ | libcurl-devel   | Development files for the curl library                           | Paket
i+ | libcurl4        | Library for transferring data from URLs                          | Paket
i+ | p7zip-full      | 7z and 7za archivers that handle more types of archives than 7zr | Paket
i+ | python38-pycurl | PycURL -- cURL library module                                    | Paket
i+ | wget            | A Tool for Mirroring FTP and HTTP Servers                        | Paket
i+ | wget-lang       | Translations for package wget                                    | Paket

I have several files NMachineSpecificOptions.xml:
> find .wineprefixes/fusion360 -name "NMachineSpecificOptions.xml"
.wineprefixes/fusion360/drive_c/users/username/AppData/Roaming/Autodesk/Neutron Platform/Options/NMachineSpecificOptions.xml
.wineprefixes/fusion360/drive_c/users/username/AppData/Local/Autodesk/Neutron Platform/Filelock/NMachineSpecificOptions.xml
.wineprefixes/fusion360/drive_c/users/username/Application Data/Autodesk/Neutron Platform/Options/NMachineSpecificOptions.xml

Can you update to the newest version of wine please.
Then there are a lot of new functions and so on. This solved also some bugs!

I updated to the newest version, which is wine-staging 7.0~rc2-1.1 as of today. For the installer I had to set $XDG_CACHE_HOME manually because normally my cache is on a tmpfs mount under /run, but with the cache set to $HOME/.cache the installer ran fine.
Unfortunately I get even less far than before the Wine upgrade, because Fusion 360 crashes on me with the following error message:
Unhandled exception: page fault on read access to 0x00007f70c8bb4740 in 64-bit code (0x00007f70c96669a8).

I once more deleted ~/.wineprefixes, cleaned out ~/.local/share/applications/wine/Programs/Autodesk, re-ran the installer with XDG_CACHE_HOME=~/.cache and now Fusion 360 is starting.
Regarding the terminal, I'm on KDE, so have better experience using Konsole instead of xterm (konsole --hold -e "$HOME/.local/share/applications/wine/Programs/Autodesk/fusion360-launcher.sh"), because it allows for easier scrolling, selection and pasting. But it essentially should do the same thing.
Thank you for your excellent work!


Logistic Regression Classifier locks up when training the same phrase on multiple classifications

When training on a logistic regression classifier, if multiple classifications are trained on the exact same phrase the CPU locks up during the call to train(). Our app lets users define their own classifications so this is an important case for us to handle. Right now we are just testing for exact string matches when users enter training data.
Afflicts the LogisticRegressionClassifier but does not seem to affect BayesClassifier
const n = require('natural');
const c = new n.LogisticRegressionClassifier();

c.addDocument("Take me out to the ballpark", "yankees");
c.addDocument("Take me out to the ballpark", "redsocks");

c.train() // CPU locks up during this call

console.log(c.classify("Take me out to the ballpark"));

I am facing the same issue. Please help.

I request the owner to at least reply to our concerns.

i can confirm im seeing the issue ill try to get a fix out asap

thinking its related to https://github.com/NaturalNode/apparatus/issues/13

just merged a fix for this in apparatus and bumped the version to 0.0.10 thanks @Finkes
last step would be to update the dependency in natural

Updated the dependency and published a new version on NPM.
Hugo


Want to make a new environment based on the one that used in the Stock_NeurlPS2018_SB3.ipynb

Hi, I am new to using FinRL. Currently, I am trying to modify the environment used in Stock_NeurlPS2018_SB3.ipynb. My goal is to only allow the network to trade stocks with low risks after making a decision. To achieve this, I added some new lines of code to the step() function:
start from line 302 in the original env_stocktrading.py
 `else:
        actions = actions * self.hmax  # actions initially is scaled between 0 to 1
        actions = actions.astype(
            int
        )  # convert into integer because we can't by fraction of shares
        current_volatility = self.df.loc[self.day, ["rolling_volatility", "tic"]]
        low_risk_threshold = current_volatility["rolling_volatility"].quantile(0.2)
        low_risk_stocks = current_volatility[current_volatility["rolling_volatility"] <= low_risk_threshold]["tic"].to_list()
        filtered_actions = actions.copy()

        for stock in self.df["tic"].unique():
            if stock not in low_risk_stocks:
                filtered_actions[np.where(self.df["tic"].unique() == stock)[0][0]] = 0 \
                    if filtered_actions[np.where(self.df["tic"].unique() == stock)[0][0]] > 0 \
                        else -self.state[self.stock_dim+1 + np.where(self.df["tic"].unique() == stock)[0][0]]
        actions = filtered_actions

        if self.turbulence_threshold is not None:
            if self.turbulence >= self.turbulence_threshold:
                actions = np.array([-self.hmax] * self.stock_dim)
        begin_total_asset = self.state[0] + sum(
            np.array(self.state[1 : (self.stock_dim + 1)])
            * np.array(self.state[(self.stock_dim + 1) : (self.stock_dim * 2 + 1)])
        )`

I did not make any changes to other functions. The agent was trained without any bugs, and the actions predicted by the trained agent are exactly what I want. However, when I use the original environment, the actions predicted by the same agent differ from my customized environment. For example, if I ask the agent to predict for 30 stocks, in the original environment, the agent may make trades with 15 stocks, whereas in my customized environment, the agent only trades with 5 stocks. Nevertheless, the account value output by both predictions is the same. Could someone please help me with this?
And that's how I call them:
stock_dimension = len(trade.tic.unique())
state_space = 1 + 2*stock_dimension + len(INDICATORS)*stock_dimension
buy_cost_list = sell_cost_list = [0.001] * stock_dimension
num_stock_shares = [0] * stock_dimension

env_kwargs = {
    "hmax": 100,
    "initial_amount": 1000000,
    "num_stock_shares": num_stock_shares,
    "buy_cost_pct": buy_cost_list,
    "sell_cost_pct": sell_cost_list,
    "state_space": state_space,
    "stock_dim": stock_dimension,
    "tech_indicator_list": INDICATORS,
    "action_space": stock_dimension,
    "reward_scaling": 1e-4
}

e_trade_gym = CustomStockTradingEnv(df = trade, turbulence_threshold = 70,risk_indicator_col='vix', **env_kwargs)
e_trade_gym_no_filter =StockTradingEnv(df = trade, turbulence_threshold = 70,risk_indicator_col='vix', **env_kwargs)

df_account_value_td3, df_actions_td3 = DRLAgent.DRL_prediction(
    model=trained_td3,
    environment = e_trade_gym)

df_account_value_td3_nf, df_actions_td3_nf = DRLAgent.DRL_prediction(
    model=trained_td3,
    environment = e_trade_gym_no_filter)

Hi @JojoLiu6697, were you able to solve this problem?