[BUG][v1.6.x] Abnormal snapshot missing status field

Describe the bug
While testing https://github.com/longhorn/longhorn/issues/9399 by running Reboot Replica Node While Heavy Writing And Recurring Jobs Exist, I noticed the test case may fail to check the readyToUse field of some snapshots due to missing status fields:
https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1277/
http://<IP_ADDRESS>:30000/
Iterating snapshot list error: 'status'
Waiting for e2e-test-volume-1 new snapshot created (56747) ...
Iterating snapshot list error: 'status'
Waiting for e2e-test-volume-1 new snapshot created (56748) ...
Iterating snapshot list error: 'status'
Waiting for e2e-test-volume-1 new snapshot created (56749) ...
Iterating snapshot list error: 'status'
Waiting for e2e-test-volume-1 new snapshot created (56750) ...
Iterating snapshot list error: 'status'

# kubectl get snapshots -n longhorn-system
NAME                                            VOLUME              CREATIONTIME           READYTOUSE   RESTORESIZE   SIZE         AGE
e2e-test-8b3b4f19-676b-4e6f-8260-2e11c5aa2350   e2e-test-volume-1                                                                  15h
e2e-test-34053ab6-6ba0-49fa-9df4-c8f0f7afa226   e2e-test-volume-2                                                                  15h
e2e-test-68fe75ea-f3d9-491c-b5db-ab50fb58bcb3   e2e-test-volume-0                                                                  13h
e2e-test-38c1cf2f-e1ca-4a75-8a13-0848bb748791   e2e-test-volume-1   2024-09-10T20:27:26Z   false<PHONE_NUMBER><PHONE_NUMBER>   6h35m
e2e-test-b7fc9c55-90b4-4f3e-b320-8ab81fb0681d   e2e-test-volume-1   2024-09-10T22:05:26Z   false<PHONE_NUMBER><PHONE_NUMBER>   4h57m
e2e-test-23dd9686-5a08-4da6-ac3d-53731287e08c   e2e-test-volume-2   2024-09-11T00:09:09Z   false<PHONE_NUMBER><PHONE_NUMBER>   173m
e2e-test-8d36aaf7-c69a-40e3-b134-3de2652880ae   e2e-test-volume-2   2024-09-11T02:01:31Z   false<PHONE_NUMBER>    0            61m
e2e-test-b59b4c30-111d-4e74-a02f-d4f3243ffa17   e2e-test-volume-2   2024-09-11T02:55:41Z   true<PHONE_NUMBER><PHONE_NUMBER>   7m13s
e2e-test-d2d2f459-ec42-4ed9-ab1a-acb034fd1b29   e2e-test-volume-1   2024-09-11T02:55:29Z   true<PHONE_NUMBER><PHONE_NUMBER>   7m25s
e2e-test-b0315d8b-cd37-4888-9b4e-cb0e12a195bb   e2e-test-volume-1   2024-09-11T02:56:19Z   true<PHONE_NUMBER>    0            6m37s
e2e-test-3ae93c09-c513-4776-9b86-a694a32a5cec   e2e-test-volume-0   2024-09-11T02:56:17Z   false<PHONE_NUMBER><PHONE_NUMBER>   6m41s
e2e-test-7c1c13a0-42d0-4265-b8b1-41020058b550   e2e-test-volume-0   2024-09-11T02:59:07Z   true<PHONE_NUMBER><PHONE_NUMBER>   3m50s

Snapshots e2e-test-8b3b4f19-676b-4e6f-8260-2e11c5aa2350, e2e-test-34053ab6-6ba0-49fa-9df4-c8f0f7afa226, and e2e-test-68fe75ea-f3d9-491c-b5db-ab50fb58bcb3 consistently lack a status field, regardless how long we wait:
# kubectl get snapshots -n longhorn-system e2e-test-34053ab6-6ba0-49fa-9df4-c8f0f7afa226 -oyaml
apiVersion: longhorn.io/v1beta2
kind: Snapshot
metadata:
  creationTimestamp: "2024-09-10T11:44:41Z"
  finalizers:
  - longhorn.io
  generation: 1
  labels:
    longhornvolume: e2e-test-volume-2
  name: e2e-test-34053ab6-6ba0-49fa-9df4-c8f0f7afa226
  namespace: longhorn-system
  ownerReferences:
  - apiVersion: longhorn.io/v1beta2
    kind: Volume
    name: e2e-test-volume-2
    uid: c7a813ce-985b-45cb-a274-2b6329534997
  resourceVersion: "34154"
  uid: 797bf056-8ff7-48e1-86f8-a0466212590a
spec:
  createSnapshot: true
  labels:
    RecurringJob: e2e-test-volume-2-snap
  volume: e2e-test-volume-2

But a normal snapshot should have a status field for checking:
# kubectl get snapshots -n longhorn-system e2e-test-b59b4c30-111d-4e74-a02f-d4f3243ffa17 -oyaml
apiVersion: longhorn.io/v1beta2
kind: Snapshot
metadata:
  creationTimestamp: "2024-09-11T02:55:40Z"
  finalizers:
  - longhorn.io
  generation: 1
  labels:
    longhornvolume: e2e-test-volume-2
  name: e2e-test-b59b4c30-111d-4e74-a02f-d4f3243ffa17
  namespace: longhorn-system
  ownerReferences:
  - apiVersion: longhorn.io/v1beta2
    kind: Volume
    name: e2e-test-volume-2
    uid: c7a813ce-985b-45cb-a274-2b6329534997
  resourceVersion: "188825"
  uid: 752309aa-74b7-4215-9af4-811852bdad9d
spec:
  createSnapshot: true
  labels:
    RecurringJob: e2e-test-volume-2-bak
  volume: e2e-test-volume-2
status:
  checksum: ""
  children:
    volume-head: true
  creationTime: "2024-09-11T02:55:41Z"
  labels:
    RecurringJob: e2e-test-volume-2-bak
  markRemoved: false
  ownerID: ""
  parent: ""
  readyToUse: true
  restoreSize:<PHONE_NUMBER>
  size:<PHONE_NUMBER>
  userCreated: true

To Reproduce
Run test case Reboot Replica Node While Heavy Writing And Recurring Jobs Exist on v1.6.x-head
Expected behavior

Support bundle for troubleshooting
~supportbundle_e47e3d10-56d5-4620-8aca-a25e0f842161_2024-09-11T02-50-07Z.zip~
supportbundle_f0a1bdfe-dca3-4d14-86b9-a7ff7fa6fb82_2024-09-11T20-03-35Z.zip
Environment

Longhorn version: v1.6.x-head
Impacted volume (PV):
Installation method (e.g. Rancher Catalog App/Helm/Kubectl): kubectl
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version: v1.30.0+k3s1

Number of control plane nodes in the cluster:
Number of worker nodes in the cluster:

Node config

OS type and version: sles 15-sp6
Kernel version:
CPU per node:
Memory per node:
Disk type (e.g. SSD/NVMe/HDD):
Network bandwidth between the nodes (Gbps):

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal):
Number of Longhorn volumes in the cluster:

Additional context
master-head doesn't have this issue.
Workaround and Mitigation

cc @ChanYiLin

@PhanLe1010 @ejweber
The status of a snapshot CR is somehow missing. I've checked the snapshot CRD, and the status is well defined.
Do you have any idea of the root cause?

To clarify, the changes you made from 9443 -> 9501 are NOT intended as a fix for this issue, right @derekbit? If I understand correctly, they are just to clear up some confusing differences between the crds.yaml in the two locations, but we are still investigating why the status is not there.

After checking the code and conducting a basic test with kubectl get snapshot -n longhorn-system -oyaml -w on master-head, it looks like we always create the snapshot CR without a status. The status is usually filled out by the snapshot controller on first reconcile.
This is where the snapshot CR is created (in v1.6.x code):
https://github.com/longhorn/longhorn-manager/blob/e98ec64a851b6cca7494e424c280601aa97aba0d/manager/snapshot.go#L39-L53
The watch output:
apiVersion: longhorn.io/v1beta2
kind: Snapshot
metadata:
  creationTimestamp: "2024-09-11T18:41:27Z"
  finalizers:
  - longhorn.io
  generation: 1
  labels:
    longhornvolume: pvc-3e218051-a73c-4b9c-ae93-18de37dffbad
  name: ef05ee05-19d1-49af-875f-530e23dd5894
  namespace: longhorn-system
  ownerReferences:
  - apiVersion: longhorn.io/v1beta2
    kind: Volume
    name: pvc-3e218051-a73c-4b9c-ae93-18de37dffbad
    uid: 1392d146-e9b4-4d58-b154-b46700181de8
  resourceVersion: "153374399"
  uid: a3312fe7-0387-4bd6-9df1-cc3390cab72d
spec:
  createSnapshot: false
  labels: null
  volume: pvc-3e218051-a73c-4b9c-ae93-18de37dffbad
---
apiVersion: longhorn.io/v1beta2
kind: Snapshot
metadata:
  creationTimestamp: "2024-09-11T18:41:27Z"
  finalizers:
  - longhorn.io
  generation: 1
  labels:
    longhornvolume: pvc-3e218051-a73c-4b9c-ae93-18de37dffbad
  name: ef05ee05-19d1-49af-875f-530e23dd5894
  namespace: longhorn-system
  ownerReferences:
  - apiVersion: longhorn.io/v1beta2
    kind: Volume
    name: pvc-3e218051-a73c-4b9c-ae93-18de37dffbad
    uid: 1392d146-e9b4-4d58-b154-b46700181de8
  resourceVersion: "153374400"
  uid: a3312fe7-0387-4bd6-9df1-cc3390cab72d
spec:
  createSnapshot: false
  labels: null
  volume: pvc-3e218051-a73c-4b9c-ae93-18de37dffbad
status:
  checksum: ""
  children:
    volume-head: true
  creationTime: "2024-09-11T18:41:25Z"
  labels: {}
  markRemoved: false
  ownerID: ""
  parent: 94d800bf-1a06-4076-af43-66f227c4356e
  readyToUse: true
  restoreSize:<PHONE_NUMBER>0
  size: 70197248
  userCreated: true

The problem here seems to be that the snapshot_controller's first reconcile tries to actually take the snapshot, but gets stuck. Somewhere down lower (in the instance-manager, engine, replica, etc.). It appears to wait a very long time to get unstuck, so the snapshot CR is without a status for a very long time. The instance-manager logs for one of the snapshots look like:
2024-09-11T02:50:04.310300425Z [longhorn-instance-manager] time="2024-09-11T02:50:04Z" level=info msg="Snapshotting volume: snapshot e2e-test-547ef5b9-7bdb-48e6-8351-3457d694a98e" func="proxy.(*Proxy).VolumeSnapshot" file="snapshot.go:27" dataEngine=DATA_ENGINE_V1 engineName=e2e-test-volume-0-e-0 serviceURL="<IP_ADDRESS>:10073" volumeName=e2e-test-volume-0
2024-09-11T02:50:04.310312477Z [e2e-test-volume-0-e-0] time="2024-09-11T02:50:04Z" level=info msg="Starting snapshot" func="controller.(*Controller).Snapshot" file="control.go:203" snapshot=e2e-test-547ef5b9-7bdb-48e6-8351-3457d694a98e volume=e2e-test-volume-0
2024-09-11T02:50:04.954110281Z [e2e-test-volume-0-e-0] time="2024-09-11T02:50:04Z" level=info msg="Requesting system sync before snapshot" func="controller.(*Controller).Snapshot" file="control.go:266" snapshot=e2e-test-547ef5b9-7bdb-48e6-8351-3457d694a98e volume=e2e-test-volume-0

