[Event Request] Codeunit 99000831 - Procedure ModifyReservEntry

Reason:
Need the event to support extensibility of ModifyReservEntry function for the Reservation Engine Mgt. codeunit an upgrade project in BC Cloud Tenant.
Sample Code:
procedure ModifyReservEntry(ReservEntry: Record "Reservation Entry"; NewQuantity: Decimal; NewDescription: Text[100]; ModifyReserved: Boolean)
var
    TotalQty: Decimal;
    IsHandled: Boolean;
begin
    OnBeforeModifyReservEntry(ReservEntry, NewQuantity, NewDescription, ModifyReserved);

    //EVENT REQUEST
    IsHandled := false;
    OnBeforeModifyReservEntryOnCheckNewQuantity(ReservEntry, NewQuantity, NewDescription, ModifyReserved, IsHandled);
    if not IsHandled then begin
    //EVENT REQUEST
        ReservEntry.TestField("Reservation Status", ReservEntry."Reservation Status"::Reservation);
        if NewQuantity * ReservEntry."Quantity (Base)" < 0 then
            if NewQuantity < 0 then
                Error(Text000, ReservEntry.FieldCaption("Quantity (Base)"))
            else
                Error(Text001, ReservEntry.FieldCaption("Quantity (Base)"));
        if NewQuantity = 0 then
            Error(Text002);
        if Abs(NewQuantity) > Abs(ReservEntry."Quantity (Base)") then
            Error(Text003, ReservEntry.FieldCaption("Quantity (Base)"));
    //EVENT REQUEST
    end;
    //EVENT REQUEST

    if ModifyReserved then begin
        if ReservEntry."Item No." <> Item."No." then
            GetItem(ReservEntry."Item No.");

        ReservEntry.Get(ReservEntry."Entry No.", ReservEntry.Positive); // Get existing entry
        ReservEntry.Validate("Quantity (Base)", NewQuantity);
        ReservEntry.Description := NewDescription;
        ReservEntry."Changed By" := UserId;
        OnModifyReservEntryOnBeforeExistingReservEntryModify(ReservEntry);
        ReservEntry.Modify();
        OnModifyReservEntryOnAfterExistingReservEntryModify(ReservEntry);
        if Item."Order Tracking Policy" <> Item."Order Tracking Policy"::None then begin
            TotalQty := ReservMgt.SourceQuantity(ReservEntry, true);
            ReservMgt.AutoTrack(TotalQty);
        end;

        if ReservEntry.Get(ReservEntry."Entry No.", not ReservEntry.Positive) then begin // Get related entry
            ReservEntry.Validate("Quantity (Base)", -NewQuantity);
            ReservEntry.Description := NewDescription;
            ReservEntry."Changed By" := UserId;
            ReservEntry.Modify();
            if Item."Order Tracking Policy" <> Item."Order Tracking Policy"::None then begin
                TotalQty := ReservMgt.SourceQuantity(ReservEntry, true);
                ReservMgt.AutoTrack(TotalQty);
            end;
        end;
    end;

    OnAfterModifyReservEntry(ReservEntry);
end;

[IntegrationEvent(false, false)]
local procedure OnBeforeModifyReservEntryOnCheckNewQuantity(var ReservEntry: Record "Reservation Entry"; var NewQuantity: Decimal; NewDescription: Text[100]; var ModifyReserved: Boolean; var IsHandled: Boolean)
begin
end;

Do we have an idea about timelines and how to expedite this request because it is holding up a client upgrade, we need to inform the stake holders.

May I follow up on timelines to expedite this request because it is holding up client upgrade, we need to report update the stake holders.

May I follow up again about timelines and how to expedite this request because it is holding up a client upgrade, we need to inform the stake holders.

Again, question about your expectations, this event will be done in few days for Master and 21.x (and therefore for 21.1). Is this what you expect?

Hi Alexander,
We need these events requested here in BC21 or earlier so long at it is when we create a new Sandbox: https://github.com/microsoft/ALAppExtensions/issues/created_by/rvillanueva360

To support extensibility of ModifyReservEntry function for the Reservation Engine Mgt. codeunit an upgrade project in BC Cloud Tenant.
*   Also need IsHandled variable to prevent execution of a part of the standard code
To support extensibility of RetrieveInvoiceSpecification function for the codeunit 6500: Item Tracking Management on upgrade project in BC Cloud Tenant.
*   Also need IsHandled variable to prevent execution of a part of the standard code