If the snapshot were successful, they would look more like:
2024-09-10T22:24:42.718906266Z [longhorn-instance-manager] time="2024-09-10T22:24:42Z" level=info msg="Snapshotting volume: snapshot e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551" func="proxy.(*Proxy).VolumeSnapshot" file="snapshot.go:27" dataEngine=DATA_ENGINE_V1 engineName=e2e-test-volume-1-e-0 serviceURL="<IP_ADDRESS>:10084" volumeName=e2e-test-volume-1
2024-09-10T22:24:42.721334950Z [e2e-test-volume-1-e-0] time="2024-09-10T22:24:42Z" level=info msg="Starting snapshot" func="controller.(*Controller).Snapshot" file="control.go:203" snapshot=e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 volume=e2e-test-volume-1
2024-09-10T22:24:42.957472864Z [e2e-test-volume-1-e-0] time="2024-09-10T22:24:42Z" level=info msg="Requesting system sync before snapshot" func="controller.(*Controller).Snapshot" file="control.go:266" snapshot=e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 volume=e2e-test-volume-1
2024-09-10T22:24:43.048895188Z [e2e-test-volume-1-e-0] time="2024-09-10T22:24:43Z" level=info msg="Starting to snapshot: <IP_ADDRESS>:10074 e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 UserCreated true Created at 2024-09-10T22:24:43Z, Labels map[RecurringJob:e2e-test-volume-1-bak]" func="remote.(*Remote).Snapshot" file="remote.go:99"
2024-09-10T22:24:43.048913352Z time="2024-09-10T22:24:43Z" level=info msg="Starting to snapshot: <IP_ADDRESS>:10630 e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 UserCreated true Created at 2024-09-10T22:24:43Z, Labels map[RecurringJob:e2e-test-volume-1-bak]" func="remote.(*Remote).Snapshot" file="remote.go:99"
2024-09-10T22:24:43.048916418Z time="2024-09-10T22:24:43Z" level=info msg="Starting to snapshot: <IP_ADDRESS>:10000 e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 UserCreated true Created at 2024-09-10T22:24:43Z, Labels map[RecurringJob:e2e-test-volume-1-bak]" func="remote.(*Remote).Snapshot" file="remote.go:99"
2024-09-10T22:24:43.112810398Z [e2e-test-volume-1-e-0] time="2024-09-10T22:24:43Z" level=info msg="Finished to snapshot: <IP_ADDRESS>:10074 e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 UserCreated true Created at 2024-09-10T22:24:43Z, Labels map[RecurringJob:e2e-test-volume-1-bak]" func="remote.(*Remote).Snapshot" file="remote.go:120"
2024-09-10T22:24:43.114717512Z [e2e-test-volume-1-e-0] time="2024-09-10T22:24:43Z" level=info msg="Finished to snapshot: <IP_ADDRESS>:10000 e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 UserCreated true Created at 2024-09-10T22:24:43Z, Labels map[RecurringJob:e2e-test-volume-1-bak]" func="remote.(*Remote).Snapshot" file="remote.go:120"
2024-09-10T22:24:43.114789990Z time="2024-09-10T22:24:43Z" level=info msg="Finished to snapshot: <IP_ADDRESS>:10630 e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 UserCreated true Created at 2024-09-10T22:24:43Z, Labels map[RecurringJob:e2e-test-volume-1-bak]" func="remote.(*Remote).Snapshot" file="remote.go:120"
2024-09-10T22:24:43.114793167Z time="2024-09-10T22:24:43Z" level=info msg="Finished snapshot" func="controller.(*Controller).Snapshot" file="control.go:284" snapshot=e2e-test-7119f053-83b8-42cc-a10e-6f9c1c565551 volume=e2e-test-volume-1

My best guess so far is that the sync operation is stuck forever, making the snapshot stuck forever too.

I obtained the relevant support bundle and attached it to the ticket. I am still pretty stumped though. We can use e2e-test-34053ab6-6ba0-49fa-9df4-c8f0f7afa226 as an example.
As mentioned above, Longhorn creates a snapshot CR without a status and then later adds one (in the first successful reconcile loop). It is probably not an issue for Longhorn components written in Go, because these components can generally "look at the status" anyway and see zero values. However, the Python code used for the test cannot handle the fact that the status doesn't yet exist.
I think somehow the initial reconcile (or reconciles?) of e2e-test-34053ab6-6ba0-49fa-9df4-c8f0f7afa226 did not update the status, and then it was never reconciled again. All of the snapshot controller's informers set resyncPeriod == 0, so the failure to reconcile again could last forever without some qualifying event.
https://github.com/longhorn/longhorn-manager/blob/e98ec64a851b6cca7494e424c280601aa97aba0d/controller/snapshot_controller.go#L85-L114
e2e-test-34053ab6-6ba0-49fa-9df4-c8f0f7afa226 no longer exists in its engine.status.snapshots, so it will no longer be queued for engine changes, and the only volume change it can be queued for is a deletion, so there is likely no reason to readd it to the snapshot controller queue if it is not already there. Unfortunately, I have not yet been able to find a path for a snapshot to drop out of the queue without first making some status update (and unfortunately we don't have longhorn-manager logs far enough back to see what transient errors might have been occurring). Maybe no snapshot controller thought it was responsible for the snapshot on creation, so we missed doing something with it?

To clarify, the changes you made from 9443 -> 9501 are NOT intended as a fix for this issue, right @derekbit? If I understand correctly, they are just to clear up some confusing differences between the crds.yaml in the two locations, but we are still investigating why the status is not there.

Yes, not related. Just found the incorrect values while checking the CRDs.

@yangchiu Can the issue be observed in v1.6.2?

Unfortunately, I have not yet been able to find a path for a snapshot to drop out of the queue without first making some status update (and unfortunately we don't have longhorn-manager logs far enough back to see what transient errors might have been occurring)

Inside the snapshot sync loop, when it hit an error it might return and not update the status for the snapshot CR. In this case, the snapshot CR is added back to the queue with rate-limited speed to process later. Is it possible that the snapshot CR is still in the queue but it is currently in rate-limited state so it doesn't have the status yet? The max queue delay could be up to 1000*time.Second

Unfortunately, I have not yet been able to find a path for a snapshot to drop out of the queue without first making some status update (and unfortunately we don't have longhorn-manager logs far enough back to see what transient errors might have been occurring)

Inside the snapshot sync loop, when it hit an error it might return and not update the status for the snapshot CR. In this case, the snapshot CR is added back to the queue with rate-limited speed to process later. Is it possible that the snapshot CR is still in the queue but it is currently in rate-limited state so it doesn't have the status yet? The max queue delay could be up to 1000*time.Second

Yes, I think it is still in queue. One question, do you think if 1000*time.Second is too long?

I think 1000*time.Second is good. The CR only hits this state when it has been hitting error repeatedly. If we shorten this value, we might increase the CPU usage when there are permanent errors

I think 1000*time.Second is good. The CR only hits this state when it has been hitting error repeatedly. If we shorten this value, I am worry that we might increase the CPU usage when there are permanent errors

Thank you @PhanLe1010 for explanation.

UpdateSnapshotStatus() failed due to the error
``
2024-09-11T02:32:10.004935428Z time="2024-09-11T02:32:10Z" level=error msg="Failed to sync Longhorn snapshot" func=controller.handleReconcileErrorLogging file="utils.go:74" Snapshot=longhorn-system/e2e-test-2cffcaa9-3f6e-49b7-bc0d-eace96bf913d controller=longhorn-snapshot error="longhorn-snapshot: failed to sync snapshot longhorn-system/e2e-test-2cffcaa9-3f6e-49b7-bc0d-eace96bf913d: proxyServer=<IP_ADDRESS>:8501 destination=<IP_ADDRESS>:10095: failed to list snapshots: rpc error: code = Unavailable desc = BUG: cannot get snapshot info: failed to get replica <IP_ADDRESS>:10010: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp <IP_ADDRESS>:10010: connect: connection refused"" node=ip-10-0-2-101

After checking the snapshot controller codes and according to the feedback from @PhanLe1010 and @ejweber, the status of snapshot will be updated in the end.

@yangchiu Can you check if the missing snapshot in transient state can lead to any bugs?

UpdateSnapshotStatus() failed due to the error
``
2024-09-11T02:32:10.004935428Z time="2024-09-11T02:32:10Z" level=error msg="Failed to sync Longhorn snapshot" func=controller.handleReconcileErrorLogging file="utils.go:74" Snapshot=longhorn-system/e2e-test-2cffcaa9-3f6e-49b7-bc0d-eace96bf913d controller=longhorn-snapshot error="longhorn-snapshot: failed to sync snapshot longhorn-system/e2e-test-2cffcaa9-3f6e-49b7-bc0d-eace96bf913d: proxyServer=<IP_ADDRESS>:8501 destination=<IP_ADDRESS>:10095: failed to list snapshots: rpc error: code = Unavailable desc = BUG: cannot get snapshot info: failed to get replica <IP_ADDRESS>:10010: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp <IP_ADDRESS>:10010: connect: connection refused"" node=ip-10-0-2-101

After checking the snapshot controller codes and according to the feedback from @PhanLe1010 and @ejweber, the status of snapshot will be udpated in the end.

Hi @derekbit
The purpose of the test is to run the snapshot recurring job on a volume with heavy I/O write operations while simultaneously rebooting the node.
It appears this bug causes the test to get stuck indefinitely because the snapshot status may remain empty.
As a result, the recurring job will continuously fail while waiting for the snapshot to complete.
Even when the next snapshot job begins, it will continue to wait for the previous snapshot (code), which has no status, due to this issue.

From the support bundle (2024-09-11T20-03-35Z), I found something weird
Volume: e2e-test-volume-1
Snapshot (without status): e2e-test-8b3b4f19-676b-4e6f-8260-2e11c5aa2350

Created at: 2024-09-10T11:04:44Z

apiVersion: v1
items:
- apiVersion: longhorn.io/v1beta2
  kind: Snapshot
  metadata:
    creationTimestamp: "2024-09-10T11:04:44Z"
    finalizers:
    - longhorn.io
    generation: 1
    labels:
      longhornvolume: e2e-test-volume-1
    managedFields:
    name: e2e-test-8b3b4f19-676b-4e6f-8260-2e11c5aa2350
    namespace: longhorn-system
    ownerReferences:
    - apiVersion: longhorn.io/v1beta2
      kind: Volume
      name: e2e-test-volume-1
      uid: 2ac6d8c7-8abc-4f08-92c6-b9d9ee84bf27
    resourceVersion: "24919"
    uid: 1d80ccaa-5bb2-4b07-b325-c2efaf9a980a
  spec:
    createSnapshot: true
    labels:
      RecurringJob: e2e-test-volume-1-snap
    volume: e2e-test-volume-1

We can see from the logs that instance-manager kept receiving the request to snapshot the volume with the recurring job label.
However, the last record was 2024-09-10T11:02:38Z.
There was no record for the snapshot at2024-09-10T11:04:44Z , I am thinking maybe the instance-manager somehow never receive the request. The snapshot was never created in the replica. So the engine could not get the status of that replica. Thus, the snapshot CR status was empty.
(Note that the instance manager where e2e-test-volume-1-r-20f78d48 and e2e-test-volume-1-r-a04253af were hosted did not crash; both instances continued to operate normally, handling the backup recurring job (snapshot + backup)."
## Replica: e2e-test-volume-1-r-20f78d48
[e2e-test-volume-1-r-20f78d48] time="2024-09-10T10:22:46Z" level=info msg="Replica server starts to snapshot [e2e-test-abbcf849-023b-4446-b7ca-3f5e74a7bfe9] volume, user created true, created time 2024-09-10T10:22:46Z, labels map[RecurringJob:e2e-test-volume-1-snap]" func="replica.(*Server).Snapshot" file="server.go:185"
...
[e2e-test-volume-1-r-20f78d48] time="2024-09-10T11:02:38Z" level=info msg="Replica server starts to snapshot [e2e-test-b831b578-40bc-4d93-88b5-8c5520721462] volume, user created true, created time 2024-09-10T11:02:38Z, labels map[RecurringJob:e2e-test-volume-1-snap]" func="replica.(*Server).Snapshot" file="server.go:185"

## Replica: e2e-test-volume-1-r-a04253af
[e2e-test-volume-1-r-a04253af] time="2024-09-10T09:42:12Z" level=info msg="Replica server starts to snapshot [e2e-test-ff5665ea-0ea2-45a7-b860-0a2ed37ecc31] volume, user created true, created time 2024-09-10T09:42:12Z, labels map[RecurringJob:e2e-test-volume-1-snap]" func="replica.(*Server).Snapshot" file="server.go:185"
...
[e2e-test-volume-1-r-a04253af] time="2024-09-10T11:02:38Z" level=info msg="Replica server starts to snapshot [e2e-test-b831b578-40bc-4d93-88b5-8c5520721462] volume, user created true, created time 2024-09-10T11:02:38Z, labels map[RecurringJob:e2e-test-volume-1-snap]" func="replica.(*Server).Snapshot" file="server.go:185"

One thing I noticed is that
In the snapshot controller it update the volumeattachment ticket before start creating snapshot (call grpc) here
But check the volume-0,1,2 's volumeattachment
There is no ticket related to the snapshots we are checking (without status)
That means the controller didn't reach the related code even for the first reconcile loop

After checking the snapshot controller codes and according to the feedback from @PhanLe1010 and @ejweber, the snapshot will be requeued, and the status of snapshot will be updated in the end.

I am actually arguing that it may NOT be in the queue anymore. I think it would appear in the longhorn-manager or instance-manager logs if it was. We have logs for MOST pods going a lot longer back than the 1000 seconds @PhanLe1010 mentioned.
Another thing to note: it seems the cluster is quite unstable. When I originally saw all of the CheckEngineImageReadiness type messages in the longhorn-manager logs, I assumed they had to do with the reboots the test was performing. However, we have 30 hours of logs since the last reboot. Many pods have transitioned to Ready quite recently (checking the pods.yaml) and there are a huge number of failed readiness probes in events.yaml, including:

387 + 3013 + 3100 = 6500 for engine-image-ei-5e3630c8-xcxfq
1949 + 4924 = 6873 for engine-image-ei-5e3630c8-h49v8
2185 + 3752 = 5937 for engine-image-ei-5e3630c8-97q4b
49 + 116 + 637 + 687 = 1489 for longhorn-manager-jxv7b
174 + 810 + 765 = 1749 for longhorn-manager-b9pc8
1214 + 1267 = 2481 for longhorn-manager-gn6gm

Readiness probe failures don't cause Kubernetes to kill containers, but we have a lot of baked in logic (especially around ownership, etc.) based on engine image readiness, etc. (There are also quite a few liveness probe failures. for engine-image and longhorn-csi-plugin pods. These types of failures DO result in Kubernetes restarting containers.)
@yangchiu, is this amount of failures common for this test? It might be a difficult question to answer, since the test usually regularly reboots nodes, which might lead to the failures naturally.

The new support bundle https://github.com/user-attachments/files/16985161/supportbundle_ae23e140-3199-405d-a423-91da89e77d48_2024-09-12T20-15-51Z.zip from https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1336 has the same liveness probe issues. If we can access the cluster we can:

Check if file system access in and around /var/lib/longhorn/... is just really slow for some reason?
Check the containerd logs, which the support bundle doesn't have.

Maybe you are right that the node might be supper slow (potentially leading to these liveness probes failure)? @ejweber
Each node only has 4 CPUs and this is the current CPU consumption:
➜  libublk-rs git:(longhorn-concurrent) ✗ k top nodes
NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
ip-10-0-1-93    122m         3%     1299Mi          8%
ip-10-0-2-197   4829m        120%   1731Mi          12%
ip-10-0-2-209   5075m        126%   1338Mi          9%
ip-10-0-2-26    4865m        121%   1524Mi          10%

While the pod is running, I can exec into it and run the probe command.
eweber@laptop:~/longhorn> kl exec -it engine-image-ei-222b7733-ffl5w -- bash
engine-image-ei-222b7733-ffl5w:/ # data/longhorn version --client-only
{
        "clientVersion": {
                "version": "b2d96db4",
                "gitCommit": "b2d96db45c06e1a7880396df202963ef2531a9f6",
                "buildDate": "2024-09-12T15:57:58+00:00",
                "cliAPIVersion": 10,
                "cliAPIMinVersion": 8,
                "controllerAPIVersion": 5,
                "controllerAPIMinVersion": 4,
                "dataFormatVersion": 1,
                "dataFormatMinVersion": 1
        },
        "serverVersion": null
}

While this is possible, the binary appears to be available on the host where expected.
instance-manager-81da8710edf5d3070dd3cbb92d5b0e47:/host/var/lib/longhorn/engine-binaries/derekbit-longhorn-engine-v1.6.3-rc1-pr-1174 # ls -al
total 37164
drwxr-xr-x 2 root root       22 Sep 12 21:22 .
drwxr-xr-x 3 root root       57 Sep 12 17:30 ..
-rwxr-xr-x 1 root root 38053560 Sep 12 15:58 longhorn
instance-manager-81da8710edf5d3070dd3cbb92d5b0e47:/host/var/lib/longhorn/engine-binaries/derekbit-longhorn-engine-v1.6.3-rc1-pr-1174 # ./longhorn version --client-only
{
        "clientVersion": {
                "version": "b2d96db4",
                "gitCommit": "b2d96db45c06e1a7880396df202963ef2531a9f6",
                "buildDate": "2024-09-12T15:57:58+00:00",
                "cliAPIVersion": 10,
                "cliAPIMinVersion": 8,
                "controllerAPIVersion": 5,
                "controllerAPIMinVersion": 4,
                "dataFormatVersion": 1,
                "dataFormatMinVersion": 1
        },
        "serverVersion": null
}

However, the probe from kubelet usually fails (as described above) quickly. Then the binary is no longer available in either location.

However, the probe from kubelet usually fails (as described above) quickly. Then the binary is no longer available in either location.

When the container terminated (by kubelet due to failed livenes probe), the binary will be cleaned up before the container die. This is starting command of engine image pod:
  - args:
    - -c
    - diff /usr/local/bin/longhorn /data/longhorn > /dev/null 2>&1; if [ $? -ne 0
      ]; then cp -p /usr/local/bin/longhorn /data/ && echo installed; fi && trap 'rm
      /data/longhorn* && echo cleaned up' EXIT && sleep infinity
    command:
    - /bin/bash

I think it is normal that the binary is not there when container stop, it will be copy from the image to host next time the container start

In order to confirm whether the high CPU consumption is causing pods' liveness probe/readniess probe failures, can we temporary stop the IO operations? If engine pods do not crash any more then CPU might be the culprit. WDYT @ejweber ?

I am logging off for now, but I don't have any issue with you shutting down the I/O. I like the plan!

Headup:
I am detaching the Longhorn volume to stop the IO load to reduce the CPUs.
This might crash the e2e test pod

@ejweber pointed out that the CPU usage of v1 instance manager pods are weird. The instance manager processes are eating the most CPU instead of engine/replcia processes. For example:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    8 root      20   0 2457856  63448  32384 S 101.0 0.387 321:37.23 longhorn-instance-manager --debug daemon --listen <IP_ADDRESS>:8500
  778 root      20   0 1918512  38216  19840 S 1.000 0.233   2:10.43 /engine-binaries/derekbit-longhorn-engine-v1.6.3-rc1-pr-1174/longhorn --engine-instance-name e2e-test-+
  533 root      20   0 1918512  38408  19968 S 0.667 0.235   1:14.78 /engine-binaries/derekbit-longhorn-engine-v1.6.3-rc1-pr-1174/longhorn --engine-instance-name e2e-test-+
 5582 root      20   0   16084   4352   3712 S 0.667 0.027   0:00.59 top
  893 root      20   0 1918512  39056  19712 S 0.333 0.239   1:57.26 /engine-binaries/derekbit-longhorn-engine-v1.6.3-rc1-pr-1174/longhorn --engine-instance-name e2e-test-+
    1 root      20   0    2528   1152   1152 S 0.000 0.007   0:00.65 /tini -- instance-manager --debug daemon --listen <IP_ADDRESS>:8500

v1 IM process is not expected to consume a lot of CPU (v2 IM might consume 1 core of CPU due to SPDK polling). I am checking the CPU profiling of the IM process to see if we have a regression on this part. Here is the CPU pprof of a v1 IM process:

We can see that the 3 functions proxy.Proxy.startMonitoring, disk.Server.startMonitoring, and instance.startMonitoring is eating most of the CPU
... investigating

Potential culprit
The code for the proxy.Proxy.startMonitoring, disk.Server.startMonitoring, and instance.startMonitoring functions look like tight loops. For example:

https://github.com/longhorn/longhorn-instance-manager/blob/3408928207bcf676acd123c87897646200968fa4/pkg/proxy/proxy.go#L81-L94
https://github.com/longhorn/longhorn-instance-manager/blob/3408928207bcf676acd123c87897646200968fa4/pkg/instance/instance.go#L79-L92
https://github.com/longhorn/longhorn-instance-manager/blob/3408928207bcf676acd123c87897646200968fa4/pkg/disk/disk.go#L86-L99

These loops are waisting a lot of CPUs.
We recently introduced them at this PR https://github.com/longhorn/longhorn-instance-manager/commit/5ae373f1c4d781bce22287a158d9c80b5343f0f5#diff-b41d02f71c670ff801d99892d32ef6dd36e43fcdf4c12c044cd34a073cc18200

We fixed it in 1.7.x and master but forgot to backport it to 1.6.x
Ref: https://github.com/longhorn/longhorn/issues/8496

Because mergify cannot do the backport https://github.com/longhorn/longhorn-instance-manager/pull/491#issuecomment-2347401904 , I am going to create it manually

Thanks @PhanLe1010.
We forgot to backport https://github.com/longhorn/longhorn-instance-manager/pull/491 and https://github.com/longhorn/longhorn-engine/pull/1225 before.

let's add backport label to https://github.com/longhorn/longhorn/issues/8496.

Verification passed on v1.6.x-head (longhorn-instance-manager 6657d24 and longhorn-engine 3bc537b). Test case Reboot Replica Node While Heavy Writing And Recurring Jobs Exist and Reboot Volume Node While Heavy Writing And Recurring Jobs Exist both passed: https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1364/

Remove the require/qa-review-coverage label since we have related automated test cases.


Bug of the mmdet.models.losses.mse_loss.mse_loss function

Describe the bug
The function F.mse_loss set reduction='mean' by default. Therefore, MSELoss Class executes mean operation no matter what is passed to 'reduction'.
Bug fix
@weighted_loss
def mse_loss(pred, target):
return F.mse_loss(pred, target, reduction="none")

Thanks for reporting the bug! Would you like to create a PR to fix it?

of course, i will submit a PR in few days. By the way, can i ask how to test on original size image?

Fixed in #2301


[Feature request] Shutdown timer

I miss the custom shutdown timer in the shutdown menu.

I can't find support for it on Kodi's jsonrpc API, so you'll have to keep using the GUI for that.

Mh, but I use a keyboard-less Raspberry with openelec and cannot access the GUI ;-D
The inofficial xmbc remote has a button "Press S" which opens the GUI shutdown dialogue.
Perhaps you could add "shutdown dialogue" option?!

Hadn't thought about that, it might make sense including that option and removing the suspend and reboot.
Anyway, you don't need a keyboard to navigate the GUI. I don't know which skin you're using, but navigate to the power icon (on the bottom in the default skin) with the remote d-pad, click on it and the shutdown menu appears. Or am i missing something?

Youre right. I didn't know that I can navigate to the power button with the d-pad ;-D
Thanks for this hint! :-)


Inatall failed

after reinstalling multiple times to verify the problem When fetching the download for  proto-GE it will timeout but will not make another attempt to get.
if your not paying attention the user may miss this happening an then vortex wont launch after removing then reinstalling it was able to successfully fetch

Right, it doesn't handle network issues very well right now.
Would recommend making sure you're on a stable connection before installing.
It not properly aborting on error is tracked here - https://github.com/pikdum/steam-deck/issues/31.

Should properly error out on install issues rather than continuing, which is a bit better than before.
Going to go ahead and close this - feel free to re-open if you're still having issues.


Upgrade Futuniuniu.app to v3.0.2

Thank you for the contribution. It will be merged in a different pull request due to some simple recommended alterations. Your contribution is still included (and still credited to you), with the appropriate modifications, when applicable.
Changes:

Facilitated future updates.
Don’t change to http.


Horrible view of the Android application icons

Godot version:
3.1
OS/device including version:
Android 9
Issue description:
All my Android apps have changed the icon. Applications developed using Godot. The icons are terrible - a white frame has appeared around the icon.

Previously, on older versions of Android, they looked great.
I did not change the icon images.

I don't think it's Godot's problem. The white frames appeared after Android update, so you probably need to update your icons to meet some new guidelines.

FYI: This is the result of Adaptive Icon introduced since Android O (API level > 26).
To get rid of the frame, the application's android:icon attribute in AndroidManifest.xml has to point to an Adaptive Icon drawable XML.
It seems that there is no mention of adaptive icon in the codebase.

My applications do not use adaptive icons.
I decided to add them, but did not find the corresponding menu item in the project export.

I looked at the contents of the export templates and did not find adaptive icons.

Also, I did not find mention of adaptive icons in the documentation. As I understand it, Godot does not support this feature.

Uh, I believe we already have an issue open for adaptive icon support? Might have been moved to godot-proposals repo, though?

Ah, indeed :/ Closing as duplicate of #18256


How can i submit meditaiton minutes to google fit ?

How i can save the meditation minutes to Google fit ?

duplicated #208

@aboveyunhai  I went through  #208, I can't seem to find save generic activity api

@aboveyunhai  I went through  #208, I can't seem to find save generic activity api

Good catch, i will take a look at it.

@aboveyunhai  I went through  #208, I can't seem to find save generic activity api

because it's not yet implemented


Unable to run docker registry in first attempt

I am running ubuntu server 14.10 inside virtualbox on my windows 7 box.
However it worked after i executed same command again -
shailendra@shailendra-ubuntu:~$ sudo docker run -p 5000:5000 registry
[sudo] password for shailendra:
2014-11-26 23:50:16 [1] [INFO] Starting gunicorn 19.1.0
2014-11-26 23:50:16 [1] [INFO] Listening at: http://<IP_ADDRESS>:5000 (1)
2014-11-26 23:50:16 [1] [INFO] Using worker: gevent
2014-11-26 23:50:16 [13] [INFO] Booting worker with pid: 13
2014-11-26 23:50:16 [14] [INFO] Booting worker with pid: 14
2014-11-26 23:50:16 [15] [INFO] Booting worker with pid: 15
2014-11-26 23:50:16 [16] [INFO] Booting worker with pid: 16
2014-11-26 23:50:16 [1] [INFO] 4 workers
26/Nov/2014:23:50:17 +0000 WARNING: Cache storage disabled!
26/Nov/2014:23:50:17 +0000 WARNING: LRU cache disabled!
26/Nov/2014:23:50:17 +0000 DEBUG: Will return docker-registry.drivers.file.Storage
26/Nov/2014:23:50:17 +0000 WARNING: Cache storage disabled!
26/Nov/2014:23:50:17 +0000 WARNING: LRU cache disabled!
26/Nov/2014:23:50:17 +0000 DEBUG: Will return docker-registry.drivers.file.Storage
26/Nov/2014:23:50:17 +0000 WARNING: Cache storage disabled!
26/Nov/2014:23:50:17 +0000 WARNING: Cache storage disabled!
26/Nov/2014:23:50:17 +0000 WARNING: LRU cache disabled!
26/Nov/2014:23:50:17 +0000 WARNING: LRU cache disabled!
26/Nov/2014:23:50:17 +0000 DEBUG: Will return docker-registry.drivers.file.Storage
26/Nov/2014:23:50:17 +0000 DEBUG: Will return docker-registry.drivers.file.Storage
==============================================================================
shailendra@shailendra-ubuntu:~$ curl http://localhost:5555/version | python -mjson.tool
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100   148  100   148    0     0   7842      0 --:--:-- --:--:-- --:--:--  8222
{
"ApiVersion": "1.15",
"Arch": "amd64",
"GitCommit": "4e9bbfa",
"GoVersion": "go1.3.3",
"KernelVersion": "3.16.0-23-generic",
"Os": "linux",
"Version": "1.3.1"
}

Thanks @sgirones. This fixes also this issue on my system (docker-1.4.1, coreos 575.0)


MethodError: no method matching unwrap_cache(::DelayDiffEq.DDEIntegrator...

@ChrisRackauckas  This seems to be an API usage error or something:
https://ci.appveyor.com/project/ChrisRackauckas/diffeqpy/builds/24966633/job/534340b3jalo748h#L219
Julia exception: MethodError: no method matching unwrap_cache(::DelayDiffEq.DDEIntegrator{OrdinaryDiffEq.CompositeAlgorithm{Tuple{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType}},OrdinaryDiffEq.AutoSwitch{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Float64}} (...and so on...)
then
Closest candidates are:
  unwrap_cache(!Matched::OrdinaryDiffEq.ODEIntegrator, ::Any) at C:\Users\appveyor\.julia\packages\OrdinaryDiffEq\Cc6K8\src\cache_utils.jl:6
  unwrap_cache(!Matched::StochasticDiffEq.SDEIntegrator, ::Any) at C:\Users\appveyor\.julia\packages\StochasticDiffEq\YRc41\src\cache_utils.jl:2

@kanav99

Can you give me a MWE which makes it fail? @tkf

The test failure occurs while running this:
https://github.com/JuliaDiffEq/diffeqpy/blob/feee104e962ae21641cccf309c73fc0ffaf603b5/diffeqpy/tests/test_dde.py#L6-L23
Translating this back to Julia,
using DifferentialEquations

function f(du, u, h, p, t)
    du[1] = 1.1/(1 + sqrt(10)*(h(p, t-20)[1])^(5/4)) - 10*u[1]/(1 + 40*u[2])
    du[2] = 100*u[1]/(1 + 40*u[2]) - 2.43*u[2]
end

u0 = [1.05767027/3, 1.030713491/3]

function h(p,t)
  [1.05767027/3, 1.030713491/3]
end

tspan = (0.0, 100.0)
constant_lags = [20.0]
prob = DDEProblem(f,u0,h,tspan,constant_lags=constant_lags)
sol = solve(prob,saveat=0.1)

seems to fail with the same error.


filmmaking, greenshank (logical-conflict)

This pull request was generated by the 'mq' tool

/trunk merge


Implement Stack using array

Implement Stack using array

StackUsingArray.zip

Can I work on this issue??

@mayankkagrawal This is not the way how we push code. I suggest you to please learn about github and then try again.

@jakansha2001 Yes please go ahead and please make sure to follow all the points of the contribution guidelines. I am assigning this issue to you.

yes sure thank you!

i was working with this issue what happened?

extremely sorry @jakansha2001 I was closing another issue but by mistake I did this one

@jakansha2001 I have reopened the issue and assigned it to you

okay thanks


Add Dark and Light Theme Feature & Enhance UI

The portfolio currently lacks a toggle feature for dark and light themes. Adding this functionality will improve user experience by allowing visitors to switch between light and dark modes based on their preferences or system settings. Additionally, UI enhancements like better spacing, font size adjustments, and more polished visuals will improve overall readability and aesthetics.
And about me page can be also be added
Please assign me this issue under hacktoberfest label
https://github.com/user-attachments/assets/51edecc5-4b2d-4d6b-868d-555871b18b02

Heyy, @krishn404 I want to work on this issue. Can you please assign me this


New limit pushdown behavior

Why are we implementing it? (sales eng)
It used to be when applying a LIMIT to a query which GROUPs BY the distribution column, the limit would not push down. There was a workaround to make the pushdown happen by setting limit_clause_row_fetch_count. However the end-user might think this would produce an approximation, when actually it pushes the complete aggregation to the worker shards.
If I am understanding the fix correctly, Citus will now push down a limit without any need for that GUC.
Communication goals (e.g. detailed howto vs orientation)

Explain that the limit will push down when a GROUP BY is on the distribution column
Also mention that in that situation the GUC will be disregarded, even though it continues to be useful for other situations.

Good locations for content in docs structure
Update https://docs.citusdata.com/en/v7.0/dist_tables/querying.html#limit-pushdown
How does this work? (devs)
Link to relevant commits and regression tests if applicable

https://github.com/citusdata/citus/issues/1589

Reported more generally in https://github.com/citusdata/citus/issues/606
Attempted fix: https://github.com/citusdata/citus/pull/1635
Actual fix: https://github.com/citusdata/citus/pull/1641

@saicitus can you confirm whether I understood this issue correctly? Anything else to add?

Quoth Sai:

So only item we would add to https://docs.citusdata.com/en/v7.0/dist_tables/querying.html#limit-pushdown is when there is a group by on partition column all LIMITs (whether it be on aggregate or columns) would be pushed-down directly.


Add AB members to project team page

As a first draft a list of ,
Later we could add links to pages and picture.
Need to get permission first.

Done in #6


Document how to use audio stream with DialogServiceConnector in multi-turn

Since this is tricky to do, we need some public docs (docs.microsoft or GitHub)
This issue is for a: (mark with an x)
- [ ] bug report -> please search issues before submitting
- [ ] feature request
- [x ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Have you been able to move forward with the documentation?
It is very important for my project with direct line speech.
Thanks a lot.

Unfortunately, we do not yet have a dedicated document for this. At the moment we point developers to the C# Voice Assistant Test Tool as an example of how to manage multi-turn dialog with inputs from a separate WAV file per turn. Regardless of your programming language, you can do similar things in your code. The idea being using a pull audio input stream to provide audio to the DialogServiceConnector, while feeding the stream from a different WAV file at each turn. Let us know here how that worked out for you.

Thanks for the reference to VA Test Tool.
I'm going to give it a look.


Extend Travis Testing

For now travis-ci only tests very few configurations:

php 7.2 on ubuntu xenial (16.04) LTS with PSQL 9.6 and postgis 2.4
php 7.3 on ubuntu xenial (16.04) LTS with PSQL 9.6 and postgis 2.4

The purpose of this PR is to test it on newer psql versions (10, 11, 12) and postgis versions (2.5 and 3) as well as latest ubuntu LTS (bionic).

Replaced with #373


Address permission exporting/importing at user migrations based on .carto files

We are considering .carto files for migrations. It doesn't export permissions, but we should provide a way to do it.

Closing as won't fix, as this makes no sense for SaaS. If this is needed for a local installation, it should use the private API.


Review/rationalise API endpoint usage by the Smartpanels

The existing code is probably using a selection tfc-app[1,2,3,4]/smartcambridge.org endpoints with resulting complicated dependancy graph. This needs rationalisation, at least to ensure that anything on smartcambridge.org is only using APIs also on smartcambridge.org

See also #54

Done (by @abrahammartin)


Created Files for Four Graph Components

Created Files for Four Graph Components
Created the general file structure for the graphs that will be implemented at a later date.
(Planning on changing the names as development progresses).

Good file structure, maybe change the names later! :)


Clarify intent of wasm-pack and commands

The description of wasm-pack in this repository:

wasm-pack helps you build and publish rust-generated WebAssembly to the npm registry to be used alongside any other javascript package in workflows that you already use, such as webpack or greenkeeper.

This seems to indicate wasm-pack is only used when publishing the output to a registry, but wasm-pack appears to be usable for other use cases. The front page at https://rustwasm.github.io/wasm-pack/ also doesn't contain many details which makes it difficult to understand the intended use cases. This is a bit confusing for users that don't want to publish to npm (for example, running wasm-pack build for internal use in their project).
I wanted to raise this here because rustwasm/wasm-bindgen#1120 mentioned that wasm-pack is an appropriate replacement for the example build scripts there. It seems to be working great and gives me the expected output, but I'm unsure if I'm misusing the CLI (Your wasm pkg is ready to publish at "/Users/josh/Projects/js-hello-world/pkg". even though I don't want to publish anything).

The commands section in the book describes the commands pretty well and does clarify that publishing is optional. So I guess there could be some improvements here:

Add more details about possible use cases for wasm-pack on both gh-pages and repository readme could be useful.
Maybe wasm-pack build should note that publishing is optional or rephrase the current message.
Describe how to setup a project to match the examples in wasm-bindgen. For example, whenever I run wasm-pack build the package.json is overwritten, so it's unclear how to add a serve script to the pkg/package.json without it being replaced each time. Maybe there's another way to do it but glancing through the documentation it wasn't obvious.

Let me know if there are established best practices already, I'd be happy to send a PR to try to clarify.

this is going to be handled partially by a PR in this repo and partially in a set of others! i'm closing because we'll file more granular issues for the to do items, thank you so much for this thoughtful issue! it was very helpful :)

Sounds great, thank you!


Add preselect filters using queryParams

Signed-off-by: Luiz<EMAIL_ADDRESS>

Its needed to fix #65 first to aprove this PR, unities and partners are missing in the kotlin backend


snapshot: generate seqnum on writes; restores seqnum on start up

now we've added space for seqnum in the key value encoding but it's still zero. we need to generate a new seqnum on every write, and restores the latest seqnum from storage when start up.

I took a pass at this in https://github.com/slatedb/slatedb/pull/353. Feel free to assign this issue to me.

@calavera assigned, thank you for the contribution!


Updated sentence on IoT data processing and added Azure Stream Analyt…

…ics as an example of Azure tool
PowerBI is mistakenly listed as an Azure service or tool. Added ASA (Azure Stream Analytics) instead as an example, and mentioned that PowerBI is a Business Intelligence platform.

@jehona-m - Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Please, advise if there were any further progress on this PR's review? Thanks.

#sign-off

Docs Build status updates of commit a76569c:
:bulb: Validation status: suggestions

File
Status
Preview URL
Details

articles/industrial-iot/overview-what-is-industrial-iot.md
:bulb:Suggestion

Details

articles/industrial-iot/overview-what-is-industrial-iot.md

Line 43, Column 262: [Suggestion: docs-link-absolute - See documentation] Absolute link 'https://docs.microsoft.com/azure/stream-analytics' will be broken in isolated environments. Replace with a relative link.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Sample rate mismatch issue causes popping noise/distortion when recording

I've been using AudioKit to record audio from the iPhone's microphone. It's been working great but since upgrading from 4.6.4 to 4.7, I now have a popping noise/distortion when recording audio. I posted on SO and got feedback that it sounded like a sample rate mismatch.
I removed the following code from my recorder and the popping went away:
AKSettings.defaultToSpeaker = true
The problem with this approach is when the recording is played back, it only comes through the earpiece, not the external speaker.
You can see the SO post here for more info:
https://stackoverflow.com/questions/55789818/popping-noise-when-recording-audio-with-audiokit?noredirect=1#comment98261479_55789818

This issue is getting more attention on StackOverflow, so I'll close it here, but what would be great would be a set of example projects that demonstrate the issue.


Need camera permission when I only want to use the audio.

I want only using audio function in my app, and when I follow this repo's example code and https://github.com/zegoim/zego-flutter-sdk/issues/1 , setup my code like this:
      ZegoLiveRoomPlugin.setUser(userID, userName);
      ZegoLiveRoomPlugin.loginRoom(roomID, 'test-room-$roomID', ZegoRoomRole.ROOM_ROLE_ANCHOR ).then((result) {

        if(result.errorCode == 0) {
          print('登录房间成功');

          ZegoLiveRoomPublisherPlugin.registerPublisherCallback(
            onPublishStateUpdate: onPublishStateUpdate,
            onPublishQualityUpdate: onPublishQualityUpdate,
          );

          ZegoLiveRoomPublisherPlugin.startPublishing(streamID, 'flutter-example', ZegoPublishFlag.ZEGO_MIX_STREAM);
          ZegoLiveRoomPublisherPlugin.enableMic(true);

          ZegoLiveRoomPlayerPlugin.startPlayingStream(streamID);

          ZegoLiveRoomPlayerPlugin.enableSpeaker(true);

        } else {
          print('登录房间失败，错误码: ${result.errorCode}');
        }
      });

But there is a problem which is iOS devices asked camera permission.
I don't want to show up the camera permission requirement.

Hello, I Think you should call enableCamera(false) because the default value of this api is true.If you call this api to disable the camera device, iOS don't asked the camera permission.

I want only using audio function in my app, and when I follow this repo's example code and #1 , setup my code like this:
      ZegoLiveRoomPlugin.setUser(userID, userName);
      ZegoLiveRoomPlugin.loginRoom(roomID, 'test-room-$roomID', ZegoRoomRole.ROOM_ROLE_ANCHOR ).then((result) {

        if(result.errorCode == 0) {
          print('登录房间成功');

          ZegoLiveRoomPublisherPlugin.registerPublisherCallback(
            onPublishStateUpdate: onPublishStateUpdate,
            onPublishQualityUpdate: onPublishQualityUpdate,
          );

          ZegoLiveRoomPublisherPlugin.startPublishing(streamID, 'flutter-example', ZegoPublishFlag.ZEGO_MIX_STREAM);
          ZegoLiveRoomPublisherPlugin.enableMic(true);

          ZegoLiveRoomPlayerPlugin.startPlayingStream(streamID);

          ZegoLiveRoomPlayerPlugin.enableSpeaker(true);

        } else {
          print('登录房间失败，错误码: ${result.errorCode}');
        }
      });

But there is a problem which is iOS devices asked camera permission.
I don't want to show up the camera permission requirement.

Hello, I Think you should call enableCamera(false) because the default value of this api is true.If you call this api to disable the camera device, iOS don't asked the camera permission.

Oh, I missing this function.
It's working now.
Great work! Thank you.


Fix benchmarks results.

When multiplying time with iterations number you will get wrong benchmark results.

nobody cares :cry:

as a production-quality library, this should be a major issue! why does nobody care? :O

The tests  are still showing wrong numbers. We need to merge that PR please.


Resolvers not updated since over 1 week

Just to notify you that the resolvers are not updated since 12 of august

Hey, thanks for the ping! An update has been pushed.


healthcheck: support TCP health check with ProxyProtocol

Commit Message: healthcheck: support TCP health check with ProxyProtocol
Additional Description: This PR aims to support TCP healthcheck with ProxyProtocol. This feature is useful to ensure Proxy Protocol is enabled or not from upstream servers. It works in addition to normal TCP based healthcheck. This feature is the equivalent with check-send-proxy provided by HAProxy. https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#5.2-check-send-proxy
Risk Level: Low
Testing: Unit/Integration
Docs Changes: Required
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

/lgtm api
@zuercher for owner review

@zuercher friendly ping

/lgtm api

@Shikugawa one last thing, can you add a release note for the new field?

/wait

ping @Shikugawa

@botengyao @zuercher i think this is waiting for final review

Fixed conflict. Could you please approve again?

/retest


add --abi option

My end goal is to have seamless electron integration, but for now this should enable a more manual process for downloading the desired prebuild

:+1: @ralphtheninja ?

I'm -1 to this change as it can cause confusion in non-electron cases.  Why not simply add a temporary --electron option for now?

@brett19 reaching --electron is the goal, i wrote this in the process of getting there and thought it would still be useful.
about non-electron cases, i think we just need to make clear which commands this option applies to.

@juliangruber if you want we could create a separate issue for this and spec out what we need, I can help out as well

Hmm @brett19 is on to something, but --abi is useful too.
As I see it, we want to

install prebuilt binaries from github, based on the abi version of electron, so we need the abi from somewhere, right?
if we can't find any prebuilt binaries, we want to call out to node-gyp (like we do now) but with some different settings, e.g. changing HOME and passing on --dist-url:

HOME=~/.electron-gyp node-gyp rebuild --target=$TARGET --arch=$ARCH --dist-url=https://atom.io/download/atom-shell
taken from [electron-demo](from here https://github.com/Level/electron-demo/blob/master/package.json#L9)
So first of all, to solve 1. we need the abi somehow and the question is how we get that. There are different methods for this, one being the one @juliangruber just mentioned here, another being using either a hardcoded --target=0.X.Y or by using https://github.com/ralphtheninja/electron-version and using node-gyp to actually download the headers for electron with that target and using https://github.com/mafintosh/prebuild/blob/master/abi.js#L4 to just parse it out from the headers.
Did that make sense?

And btw, we can just use this PR to discuss the code and update. Once we're good, we just squash and clean up. Sound good?

working on the real --electron thing now

I've been working on a new module, https://github.com/juliangruber/require-recompile, that tackles this problem with a new approach: It patches require() so when you require() a module that has been built for a different version of node, it will recompile it. It will either call node-gyp rebuild or shell out the prebuilt, but for that prebuilt needs to support the --abi option.
So, can I get another +1 or a merge for this?

Hey Guys,
I guess what I'm confused about here is: does node-gyp support building for an ABI that is not the current one?  I was under the impression that it could not, but maybe it was added more recently or I was simply unaware.
Cheers, Brett

@brett19 yes it's possible: node-gyp rebuild --target=X

+1 You can just merge https://github.com/mafintosh/prebuild/pull/70 which will close this one

@ralphtheninja i'm just gonna merge this one since i suspect the require-recompile way will have way less edge cases than --electron, for example that it works on the whole dependency tree.

@juliangruber Are you fine using github:mafintosh/prebuild in require-rebuild for now?

yup no worries, it's still experimental

2.9.0


Scrollbar.scrolltop or scrollbar.scrollto()

Scrollbar.scrolltop or scrollbar.scrollto() does not jump to the specified bottom of the page when chatting in vue. Versions are 8.6.0 and 8.6.2

I guess that means the maximum vertical scrolling distance of your scrollable area is 1900px.

I guess that means the maximum vertical scrolling distance of your scrollable area is 1990px. Have you checked scrollbar.limit?

The browser's own scrollbar restrictions, or our plugin's scrollbar restrictions

The browser's own scrollbar restrictions, or our plugin's scrollbar restrictions

This plugin's.
Are you adding padding to the container element? That may cause a wrong calculation of the height of the scrollable area.

The browser's own scrollbar restrictions, or our plugin's scrollbar restrictions

This plugin's.
Are you adding padding to the container element? That may cause a wrong calculation of the height of the scrollable area.

Yes, padding is added to container elements. Is there any way to avoid miscalculation

Yes, padding is added to container elements. Is there any way to avoid miscalculation

You can remove the padding and add it to the .scroll-list element.

Yes, padding is added to container elements. Is there any way to avoid miscalculation

You can remove the padding and add it to the .scroll-list element.

I tried, not goozyet, chat, I do business scenario is like WeChat chat, need at the time of initialization to jump to the bottom of the chat, chat pictures may exist in the content, application in such scenarios, sometimes can't scroll to the bottom, the rolling part there will be no calculation that can avoid the maximum limit

Just published v8.6.3 that includes the container's paddings while calculating the content's size. Can you update to this version to see if the problem is solved?

Closed as no response.


Switch function seoUrl to str_slug of Laravel

As the title. Please switch seoUrl to str_slug feature of Laravel. It is maybe better for UTF-8 slug.

This commit changes far more than what the title says. Please clarify before merging.

Sorry. I have try create new pull request but seem it is too hard yet. 👎

As soon as you've got it figured out, open a new pull request. Cheers!


Hi @jessesquires. I have a problem. When I open a UIPickerImageViewController, chose an Image ad select it. But when My chatviewcontroller appear, if I select inputview on toolbar, the keyboad willAppear but the collecitonView and the inputTextField don't scroll :( Why ?

New issue checklist

[ ] I have read all of the README, documentation, and FAQ.
[ ] I have reviewed the contributing guidelines. Confirmation: ____
[ ] I have searched existing issues and this is not a duplicate.

General information

Library version(s):
iOS version(s):
Devices/Simulators affected:
Reproducible in the demo project? (Yes/No):
Related issues:

Bug report
Expected behavior

...

Actual behavior

...

Steps to reproduce

...

Crash log? Screenshots? Videos? Sample project?

...

Question or Feature Request

...

Thanks! :smile:
Please provide all the information in the issue template so we can help!
And don't forget to read our contribution guidelines. :blush:


one model to learn them all

In the transfer learning section this Model should be mentioned:
https://arxiv.org/abs/1706.05137
But i dont know how to compare it to other approaches.

Will update tonight


Errors in Replicate

Hello @haadcode
I tested the scripts for replicating databases, unfortunately I got the following error:
Error: listen EADDRINUSE :::4003     at Object._errnoException (util.js:1024:11)     at _exceptionWithHostPort (util.js:1046:20)     at Server.setupListenHandle [as _listen2] (net.js:1351:14)     at listenInCluster (net.js:1392:12)     at Server.listen (net.js:1476:7)     at EventEmitter.emitter.listen [as _listen] (/Users/huangqing/Documents/work/orbit/demo/node_modules/pull-ws/server.js:53:12)     at EventEmitter.listener.listen (/Users/huangqing/Documents/work/orbit/demo/node_modules/libp2p-websockets/src/listener.js:33:14)     at /Users/huangqing/Documents/work/orbit/demo/node_modules/libp2p-swarm/src/transport.js:86:20     at /Users/huangqing/node_modules/async/internal/parallel.js:31:39     at eachOfArrayLike (/Users/huangqing/node_modules/async/eachOf.js:65:9)
I am using jsipfs 0.26. Do I need more configurations?
Thanks for any advice.

Hi @kidinamoto01, thanks for opening the issue!
I believe this error is due to two IPFS nodes trying to listen on the same port. When creating multiple IPFS nodes locally, options can be passed to the IPFS constructor. Here's an example:
const ipfs = new IPFS({
  config: {
    Addresses: {
      API: '/ip4/<IP_ADDRESS>/tcp/0',
      Swarm: ['/ip4/<IP_ADDRESS>/tcp/0'],
      Gateway: '/ip4/<IP_ADDRESS>/tcp/0'
    },
  }
})

The important line here is the one that says Swarm: ['/ip4/<IP_ADDRESS>/tcp/0']. Note the /0 at the end which tells IPFS to start the node using a random port.
By starting both/all local nodes with /0, ie. a random port, port collision at start is avoided and that should get both of the nodes up and running and communicating as expected.
Feel free to re-open the issue if this doesn't fix it for you!


Feature/typing

Codecov Report

Merging #169 (b96e89a) into main (31e7ad3) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main      #169   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            8         9    +1
  Lines          374       394   +20
  Branches        35        35
=========================================
+ Hits           374       394   +20

Impacted Files
Coverage Δ

smtpdfix/authenticator.py
100.00% <100.00%> (ø)

smtpdfix/certs.py
100.00% <100.00%> (ø)

smtpdfix/configuration.py
100.00% <100.00%> (ø)

smtpdfix/controller.py
100.00% <100.00%> (ø)

smtpdfix/event_handler.py
100.00% <100.00%> (ø)

smtpdfix/fixture.py
100.00% <100.00%> (ø)

smtpdfix/handlers.py
100.00% <100.00%> (ø)

smtpdfix/typing.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Manual block cache data warm up

Feature request
Note: I am aware from the Starrocks community that a native way to warm up the block cache is being worked on. Prior to that being released, I am following suggestions to manually warm up the cache as described below.
I would like to be able to warm up data in the block cache manually by running select * from catalog.db.table on a schedule. From my testing, I am able to populate the cache, but this operation takes longer than it needs to as Starrocks attempts to deliver hundreds of millions of rows back to my SQL client (from the query profile).
Is there a way to perform the operation so that the query is executed but data is not returned to the client (since the data is not needed)?
Is your feature request related to a problem? Please describe.
Yes, populating the block cache for faster future queries.
Describe the solution you'd like
Being able to execute the query but not have data returned to the client.
Describe alternatives you've considered
N/A
Additional context
I am using PyMySQL client to query.
connection = pymysql.connect(
    host=os.getenv("MYSQL_HOST"),
    port=int(os.getenv("MYSQL_PORT")),
    user=os.getenv("MYSQL_USER"),
    password=os.getenv("MYSQL_PWD"),
    init_command="SET enable_scan_block_cache = true;",
    cursorclass=pymysql.cursors.SSCursor
  )

with connection.cursor() as cursor:
    sql = 'SELECT * FROM catalog.db.table;'
    cursor.execute(sql)

I have tried playing around with fetching one record, fetching all records, etc. but that hasn’t helped.
Alternatively, I have also tried using a CTE like
WITH warmed_table AS (
  SELECT * FROM catalog.db.table
)
SELECT * FROM warmed_table WHERE 1 = 0;

but this returns immediately, I guess since the Starrocks optimizer sees the bogus where condition.
Maybe there’s a way to disable a system variable for the optimization? I have tried to set enable_global_runtime_filter to false, but that also didn’t work.

Yes, starrocks will optimize where 1 = 0 to an empty operator node, and you can see it via explain.
Another way to do the warmup manually is to execute select count(column1), count(column2)... from table1

Thank you for the suggestion! That worked


exp/services/recoverysigner: remove commands that duplicate tinkey

PR Checklist
PR Structure

[ ] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
[ ] This PR avoids mixing refactoring changes with feature changes (split into two PRs
otherwise).
[ ] This PR's title starts with name of package that is most changed in the PR, ex.
services/friendbot, or all or doc if the changes are broad or impact many
packages.

Thoroughness

[ ] This PR adds tests for the most critical parts of the new functionality or fixes.
[ ] I've updated any docs (developer docs, .md
files, etc... affected by this change). Take a look in the docs folder for a given service,
like this one.

Release planning

[ ] I've updated the relevant CHANGELOG (here for Horizon) if
needed with deprecations, added features, breaking changes, and DB schema changes.
[ ] I've decided if this PR requires a new major/minor version according to
semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.

What
Remove the encryption-tink-key commands that duplicate the same functionality provided by tinkey.
Why
The tinkey tool was previously pretty hard to install because we had to download it, install a few dependencies (Java, a specific version of Bazel, a specific version of Python PIP), and then compile it. Both @howardtw and I had issues with this process. @howardtw's computer wouldn't compile it. Mine compiled, but an error with Bazel at the end made it really difficult to find the binary. Overall it was painful to get tinkey. We wrote these commands because we didn't want others to deal with this pain.
However, tinkey is getting released binaries and a homebrew bottle as a result of google/tink#375 which will make getting tinkey really easy. The method for installing on Mac and Linux will be as simple as brew install ....
I've tested out the release binary that was shared on that PR, and it indeed is really easy to get now, and really easy to run and use. It does all the things we'd want our commands to do:

recoverysigner encryption-tink-keyset create is replaced with tinkey create
recoverysigner encryption-tink-keyset encrypt is replaced with tinkey convert-key
recoverysigner encryption-tink-keyset decrypt is replaced with tinkey convert-key
recoverysigner encryption-tink-keyset rotate is replaced with tinkey rotate

By removing this code we keep our application focused on what its primary goal is. It keeps our code smaller, tests smaller, and we rely on a tool that is developed by some folks who really know what they are doing. We also get the benefits of continued maintenance of tinkey. We can help folks get started by including in our README instructions for how to create an initial tink keyset.
Known limitations
The tinkey tool still requires Java to be installed, but that's a small thing I think and easy to do, especially one the homebrew bottle is released.

Have we tested out the output locally to make sure the recovery signer can start with both the encrypted keyset and the cleartext keyset? If we did things differently in our own commands, chances are something can go wrong when we use the output from the tinkey.

I was able to get both the encrypted output and the cleartext output from tinkey. However, the formatted as the following:
Encrypted keyset:
{
    "keysetInfo": {
        "primaryKeyId":<PHONE_NUMBER>,
        "keyInfo": [{
            "typeUrl": "type.googleapis.com/google.crypto.tink.EciesAeadHkdfPrivateKey",
            "outputPrefixType": "TINK",
            "keyId":<PHONE_NUMBER>,
            "status": "ENABLED"
        }]
    },
    "encryptedKeyset": "AQICAHgx0+5/aiM0iVW0Pzb7AKDrxOE0BPV8mvmzdY+tAA/nKAH9AfcyUuJMVPSqVJtRp4pmAAABczCCAW8GCSqGSIb3DQEHBqCCAWAwggFcAgEAMIIBVQYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzZmHOmHn0mRWpSnnYCARCAggEmUGcW9AlE8/UDgUVEbrODWWqn3Vw70LXTAtgjPjTGVXiIFmXWotSHQitaFggXTAZLk7n3L3OPG62jwcSrogqOg88R2Y/sy8ZnezmAC5390NQjU3bAvfurraRLqzGw/ECa6t/UQJvaclRn0j75iiy7p6jQst3ot9Z1ZhMrp+igSx1TxV2ycctNQW6waBThSin44cKSFe0ygdmr7aPxJnxqLc3iNCLDVnF1ze4WuFpXiF+k0IYrLn4pnfym+2YEN1PhVT8XnefDIU1FJRN77UD7LXhqjYHtjPwUI9wUPjOxKrmvHRXVkoO2lBLVVurTl7BHchby6icQeBV2P97oZX1QQ843mOU3ZeTxHMNiiFg8jYnzh1Zrp7LC0F+PsCoHznhyt/VUvg+/"
}

Cleartext keyset:
{
    "primaryKeyId": 487804444,
    "key": [{
        "keyData": {
            "typeUrl": "type.googleapis.com/google.crypto.tink.EciesAeadHkdfPrivateKey",
            "keyMaterialType": "ASYMMETRIC_PRIVATE",
            "value": "EooBEkQKBAgCEAMSOhI4CjB0eXBlLmdvb2dsZWFwaXMuY29tL2dvb2dsZS5jcnlwdG8udGluay5BZXNHY21LZXkSAhAQGAEYARogX8L4j8Jjhip+zRsAMKlOnCuWbdGZ7lWwbBqTf1B6LD4iIGKRk4VVUhZRisZ/H6A+i3KDAEC0M+1R/75RR00Zym8QGiAaqcm6r9bfgslDZIXUA1Uz4Davln+fKtL2ShQMa7jhhw=="
        },
        "outputPrefixType": "TINK",
        "keyId": 487804444,
        "status": "ENABLED"
    }]
}

It won't be easy for users to use these as input to recoverysigner unless we have the recoverysigner take a file as input.

It won't be easy for users to use these as input to recoverysigner unless we have the recoverysigner take a file as input.

The JSON output containing new line doesn't prevent the output from being used. I tried it locally and it worked fine both as a command line option and as an environment variable.
It's also not difficult to use jq to compact the json if a user really prefers compact JSON. e.g. cat keyset.json | jq -c
I had asked about it in google/tink#390, but they made a point about it being easier to read, and after testing it and seeing that it works fine without new lines I don't think it matters now.

The JSON output containing new line doesn't prevent the output from being used. I tried it locally and it worked fine both as a command line option and as an environment variable.

I'll give it a shot. I'll let you know how it goes.

It's also not difficult to use jq to compact the json if a user really prefers compact JSON. e.g. cat keyset.json | jq -c

Great tip!

@leighmcculloch I was able to start recoverysigner locally with both an encrypted keyset and a cleartext keyset generated by tinkey 🎉


Twitch freezing constantly.

Hello @uBlock-user
I recently installed your uBO-Scriplets following a recommendation from yokoffing page: https://github.com/yokoffing/filterlists and noticed that it also "remove ads" from Twitch streams, which I really appreciate.
The problem is that when they play an ad, sometimes the video freezes, or it loops play-pause nonstop.
I use Win10pro 21H2 and Firefox 98.0 with uBlock Origin with those recommendations posted before.
I'm not sure if you are using the code from saucettv VideoAdBlockForTwitch found here: https://github.com/saucettv/VideoAdBlockForTwitch/blob/main/firefox/content.js but I see some resemblance between them (I'm not a coder).
My question is, could you update your scriplet maybe using the saucettv code as base since it's being periodically updated and works fine (Firefox Add-on), which I prefer, or make a version of the scriplet without the Twitch portion, so I can use the saucettv add-on, and they don't conflict with each other, please?
I hope I was clear enough (English is not my main language).
Thank you in advance.

which I prefer, or make a version of the scriplet without the Twitch portion, so I can use the saucettv add-on

Add twitch.tv#@#+js(twitch-videoad) to my filters.

Hello again @uBlock-user
Thank you for your reply. I really don't know how to add that line to your filter. Also, when I set userResourcesLocation with https://raw.githubusercontent.com/uBlock-user/uBO-Scriptlets/master/scriptlets.js it will load your scriplet, if I'm not wrong.
For now, I can only clear userResourcesLocation and use saucettv add-on and hope you can upgrade your scriplet when possible, so I can put it back on.
Thank you.

There's nothing to upgrade, you must make a choice. Either add the filter I posted above which will disable usage of my twitch scriptlet present or disable saucettv addon. Conflicts occur when you use both which is also explained by saucettv himself --
"You must remove any Twitch related user-scripts or other Twitch specific ad block extensions to prevent conflicts. You can use this extension with uBlock Origin though (Without user-scripts installed)."

I'm not using them together (your scriplet + saucettv add-on). The reason I opened this thread is that the Twitch streams are often freezing or getting on play/pause loop, as said before. I cited saucettv add-on to maybe be used as a base or idea to improve/fix the Twitch portion on your scriplet, if you are using it or not, of course is your decision. That's why I said I'll be waiting for a fix/update to solve the issues.
Sorry if I was not clear enough previously. I hope you can understand now.
Thanks.

are often freezing or getting on play/pause loop

I can't reproduce it. If it's lag, report it to browser devs.

that the Twitch streams are often freezing or getting on play/pause loop, as said before.

I can't reproduce this issue with only uBO installed.


[REQUEST] MCU chip manufacturer column for Zigbee coordinators

Please consider adding a column for MCU chip manufacturer to the Zigbee coordinators section:
https://zigbee.blakadder.com/coordinators.html
Suggest adding additional columns to database of Zigbee coordinators to make comparing easier.
This is as many different manufacturers use the same or similar Zigbee MCU radio chips or modules in their products and while some use the same Zigbee MCU radio chips they might run different Zigbee stacks and firmware.
For example, some Telegesis ETRX357 product series are based on the same type of ETRX35x chip family as Elelabs Zigbee products and Nortek HUSBZB-1 but use different Zigbee stack/firmware. And some MCU chips, like

MCU radio chip/module manufacturer (ex. Silicon Labs, Texas Instruments, Digi International, dresden elektronik, ZiGate, and Nordic Semiconductor)
MCU radio chip/module model (ETRX357, CC2530, CC2531, CC2538, CC2652R, CC2652P, CC1352P)
Zigbee Version (ZHA 1.2, Zigbee PRO, or Zigbee 3.0 are the three most common versions)
Zigbee Stack / Firmware, including version as for example both Silicon Labs and Texas Instruments have separate Zigbee stack versions for ZHA 1.2, Zigbee PRO, or Zigbee 3.0. As Silicon Labs has "EmberZNet PRO" (for Zigbee PRO) and "EmberZNet 3.0" (for Zigbee 3.0) , and Texas Instruments as Z-Stack 1.2 (for ZHA 1.2) and Z-Stack 3.0 (for Zigbee 3.0).

See requests/suggestions:
https://github.com/blakadder/zigbee/issues/26
https://github.com/blakadder/zigbee/issues/27
https://github.com/blakadder/zigbee/issues/28
https://github.com/blakadder/zigbee/issues/29

you're welcome to create a PR


feat(transformer/typescript): support for transform enum

#2997  👈
main

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

Join @Dunqing and the rest of your teammates on  Graphite


trigger-fbc-builds

trigge FBC builds

/override ci/prow/ci-index-securesign-bundle

/override ci/prow/images

/override ci/prow/tas-operator-e2e


Rework resources registration in client

Codecov Report
Patch coverage: 100.00% and project coverage change: -0.01 :warning:

Comparison is base (8ccf5e2) 99.63% compared to head (994a688) 99.63%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #45      +/-   ##
==========================================
- Coverage   99.63%   99.63%   -0.01%
==========================================
  Files          23       23
  Lines         546      543       -3
  Branches       38       39       +1
==========================================
- Hits          544      541       -3
  Partials        2        2

Impacted Files
Coverage Δ

bemserver_api_client/client.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/__init__.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/about.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/analysis.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/base.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/campaigns.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/energy.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/events.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/io.py
100.00% <100.00%> (ø)

bemserver_api_client/resources/notifications.py
100.00% <100.00%> (ø)

... and 7 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


NoMethodError: undefined method `attributes'

Hello!
I have a Contact model:
class Contact
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  validates :name, :contact, :question, :presence => true

  attr_accessor :name, :contact, :subject, :question

  def initialize(attributes = {})
    attributes.each do |name, value|
      send("#{name}=", value)
    end
  end

  def persisted?
    false
  end
end
A factory:
Factory.define :contact do |f|
  f.name 'my name'
  f.contact 'my contact'
  f.subject 'my subject'
  f.question 'my question'
end
And then I do:
Loading test environment (Rails 3.1.3)
>> Factory.build(:contact).attributes
NoMethodError: undefined method `attributes' for #
        from (irb):1
        from /Users/sekrett/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start'
        from /Users/sekrett/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start'
        from /Users/sekrett/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/commands.rb:40:in `'
        from script/rails:6:in `require'
        from script/rails:6:in `'
>>
It works when using old attributes_for method.

This just boils down to pure Ruby at this point; you have a class (Contact) and doesn't have an attributes method... because it's not declared on your object.
Searching Google for "activemodel attributes", I found this gem a few results down: http://stackoverflow.com/questions/5462484/activemodel-attributes I'd suggest you look into that.
ActiveRecord provides attributes by default, but ActiveModel doesn't so you need to implement it yourself - that's why you're seeing this.

I know, it is a special case, but it worked before with attributes_for. It will be removed in future.

The deprecation warning was more a general suggestion for what to use and not necessarily guaranteed to work (obviously, the object you're trying to call attributes on has to respond to attributes); what were you using attributes_for with?

If it will not be removed, that's nice. I'm testing a mailer, that all text from form will be present in the mail body. I don't use a complete ActiveRecord model, because I don't need to store data in database, I use only validations.

include ActiveModel::Conversion

undefined method `has_attribute?' for


Version 0.3.0

@JuliaRegistrator register()

Error while trying to register: "Tag with name v0.2.0 already exists and points to a different commit"

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/15591
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.3.0 -m "<description of version>" fe93f30c0e8d1106764e42dec8bd9898ea8e699e
git push origin v0.3.0

All done

Complete


lower performance when sampling all variables vs just evidence variables

There are some reports that the new version of the sampler which uses both query and evidence variables may yield worse results than the previous version which uses only evidence variables.
We want to

verify that this problem indeed exists by collecting one or more small examples that reproduce this
fully understand why this is happening
come with a plan to fix this (bug in sampler? increase number of iterations/samples? flag to switch?)

Some experimentation on the spouse example. Here I'm keeping the factor graph fixed and also the parameters to the sampler (-l 300 -s 1 -i 500 --alpha 0.1). The question is hot the commit on April 29th to the sampler repo affects results.
After commit ca3e8d45ef1c1c7d8badd16f82eb02847118d744
INFERENCE CALIBRATION (QUERY BINS):
PROB BIN 0.0~0.1  -->  # 65023
PROB BIN 0.1~0.2  -->  # 11
PROB BIN 0.2~0.3  -->  # 7
PROB BIN 0.3~0.4  -->  # 8
PROB BIN 0.4~0.5  -->  # 10
PROB BIN 0.5~0.6  -->  # 8
PROB BIN 0.6~0.7  -->  # 6
PROB BIN 0.7~0.8  -->  # 10
PROB BIN 0.8~0.9  -->  # 14
PROB BIN 0.9~0.10  -->  # 5903
The previous commit eaeac6838ff03c9bccd42d32ea3a0bed3436aab6
INFERENCE CALIBRATION (QUERY BINS):
PROB BIN 0.0~0.1  -->  # 12350
PROB BIN 0.1~0.2  -->  # 2897
PROB BIN 0.2~0.3  -->  # 2064
PROB BIN 0.3~0.4  -->  # 2054
PROB BIN 0.4~0.5  -->  # 1856
PROB BIN 0.5~0.6  -->  # 2085
PROB BIN 0.6~0.7  -->  # 2490
PROB BIN 0.7~0.8  -->  # 3251
PROB BIN 0.8~0.9  -->  # 5695
PROB BIN 0.9~0.10  -->  # 36258
Not sure why these distributions look so different. Perhaps it is just because the parameters to the sampler have to be calibrated to account for sampling from more variables. Increase the -i, -l, -s parameters by 10x on the newer version of the sampler has little effect. However, increasing the regularization parameter to -b 10 gives us
After commit ca3... with -b 10
INFERENCE CALIBRATION (QUERY BINS):
PROB BIN 0.0~0.1  -->  # 29013
PROB BIN 0.1~0.2  -->  # 3185
PROB BIN 0.2~0.3  -->  # 2707
PROB BIN 0.3~0.4  -->  # 2438
PROB BIN 0.4~0.5  -->  # 2205
PROB BIN 0.5~0.6  -->  # 2155
PROB BIN 0.6~0.7  -->  # 2030
PROB BIN 0.7~0.8  -->  # 2289
PROB BIN 0.8~0.9  -->  # 2373
PROB BIN 0.9~0.10  -->  # 22605
Is it possible that the regularization parameter is not calibrated correctly in the latest version?

Partial results: the weights do not look correct. There are very large weights (~30) and very small weights (~-30).

Hey Feiran,
I just added a few more results on variance which might help with debugging:
https://github.com/HazyResearch/deepdive/issues/282
Raphael
On Wed, May 13, 2015 at 6:02 PM, Feiran Wang<EMAIL_ADDRESS>wrote:

Partial results: the weights do not look correct. There are very large
weights (~30) and very small weights (~-30).
—
Reply to this email directly or view it on GitHub
https://github.com/HazyResearch/deepdive/issues/283#issuecomment-101869921
.

@raphaelhoffmann Thanks! That's helpful. I also observed similar issues with the new sampler. I'll start from debugging logistic regression (without symmetry rule).

Is this closed?

Using a smaller step size we can get similar distributions as before. @zhangce do you think this is still an issue?

Because of this issue, @feiranwang introduced the --learn_non_evidence option for the 0.6.0 release, turned off by default, to prevent users from seeing a sudden drop in their quality.  We should fix the quality issue in the correct approach and get rid of the option in the next release.

I believe the quality issue has been resolved by a bugfix in https://github.com/HazyResearch/sampler/commit/5347483558bfa7286f41050c5e536bb2e1945cc9


Swiper causes select list not to work on Phonegap/Android

When we include a form in slides with Swiper, select list doesn't work and we must force focus on input fields.

same problem here, I have a form with label on a swiper slider. When I click on a label it doesn't put the focus on the related form element. Disabling the swiper make it works again.
The solution above don't fix the problem.


New join syntax requires fields of the root table to be present in the graphQL selection set

Describe the bug
If I join 2 tables, with the latest join syntax, If I don't query the fields of the root table & only query the fields of the joint table, I get the result as null.
Query without root table fields

Query with root table fields

Expected behaviour
It should provide values for the joint table.
Actual behaviour
The values of the joint table are null
Steps to reproduce
Your environment

Space Cloud version:
OS:
Kubernetes or Docker:
The client api version (if applicable):
Browser (if applicable):

If this bug restricts your use of space-cloud, give it a thumbs up reaction, so that we can determine which bugs need to be fixed immediately.
👍

Here's a plan to fix this problem:
read.go
add  		*finalArray = append(*finalArray, m)
Lineno 399
	if m2, p := mapping[key]; p {
		mapLength = len(m2)
		m = m2
		*finalArray = append(*finalArray, m)
	} else {
		mapLength = len(m)
		mapping[key] = m
		*finalArray = append(*finalArray, m)


Added Conversion_Files.java and Conversion_Images.java, closes #53 and #54

Added Conversion_Files.java
- What I did
I have created a Java class which has 2 utility methods. This Java class can be used for effectively sending end-to-end encrypted files.
- How I did it
The first utility method converts a File object into an array of bytes (byte[]). The other method converts the byte[] back to a File object.
- How to verify it
The code can be verified as a 2 step process:
a. Firstly, you need to provide the name of the file you want to convert to array of bytes. The conversion of the specified file object to byte array will be done by the method 'fileToByteArray()'.
b. The byte array generated by the method 'fileToByteArray()' would be used by another method 'byteArrayToFile()' to reconstruct the file. This file would be saved as the Output (with same extension as that of the input).
The contents of both the input and output file will match proving that the inter-conversion is error free.
- Description for the changelog
Java file added to "at_client/src/main/java/org/atsign/client/util/Conversion_Files.java"

Added Conversion_Images.java

What I did
I have created a Java class which has 2 utility methods. This Java class can be used for sending image files peer-to-peer. It ensures that the image file sent is only readable by the end user.

How I did it
The first utility method converts an Image File object into an array of bytes (byte[]). The other method converts the byte[] back to an Image File object.

How to verify it
The code can be verified as a 2 step process:
a. Firstly, you need to provide the name of the image file you want to convert to array of bytes. The conversion of the specified image file object to byte array will be done by the method 'imageToByteArray()'.
b. The byte array generated by the method 'imageToByteArray()' would be used by another method 'byteArrayToImage()' to reconstruct the image file. This image file would be saved as Output.jpg.
Both the image files will match, proving that the inter-conversion is error free.

Description for the changelog
Java file added to "at_client/src/main/java/org/atsign/client/util/Conversion_Images.java"

@JeremyTubongbanua Please review this and let me know if any improvement is required. This fixes #53 and #54!

Added Conversion_Images.java

What I did
I have created a Java class which has 2 utility methods. This Java class can be used for sending image files peer-to-peer. It ensures that the image file sent is only readable by the end user.
How I did it
The first utility method converts an Image File object into an array of bytes (byte[]). The other method converts the byte[] back to an Image File object.
How to verify it
The code can be verified as a 2 step process:
a. Firstly, you need to provide the name of the image file you want to convert to array of bytes. The conversion of the specified image file object to byte array will be done by the method 'imageToByteArray()'.
b. The byte array generated by the method 'imageToByteArray()' would be used by another method 'byteArrayToImage()' to reconstruct the image file. This image file would be saved as Output.jpg.
Both the image files will match, proving that the inter-conversion is error free.
Description for the changelog
Java file added to "at_client/src/main/java/org/atsign/client/util/Conversion_Images.java"

@JeremyTubongbanua Please review this and let me know if any improvement is required. This fixes #53 and #54!

@VinaySheth
Hey! Thank you for your contribution. Your PR was accepted, merged, and it closed an issue. You could be eligible for a prize.
To be eligible, please send an email to<EMAIL_ADDRESS>with a screenshot of the PR approval email. This is to prove that your email corresponds to the correct GitHub account. Thank you!


[TIC4002-F18-3] Project BUDDY

BUDDY is a Teacher’s Contact Management Application supported by CLI text input commands. Teachers can enter contact information for a swift search and retrieve desired contact information within a few keystrokes.

Codecov Report

Merging #1 (44bd9d2) into master (4f7660a) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master       #1   +/-   ##
=========================================
  Coverage     72.15%   72.15%
  Complexity      399      399
=========================================
  Files            70       70
  Lines          1232     1232
  Branches        125      125
=========================================
  Hits            889      889
  Misses          311      311
  Partials         32       32

Continue to review full report at Codecov.

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


example for PM10 / PM2.5 device

I could ask for example with a PM10 or PM2.5 air pollution measuring device.
I tried to do it based on to the EspHap_AirQuality_MQ135 example but it keeps showing me Carbon Dioxide Level(ppm) instead of PM10 level(ug/m3) on my iPhone.

Hi , you are right, i have implemented in example only this characteristic "Carbon Dioxide Level" which is measured by ppm
You mentioned about VOC (ug/mm3). I will think how to combine. Or you can do by yourself by adding those characteristic in
homeintegration.c
I will apprecciate a pull request

Hi , you are right, i have implemented in example only this characteristic "Carbon Dioxide Level" which is measured by ppm
You mentioned about VOC (ug/mm3). I will think how to combine. Or you can do by yourself by adding those characteristic in
homeintegration.c
I will apprecciate a pull request

I wonder how to best solve it, because in the case of air pollution measurements, we measure various parameters (CO2, PM2.5, PM10, VOC etc.). Each of them has its own standards of acceptable values(not to mention the fact that are different acceptable values provided by WHO, US, EU and China).
Additionally, not every device performs all of these measurements. For example, I have two of my projects, one measures all of the 4 parameters mentioned above, and the other measures only PM2.5 and PM10.

I wonder how to best solve it, because in the case of air pollution measurements, we measure various parameters (CO2, PM2.5, PM10, VOC etc.). Each of them has its own standards of acceptable values(not to mention the fact that are different acceptable values provided by WHO, US, EU and China).
Additionally, not every device performs all of these measurements. For example, I have two of my projects, one measures all of the 4 parameters mentioned above, and the other measures only PM2.5 and PM10.

In my understanding,
You should get EspHap_AirQuality_MQ135  as example and depending on capabilities you should add additional Characheristic (or replace Carbon Dioxide Level) , which are supported by Apple
For instance
CHARACTERISTIC_PM25_DENSITY
CHARACTERISTIC_PM10_DENSITY
CHARACTERISTIC_VOC_DENSITY
From library points of view it's very easy, see impementation of
hap_new_air_quality_service  ( homeintegration.c )
You can add or replace additional characheristic.
Then behaviour in the code the same as in the given example EspHap_AirQuality_MQ135

In my understanding,
You should get EspHap_AirQuality_MQ135  as example and depending on capabilities you should add additional Characheristic (or replace Carbon Dioxide Level) , which are supported by Apple
For instance
CHARACTERISTIC_PM25_DENSITY
CHARACTERISTIC_PM10_DENSITY
CHARACTERISTIC_VOC_DENSITY
From library points of view it's very easy, see impementation of
hap_new_air_quality_service  ( homeintegration.c )
You can add or replace additional characheristic.
Then behaviour in the code the same as in the given example EspHap_AirQuality_MQ135

Shure we can add additional function to homeintegration.c with parameters, which characheristic will be supported
On the main sketch behaviour very simple,
For instance following can be used
homekit_service_characteristic_by_type(airqualitylevelservice, HOMEKIT_CHARACTERISTIC_CARBON_DIOXIDE_LEVEL);
If it returns NULL, characheristic is not supported

Shure we can add additional function to homeintegration.c with parameters, which characheristic will be supported
On the main sketch behaviour very simple,
For instance following can be used
homekit_service_characteristic_by_type(airqualitylevelservice, HOMEKIT_CHARACTERISTIC_CARBON_DIOXIDE_LEVEL);
If it returns NULL, characheristic is not supported


Hide breakpoints when in a RBL session

Use run by line
Add 2 break points
Hit the Continue button, and it will run to completion without stopping at the break points

Identified when @DavidKutu was demoing the Continue feature.

This is intended, the button is meant to exit RBL mode and execute the cell normally.

We need to finalize the UI coordination between RBL and notebook debugging.

We decided on hiding the breakpoints while using RBL. Not removing them, as they need to persist. Just hide them.

We could switch them to look like this

I suspect that they are actually being bound but then manually skipped over by RBL

I think this is ok, haven't heard about confused users


Chore: update appveyor

(ref: https://github.com/appveyor/ci/issues/2921#issuecomment-501016533)

Coverage remained the same at 86.154% when pulling 209d57b937f966ceef2f49ed557912a2d31adc34 on JPeer264:chore/update-appveyor into 816526581e3b9bec0949fb4425018af3d55ee6bf on aichbauer:master.

We should drop Node v4 and v6 and support only Node v10 and v12. Then appveyor should go green

That sounds right. Don't forget to change the node versions for the travis build as well.

@aichbauer appveyor works now with jest, but the coverage is just more strict than before (imports are not included in the coverage), that's why coveralls is now dropping 2.5%

No problem.
Send from GitHub Android App 😱


extension not getting picked up: redhat.vscode-yaml

extension redhat.vscode-yaml for some reason seems to get skipped by nix4vscode.
[[extensions]]
publisher_name = "redhat"
extension_name = "vscode-yaml"

i'm not sure i can get any info on this from the stdout log.
warning: unused import: `ReadableTable`
 --> src/utils/cacher.rs:2:12
  |
2 | use redb::{ReadableTable, TableDefinition};
  |            ^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: `nix4vscode` (bin "nix4vscode") generated 1 warning
    Finished dev [unoptimized + debuginfo] target(s) in 0.22s
     Running `target/debug/nix4vscode /persist/home/kiara/Downloads/cfg/home-manager/kiara/vscode-extensions/Cargo.toml`

cf. #15

redhat.vscode-yaml and redhat.vscode-xml has problem both. But I don't have much time to fix this recently, I recommend you using https://github.com/nix-community/nix-vscode-extensions with this together. It should solve all the problem.

I noticed you mentioned #15, is this bug happend again? I am referring to the problem that bbenoist.nix extensions do not exist or there are too many blank lines.

i hadn't retried with bbenoist.nix yet, but i'll try nix-vscode-extensions - thanks!

I came to nix4vscode from nix-vscode-extensions because it was giving me too many problems. Is there any other workaround?

I suggest using nix4vscode and nix-vscode-extensions together. Using nix-vscode-extension for the most case, and using nix4vsocde for the remains cases.