We also need to know if the requested list noted below is already available in the latest version of BC21 in the cloud:
https://github.com/microsoft/ALAppExtensions/issues?q=is%3Aissue+author%3Arvillanueva360+is%3Aclosed
Cheers,
[360 Visibility]https://www.360visibility.com/?utm_source=email-signature
Randy Villanueva
Sr. Dynamics Consultant
<EMAIL_ADDRESS>|<PHONE_NUMBER>tel:(905) 907-3610
926 Nashville Rd., Vaughan ON L0J 1C0
[Twitter]https://twitter.com/360visibility[LinkedIn]https://www.linkedin.com/company/360-visibility[YouTube]https://www.youtube.com/user/360visibilityinc[Facebook]https://www.facebook.com/360Vis/[Instagram]https://www.instagram.com/360_visibility/
www.360visibility.comhttps://www.360visibility.com/?utm_source=email-signature
My working hours may not be your working hours. Please do not feel obligated to reply outside of your normal work schedule.
[https://360emailsignatures.blob.core.windows.net/pictures/email-signature-banner.jpg]https://www.360visibility.com/email-signature-banner/?utm_source=email-signature
From: Alexander Yakunin @.>
Sent: Wednesday, October 26, 2022 5:58 AM
To: microsoft/ALAppExtensions @.>
Cc: Randy Villanueva @.>; Author @.>
Subject: Re: [microsoft/ALAppExtensions] [Event Request] Codeunit 99000831 - Procedure ModifyReservEntry (Issue #20512)
External Email

Again, question about your expectations, this event will be done in few days for Master and 21.x (and therefore for 21.1). Is this what you expect?

Reply to this email directly, view it on GitHubhttps://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FALAppExtensions%2Fissues%2F20512%23issuecomment-1291790138&data=05|01|rvillanueva%40360visibility.com|c4e2c660efd74a160cc308dab7388e47|0815a0a621fd4467a0ad296bc115d5f2|0|0|638023750824651987|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=SpYHLkkYfBG65Q3B7maFGpkVPXhZFukeFcxn7wzixBY%3D&reserved=0, or unsubscribehttps://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FA3LOYGLZRD3I62NOCM3NJP3WFD6CHANCNFSM6AAAAAAQZ2T4XU&data=05|01|rvillanueva%40360visibility.com|c4e2c660efd74a160cc308dab7388e47|0815a0a621fd4467a0ad296bc115d5f2|0|0|638023750824651987|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=93lXKu2%2BEUUoBzwMlcEJuGNnkiiEhhjf7M%2FRFDDt95A%3D&reserved=0.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>Confidentiality Warning: This message and any attachments are intended only for the use of the intended recipient(s), are confidential, and may be privileged. If you are not the intended recipient, you are hereby notified that any review, retransmission, conversion to hard copy, copying, circulation or other use of this message and any attachments is strictly prohibited. If you are not the intended recipient, please notify the sender immediately by return e-mail, and delete this message and any attachments from your system. Thank you Please consider the environment before printing this email.

Yes, please confirm if this events can be available in the latest release of BC this week?

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 48444.

It is still not in 21.1, please let us know which build will have this event update.


KIC fails to start. All pods down: nginx [emerg] 1#0: bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)"

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
3.8.0
Current Behavior
hello,
We run kong KIC on GKE clusters: every night the preemptible nodes are reclaimed in our staging envs. And most of the time, it takes down all kong gateway pods (2 replicas) for hours.
versions

GKE control plane & node pools: 1.30.4-gke.1348000
kong ingress chart 0.14.1,
controller:3.3.1
gateway: 3.8.0

Additional info

db-less mode
using the Gateway API and Gateway resources only (e.g. HTTPRoutes)
no istio sidecars (they have been removed to try to narrow down the issue)

It seems that the liveness probe is responding ok, while the readiness probe remains unhealthy, leading to the gateway pods to just remain around, not able to process traffic.
Error logs
ERROR 2024/10/05 00:06:53 [emerg] 1#0: bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
ERROR nginx: [emerg] bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
[repeats over and over, yet the pod is not killed]

The controller fails to talk to the gateways with
ERROR 2024-10-07T03:37:26.870415241Z [resource.labels.containerName: ingress-controller] Error: could not retrieve Kong admin root(s): making HTTP request: Get "https://<IP_ADDRESS>:8444/": dial tcp <IP_ADDRESS>:8444: connect: connection refused

Kong finds itself in some sort of "deadlock" until the pods are deleted manually. Any insights ?
Below is the values.yaml file configuring kong
ingress:
  deployment:
    test:
      enabled: false

  controller:
    enabled: true

    proxy:
      nameOverride: "{{ .Release.Name }}-gateway-proxy"

    postgresql:
      enabled: false

    env:
      database: "off"

    deployment:
      kong:
        enabled: false

    ingressController:
      enabled: true

      image:
        repository: kong/kubernetes-ingress-controller
        tag: "3.3.1"
        pullPolicy: IfNotPresent

      resources:
        requests:
          cpu: 100m
          memory: 256Mi
        limits:
          memory: 1G

      ingressClass: kong-green

      env:
        log_format: json
        log_level: error
        ingress_class: kong-green
        gateway_api_controller_name: konghq.com/kong-green

      gatewayDiscovery:
        enabled: true
        generateAdminApiService: true

    podAnnotations:
      sidecar.istio.io/inject: "false"

  gateway:
    enabled: true

    deployment:
      kong:
        enabled: true

    image:
      repository: kong
      tag: "3.8.0"
      pullPolicy: IfNotPresent

    resources:
      requests:
        cpu: 250m
        memory: 500Mi
      limits:
        memory: 2G

    replicaCount: 6

    podAnnotations:
      sidecar.istio.io/inject: "false"

    proxy:
      enabled: true
      type: ClusterIP
      annotations:
        konghq.com/protocol: "https"
        cloud.google.com/neg: '{"exposed_ports": {"80":{"name": "neg-kong-green"}}}'
      http:
        enabled: true
        servicePort: 80
        containerPort: 8000
        parameters: []
      tls:
        enabled: true
        servicePort: 443
        containerPort: 8443
        parameters:
          - http2
        appProtocol: ""

    ingressController:
      enabled: false

    postgresql:
      enabled: false

    env:
      role: traditional
      database: "off"
      proxy_access_log: "off"
#      proxy_error_log: "off"
      proxy_stream_access_log: "off"
#      proxy_stream_error_log: "off"
      admin_access_log: "off"
#      admin_error_log: "off"
      status_access_log: "off"
#      status_error_log: "off"
      log_level: warn
      headers: "off"
      request_debug: "off"

Expected Behavior
kong gateway pods, either

don't fail with the error above bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
or at least are able to recover from it by failing the liveness probe (or else)

Steps To Reproduce
I could reproduce the error by killing the nodes (kubectl delete nodes) on which the kong pods were running. After killing the nodes, KIC fails to restart as it enters the deadlock situation described above. See screenshot:

Anything else?
dump of a failing gateway pod: kubectl describe:
k -n kong-dbless describe po kong-green-gateway-68f467ff98-qztm5
Name:             kong-green-gateway-68f467ff98-qztm5
Namespace:        kong-dbless
Priority:         0
Service Account:  kong-green-gateway
Node:             ---
Start Time:       Mon, 07 Oct 2024 13:49:02 +0200
Labels:           app=kong-green-gateway
                  app.kubernetes.io/component=app
                  app.kubernetes.io/instance=kong-green
                  app.kubernetes.io/managed-by=Helm
                  app.kubernetes.io/name=gateway
                  app.kubernetes.io/version=3.6
                  helm.sh/chart=gateway-2.41.1
                  pod-template-hash=68f467ff98
                  version=3.6
Annotations:      cni.projectcalico.org/containerID:<PHONE_NUMBER>3403e75b1ddb3ef661b5665f69e3b97c266b5833042f8dc4a4f39b
                  cni.projectcalico.org/podIP: <IP_ADDRESS>/32
                  cni.projectcalico.org/podIPs: <IP_ADDRESS>/32
                  kuma.io/gateway: enabled
                  kuma.io/service-account-token-volume: kong-green-gateway-token
                  sidecar.istio.io/inject: false
                  traffic.sidecar.istio.io/includeInboundPorts:
Status:           Running
IP:               <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  ReplicaSet/kong-green-gateway-68f467ff98
Init Containers:
  clear-stale-pid:
    Container ID:    containerd://ed0b35719cd87e11e849b42f20f1f328b1e2d63612d004b313ba981eda0bd790
    Image:           kong:3.8.0
    Image ID:        docker.io/library/kong@sha256:616b2ab5a4c7b6c14022e8a1495ff34930ced76f25f3d418e76758717fec335f
    Port:            <none>
    Host Port:       <none>
    SeccompProfile:  RuntimeDefault
    Command:
      rm
      -vrf
      $KONG_PREFIX/pids
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Mon, 07 Oct 2024 13:49:20 +0200
      Finished:     Mon, 07 Oct 2024 13:49:21 +0200
    Ready:          True
    Restart Count:  0
    Limits:
      memory:  2G
    Requests:
      cpu:     250m
      memory:  500Mi
    Environment:
      KONG_ADMIN_ACCESS_LOG:         /dev/stdout
      KONG_ADMIN_ERROR_LOG:          /dev/stderr
      KONG_ADMIN_GUI_ACCESS_LOG:     /dev/stdout
      KONG_ADMIN_GUI_ERROR_LOG:      /dev/stderr
      KONG_ADMIN_LISTEN:             <IP_ADDRESS>:8444 http2 ssl, [::]:8444 http2 ssl
      KONG_CLUSTER_LISTEN:           off
      KONG_DATABASE:                 off
      KONG_LUA_PACKAGE_PATH:         /opt/?.lua;/opt/?/init.lua;;
      KONG_NGINX_WORKER_PROCESSES:   2
      KONG_PLUGINS:                  ---
      KONG_PORTAL_API_ACCESS_LOG:    /dev/stdout
      KONG_PORTAL_API_ERROR_LOG:     /dev/stderr
      KONG_PORT_MAPS:                80:8000, 443:8443
      KONG_PREFIX:                   /kong_prefix/
      KONG_PROXY_ACCESS_LOG:         /dev/stdout
      KONG_PROXY_ERROR_LOG:          /dev/stderr
      KONG_PROXY_LISTEN:             <IP_ADDRESS>:8000, [::]:8000, <IP_ADDRESS>:8443 http2 ssl, [::]:8443 http2 ssl
      KONG_PROXY_STREAM_ACCESS_LOG:  /dev/stdout basic
      KONG_PROXY_STREAM_ERROR_LOG:   /dev/stderr
      KONG_ROLE:                     traditional
      KONG_ROUTER_FLAVOR:            traditional
      KONG_STATUS_ACCESS_LOG:        off
      KONG_STATUS_ERROR_LOG:         /dev/stderr
      KONG_STATUS_LISTEN:            <IP_ADDRESS>:8100, [::]:8100
      KONG_STREAM_LISTEN:            off
    Mounts:
      /kong_prefix/ from kong-green-gateway-prefix-dir (rw)
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /tmp from kong-green-gateway-tmp (rw)
Containers:
  proxy:
    Container ID:    containerd://0ed944478d25423c08c85146ed1528ae668d128f13bddaf6402990701e2ea3a1
    Image:           kong:3.8.0
    Image ID:        docker.io/library/kong@sha256:616b2ab5a4c7b6c14022e8a1495ff34930ced76f25f3d418e76758717fec335f
    Ports:           8444/TCP, 8000/TCP, 8443/TCP, 8100/TCP
    Host Ports:      0/TCP, 0/TCP, 0/TCP, 0/TCP
    SeccompProfile:  RuntimeDefault
    State:           Waiting
      Reason:        CrashLoopBackOff
    Last State:      Terminated
      Reason:        Error
      Exit Code:     1
      Started:       Mon, 07 Oct 2024 13:59:39 +0200
      Finished:      Mon, 07 Oct 2024 13:59:49 +0200
    Ready:           False
    Restart Count:   7
    Limits:
      memory:  2G
    Requests:
      cpu:      250m
      memory:   500Mi
    Liveness:   http-get http://:status/status delay=5s timeout=5s period=10s #success=1 #failure=3
    Readiness:  http-get http://:status/status/ready delay=5s timeout=5s period=10s #success=1 #failure=3
    Environment:
      KONG_ADMIN_ACCESS_LOG:         /dev/stdout
      KONG_ADMIN_ERROR_LOG:          /dev/stderr
      KONG_ADMIN_GUI_ACCESS_LOG:     /dev/stdout
      KONG_ADMIN_GUI_ERROR_LOG:      /dev/stderr
      KONG_ADMIN_LISTEN:             <IP_ADDRESS>:8444 http2 ssl, [::]:8444 http2 ssl
      KONG_CLUSTER_LISTEN:           off
      KONG_DATABASE:                 off
      KONG_LUA_PACKAGE_PATH:         /opt/?.lua;/opt/?/init.lua;;
      KONG_NGINX_WORKER_PROCESSES:   2
      KONG_PLUGINS:                 ---
      KONG_PORTAL_API_ACCESS_LOG:    /dev/stdout
      KONG_PORTAL_API_ERROR_LOG:     /dev/stderr
      KONG_PORT_MAPS:                80:8000, 443:8443
      KONG_PREFIX:                   /kong_prefix/
      KONG_PROXY_ACCESS_LOG:         /dev/stdout
      KONG_PROXY_ERROR_LOG:          /dev/stderr
      KONG_PROXY_LISTEN:             <IP_ADDRESS>:8000, [::]:8000, <IP_ADDRESS>:8443 http2 ssl, [::]:8443 http2 ssl
      KONG_PROXY_STREAM_ACCESS_LOG:  /dev/stdout basic
      KONG_PROXY_STREAM_ERROR_LOG:   /dev/stderr
      KONG_ROLE:                     traditional
      KONG_ROUTER_FLAVOR:            traditional
      KONG_STATUS_ACCESS_LOG:        off
      KONG_STATUS_ERROR_LOG:         /dev/stderr
      KONG_STATUS_LISTEN:            <IP_ADDRESS>:8100, [::]:8100
      KONG_STREAM_LISTEN:            off
      KONG_NGINX_DAEMON:             off
    Mounts:
      /kong_prefix/ from kong-green-gateway-prefix-dir (rw)
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /opt/kong/plugins/---
      /tmp from kong-green-gateway-tmp (rw)
Readiness Gates:
  Type                                       Status
  cloud.google.com/load-balancer-neg-ready   True
Conditions:
  Type                                       Status
  cloud.google.com/load-balancer-neg-ready   True
  PodReadyToStartContainers                  True
  Initialized                                True
  Ready                                      False
  ContainersReady                            False
  PodScheduled                               True
Volumes:
  kong-green-gateway-prefix-dir:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  256Mi
  kong-green-gateway-tmp:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  1Gi
  kong-green-gateway-token:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason                             Age                    From                                   Message
  ----     ------                             ----                   ----                                   -------
  Normal   Killing                            11m                    kubelet                                Container proxy failed liveness probe, will be restarted
  Warning  FailedPreStopHook                  10m                    kubelet                                PreStopHook failed
  Normal   Pulled                             10m (x2 over 11m)      kubelet                                Container image "kong:3.8.0" already present on machine
  Normal   Created                            10m (x2 over 11m)      kubelet                                Created container proxy
  Normal   Started                            10m (x2 over 11m)      kubelet                                Started container proxy
  Warning  Unhealthy                          10m (x4 over 11m)      kubelet                                Liveness probe failed: Get "http://<IP_ADDRESS>:8100/status": dial tcp <IP_ADDRESS>:8100: connect: connection refused
  Warning  Unhealthy                          10m (x9 over 11m)      kubelet                                Readiness probe failed: Get "http://<IP_ADDRESS>:8100/status/ready": dial tcp <IP_ADDRESS>:8100: connect: connection refused
  Warning  BackOff                            114s (x26 over 7m19s)  kubelet                                Back-off restarting failed container proxy in pod kong-green-gateway-68f467ff98-qztm5_kong-dbless(ab152a94-7ef0-4de0-b84c-1eb419327b88)

and logs
2024/10/07 12:05:10 [warn] 1#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /kong_prefix/nginx.conf:7
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /kong_prefix/nginx.conf:7
2024/10/07 12:05:14 [notice] 1#0: [lua] init.lua:791: init(): [request-debug] token for request debugging: ccbb05a0-6e76-4cb7-9e5d-346690a3c69f
2024/10/07 12:05:14 [emerg] 1#0: bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
nginx: [emerg] bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
2024/10/07 12:05:14 [notice] 1#0: try again to bind() after 500ms
2024/10/07 12:05:14 [emerg] 1#0: bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
nginx: [emerg] bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
2024/10/07 12:05:14 [notice] 1#0: try again to bind() after 500ms
2024/10/07 12:05:14 [emerg] 1#0: bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
nginx: [emerg] bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
2024/10/07 12:05:14 [notice] 1#0: try again to bind() after 500ms
2024/10/07 12:05:14 [emerg] 1#0: bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
nginx: [emerg] bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
2024/10/07 12:05:14 [notice] 1#0: try again to bind() after 500ms
2024/10/07 12:05:14 [emerg] 1#0: bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
nginx: [emerg] bind() to unix:/kong_prefix/sockets/we failed (98: Address already in use)
2024/10/07 12:05:14 [notice] 1#0: try again to bind() after 500ms
2024/10/07 12:05:14 [emerg] 1#0: still could not bind()
nginx: [emerg] still could not bind()

It seems your issue has been resolved. Feel free to reopen if you have any further concern.

thanks @StarlightIbuki for taking this issue. However, your answer doesn't help much. Could you please point me to the resolution ? How has this issue been solved ? And what's the fix ?
Thank you in advance

Sorry I thought you had found the solution. @randmonkey Could you also take a look into this?

The /kong_prefix/sockets/we is the path of the socket for worker events. The old socket may not get cleared because the clear-stale-pid does not touch the path /kong_prefix/sockets/

a gateway pod starts (fresh new pod)
the controller fails to push the config (due to discovery and potentially DNS issues in GKE)
the gateway pods is therefore not healthy
the liveness probe fails
GKE restarts the container
the PID is not cleaned (or whatever else)
the container fails with "address already in use"
the container never recovers, less killed manually with a kubectl delete

5-8 would be the possible reason of the issue. For 1-4, KIC failing to push the config will not make the liveness probe fail and then restart the gateway pod.
@StarlightIbuki One thing I am not clear in this issue: In the gateway pod that is already started, I cannot find the /kong_prefix/sockets directory. But I can find a /kong_prefix/worker_event.sock. Where did the socket on path /kong_prefix/sockets/we go after kong initialized? I think the details about the sockets in the initialization procedure could help for solving the issue.

:wave: I think I have some insight on this. In 3.8, we relocated Kong's internal sockets into a subdirectory in the prefix tree (#13409).
There is some code that runs as part of kong start that cleans up dangling sockets that might be left over from an unclean shutdown of Kong.
This logic is unfortunately duplicated in our docker entrypoint script because it circumvents kong start and invokes nginx directly.
The docker entrypoint code was not updated to point to the new socket directory that Kong is using as of 3.8 (an oversight). I've opened a PR to remedy this, which I think should resolve the issue.

For those using the clear-stale-pid init container pattern that I see in some of the comments, it can be updated to remove $KONG_PREFIX/sockets (in addition to $KONG_PREFIX/pids) to mitigate the issue in the meantime.* The docker entrypoint runs kong prepare, so it will recreate the sockets directory as needed.
*In fact, enabling this kind of ops pattern in 3.8 was part of the underlying intent of #13409: establishing more segregation between persistent and transient data so that lifecycle management doesn't require non-trivial amounts of scripting (like what is found in the aforementioned docker entrypoint).

@joran-fonjallaz that's odd.
My k8s knowledge is minimal, so bear with me a little. If /kong_prefix/sockets still exists and contains sockets when starting the primary Kong container, I feel like these are the probable causes to investigate:

The Kong container is started before the init container has completed
The init container was not actually executed
The init container encountered an error
The volume that is mounted in the init container (kong-green-gateway-prefix-dir) is not the same as the one that is mounted in the Kong container
Something else (another container?) is creating socket files in kong-green-gateway-prefix-dir after the init container but before the Kong container


MINOR: KAFKA-3260 follow up, fix commitRecord calls in tests

@hachikuji @jcustenborder @gwenshap Turns out KAFKA-3260's tests did have an error -- they were trying to assert the exact number of times SourceTask.commitRecord be invoked. Just like the producer callbacks in those tests, you can't actually rely on an exact number because the polling is happening in another thread.
This fix adjusts the tests so the producer callbacks and subsequent SourceTask.commitRecord calls are handled in the same way. Ideally we'd also be able to check that they were invoked the same number of times. The errors seem to currently be masked because exceptions about incorrect mock method calls were getting eaten up by the WorkerSourceTask thread, and not reported to the main test thread.
Longer term, it probably makes more sense to try to test each of the threads independently so we don't run into these issues, but this should correct the immediate issue for tests.

LGTM.


webpackExclude doesn't work

Bug report
What is the current behavior?
Given a dynamic import like this:
const CompanyEdit = universal(/* webpackExclude: /(__generated__|__tests__)/ */ import('comps/Company/Edit'));

It does not exclude the files matching the pattern from the chunk generation. Here is a sample output from the manifest.json of the files that match the following pattern and are generated by this import
public/__generated__-GetKey.chunk-647967baa76de181db7c.js
public/__generated__-GetKey.chunk-647967baa76de181db7c.js.map
public/__generated__-RegenKey.chunk-4f4202d851a015422d6d.js
public/__generated__-RegenKey.chunk-4f4202d851a015422d6d.js.map
public/__generated__-updateCompany.chunk-c3ad3a2c0a71b001bb29.js
public/__generated__-updateCompany.chunk-c3ad3a2c0a71b001bb29.js.map
public/__tests__-AccessKeyManager-test.chunk-bed6e34b29ee6fbd5d72.js
public/__tests__-AccessKeyManager-test.chunk-bed6e34b29ee6fbd5d72.js.map
public/__tests__-__snapshots__-AccessKeyManager-test-js-snap.chunk-07f6461ec4547a0878ef.js
public/__tests__-__snapshots__-AccessKeyManager-test-js-snap.chunk-07f6461ec4547a0878ef.js.map

What is the expected behavior?
It is expected to exclude these files from the manifest.

Other relevant information:
webpack version:  4.41.0
Node.js version: 8.x.x
Operating System: Mac OS

You have to put it into the import()
universal(import(/* webpackExclude: /(__generated__|__tests__)/ */ 'comps/Company/Edit'));

My code example above was wrong. This is what it actually looks like:
const CompanyEdit = universal(
  import(
    /* webpackExclude: /(__generated__|__tests__)/ */
    'comps/Company/Edit'
  ),
  opts
);

This issue is discussed on this thread as well.


Bad getPerpendicularVector usage

This particular method of generating a perpendicular vector doesn't return a unit vector in most cases, so the following line (as well as line 137) should normalize() the result, otherwise you'll end up with a different distribution of rays than the one that's intended:
https://github.com/NVIDIAGameWorks/GettingStartedWithRTXRayTracing/blob/f1946147ea50987efd4e897d8bb996e2f8bc99df/12-DiffuseGlobalIllumination/Data/Tutorial12/simpleDiffuseGIUtils.hlsli#L121
This is just something I happened across while skimming the code quickly, so I haven't looked for other uses elsewhere in this sample or the others.
It's maybe not a horrendous error, since a quick test suggests that the mean norm is ~0.96, but the worse case can be ~0.82.

Thanks, good catch. I think you're right, that the vector is perpendicular but unnormalized from getPerpendicularVector() - makes sense. That function makes a non-parallel vector 1,0,0, or 0,1,0, or 0,0,1 and crosses it with the input vector. Unless the input vector is also axis-aligned, the resulting vector won't be one unit long, like you say.
I've asked the author to take a look.

The same issue was fixed in Falcor's implementation (perp_stark) in 4.4: https://github.com/NVIDIAGameWorks/Falcor/pull/278
Code here:
https://github.com/NVIDIAGameWorks/Falcor/blob/5236495554f57a734cc815522d95ae9a7dfe458a/Source/Falcor/Utils/Math/MathHelpers.h#L42-L54


Format markdown in TOC by default

Fixes https://github.com/Oktavilla/markdown-it-table-of-contents/issues/19
Problem
Currently, markdown is not rendered within the TOC. Given the following markdown text:
# My **bold** title

The TOC should render as:

My bold title

But instead is rendered showing the raw markdown syntax:

My **bold** title

For more details and discussion around this change, see https://github.com/Oktavilla/markdown-it-table-of-contents/issues/19.
Solution
As suggested in https://github.com/Oktavilla/markdown-it-table-of-contents/issues/19, I have updated the default behavior to always format markdown within the TOC.
Additional notes

My text editor automatically removed the trailing whitespace. So the diff is a little noisy – sorry about that.
I had to update several of the fixture, replacing 1 with <span>1</span>. But this change is actually an improvement, imo. By default, markdown-it escapes raw HTML unless you pass html: true. With my change markdown-it-table-of-contents now also follows this config option (i.e. if you set html: true then HTML will reader, otherwise it will be escaped).

Conflict with forceFullToc?
Unfortunately, this change seems to conflict with the forceFullToc option. The test suite overflows in an endless loop (see inline code comment). This should be fixable? Honestly, I was having a little trouble understanding the code in this area.
 I'd appreciate any advice / suggestion to keep forceFullToc working as before.
Thanks again for creating this library!

Sounds good @coryschires !
@GiridharanNarayanan do you think you could help out here as it seems @coryschires has run into some issues with some aspect of forceFullToc that you've contributed.

Hey, wanted to follow up with another possible solution. Not as good, imo. But worth mentioning.
Rather than parse markdown by default, we could at least expose the md object as the second argument to the format function. This way, users could at least process the markdown using the internal renderer. That would solve my problem and only require that I add one extra line of configuration to my code (i.e overwriting the format function).
This solution would probably un-block this PR because the default behavior would no longer conflict with forceFullToc – so that's good. But, at least imo, it would be a poor tradeoff. I think the TOC should support markdown by default and having that feature is more beneficial than supporting an unconventionally nested header hierarchy (which, afaict, is the goal of forceFullToc).
Anyway, if you'd like to move forward with this idea, let me know and I will update the PR accordingly.

@coryschires , Apologies for late response. I am a bit held up with deliverables at work. You could go ahead with your new solution if @martinlissmyr is fine with it. By next week I should have time to have a look at this and I can try to fix the issue and make the MD rendering a default.

I think that the original intention here, to parse markdown per default, is better. If you @coryschires  think it's fine to wait for @GiridharanNarayanan to fix any conflicting issues I would prefer that as I believe it makes things a bit less brittle.

Sure. I don't mind waiting. No rush as I can always point to my branch in the meantime.

Hi @martinlissmyr,
As mentioned above, I decided to point to my branch locally, as that fixes the bug on my end.
Unfortunately, along the way, I encountered another issue: My JS tests were failing, complaining about const. This error helped me notice that you updated to ES6 syntax as part of the 0.4.0 release.
ES6 is, of course, a huge improvement. However, in my experience, libraries normally transpile ES6 and thus expose an ES5 version for use by clients applications. For example, markdown-it-footnote uses browserify to transpile an ES5 version to dist/.
To workaround this issue, I have updated by PR and removed all ES6 syntax (i.e. =>, const, let, and backticks). So I'm good to go.
However, I think this library could be improved by doing either:

Remove all ES6 syntax so that transpilation is not necessary (i.e. what I have done in my PR).
Transpile markdown-it-table-of-contents using Babel or Browserify or whatever. Should only be a few additional lines of code.

Are you open to either of these solutions? Changes could be in this pull request or in a separate PR.

@coryschires My intention was for this to be used in Node, so for me ES6 was fine. Didn't think further than that :)
However, as using ES6 doesn't really "do" anything I'm open to just revert that as you've done... Could you do it in a separate PR? If so I'm glad to merge it right away.

Is this still being considered? I'm using ToC in a code-heavy repo, and don't want to lose code formatting in my headings. Would love to see this merged.

Well, this PR became rather messy and confusing. Not sure where it stands right now. If you are willing to clean it up, make sure tests pass and so on I can merge it.

Hey. I can take a fresh look at this PR. It's been a while but the changes are still relevant / needed, imo. I'll follow up once I have things cleaned up.

I have updated this PR and it is now synced with the latest master. Because there's been quite a bit of discussion on this thread, I will recap the significant changes in the hope of getting this merged quickly.
1. Update code to use ES5 syntax
As you can see in the above discussion, I think this project would be improved by migrating to plain ol' ES5 syntax. This ensures interoperability between node and browser environments. While I'm sure everyone agrees modern ES syntax is a huge improvement, I don't think it's a good trade off for this project given its small size.
Alternatively, you could transpile ES6 and expose an ES5 version for use by clients applications. This is the pattern used by other markdown-it extensions such as markdown-it-footnote. This would give the best of both worlds – i.e. interoperability and modern syntax – but would also require additional tooling which, imo, felt overkill given the smallness of this project.
Unfortunately, these changes do make the PR a bit noisy – but not too bad imo. If someone wants to make a separate PR dedicated to this change, that may be a good idea. That said, I think the PR is still legible (again, just my opinion) and I'm not interested in dividing this work into two separate PRs.
2. Updates the existing format option to render markdown by default
This is the most significant and important change. In my opinion, the current behavior – not rendering markdown in TOC headers – is plainly a bug. Similar markdown-it extensions render markdown by default. For example, when using markdown-it-footnote, if the footnote text includes markdown formatting, then the text will be automatically formatted as expected.
Similarly, I would expect formatting rules to inherit form my markdown-it configuration. For example, if I instruct markdown-it to escape HTML, then HTML should also be escaped when markdown-it-table-of-contents renders headings. Currently, that is not the case which is surprising and wrong (at least based on the behavior of similar extensions).
By updating the default behavior to use the markdown-it internal renderer, we fix all these issues with a single, easy change. Furthermore, I've added the renderer itself as a second argument of the format function. This way, users can override the existing behavior while still running the text thru the official rendered if they need. (FWIW, I am using this feature in my own use case.)
Remove support for forceFullToc option
Finally, as I mentioned above, the tests for forceFullToc conflict with markdown rendering. While the forceFullToc code is a bit obscure, I think I was able to determine the root cause. Essentially, the forceFullToc works by counting tokens to control a while loop. If you enable markdown formatting, new tokens are added to the markdown-it AST (which makes sense). As a result, the while loop never exits, causing the test suite to hang indefinitely.
My "solution" is to remove the forceFullToc option. In my opinion, this option is a little odd (i.e. should this extension support invalidly ordered headings?). Additionally, if we must choose between forceFullToc and markdown formatting, then I think markdown formatting is a much more important feature.
That said, I understand this suggestion / change may be controversial. And that's okay with me. I'm not saying I'm right – it's just my opinion. In any event, I am happily using a fork. Of course, I would like to merge these changes and drop my fork, but if you don't want to merge, I can live with that.
Thanks for all your work on this extension! We've been using it for years and has worked very well for us.

Great work @coryschires! Thanks!

Update code to use ES5 syntax

I buy your arguments! I agree.

Updates the existing format option to render markdown by default

👍

Remove support for forceFullToc option

I agree it's a weird one... I'm fine with dropping support for this option. I'm just going to up the version number to reflect it's abraking change.
If you have nothing more to add I'm going to merge and release this soon!

That's great news!
Thanks for accepting my changes!


Comments on helpers passed through when running codeceptjs def

What are you trying to achieve?
Comments on helpers passed through when running codeceptjs def
When i define a helper I can define some JS Doc:
/**
 * It does the thing
 * @param {String} thing
 */
function doThing(thing) {
    this.amOnPage('https://github.com');
    this.see('GitHub');
}
module.exports.doThing = doThing;

When i run codeceptjs def

The param type has been correctly passed through but my comment is missing.
Why is this useful?
If i manually put some documentation in:

Then in an editor, e.g. VSCode I get useful documentation about the purpose of the method.

Is this possible? does anyone have any thoughts on whether it would be possible to support this?

Closing as will be fixed by #1717


ADAP-464: Add allow_non_incremental_definition option to BigQuery materialized views

Closes #672.
Problem

Non-incremental materialized views are much more flexible than incremental and have a lot of uses: see e.g. https://medium.com/google-cloud/hidden-gems-of-bigquery-part-4-five-types-of-views-ddfbc05118fb#bc99
Solution

Add allow_non_incremental_definition flag following the pattern for other fields. The only wrinkle is that the Python client library doesn't yet have a property for this variable, so it's being pulled directly from the properties dict instead.
I'm assuming the existing tests for materialized views will exercise this property as well (with the default False), if it seems necessary to add a special test with the flag set to True let me know.
Checklist

[x] I have read the contributing guide and understand what's expected of me
[x] I have run this code in development and it appears to resolve the stated issue
[x] This PR includes tests, or tests are not required/relevant for this PR
[x] This PR has no interface changes (e.g. macros, cli, logs, json artifacts, config files, adapter interface, etc) or this PR has already received feedback and approval from Product or DX

One more question @mikealfare, as the issue mentions this flag can't be set via ALTER, only CREATE. Could you point me to where these distinctions are encoded?

Lifecycle : default except Refresh is bypassed if auto_refresh
on_configuration_change.apply : enable_refresh/refresh_interval_minutes/max_staleness via ALTER, rest via DROP/CREATE

One more question @mikealfare, as the issue mentions this flag can't be set via ALTER, only CREATE. Could you point me to where these distinctions are encoded?

Lifecycle : default except Refresh is bypassed if auto_refresh
on_configuration_change.apply : enable_refresh/refresh_interval_minutes/max_staleness via ALTER, rest via DROP/CREATE

Good catch, I missed this. This complicates things. This basically means if the value changes, you'll need a full refresh to re-create the materialized view. There's a change object that has a requires_full_refresh calculated property here: https://github.com/dbt-labs/dbt-bigquery/blob/bf30b66bab0e96dd4d100f45c2818daa5dde456d/dbt/adapters/bigquery/relation_configs/_options.py#L153-L158. Prior to this PR, all options changes were able to be changed on existing objects, hence the hard-coded False. Now we need to see if that changed. The problem is that this object only has the new options on it. These get set here: https://github.com/dbt-labs/dbt-bigquery/blob/bf30b66bab0e96dd4d100f45c2818daa5dde456d/dbt/adapters/bigquery/relation.py#L80-L84. The approach I would take is to set the action to be alter if this new option does not change, or set it to be create if it does (in the relation file). Then condition on the action in the calculated property in requires_full_refresh to determine if a full refresh is necessary. Beyond that, I'm not sure what will happen if you submit an alter statement with this setting, even if it's the same. So you might need to pop off this option before passing it to the alter template (but not before passing it to the create template).

Also, given that this option acts differently and should generate a full refresh, we should add a test for that. You could see how I did that here: https://github.com/dbt-labs/dbt-bigquery/blob/main/tests/functional/adapter/materialized_view_tests/test_materialized_view_cluster_changes.py. Basically swap out the clustering-related pieces for the new setting.

Seems doable, one other thing I'm hitting is that max_staleness is currently ignored (always parsed as None), it's present on the Python table object but as a JSON string representation that can convert to a relativedelta. The standard way a user would define it though would just be like INTERVAL 60 MINUTES, not 0-0 60:0:0. The interval literal rules seem a bit complicated https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#interval_type, is there anywhere that handles this kind of thing already or would comparing user- and BQ API-provided intervals be a new addition here?

Seems doable, one other thing I'm hitting is that max_staleness is currently ignored (always parsed as None), it's present on the Python table object but as a JSON string representation that can convert to a relativedelta. The standard way a user would define it though would just be like INTERVAL 60 MINUTES, not 0-0 60:0:0. The interval literal rules seem a bit complicated https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#interval_type, is there anywhere that handles this kind of thing already or would comparing user- and BQ API-provided intervals be a new addition here?

No, there's nowhere that handles this, and I believe the issue you identified (the complexity) is why we moved forward while excluding it from the comparison. I haven't finished the docs for 1.7 yet, but that's certainly a caveat. The workaround is to use --full-refresh.

Hi guys,
Thank you so much for this pull request.
Do you have any updates if this change is going to be merged soon? =)
Thanks

This PR will be continued in https://github.com/dbt-labs/dbt-bigquery/pull/1255. I'm closing this to avoid confusion, however the work will continue. Please refer to #1255 moving forward.


Add "Red Queen" position based velocity mode

Set a velocity for the Motor with no time parameter and use interpolated increments to calculate a trajectory to follow. The motor will follow the trajectory at the desired speed for an indeterminate amount of time.

stopping and starting needs some attention still


hideTab and tabVisibility function has no effect

This is  a bug | feature request.

Prerequisites

[x ] Are you running the latest version?
[x] Are you reporting to the correct repository?
(enso is made of many specialized packages: https://github.com/laravel-enso)
[x ] Did you check the documentation?
[ ] Did you perform a cursory search?

Description
hideTab and tabVisibility function has no effect, How it works
Steps to Reproduce
class SomeForm
public function create()
{
return $this->form
->hideTab('SomeTab')
->tabVisibility('SomeTab',true)
->create();
}
create.vue
....
methods:{
showSomeTab: function(event){
this.$ref.form.tab('SomeTab').tabVisibility = true;
}
Expected behavior
Actual behavior
hideTab and tabVisibility function has no effect

@kitcChu this belongs to the forms repo. Please reopen there.


Accessibility: Tab Index / Tab Order

The Tab Index / Tab order through the platform is often missing, -1 or 0.
This creates large problems for a user who navigates the page with their keyboard.  usually most accessibility uses can be mitigated with basic tabbing can function.  Without the tabbing it becomes problematic very quickly.
DataGrid needs works for support tabbing better.  But Bigger issue with the Frame of the Platform.  Taking through a page jumps the under around in an un-ordered way.

Great tool to check tab order is http://chrispederick.com/work/web-developer/
Once installed, go to the tool and select the Information Tab and there is a option to view tab order.


Add support for YoLink Siren

Describe the solution you'd like:
Add support for YoLink Siren

Sample device json...
{
	"deviceId": "xx",
	"deviceUDID": "xx",
	"name": "Siren Alarm",
	"token": "xx",
	"type": "Siren",
	"parentDeviceId": null
}

This was generated by setting the alarm state through the yolink app and then disabling the alarm state.
[8/10/2022, 2:16:03 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.getState","time":1660155363764,"msgid":"1660155363763","data":{"state":"normal","soundLevel":3,"battery":4,"powerSupply":"usb","alarmDuation":30,"version":"030a","mute":true,"loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/10/2022, 2:16:03 PM] [YoLink] Received mqtt message 'Siren.getState' for device: Siren Alarm (d88b4c010003b80d) State: 'normal'
[8/10/2022, 2:16:03 PM] [YoLink] Unsupported mqtt event: 'Siren.getState'
Please report at https://github.com/dkerr64/homebridge-yolink/issues
{"event":"Siren.getState","time":1660155363764,"msgid":"1660155363763","data":{"state":"normal","soundLevel":3,"battery":4,"powerSupply":"usb","alarmDuation":30,"version":"030a","mute":true,"loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/10/2022, 2:16:13 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.setState","time":1660155373129,"msgid":"1660155373128","data":{"state":"alert","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/10/2022, 2:16:13 PM] [YoLink] Received mqtt message 'Siren.setState' for device: Siren Alarm (d88b4c010003b80d) State: 'alert'
[8/10/2022, 2:16:13 PM] [YoLink] Unsupported mqtt event: 'Siren.setState'
Please report at https://github.com/dkerr64/homebridge-yolink/issues
{"event":"Siren.setState","time":1660155373129,"msgid":"1660155373128","data":{"state":"alert","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/10/2022, 2:16:15 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.setState","time":1660155375155,"msgid":"1660155375154","data":{"state":"normal","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/10/2022, 2:16:15 PM] [YoLink] Received mqtt message 'Siren.setState' for device: Siren Alarm (d88b4c010003b80d) State: 'normal'
[8/10/2022, 2:16:15 PM] [YoLink] Unsupported mqtt event: 'Siren.setState'
Please report at https://github.com/dkerr64/homebridge-yolink/issues
{"event":"Siren.setState","time":1660155375155,"msgid":"1660155375154","data":{"state":"normal","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/10/2022, 2:17:08 PM]

Can you try version 1.0.9 that I just published please.  You will need "enableExperimental": true in the config file.  Hopefully you will be able to trigger the siren from HomeKit, and also it should show state if triggered from another source (ie, from YoLink app).  In theory at least, but as I don't have one I can't test.
I implemented this as a HomeKit "switch" as there is no "siren" in HomeKit.  There is concept of a security system in HomeKit but that is far more complex and doesn't fit for just enabling the YoLink siren.  So simply being able to "switch" the siren on and off, and monitor it, feels like the right approach.
I would like a log that captures all the SENDING: and RECEIVED: messages when you turn siren on/off from HomeKit please. You will need debug enabled to get that.
THANK YOU !!!

I believe "switch" is the correct type as the only function the alarm app button and keyfob button are to start and stop the alarm.
I can disable an active siren with homekit, but I cannot start the siren. I have a variety of logs for your viewing pleasure and I included a scrubbed full log from the first trial.
This is from the YoLink App with just bring up the alarm button and then start/stop:
With the Alarm not active, when I bring up the app, it gets the current state and will enable and then disable the siren.
[8/11/2022, 8:55:47 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.getState","time":1660265747272,"msgid":"1660265747272","data":{"state":"normal","soundLevel":3,"battery":4,"powerSupply":"usb","alarmDuation":30,"version":"030a","mute":true,"loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/11/2022, 8:55:47 PM] [YoLink] Received mqtt message 'Siren.getState' for device: Siren Alarm (d88b4c010003b80d) State: 'normal'
[8/11/2022, 8:55:52 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.setState","time":1660265752180,"msgid":"1660265752179","data":{"state":"alert","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/11/2022, 8:55:52 PM] [YoLink] Received mqtt message 'Siren.setState' for device: Siren Alarm (d88b4c010003b80d) State: 'alert'
[8/11/2022, 8:55:54 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.setState","time":1660265754201,"msgid":"1660265754200","data":{"state":"normal","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/11/2022, 8:55:54 PM] [YoLink] Received mqtt message 'Siren.setState' for device: Siren Alarm (d88b4c010003b80d) State: 'normal'
From HomeKit I have attempted to start and stop the siren with the siren currently off. Note, the siren never engaged.
[8/11/2022, 8:57:36 PM] [YoLink] setDeviceState for Siren Alarm (d88b4c010003b80d)
[8/11/2022, 8:57:36 PM] [YoLink] YoLinkAPI.setDeviceState for 'Siren Alarm' (d88b4c010003b80d)
[8/11/2022, 8:57:36 PM] [YoLink] YoLinkAPI.getAccessToken
[8/11/2022, 8:57:36 PM] [YoLink] SENDING:
{"time":1660265856,"method":"Siren.setState","targetDevice":"d88b4c010003b80d","token":"EB858E536361E5825980798770F30D69","params":{"state":true}}
[8/11/2022, 8:57:36 PM] [YoLink] RECEIVED:
{"code":"000000","time":1660265856597,"msgid":1660265856597,"method":"Siren.setState","desc":"Success","data":{"state":"normal","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}}}
[8/11/2022, 8:57:39 PM] [YoLink] setDeviceState for Siren Alarm (d88b4c010003b80d)
[8/11/2022, 8:57:39 PM] [YoLink] YoLinkAPI.setDeviceState for 'Siren Alarm' (d88b4c010003b80d)
[8/11/2022, 8:57:39 PM] [YoLink] YoLinkAPI.getAccessToken
[8/11/2022, 8:57:39 PM] [YoLink] SENDING:
{"time":1660265859,"method":"Siren.setState","targetDevice":"d88b4c010003b80d","token":"EB858E536361E5825980798770F30D69","params":{"state":false}}
[8/11/2022, 8:57:40 PM] [YoLink] RECEIVED:
{"code":"000000","time":1660265860202,"msgid":1660265860202,"method":"Siren.setState","desc":"Success","data":{"state":"normal","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}}}
Now, I'm going to set a siren with the App and then disable it with homekit.
[8/11/2022, 8:58:53 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c0200055501/report
{"event":"THSensor.Report","time":1660265933836,"msgid":"1660265933835","data":{"state":"normal","alarm":{"lowBattery":false,"lowTemp":false,"highTemp":false,"lowHumidity":false,"highHumidity":false,"period":false,"code":0},"battery":4,"mode":"f","interval":0,"temperature":-17.4,"humidity":48.6,"tempLimit":{"max":35,"min":-1000},"humidityLimit":{"max":100,"min":0},"tempCorrection":0,"humidityCorrection":0,"version":"0392","loraInfo":{"signal":-77,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c0200055501"}
[8/11/2022, 8:58:53 PM] [YoLink] Received mqtt message 'THSensor.Report' for device: Kitchen Freezer Thermostat (d88b4c0200055501) State: 'normal'
[8/11/2022, 8:58:56 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.setState","time":1660265936781,"msgid":"1660265936780","data":{"state":"alert","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/11/2022, 8:58:56 PM] [YoLink] Received mqtt message 'Siren.setState' for device: Siren Alarm (d88b4c010003b80d) State: 'alert'
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Front Gate (d88b4c010003e4d9) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Front Gate (d88b4c010003e4d9) is: closed
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Dining Room Motion Sensor (d88b4c0200024a1d) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Dining Room Motion Sensor (d88b4c0200024a1d) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Kitchen Leak Sensor (d88b4c0200053460) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Kitchen Leak Sensor (d88b4c0200053460) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Front Door Motion Sensor (d88b4c02000249d2) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Front Door Motion Sensor (d88b4c02000249d2) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Living Room Motion Sensor (d88b4c02000248bd) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Living Room Motion Sensor (d88b4c02000248bd) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Hot Water Tank Leak Sensor (d88b4c02000682c9) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Hot Water Tank Leak Sensor (d88b4c02000682c9) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Guest Bath Leak Sensor 3 (d88b4c0200068297) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Guest Bath Leak Sensor 3 (d88b4c0200068297) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Master Bath Sink (d88b4c0200053451) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Master Bath Sink (d88b4c0200053451) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Garage Motion Sensor (d88b4c020002f248) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Garage Motion Sensor (d88b4c020002f248) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Restroom Sink Leak (d88b4c02000533c1) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Restroom Sink Leak (d88b4c02000533c1) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Master Bath Toilet Leak Sensor (d88b4c020005286d) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Master Bath Toilet Leak Sensor (d88b4c020005286d) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Kitchen Freezer Thermostat (d88b4c0200055501) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Temperature for Kitchen Freezer Thermostat (d88b4c0200055501) is: -17.4
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Kitchen Freezer Thermostat (d88b4c0200055501) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Humidity for Kitchen Freezer Thermostat (d88b4c0200055501) is: 48.6
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Side Gate (d88b4c0100043de0) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Side Gate (d88b4c0100043de0) is: closed
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Guest Bath Leak Sensor 2 (d88b4c02000682c4) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Guest Bath Leak Sensor 2 (d88b4c02000682c4) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Utility Room Motion Sensor (d88b4c020002efe4) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Utility Room Motion Sensor (d88b4c020002efe4) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Restroom Leak Sensor (d88b4c0200053c34) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Restroom Leak Sensor (d88b4c0200053c34) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Guest Bath Leak Sensor (d88b4c0200052887) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Guest Bath Leak Sensor (d88b4c0200052887) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Garage Freezer Thermostat (d88b4c020005c67a) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Temperature for Garage Freezer Thermostat (d88b4c020005c67a) is: -25.9
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Garage Freezer Thermostat (d88b4c020005c67a) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Humidity for Garage Freezer Thermostat (d88b4c020005c67a) is: 62.3
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Siren Alarm (d88b4c010003b80d) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Siren Alarm (d88b4c010003b80d) is: normal
[8/11/2022, 8:58:57 PM] [YoLink] checkDeviceState for Kitchen Motion Sensor (d88b4c020002f130) (refresh after 14500 seconds)
[8/11/2022, 8:58:57 PM] [YoLink] Device state for Kitchen Motion Sensor (d88b4c020002f130) is: normal
[8/11/2022, 8:58:59 PM] [YoLink] checkDeviceState for Siren Alarm (d88b4c010003b80d) (refresh after 14500 seconds)
[8/11/2022, 8:58:59 PM] [YoLink] Device state for Siren Alarm (d88b4c010003b80d) is: normal
[8/11/2022, 8:58:59 PM] [YoLink] setDeviceState for Siren Alarm (d88b4c010003b80d)
[8/11/2022, 8:58:59 PM] [YoLink] YoLinkAPI.setDeviceState for 'Siren Alarm' (d88b4c010003b80d)
[8/11/2022, 8:58:59 PM] [YoLink] YoLinkAPI.getAccessToken
[8/11/2022, 8:58:59 PM] [YoLink] SENDING:
{"time":1660265939,"method":"Siren.setState","targetDevice":"d88b4c010003b80d","token":"EB858E536361E5825980798770F30D69","params":{"state":true}}
[8/11/2022, 8:58:59 PM] [YoLink] RECEIVED:
{"code":"000000","time":1660265939723,"msgid":1660265939723,"method":"Siren.setState","desc":"Success","data":{"state":"normal","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}}}
homebridge-8-11.log

Looks like right now, it sends 'normal' regardless of the current state where as the logic should be to send 'alert' if the state is 'normal.'
I need to check the keyfob later, but the behavior should be the same.
homekit
[8/11/2022, 9:10:05 PM] [YoLink] SENDING:
{"time":1660266605,"method":"Siren.setState","targetDevice":"d88b4c010003b80d","token":"EB858E536361E5825980798770F30D69","params":{"state":true}}
[8/11/2022, 9:10:05 PM] [YoLink] RECEIVED:
{"code":"000000","time":1660266605732,"msgid":1660266605732,"method":"Siren.setState","desc":"Success","data":{"state":"normal","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}}}
[8/11/2022, 9:10:07 PM] [YoLink] setDeviceState for Siren Alarm (d88b4c010003b80d)
[8/11/2022, 9:10:07 PM] [YoLink] YoLinkAPI.setDeviceState for 'Siren Alarm' (d88b4c010003b80d)
[8/11/2022, 9:10:07 PM] [YoLink] YoLinkAPI.getAccessToken
[8/11/2022, 9:10:07 PM] [YoLink] SENDING:
{"time":1660266607,"method":"Siren.setState","targetDevice":"d88b4c010003b80d","token":"EB858E536361E5825980798770F30D69","params":{"state":false}}
[8/11/2022, 9:10:08 PM] [YoLink] RECEIVED:
{"code":"000000","time":1660266608262,"msgid":1660266608262,"method":"Siren.setState","desc":"Success","data":{"state":"normal","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}}}
app
[8/11/2022, 9:10:51 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.getState","time":1660266651077,"msgid":"1660266651074","data":{"state":"normal","soundLevel":3,"battery":4,"powerSupply":"usb","alarmDuation":30,"version":"030a","mute":true,"loraInfo":{"signal":-58,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/11/2022, 9:10:51 PM] [YoLink] Received mqtt message 'Siren.getState' for device: Siren Alarm (d88b4c010003b80d) State: 'normal'
[8/11/2022, 9:10:53 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.setState","time":1660266653096,"msgid":"1660266653095","data":{"state":"alert","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/11/2022, 9:10:53 PM] [YoLink] Received mqtt message 'Siren.setState' for device: Siren Alarm (d88b4c010003b80d) State: 'alert'
[8/11/2022, 9:10:55 PM] [YoLink] mqtt received: yl-home/c460b484e49b4c08b33647d9815c9741/d88b4c010003b80d/report
{"event":"Siren.setState","time":1660266655125,"msgid":"1660266655124","data":{"state":"normal","loraInfo":{"signal":-60,"gatewayId":"d88b4c1603011301","gateways":1}},"deviceId":"d88b4c010003b80d"}
[8/11/2022, 9:10:55 PM] [YoLink] Received mqtt message 'Siren.setState' for device: Siren Alarm (d88b4c010003b80d) State: 'normal'

Well, that is the peril of trying to write code for a device without one to test with.  However I think I see the problem, my fault for not reading the documentation close enough.  There is a mistake in the JSON string I am sending up to YoLink to turn the alarm on/off.  I'll push an update for you to test later today.

Please try version 1.0.10 that I just published.  Thank you.

Works! Tested from my phone.  I’ll perform the tests and publish logs in a bit.

Had to deal with both front calipers with one bolt each being each sheered off due to "road maintenance" and a movie with the gf. I might need new rims, but we got logs!!!
From homekit everything works, but if the alarm is already in a active state homekit displays the position as 'off'. At that point I have to hit the switch in homekit to cycle to 'on' and then 'off' again.
It's late and it's loud. I'm going to have to smother the alarm tomorrow and try to determine if this is a sync issue. It may not be something we can even solve. Homekit should be getting the state on open and I did a clean close.
It's been a long day. I'll try again tomorrow after the frontend inspection. Thanks for all the timely work!
Pure Homekit logs:
[8/13/2022, 12:14:57 AM] [YoLink] setDeviceState for Siren Alarm (d88b4c010003b80d)
[8/13/2022, 12:14:57 AM] [YoLink] YoLinkAPI.setDeviceState for 'Siren Alarm' (d88b4c010003b80d)
[8/13/2022, 12:14:57 AM] [YoLink] YoLinkAPI.getAccessToken
[8/13/2022, 12:14:57 AM] [YoLink] SENDING:
{"time":1660364097,"method":"Siren.setState","targetDevice":"d88b4c010003b80d","token":"EB858E536361E5825980798770F30D69","params":{"state":{"alarm":true}}}
[8/13/2022, 12:14:57 AM] [YoLink] RECEIVED:
{"code":"000000","time":1660364097929,"msgid":1660364097929,"method":"Siren.setState","desc":"Success","data":{"state":"alert","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}}}
[8/13/2022, 12:14:59 AM] [YoLink] setDeviceState for Siren Alarm (d88b4c010003b80d)
[8/13/2022, 12:14:59 AM] [YoLink] YoLinkAPI.setDeviceState for 'Siren Alarm' (d88b4c010003b80d)
[8/13/2022, 12:14:59 AM] [YoLink] YoLinkAPI.getAccessToken
[8/13/2022, 12:14:59 AM] [YoLink] SENDING:
{"time":1660364099,"method":"Siren.setState","targetDevice":"d88b4c010003b80d","token":"EB858E536361E5825980798770F30D69","params":{"state":{"alarm":false}}}
[8/13/2022, 12:14:59 AM] [YoLink] RECEIVED:
{"code":"000000","time":1660364099953,"msgid":1660364099953,"method":"Siren.setState","desc":"Success","data":{"state":"normal","loraInfo":{"signal":-59,"gatewayId":"d88b4c1603011301","gateways":1}}}

There is one code path that I have not seen logs of yet... a path that should show a debug statement of RECEIVED: with a "getState" in the returned JSON data.  There should one like that shortly after restart... a whole series of SENDING: will appear, then quickly thereafter a series of RECEIVED.  There should be a "Siren.getState" sent and a corresponding reply further down.
It sounds like either I am not processing the reply from a getState correctly, or I am not processing the MQTT posted messages that I receive on a state change... so when alarm is triggered by YoLink, there should be a MQTT received and logged.
Thanks
David

I tested it, too, and my siren alarm is working perfectly.  Thank you.

@hdinwiddie thank you... next update I will remove the experimental flag from Siren

Believed to be fully functional now.

Yes, it is fully functional.


switch to StringTable for string caching

Remove the wretched and incompetent StringTab hash table and replace it with StringTable. Being a hash table that actually works, far more redundant strings are combined. Also remove irrelevant assertexp_* globals.

Is there some way you can put in on the stack and clear it instead of new/delete?  This way will be annoying for ddmd, because stringtable is defined in D so the ctor isn't directly callable from C++.

I don't understand your suggestion.

will pull in the interest of moving fast

Auto-merge toggled on

I don't understand your suggestion.

Try compiling ddmd, you'll see.

Try compiling ddmd, you'll see.

Please just tell me.

stringtable is defined in D so the ctor isn't directly callable from C++.

D doesn't emit constructors that are callable from C++, which is why all of the class construction from the glue layer has been changed to go through factory functions.  Same with destructors/delete.  It's all right, I'll work out some other way to do this.

So, is the new StringTable() a problem - there isn't a constructor for it. I can see about the destructor.

Feel free to make a PR for what you need, and I'll get it pulled.

@WalterBright I've opened #4317 to fix ddmd.  You were correct that the constructor is not a problem, just the dtor.


#1199 update ch-close background color in shared base.css

Closing as outdated. Since Chico UI uses Sass this value is already part of variables.


Adding animation for children of switch components

Explanation of Change
These PR add animations of the appearance and disappearance of elements after the switch using reanimated.
Fixed Issues
$ https://github.com/Expensify/App/issues/53759
PROPOSAL:
Tests

Go to settings
Launch workflows
Enter workflows
Click the switches and check if the content below appears with a smooth animation

[X] Verify that no errors appear in the JS console

Offline tests
Offline tests are not needed.
QA Steps
Same as tests

[X] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[X] I added steps for Staging and/or Production testing in the QA steps section
[X] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[X] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[X] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[X] I included screenshots or videos for tests on all platforms
[X] I ran the tests on all platforms & verified they passed on:

[X] Android: Native
[X] Android: mWeb Chrome
[X] iOS: Native
[X] iOS: mWeb Safari
[X] MacOS: Chrome / Safari
[X] MacOS: Desktop

[X] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[X] I followed proper code patterns (see Reviewing the code)

[X] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[X] I verified that comments were added to code that is not self explanatory
[X] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[X] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[X] If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[X] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[X] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[X] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[X] I verified the JSDocs style guidelines (in STYLE.md) were followed

[X] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[X] I followed the guidelines as stated in the Review Guidelines
[X] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[X] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[X] I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
[X] I verified that if a function's arguments changed that all usages have also been updated correctly
[X] If any new file was added I verified that:

[X] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[X] If a new CSS style is added I verified that:

[X] A similar style doesn't already exist
[X] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[X] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[X] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[X] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[X] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[X] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[X] I verified that all the inputs inside a form are aligned with each other.
[X] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[X] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[X] I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
[X] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/user-attachments/assets/a6487639-e8a5-46e7-baf8-9635e38caee8

Android: mWeb Chrome
https://github.com/user-attachments/assets/be81d18c-dc64-4fb4-a7de-6bf62fcc99ec

iOS: Native
https://github.com/user-attachments/assets/0a8be928-c4d7-47e1-8a5c-ad0ea590a23b

iOS: mWeb Safari
https://github.com/user-attachments/assets/e5569727-6a8d-41f4-b442-c27963bac7c8

MacOS: Chrome / Safari
https://github.com/user-attachments/assets/c97d327e-b2bb-4d1b-8bcb-38e35bfa228c

MacOS: Desktop
https://github.com/user-attachments/assets/0c3bcc99-869e-48ba-8de0-486266a14c8b

The animation works well, but the padding here is wrong:

All rows go to the end and the padding should be like this:

@dubielzyk-expensify good catch, I'll fix it

@dubielzyk-expensify
Is it good now?
https://github.com/user-attachments/assets/e3a6cadb-5d92-4e68-82bc-d31bab203379

That's looking good. Might wanna tweak the animation, but I'll do some experiments on the side. How exciting 😄
Correct me if I'm wrong, but I also thought the help text was included in the hover state:

It doesn't look like that's the case in the video above. cc @Expensify/design for gut check on this animation and the hover state

I wonder if we could get more of a fade in. I find the animation a bit "harsh" as the text is revealed sharply on the edge of the area, which expands. If there would be some fade, it would look more magical as it just appears 🪄
Hard to describe in words but do you know what I mean @dubielzyk-expensify ?

Yeah exactly what I kinda feel too. I think if we add a opacity 0 -> 1 it'll help as well:
https://github.com/user-attachments/assets/6a43c9af-64f9-405b-b5ec-dd799dc27fa2
Alternatively, we can not do the slide down reveal, but a top shift with opacity:
https://github.com/user-attachments/assets/a73a8a97-6a11-427a-9d5c-e11f5db2cd79
cc @Expensify/design if they have any preference as well

@dubielzyk-expensify
I can prepare both versions already in the application itself and you will decide which looks better, if I could ask for a link to the designs it would make it easier for me to reproduce them

@dubielzyk-expensify I like both of your versions—not sure how to choose haha.

Correct me if I'm wrong, but I also thought the help text was included in the hover state:

This was my understanding as well. I think the whole thing should be one big row.

Agree that the hint text should be included in the row hover.
In terms of your two animations Jon, I like both of them - I am guessing the version that only includes a fadeIn is probably easier to build?

From my point of view, it will take me about the same amount of time to build the first and second animation, so I will do the one that you like more. Regarding the help text when you hover the cursor, I didn't change anything here and it is exactly as it was before

Feel free to dk the one which will be simpler to implement

Regarding the help text when you hover the cursor, I didn't change anything here and it is exactly as it was before. Changing this is not hard from a technical point of view, but it will affect the whole application and all the places that use MenuItem so it would probably require additional QA work.

What's different in the markup between the one in your video vs the one you find on Settings -> Workspace -> Profile then?

From my point of view, it will take me about the same amount of time to build the first and second animation, so I will do the one that you like more.

Awesome. Let's start with the first one and we can tweak it later if we want.

I was able to fix the hover effect, because of your example with the default currency.
I found that in the place you showed the text was shown as hint value, and in the inports as separate text this is why it was never highlighted.
I also added animations for opacity.
This is the final effect:
https://github.com/user-attachments/assets/e4c0e7dd-aca5-41e3-bc58-fbb3b8e12b52
I added opacity animation however I made it as an animation between 0 and 1, on your video it looked like some opacity gradient, doing something like this will take much more time

I think that's looking pretty good. @Expensify/design for 👀 as well.

This feels pretty good too.

on your video it looked like some opacity gradient, doing something like this will take much more time

Perhaps Jon was just using an easing function. Are we able to do something like ease-in-out with these animations, or is it just linear?

@thesahindia  how is it looking?

@shawnborton

Perhaps Jon was just using an easing function. Are we able to do something like ease-in-out with these animations, or is >it just linear?

I can add easing and we'll determine if that's how we want to do it.

I added opacity animation however I made it as an animation between 0 and 1, on your video it looked like some opacity >gradient, doing something like this will take much more time

I meant that changing the opacity on the video does not affect the whole element at the same time, I did not mean the speed of its change.
As you can see in the image which is a screenshot of the video the top is not blurred and the bottom is blurred:

Perhaps Jon was just using an easing function. Are we able to do something like ease-in-out with these animations, or is it just linear?

Yeah an ease-in-out would be good to see 👍  Otherwise looking good

Yeah, unsure what's happening here cause the whole thing is wrong. Should go edge to edge and look like this:

Connect bank account' isn't in the center.

I'll fix it.

Are we only updating Sage intacct page in this PR?

I'm fixing it so it will work for the others too

Should we also work on the animation for the items in the settings list or will it be tackled separately?

It seems to me that this should not be a part of this PR, but if you think it would be good to take care of it I will be happy to take care of it in the new one (not sure if there should be a new issue)

I tend to agree that we should not mess with the left hand nav right now. Let's keep this PR focused. @Expensify/design can weigh in too, but I feel like it would be better to tackle those in a separate issue.

Yeah, makes sense to me 👍

@thesahindia  how is it going on testing part?

@sumo-slonik @thesahindia Would like to confirm, what is the nest step for this pr. Can you please fix the Prettier check? Thanks!

I merged the newest main and fixed prettier for you @thesahindia.
@mountiny I think it is ready for testing and C+ review :)


[Enhancement]: Taash Game Ui changed

Hello @kunjgit and @ishita-43 ,
PR Description 📜
[Enhancement]: Taash Game Ui changed
Fixes #4570

Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[ ] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[ ] I have added screenshot for website preview in assets/images
[ ] I have added entries for my game in main README.md
[ ] I have added README.md in my folder
[ ] I have added working video of the game in README.md (optional)
[x] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸
Before

After
Screencast from 2024-06-17 18-01-47.webm

Thank you soo much for contributing to our repository 💗

Thank you @sivaprasath2004 ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Hello @ishita-43 , This is level 2 issue

Thank you  @sivaprasath2004 , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


Orquesta's sub-workflow is the type of 'with', it can not work normally

SUMMARY
The process cannot continue.
The sub-workflow is the type of 'with', and it have inquiry task. when i response all inquiry(The time difference is very small), the workflow’s status is still paused, the workflow not continue to run.
STACKSTORM VERSION
Paste the output of st2 --version:
st2 3.1.0, on Python 2.7.6
OS, environment, install method
Post what OS you are running this on, along with any other relevant information/
docker, from https://github.com/StackStorm/st2-docker
Steps to reproduce the problem
Show how to reproduce the problem, using a minimal test-case. Make sure to include any content
(pack content - workflows, actions, etc.) which are needed to reproduce the problem.
workflow
version: 1.0

input:
  - inputA:

vars:
  - listA: [{"a": 1},{"a": 2},{"a": 3},{"a": 4}]
  - summary:

tasks:
  subWorkflow:
    with:
      items: <% ctx().listA %>
    action: default.sub-test
    input:
      inputA: <% item() %>
    next:
      - do: echoTask
        publish:
          - summary: <% result().output %>

  echoTask:
    action: core.echo
    input:
      message: "test"

sub workflow
version: 1.0

input:
  - inputA

tasks:
  wait:
    action: core.local
    input:
      cmd: sleep 2
    next:
      - do: ask

  ask:
    action: core.ask

output:
  - inputA: <% ctx().inputA %>

run the workflow
when it created 4 inquiry , use postman response inquiries at the same time.(The time difference is very small)

Expected Results
What did you expect to happen when running the steps above?
subWorkflow and echoTask should be succeeded.
Actual Results
What happened? What output did you get?

the workflow status is still paused. the echoTask is not running

Do you have the redis coordinator service installed?  That fixed it for me.

No, it not installed. stackstorm is running in docker, from https://github.com/StackStorm/st2-docker

That sounds pretty good. But i see https://github.com/StackStorm/st2-docker is deprecated. Would you create a new repository to Maintain Docker project?

Current st2-docker is deprecated and will be replaced with another working blueprint.
However even old st2-docker deployment had redis as a coordination backend: https://github.com/StackStorm/st2-docker/blob/master/docker-compose.yml#L63

My local st2-docker current commit id is 2c20325.
And I check the docker-compose.yml, it defined redis service.

Is not work for centos too.
action.with is  the concurrent executions ?
I have configured the parameters based on the docs https://docs.stackstorm.com/reference/policies.html?highlight=redis
SUMMARY
The process cannot continue.
The sub-workflow is the type of 'with', and it have inquiry task. when i response all inquiry(The time difference is very small), the workflow’s status is still paused, the workflow not continue to run.
STACKSTORM VERSION
Paste the output of st2 --version:
st2 3.2.0, on Python 2.7.5
OS, environment, install method
OS:  cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
env:
rabbitmq
docker run -d -p 5672:5672 rabbitmq:3.6-management
mongodb
docker run -d -p 27017:27017 mongo:4.0
postgres
docker run -d -e POSTGRES_PASSWORD=password -p 5432:5432 postgres:9.6
redis
docker run -d -p 6379:6379 redis:4.0 redis-server
install method
https://docs.stackstorm.com/install/rhel7.html
https://docs.stackstorm.com/reference/policies.html?highlight=redis
st2.conf
[messaging]
url = amqp://guest:guest@<IP_ADDRESS>:5672/

[database]
host = mongodb://username:password@<IP_ADDRESS>:27017/st2?authSource=admin

[coordination]
url = redis://:password@<IP_ADDRESS>:6379

mistral.conf
[DEFAULT]
transport_url = rabbit://guest:guest@<IP_ADDRESS>:5672
[database]
connection = postgresql+psycopg2://mistral:StackStorm@localhost/mistral

Steps to reproduce the problem
Show how to reproduce the problem, using a minimal test-case. Make sure to include any content
(pack content - workflows, actions, etc.) which are needed to reproduce the problem.
workflow
version: 1.0

input:
  - inputA:

vars:
  - listA: [{"a": 1},{"a": 2},{"a": 3},{"a": 4}]
  - summary:

tasks:
  subWorkflow:
    with:
      items: <% ctx().listA %>
    action: default.sub-test
    input:
      inputA: <% item() %>
    next:
      - do: echoTask
        publish:
          - summary: <% result().output %>

  echoTask:
    action: core.echo
    input:
      message: "test"

sub workflow
version: 1.0

input:
  - inputA

tasks:
  wait:
    action: core.local
    input:
      cmd: sleep 2
    next:
      - do: ask

  ask:
    action: core.ask

output:
  - inputA: <% ctx().inputA %>

run the workflow
when it created 4 inquiry , use postman response inquiries at the same time.(The time difference is very small)

Expected Results
What did you expect to happen when running the steps above?
subWorkflow and echoTask should be succeeded.
Actual Results
What happened? What output did you get?

the workflow status is still paused. the echoTask is not running

I've juste encountered the very same issue on the 3.5 version.
Seems like orquesta state machine is broken with PENDING states like core.ask. It goes to PAUSED and never go back to RUNNING state.
Disabling the state transition seems to be a workaround: see this patch


LAKE FOREST, IL 60045

          > > LAKE FOREST, IL 60045

“START TRANSFER. AND MARK COMMIT AS IN PROGRESS PENDING REVIEW FROM RECIEVING PARTY“
Originally posted by @MasterOwnerETcorps in https://github.com/BMO-Financial-Inc/.github/issues/32#issuecomment-1942386440

      > > LAKE FOREST, IL 60045


Create ZS_FillKarel

Your task is simple: no matter the size of the world, Karel should fill it with beepers.
For example, consider Karel's starting 5x5 world. When complete it should look like this:
Note that Karel's final position does matter. Karel should be in the top-right corner facing right. You can assume that Karel always starts in the bottom-left corner, facing right. Your code needs to work on more than just a 5x5 world. For example if you run your solution on the 3x4 world
The result should still be a world filled with beepers:
Notice the walls! Each world will have similar walls, blocking Karel from moving up rows, except for on the first column. How can you fill the world without running into any of them? Hint: if you find this problem challenging, good, it is!
Watch Lesson 3: Decomposition.

?


Adding metadata block to brew text for Google brews

Update brew text merge and split functions to include metadata
#1838

In talking with @G-Ambatte we are thinking the stub document is better served to be implemented in their PR.

In talking with @G-Ambatte we are thinking the stub document is better served to be implemented in their PR.

Yes let's just make this PR focus on the in-file metadata block.

Just tested this a bit and it seems to work pretty well!

[ ] Metadata saves to both Mongo Database and Google Drive
[ ] Changing the metadata block by editing the document / Google Drive file externally takes priority over the old method of metadata storage, but both will be updated on the next save.
[ ] Fully deleting the metadata block still loads fine (and instead uses the last values saved to file properties)
[ ] Swapping a file between Google and Mongo preserves metadata
[ ] No style tab / with style tab CSS blocks both work.

I think we can merge this once the conflicts are resolved, then start into some of the other features that needed more room for file metadata properties!


⚠ Bofrost.at has degraded performance

In d7ac65d, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1350 ms

Resolved: Bofrost.at performance has improved in 20a1c1d.


is kernel driver active error

I installed the software, but on passing my device id to the test script I hit this error:
~/python-epson-printer $ sudo python -m epson_printer.testpage -v 0x04b8 -p 0x0202
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/pi/python-epson-printer/epson_printer/testpage.py", line 14, in
printer = EpsonPrinter(options.id_vendor, options.id_product)
File "epson_printer/epsonprinter.py", line 188, in init
if self.printer.is_kernel_driver_active(0):
File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 992, in is_kernel_driver_active
interface)
File "/usr/local/lib/python2.7/dist-packages/usb/backend/init.py", line 363, in is_kernel_driver_active
_not_implemented(self.is_kernel_driver_active)
File "/usr/local/lib/python2.7/dist-packages/usb/backend/init.py", line 79, in _not_implemented
raise NotImplementedError(func.name)
NotImplementedError: is_kernel_driver_active
I'm running this on Raspbian Wheezy on a rPi2. Is there anything I can do to fix this problem?

Make sure your run pyusb version 1.0.0b1 as described here:
https://github.com/arvydas/blinkstick-python/wiki/NotImplementedError-is_kernel_driver_active-on-some-Linux-systems

This fixed the problem. Thank you!


Notifications not showing in KDE 5.16 because of hardcoded timeout

Laravel Mix Version: 4.1.2 (npm list --depth=0)
Node Version (node -v): v12.6.0
NPM Version (npm -v): 6.10.1
OS: Kubuntu 19.04 with KDE 5.16

Description:
I can see the notification for 2 ms instead of 2 seconds.
See screencast:

The problem is coming from Mix because if I use WebpackNotifierPlugin directly it works:
var WebpackNotifierPlugin = require('webpack-notifier');

mix.webpackConfig(webpack => {
    return {
        plugins: [
            new WebpackNotifierPlugin({alwaysNotify: true}),
        ]
    };
});

results in

After digging further, I understood that for KDE, setting a timeout to 2 is 2ms.
https://github.com/JeffreyWay/laravel-mix/blob/master/src/components/Notifications.js#L18
If I set it to 2000 then I'm getting 2 seconds:
mix.webpackConfig(webpack => {
    return {
        plugins: [
            new WebpackNotifierPlugin({
                title: 'Laravel Mix 2',
                alwaysNotify: Config.notifications.onSuccess,
                hint:
                    process.platform === 'linux'
                        ? 'int:transient:1'
                        : undefined,
                timeout: 2000, // 2000 instead of 2
                contentImage: Mix.paths.root(
                    'node_modules/laravel-mix/icons/laravel.png'
                ),
            }),
        ]
    };
});

Interestingly if I set the title to Laravel Mix and not Laravel Mix 2, then the notification only shows for 2 ms. I guess this is because KDE suppresses duplicate notifications.
This PR is to blame: https://github.com/JeffreyWay/laravel-mix/pull/1890
Please revert it as it is not working universally, or make it configurable with no value by default.
KDE allows setting a timeout per program so it should not be done there IMO.
Thanks

It is not stale, fix is waiting to be merged

Still not stale


typo: policyinsights/resource-manager/Microsoft.PolicyInsights/policyEvents

seperated -> separated

Automation for azure-sdk-for-ruby

Automation for azure-sdk-for-python

Automation for azure-sdk-for-js

Automation for azure-sdk-for-node

Can one of the admins verify this patch?

Automation for azure-sdk-for-java

Automation for azure-sdk-for-go


Correct minor typo in lib.rs

This revision includes:

Correct minor typo in lib.rs

Encounterd -> Encountered

Thank you :)


Fixed #24299 -- Fixed ContentType creation error message

Could you please add a test?

test added

updated

buildbot, add to whitelist.

Seems like it might be simpler to update the auth migration to depend on the second contenttypes migration. Did you try this?
diff --git a/django/contrib/auth/migrations/0001_initial.py b/django/contrib/aut
index a58f73a..a20140a 100644
--- a/django/contrib/auth/migrations/0001_initial.py
+++ b/django/contrib/auth/migrations/0001_initial.py
@@ -10,7 +10,7 @@ from django.utils import timezone
 class Migration(migrations.Migration):

     dependencies = [
-        ('contenttypes', '__first__'),
+        ('contenttypes', '0002_remove_content_type_name'),
     ]

     operations = [

I'd rather not change an existing migration but have an empty migration that just depends on contenttypes.0002 and auth.0005 (in that order). That's what makemigrations --merge does but not on app-level but cross apps. I think that's the cleaner solution to the problem (which is actually the same as in #24075).
Draft:
class Migration():
    dependencies = [
        ('contenttypes', '0001.....'),
        ('auth', '0005.....'),
    ]

@timgraham
This will fix auth app, but I see no reason why users can't use ContentType in their own post_migrate handlers.
I think that code fragment I changed in my PR should either be fixed or removed anyway.

@sir-sigurd Of course people can use ContentType in their post_migrate signal, but as of now there is no way to make sure the signal is only fired for an app if that app is fully migrated. I'm working on a fix for 1.9 though.

merged in d392c1e150a46aca72e37263c44c034d92a79f79, thanks. Also created https://github.com/django/django/pull/4150 to help with this issue.


No time shows in the name of file share snapshots

Storage Explorer Version: 1.13.0
Build: 20200408.10
Branch: rel/1.13.0
Platform/OS: Windows 10/ Linux Ubuntu 16.04/ macOS High Sierra
Architecture: ia32/x64
Regression From: Previous release(1.12.0)
Steps to reproduce:

Expand one storage account -> File Shares.
Create a new file share -> Create Snapshot -> View Share Snapshots.
Check the snapshot name.

Expect Experience:
The snapshot name shows well.

Actual Experience:
No time shows in the snapshot name.

This issue is fixed on build 20200409.3. So we close it.