pi.wave_tx_at()  return wrong number

I found that pi.wave_tx_at() return wrong number.
While waveforms runs the reported number is sometime 9998. Sometime is even 66 and that was unexisting waveform.
I found that when running "pi.wave_chain([255, 0, test, 255, 3])" I got sometime 9998 but no other numbers.
While running pi.wave_chain([255, 0, test, 255, 1, 200, 200]) I got 9998 and other numbers too.
It's same on PI or remote.
Here is code to test.
`#!/usr/bin/env python
import pigpio
import time
#connect to PI
pi = pigpio.pi('t0804k20.local')
if not pi.connected:
exit()
pi.wave_clear()
test=[]
test.append(pigpio.pulse(1<<4, 0, 10))
test.append(pigpio.pulse(0, 1<<4, 10))
pi.wave_add_generic(test)
test = pi.wave_create()
print "test where 9998 apears where shouldn't"
pi.wave_chain([255, 0, test, 255, 3])
while 1:
x=pi.wave_tx_at()
if x!=test:
print x
break
pi.wave_tx_stop()
print "Test to show that other ids than correct or 9998 are returned"
pi.wave_chain([255, 0, test, 255, 1, 200, 200])
while 1:
x=pi.wave_tx_at()
if (x!=test) & (x!=9998):
print x
break
pi.wave_tx_stop()
pi.wave_clear()
`

Are you seeing a wave id other than 9999, 9998 or test?  Since you are chaining waves, I assume it's possible to catch it at the completion when one might expect PI_WAVE_NOT_FOUND or PI_NO_TX_WAVE.

Yes.
When I run above script I got as result 66 to. And this wave is not even created. There are just only 1 wave numbered 0 created.
..I run pigpiod -x -1 -s 1   if that's matter.

infinite chain pi.wave_chain([255, 0, test, 255, 3])
should run forever and wave_tx_at() should return id=0 in that case, but throws 9998 too.
pi.wave_chain([255, 0, test, 255, 1, 200, 200]) is even worse.
it throws 0 (correct) and 9998 and 66 randomly sometime.

I observed that (wrong) number returned is the number of last wave EVER created +1.
So as I had used 65 waved before the 66 come from that.
To prove that there is procedure to follow:
reastart pigpiod daemon
run supplied script
run supplied script again
The 1st time the wrong ID is 1 in the 1st part and 2 in second part
after dummy is created.
when run 2nd time the both wrong IDs are 2.
I hope that this will help to discover what is wrong.
`#!/usr/bin/env python
import pigpio
#connect to PI
pi = pigpio.pi('t0804k20.local')
if not pi.connected:
exit()
pi.wave_clear()
test=[]
test.append(pigpio.pulse(1<<4, 0, 10))
test.append(pigpio.pulse(0, 1<<4, 10))
pi.wave_add_generic(test)
test = pi.wave_create()
print ("test wave id is",test)
pi.wave_chain([255, 0, test, 255, 1, 250, 250])
while 1:
x=pi.wave_tx_at()
if x==9999:
break
if (x!=test) & (x!=9998):
print x
pi.wave_tx_stop()
#creadte dummy wave but don't use it anywhere
dumy=[]
dumy.append(pigpio.pulse(1<<4, 0, 10))
dumy.append(pigpio.pulse(0, 1<<4, 10))
pi.wave_add_generic(dumy)
dumy = pi.wave_create()
print ("test wave id is",test)
pi.wave_chain([255, 0, test, 255, 1, 250, 250])
while 1:
x=pi.wave_tx_at()
if x==9999:
break
if (x!=test) & (x!=9998):
print x
pi.wave_tx_stop()
pi.wave_clear()
raw_input('done')
`

if (x!=test) & (x!=9998):
if (x!=test) & (x!=9998):
?

while 1:
x=pi.wave_tx_at()
if x==9999:break
if (x!=test) & (x!=9998):
print x,
print
gives
Test to show that other ids than correct or 9998 are returned
1 1 1 1 1 1 1 1 1 1 1
done

I'm questioning the usage of a 'bitwise and' test between two inequality tests.  Shouldn't this be a 'logical and'.

in this case doesn't matter
the returned ID is 1 and that wave is not created at all! So here is something buggy

Thinking about it I'm not even sure this function works with wave chains.

As I observed that I can conclude that works buggy.
I need to filter out 9998 and any ID with numbers over last created one.

You need to fix your your conditional test using a logical and.

I do both! Same result!

..actualy I used that from pigs script and get same result.

Thinking about it I'm not even sure this function works with wave chains.

What purpose is then to function exists. In all other ways only one wave is running and user should know the ID.

Ok, I have verified your test script and per Joan's comment, will accept this as a documentation issue.

From my point of view this is not documentation issue.
The wave can be started with 3 commands:
1.wave_send_once
2.wave_send_repeat
3.wave_chain
with 1 and 2 there can be only one wave. So asking "wave_tx_at" here is nonsense. But with wave started with 3 the asking "wave_tx_at" can be essential. And this doesn't work as should. This is clearly bug. Probably in time when wave is changed to next one or next loop the result is incorrect.
Workaround I get is:
Can't rely on 9998 report as is reported even if wave is transmitted.
If in consecutive 2 or 3 reads you get 9998 then is probably true 9998.
Keep track what is highest wave ID created or what IDs are in current wave_chain.
if reported ID is higher than last wave created (or not in current wave chain) its garbage. So read ID again until you got expected wave ID or 9999 or (at least twice in row) 9998.
Until now I didn't got wrong report twice in row.

Can you retest with branch issue_356?

Can you retest with branch issue_356?

Please ignore this.  I believe I now understand why Joan said this API was not intended for chained waves.  wave_tx_at() takes a sample from the currently executing DMA address and then does a look-up into a table associating wave ids to DMA control block address ranges (indices actually).  Since wave chaining takes the DMA controller outside this table - executing delay loops for example - the resulting look-up value is outside the ranges in the table.
I'm going to leave this as documentation clarification - "wave_tx_at() is not intended to be used with chained waves."

Yes. At least there should be some notification that function doesn't work, or what they did.


Error in join command: 1.22.2, ubuntu impish

ubuntu@k8s-3:~$ microk8s join <IP_ADDRESS>:25000/0ee331b0641b816af60babd1a8c02adb/31c514cd07da
Contacting cluster at <IP_ADDRESS>

Waiting for this node to finish joining the cluster. Error: open servers store: stat /var/snap/microk8s/2488/var/kubernetes/backend/cluster.yaml: no such file or directory
Usage:
  dqlite -s <servers> <database> [command] [flags]

Flags:
  -c, --cert string       public TLS cert
  -f, --format string     output format (tabular, json) (default "tabular")
  -h, --help              help for dqlite
  -k, --key string        private TLS key
  -s, --servers strings   comma-separated list of db servers, or file://<store>

..

ubuntu@k8s-3:~$ snap list microk8s
Name      Version  Rev   Tracking       Publisher   Notes
microk8s  v1.22.2  2488  latest/stable  canonical✓  classic

Ubuntu Impish 21.10, fresh install, just for microk8s.
k8s-3-inspection-report-20211009_222843.tar.gz
And here the inspection report of k8s-1, the <IP_ADDRESS> node I was trying to join to.
k8s-1-inspection-report-20211009_223137.tar.gz

I have seen this before, the file cluster.yaml gets broken.
Can you show the directory content of this /var/snap/microk8s/current/var/kubernetes/backend
If you see an info.yaml can you print the content here?

Thats strange, the last inspect tarball shows k8s-3 node
NAMESPACE     NAME                                          READY   STATUS    RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES
kube-system   pod/coredns-7f9c69c78c-x26kn                  1/1     Running   0          13m     <IP_ADDRESS>   k8s-1   <none>           <none>
kube-system   pod/calico-kube-controllers-d4fd8f667-smp6c   1/1     Running   0          17m     <IP_ADDRESS>   k8s-1   <none>           <none>
kube-system   pod/calico-node-rk9rn                         1/1     Running   0          7m52s   <IP_ADDRESS>     k8s-2   <none>           <none>
kube-system   pod/calico-node-bf74x                         1/1     Running   0          7m43s   <IP_ADDRESS>     k8s-1   <none>           <none>
kube-system   pod/calico-node-jgd27                         1/1     Running   0          5m43s   <IP_ADDRESS>     k8s-3   <none>           <none>

NAMESPACE     NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE   SELECTOR
default       service/kubernetes   ClusterIP   <IP_ADDRESS>    <none>        443/TCP                  17m   <none>
kube-system   service/kube-dns     ClusterIP   <IP_ADDRESS>   <none>        53/UDP,53/TCP,9153/TCP   13m   k8s-app=kube-dns

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE   CONTAINERS    IMAGES                          SELECTOR
kube-system   daemonset.apps/calico-node   3         3         3       3            3           kubernetes.io/os=linux   17m   calico-node   docker.io/calico/node:v3.19.1   k8s-app=calico-node

NAMESPACE     NAME                                      READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS                IMAGES                                      SELECTOR
kube-system   deployment.apps/calico-kube-controllers   1/1     1            1           17m   calico-kube-controllers   docker.io/calico/kube-controllers:v3.17.3   k8s-app=calico-kube-controllers
kube-system   deployment.apps/coredns                   1/1     1            1           13m   coredns                   coredns/coredns:1.8.0                       k8s-app=kube-dns

NAMESPACE     NAME                                                DESIRED   CURRENT   READY   AGE   CONTAINERS                IMAGES                                      SELECTOR
kube-system   replicaset.apps/calico-kube-controllers-d4fd8f667   1         1         1       17m   calico-kube-controllers   docker.io/calico/kube-controllers:v3.17.3   k8s-app=calico-kube-controllers,pod-template-hash=d4fd8f667
kube-system   replicaset.apps/coredns-7f9c69c78c                  1         1         1       13m   coredns                   coredns/coredns:1.8.0                       k8s-app=kube-dns,pod-template-hash=7f9c69c78c

Can you check with this command?
microk8s status or microk8s kubectl get node-o wide

Ah, yes, I forgot to mention, the command eventually completes, even with that error displayed on screen.
Let me start from scratch (this is a throw-away cluster), and get you the other info you need.

I now ran another add-node command, on k8s-3, and it again complained about the missing yaml file and showed the dqlite error:
ubuntu@k8s-3:~$ time microk8s join <IP_ADDRESS>:25000/ca34ce2f6fb29fd6c333c95674ff70bf/7df001b0ce96
Contacting cluster at <IP_ADDRESS>
Waiting for this node to finish joining the cluster. Error: open servers store: stat /var/snap/microk8s/2488/var/kubernetes/backend/cluster.yaml: no such file or directory
Usage:
  dqlite -s <servers> <database> [command] [flags]

Flags:
  -c, --cert string       public TLS cert
  -f, --format string     output format (tabular, json) (default "tabular")
  -h, --help              help for dqlite
  -k, --key string        private TLS key
  -s, --servers strings   comma-separated list of db servers, or file://<store>

..

real    1m11.716s
user    0m1.266s
sys     0m0.889s

And now the file contains entries for the tree nodes, in all of the nodes, but now they all have Role: 0:
- Address: <IP_ADDRESS>:19001
  ID:<PHONE_NUMBER>608546238
  Role: 0
- Address: <IP_ADDRESS>:19001
  ID:<PHONE_NUMBER>921518004
  Role: 0
- Address: <IP_ADDRESS>:19001
  ID:<PHONE_NUMBER>5145130134
  Role: 0

Bottom line, it all seems to work in the end, but there is that message about that yaml file not existing and dqlite failing.

Thanks @panlinux for the information provided.
I see what's happening, it looks like when the join process checks for its progress in dqlite, dqlite has not completed or started the the cluster formation on the joining node.
The reason why it eventually succeeds is because the join retries after a few seconds.
@ktsakalozos
I think we should check for the existence of the cluster.yaml file before asking dqlite about its progress.


Operations via KP registry

A KP may provide many different operations: one-hop, arbitrary graph query, partial graph matches, adding edges to pre-existing graphs, annotation, etc...
The ReasonerAPI does not constrain the operation, but allows a KP to implement any of these (or any other) operation on the data.
For ARAs to use KPs effectively, they will need to know what a particular KP actually does (what operation(s) it performs).
This implies that we will need some shared catalog/description of operations, which can be updated over time as KPs innovate new operations.

Does "the operations" mean all operations? What if KP has, say, maintenance operations?

Does "the operations" mean all operations? What if KP has, say, maintenance operations?

It means the operations that it wants to expose to ARAs.  So things like one-hop queries or adding node properties.


chore: update FVM

Summary of changes

Changes introduced in this pull request:

updated FVM to the latest version as required by the NV24 upgrade,
updated fil-actor-states deps to unblock the bump

Reference issue to close (if applicable)

Closes https://github.com/ChainSafe/forest/issues/4806
Other information and links

Change checklist

[x] I have performed a self-review of my own code,
[x] I have made corresponding changes to the documentation. All new code adheres to the team's documentation standards,
[x] I have added tests that prove my fix is effective or that my feature works (if possible),
[x] I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

Hmm, perhaps even if it compiles, it doesn't necessarily mean that it works. I'll investigate tomorrow.


Improve binding gen for methods with keyword arguments

Currently only supports optional keyword args and doesn't check for unknown/invalid kwargs

Nice!!!


Add test for mapping adding sources with dict

Fixes #387

oh no, I just created #389 ...

Haha, almost the same, but you didn't forget to save original data.


Build and run instructions issues

I would like to run the agent in wsl2 Ubuntu.
When I follow the description in the build step:

Build
pip install -r requirements.txt
pip install .

apt install python-apt -> this cannot be run without sudo

Run
sudo c8ydm.start -> will not be found since the agent was installed without sudo

When I do all the steps using sudo or not and execute c8ydm.start I always get:
from c8ydm.core.apt_package_manager import AptPackageManager
File "/home/mstoffel/.local/lib/python3.8/site-packages/c8ydm/core/apt_package_manager.py", line 23, in
if 'Linux' == platform.system() and ('debian' == platform.linux_distribution()[0] or 'ubuntu' == platform.linux_distribution()[0]):
AttributeError: module 'platform' has no attribute 'linux_distribution'

I aligned the README accordingly. The issue should be fixed for Pythons > 3.7 now. Can you do a test?


2.4.3 (with updated KDM) - CrashLoopBackoff on nginx-ingress-controller

What kind of request is this (question/bug/enhancement/feature request):
bug
Steps to reproduce (least amount of steps as possible):

Create a cluster using RKE and with any k8s version available in v2.4.3 using kdm branch dev-v2.4

Result:
After cluster appears active, see nginx-ingress-controller is stuck in Updating state. Logs show:
W0528 21:24:23.304871 6 flags.go:221] SSL certificate chain completion is disabled (--enable-ssl-chain-completion=false)

nginx version: openresty/<IP_ADDRESS>

W0528 21:24:23.313991 6 client_config.go:541] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.

I0528 21:24:23.314208 6 main.go:183] Creating API client for https://x.x.x.x:443

I0528 21:24:23.339979 6 main.go:227] Running in Kubernetes cluster version v1.17 (v1.17.6) - git (clean) commit a8b52209ee172232b6db7a6e0ce2adc77458829f - platform linux/amd64

I0528 21:24:23.342788 6 main.go:91] Validated ingress-nginx/default-http-backend as the default backend.

F0528 21:24:23.488016 6 ssl.go:379] unexpected error storing fake SSL Cert: could not create PEM certificate file /etc/ingress-controller/ssl/default-fake-certificate.pem: open /etc/ingress-controller/ssl/default-fake-certificate.pem: permission denied

Other details that may be helpful:

This fails for nginx-ingress-controller tag nginx-0.32.0-rancher1
Fails for all 3 kubernetes versions shown in rancher ui with all different network providers (flannel, weave, canal, calico)
Seems same as rancher/rancher#27317 but with different kdm branch

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): v2.4.3
Installation option (single install/HA): single

On fresh install v2.4.4-rc2 , nginx-ingress-controller
comes up successfully without any problems in following K8s clusters with "canal" networking:
1.16.10-rancher2-1
1.15.12-rancher2-2
1.17.6-rancher2-1

On fresh install v2.4.4-rc2 , rancher/calico-node:v3.13.4 comes up successfully without any problems in following K8s clusters with "canal" networking:
1.16.10-rancher2-1
1.15.12-rancher2-2
1.17.6-rancher2-1


Use upstream flycheck-guile package

I've pulled this checker out as its own package, so we don't need to ship it with Doom.

This PR indirectly fixes a bug in the flycheck-guile.el included with doom, where I've used an rx syntax that's not supported in emacs 26.  It's fixed in the upstream repo with this commit: https://github.com/flatwhatson/flycheck-guile/commit/f37b6143776d15b3e7907e7621f6f96f8b1aec48

Thanks!

This breaks workflows that rely on directory local instances of guile that are loaded with tools like direnv. In particular it makes it so that geiser does not load guile libraries that are declared in guix manifests or nix-shells and loaded with direnv.
Also flycheck here seems to use the system's guile package instead of the guile package in profiles created by guix environment and I would assume nix-shell.


Fixed small grammatical error

I noticed a "you're" when it should be "your."  It bugged me, so I fixed it.  Other than that, love the library and the documentation!

Thanks!


Empty t3.xlarge spot instance not getting deleted

Description
Observed Behavior:
Empty t3.xlarge spot instance not getting deleted
Expected Behavior:
Empty Nodes should be deleted
Reproduction Steps (Please include YAML):

Install below nodepool

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: noncriticalinfra
spec:
  disruption:
    budgets:
      - duration: 164h
        nodes: '0'
        reasons:
          - Underutilized
          - Drifted
        schedule: 0 4 * * 0
    consolidateAfter: 1m
    consolidationPolicy: WhenEmptyOrUnderutilized
  template:
    metadata:
      labels:
        service-layer/role: noncriticalinfra
    spec:
      expireAfter: Never
      nodeClassRef:
        group: karpenter.k8s.aws
        kind: EC2NodeClass
        name: default
      requirements:
        - key: kubernetes.io/arch
          operator: In
          values:
            - amd64
        - key: kubernetes.io/os
          operator: In
          values:
            - linux
        - key: karpenter.sh/capacity-type
          operator: In
          values:
            - on-demand
            - spot
        - key: karpenter.k8s.aws/instance-category
          operator: In
          values:
            - c
            - m
            - r
            - t
        - key: karpenter.k8s.aws/instance-generation
          operator: Gt
          values:
            - '2'

Install below deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        service-layer/role: noncriticalinfra
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "64m"
            memory: 64Mi

Install below deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx2
  labels:
    app: nginx2
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx2
  template:
    metadata:
      labels:
        app: nginx2
    spec:
      nodeSelector:
        service-layer/role: noncriticalinfra
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "512m"
            memory: 256Mi

Once u performed all above 3 steps, 2 nodes will be created by karpenter (m3.medium and t3.xlarge)

Delete both the deployments

kubectl delete deploy nginx;
kubectl delete deploy nginx2;

Once both the deployments get deleted then ideally both the nodes should also get deleted one by one as both are empty. But surprisingly t3.medium instance gets immediately deleted as expected but not the t3.xlarge one. It's very surprising that those are behaving differently as those are part of same nodepool and should behave exact same way.
No logs emitted from karpenter whatsoever. As if karpenter knows nothing about that t3.xlarge node. No relevant events even from that nodeclaim. Below are the set of events from that nodeclaim
Type    Reason             Age   From       Message
 ----    ------             ----  ----       -------
 Normal  Launched           31m   karpenter  Status condition transitioned, Type: Launched, Status: Unknown -> True, Reason: Launched
 Normal  DisruptionBlocked  31m   karpenter  Cannot disrupt NodeClaim: state node doesn't contain both a node and a nodeclaim
 Normal  Registered         30m   karpenter  Status condition transitioned, Type: Registered, Status: Unknown -> True, Reason: Registered
 Normal  Initialized        30m   karpenter  Status condition transitioned, Type: Initialized, Status: Unknown -> True, Reason: Initialized
 Normal  Ready              30m   karpenter  Status condition transitioned, Type: Ready, Status: Unknown -> True, Reason: Ready

Please let me know what's going on here.
Versions:
Image version: 1.0.0@sha256:dd095cdcf857c3812f2084a7b20294932f461b0bff912acf58d592faa032fbef

Chart Version: 1.0.2
Kubernetes Version (kubectl version): 1.29

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

It might be related to https://github.com/aws/karpenter-provider-aws/issues/6593. Also FYI the said node is nothing but some daemonset pods so I can consider those to be empty

FYI, I can find below events coming in nodepool. Looks like something to do with NodePool DisruptionBudget. But not sure what's going on. I have even set below configuration, still not working
disruption:
    budgets:
      - nodes: 100%
    consolidateAfter: 1m
    consolidationPolicy: WhenEmptyOrUnderutilized

Events:
  Type    Reason             Age                 From       Message
  ----    ------             ----                ----       -------
  Normal  DisruptionBlocked  27m (x9 over 66m)   karpenter  No allowed disruptions due to blocking budget
  Normal  DisruptionBlocked  26m (x10 over 66m)  karpenter  No allowed disruptions for disruption reason Underutilized due to blocking budget
  Normal  DisruptionBlocked  26m (x10 over 66m)  karpenter  No allowed disruptions for disruption reason Empty due to blocking budget
  Normal  DisruptionBlocked  26m (x10 over 66m)  karpenter  No allowed disruptions for disruption reason Drifted due to blocking budget


Add different sort algorithm for "uses" - also order by length THEN alpha

When using the ordered_imports option, you can only specify one sortAlgorithm, e.g. length:
'ordered_imports' => [
    'sortAlgorithm' => 'length',
],

This results in the following:

Which is correct however it also sorts the use statements inside the class.
However it would be nice if you could specify a different sort order for the "use" statements inside the class - I would like them to be alpha sorted. Ideally there should also be two sort options so it sorts by length THEN alpha.
Maybe something like:
'ordered_imports' => [
    'sortAlgorithm' => ['length', 'alpha'],
],
'ordered_use' => [
    'sortAlgorithm' => 'alpha',
]

Hi and thanks for opening this issue :)
When you state;

Which is correct however it also sorts the use statements inside the class.

do you mean the ordered_imports is also sorting your Trait uses/imports? It shouldn't touch those..

Oh yes my bad, it's not touching those I was under the impression it was. Maybe that's an idea for another option though? To sort the use ones...

Thanks for clearing it up, all good :+1:
I'm not sure but I think sorting the traits use/imports in different order might cause the code to be act different with respect to conflict handling of methods having the same name. I've to check though ;)

Using enums in php 8.1, it tries to sort traits with outside imports too.

you can use ordered_class_elements for this, sadly the only thins supported is alpha and none more info https://cs.symfony.com/doc/rules/class_notation/ordered_class_elements.html

You can use https://cs.symfony.com/doc/rules/class_notation/ordered_traits to order the import as alpha.
So there are a few fixers to check:

https://cs.symfony.com/doc/rules/class_notation/ordered_traits  to order trait imports (inside a class/trait)
https://cs.symfony.com/doc/rules/class_notation/ordered_class_elements.html to define where these trait imports should be in your class/trait
order_imports - this is about namespaced imports , so not about trait imports in a class/trait

I'm going to close this ticket now as it is unclear what is left to do/asked, feel free to make a new issue with a request if something is still lacking.


Flycheck: Suspicious state from syntax checker go-vet

When I import native package into native test file.
package tests

import (
    ...
    "github.com/myGithubProjectRootPath/internal/platform/web"
)

...

It report a import package path not allowed error.

Suspicious state from syntax checker go-vet: Flycheck checker go-vet returned non-zero exit code 1, but its output contained no errors: package command-line-arguments (test)

imports github.com/myGithubProjectRootPath/internal/platform/web: use of internal package github.com/myGithubProjectRootPath/internal/platform/web not allowed

Try installing a more recent version of go-vet, and please open a bug report if the issue persists in the latest release.  Thanks!

The tests.go under myGithubProjectRootPath/cmd/user-api/tests directory.

This doesn't look like a go-mode issue, it looks like it is possibly an issue with flycheck or just an issue with your environment. go-mode does not have any integration with flycheck or go vet directly.
I'd suggest you try running go vet from the command line on the file to see what error it reports. If you think the issue is with flycheck and not your environment you should open an issue with that project.


tutorial_3d_semseg.ipynb points_tensor not defined

Following the tutorial in here i found perhaps an error:
points_tensor is not defined in the function:
def convert_range_image_to_point_cloud_labels(frame,
                                              range_images,
                                              segmentation_labels,
                                              ri_index=0):
  """Convert segmentation labels from range images to point clouds.

  Args:
    frame: open dataset frame
    range_images: A dict of {laser_name, [range_image_first_return,
       range_image_second_return]}.
    segmentation_labels: A dict of {laser_name, [range_image_first_return,
       range_image_second_return]}.
    ri_index: 0 for the first return, 1 for the second return.

  Returns:
    point_labels: {[N, 2]} list of 3d lidar points's segmentation labels. 0 for
      points that are not labeled.
  """
  calibrations = sorted(frame.context.laser_calibrations, key=lambda c: c.name)
  point_labels = []
  for c in calibrations:
    range_image = range_images[c.name][ri_index]
    range_image_tensor = tf.reshape(
        tf.convert_to_tensor(range_image.data), range_image.shape.dims)
    range_image_mask = range_image_tensor[..., 0] > 0

    if c.name in segmentation_labels:
      sl = segmentation_labels[c.name][ri_index]
      sl_tensor = tf.reshape(tf.convert_to_tensor(sl.data), sl.shape.dims)
      sl_points_tensor = tf.gather_nd(sl_tensor, tf.where(range_image_mask))
    else:
      sl_points_tensor = tf.zeros([points_tensor.shape[0], 2], dtype=tf.int32)

    point_labels.append(sl_points_tensor.numpy())
  return point_labels

if it's an error, what is the correct shape of sl_points_tensor?

Hi @aldipiroli thanks for spotting the issue!
It should be:
num_valid_point = tf.math.reduce_sum(tf.cast(range_image_mask, tf.int32))
sl_points_tensor = tf.zeros([num_valid_point, 2], dtype=tf.int32)

in the else section.
We'll also update the official code shortly.


Private youtube videos and playlists are not working correctly

Hello! I set up ~/.netrc (though --username --password does not work, either), and attempted these two things:
https://gist.github.com/SirCmpwn/1cd52a96adf25cb963e2
https://gist.github.com/SirCmpwn/422227cdcf05ccaa9032

It's been a while... just checking if this is still an issue for you. If not, then we can close this ticket.


Airplay not supported

Hi there,
thanks for the great app. Works fine on the MacBook.
However it dos not work with Airplay.
I have to "choose" the output to eqMac2 to use the app. But I cannot "simultaneously" chaos Airplay.

If I start the eqMac2 App during a running Airplay Stream, the connection to the speaker terminates. After that the app terminates. If I then use the MacBook Speakers and start eqMac2 again it works fine with the built-in speakers.
I expected to see the external Speakers within the dropdown menu of the app - but there I can only see the build-ins.

So sadly no chance to improve my Airplay Sound...
Any suggestions?
Thanks
Pascal
Hello :) Before you create an issue please read the following message:
My name is Roman and I'm the only developer of this app.
I will NOT contribute any more code to this repository ever again.
This repository is mostly for sharing the knowledge I gained during development.
At the moment I dedicate all my time to a startup and working on a new and very modern update to eqMac.
This new update will be completely rewritten from scratch and have many more new features and will be massively more stable (at least that't the plan).
I plan to release the new version in Q3 of 2018.
Thank you for your patience and giving eqMac a go :)
If you need help with eqMac please join our Slack Group:
https://join.slack.com/t/eqmac/shared_invite/enQtMjk4NDkwNzEzOTA4LTg4OWFlYWFjNGQzZTJiM2RmMDI4MTUzMjk5ZTk1ZTkwYzk5NTk1ZDMwNTc1ZmU2MDdmNzRhNjc4ZTBhOWM2MzA
That's your best bet at getting some help from me or the community.
GitHub is only for source-code related issues.
Still would like to report a bug or suggest a feature I can implement in the next version?
Please make sure you search through the Open and Closed Issues people have already submitted:
https://github.com/nodeful/eqMac2/issues?utf8=✓&q=is%3Aissue+
This eliviates the posibility of people creating duplicate issues.

https://github.com/nodeful/eqMac2/issues/164

Hey everyone. Excuse me for the lack of updates. I have been really busy on the new version of eqMac. I am happy to announce an open beta release.
You can download it here: https://eqmac.app
There are a lot of known bugs that I could not fix just yet:

Driver not installing from the first try. Sometimes need to restart eqMac a couple times.
Complex Device switching logic is not perfect (for example when switching off the device that's currently playing, plugging in new device etc.)
UI takes long to load (a lot can be done to improve that)
UI dimensions are not synching properly
There's a noticeable audio delay in the playback, so not suitable for video yet (I know where the problem lies just haven't had the time to fix yet)
Sometimes the playback doesn't start, in that case please try to switch the output to the device you want and eqMac should try and build the audio pipeline again.

So as you can see there's still some work to be done but at least it's a completely modern tech stack that I am fully willing to work on: 100% Swift, User Space driver and a Web UI, instead of C++, Kernel Drivers. As I said, should work on Catalina and should not have any pesky ear drum blasting volume bugs (at least I didn't come across any).
I'm open to feedback and issue reports here: https://github.com/bitgapp/eqmac
That repo will become the main repo for eqMac and this repo will be archived eventually.
And yes it's called just eqMac, not eqMac3 :) And it will stay that way forever.

Hey everyone 👋
I will be open sourcing the new version of eqMac, therefore, I am closing this issue and repository as I will be transfering nodeful/eqMac2 repo to bitgapp/eqMac
Please bear with me for the next couple of days as I setup that new repo. The eqMac2 code will be living in the old-eqMac2 branch if anyone is interested in referencing it for whatever reason.
Please try out the new version and report bugs to the new repo.
Thanks for using eqMac.

Now, as this has been migrated to bitgapp/eqMac you might want to reopen this issue, as it is still valid.

Hello,
I can confirm this is still an issue in v1.3.2.
When starting eqmac it creates an audio device which for a reason I cannot understand is called exactly the same as my airplay device.

In eqmac then, you cannot select airplay devices:

Would be great if that worked. If I can help with any logs e.g. let me know.

Is AirPlay2 in the works?


Fix host redirect handling

If you try to clone from a url that redirects to another host e.g. example.com/repo -> github.com/org/repo.git, it results in a redirect to example.com/org/repo.git because ModifyEndpointIfRedirect only takes into account the scheme and path.

I'm unable to sign the DCO because the sign-off process is weird, so feel free to consider this a bug report and and use the code as you wish.

@smola IMO, the whole process could be simplified to not require contributors to add their email address to commit messages and/or only do it once.
But to be clear, the weird part that I object(ed) to is the bolded part of the following paragraph from your CONTRIBUTING.md

In order to show your agreement with the DCO you should include at the end of commit message, the following line: Signed-off-by: John Doe<EMAIL_ADDRESS>using your real name.

@DisposaBoy Thanks for the clarification. I understand that contributing under a pseudonym is a very legitimate use case. But so far, we are not able to accept that under our current legal guidelines.
I have moved this to an issue: https://github.com/src-d/go-git/issues/820
And opened an issue for ourselves to check if we can accept pseudonymous contributions in the future: https://github.com/src-d/guide/issues/208
However, according to our present policy, I have to close this PR.


Update AssetType in Bridge crate to be independent of the blockchain or token.

The AssetType code is:
pub enum AssetType {
	EthAndWeth((u64, u64)),
	Moveth(u64),
}

If we support a new Token or blockchain the type must be updated and the way the value is extracted must be done carefully. For example, we can be confused by eth and weth value extraction.
The way the Bridge contract manages the Amount will change too.
The need is mostly: an asset type that can pass its value from one blockchain to another.
On eth it's (Eth,Weth) and on Movement, it's Moveth. What you need is not storing Eth, Weth, Moveth in the same struct but a way to convert between them and get the real value depending on the chain you use.
It's the same for Address, you need a way to define an address for both chains. I think we can replace the generic A for address on all Type with a conversion trait for both Address and Amount.
This update should be done when the Bridge contract is finalized or if the contract update needs some change in the AssetType.

On this, the underlying amount type of eth in rust should be handled as U256
use alloy::primitives::U256;
For now we can check for overflow, but I think using the alloy type is safer.


Flaky tsan report in dart:io implementation

From this log:

/========================================================================\
| standalone_2/io/http_basic_test/2 broke (Pass -> Crash, expected Pass) |
\========================================================================/

--- Command "vm" (took 46.000776s):
DART_CONFIGURATION=ReleaseTSANX64 out/ReleaseTSANX64/dart --trace_shutdown --ignore-unrecognized-flags --packages=/b/s/w/ir/.packages /b/s/w/ir/tests/standalone_2/io/http_basic_test.dart

exit code:
-6

stderr:
[+43372ms] SHUTDOWN: Starting shutdown
[+43372ms] SHUTDOWN: Shutting down profiling
[+43372ms] SHUTDOWN: Disabling isolate creation
[+43372ms] SHUTDOWN: Killing all app isolates
[+43372ms] SHUTDOWN: Shutting down app isolates
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==5257==WARNING: Can't read from symbolizer at fd 11
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==5257==WARNING: Can't read from symbolizer at fd 11
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==5257==WARNING: Can't read from symbolizer at fd 11
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==5257==WARNING: Can't read from symbolizer at fd 11
==5257==WARNING: Failed to use and restart external symbolizer!
==================
WARNING: ThreadSanitizer: data race (pid=5257)
  Read of size 8 at 0x7b0c0001a890 by thread T23:
    #0 dart::bin::Socket::fd() const ../../out/ReleaseTSANX64/../../runtime/bin/socket.h:52 (dart+0x1bd3a1b)
    #1 dart::bin::ListeningSocketFinalizer(void*, void*) ../../out/ReleaseTSANX64/../../runtime/bin/socket.cc:1273 (dart+0x1bd3a1b)
    #2 dart::FinalizablePersistentHandle::Finalize(dart::IsolateGroup*, dart::FinalizablePersistentHandle*) ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:735 (dart+0x27518dc)
    #3 dart::FinalizablePersistentHandle::UpdateUnreachable(dart::IsolateGroup*) ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_state.h:250 (dart+0x1e7b19c)
    #4 dart::FinalizeWeakPersistentHandlesVisitor::VisitHandle(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:278 (dart+0x1e7b19c)
    #5 dart::Handles<5, 64, 0>::HandlesBlock::Visit(dart::HandleVisitor*) ../../out/ReleaseTSANX64/../../runtime/vm/handles_impl.h:296 (dart+0x1e6b2dc)
    #6 dart::Handles<5, 64, 0>::Visit(dart::HandleVisitor*) ../../out/ReleaseTSANX64/../../runtime/vm/handles_impl.h:55 (dart+0x1e6b2dc)
    #7 dart::FinalizablePersistentHandles::VisitHandles(dart::HandleVisitor*) ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_state.h:545 (dart+0x1e6b2dc)
    #8 dart::ApiState::VisitWeakHandlesUnlocked(dart::HandleVisitor*) ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_state.h:761 (dart+0x1e6b2dc)
    #9 ~IsolateGroup ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:421 (dart+0x1e6b2dc)
    #10 dart::IsolateGroup::Shutdown() ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:532 (dart+0x1e6c2e3)
    #11 Run ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:2591 (dart+0x1e7bac3)
    #12 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:158 (dart+0x20b95fc)
    #13 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:323 (dart+0x20b9fe5)
    #14 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:153 (dart+0x1fbe5e2)

  Previous write of size 8 at 0x7b0c0001a890 by thread T1 (mutexes: write M19):
    #0 dart::bin::Socket::SetClosedFd() ../../out/ReleaseTSANX64/../../runtime/bin/socket_linux.cc:32 (dart+0x1bd665a)
    #1 dart::bin::Socket::CloseFd() ../../out/ReleaseTSANX64/../../runtime/bin/socket_linux.cc:28 (dart+0x1bd665a)
    #2 dart::bin::EventHandlerImplementation::HandleInterruptFd() ../../out/ReleaseTSANX64/../../runtime/bin/eventhandler_linux.cc:250 (dart+0x1bbef43)
    #3 dart::bin::EventHandlerImplementation::HandleEvents(epoll_event*, int) ../../out/ReleaseTSANX64/../../runtime/bin/eventhandler_linux.cc:379 (dart+0x1bbf554)
    #4 dart::bin::EventHandlerImplementation::Poll(unsigned long) ../../out/ReleaseTSANX64/../../runtime/bin/eventhandler_linux.cc:400 (dart+0x1bbf62c)
    #5 dart::bin::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/bin/thread_linux.cc:93 (dart+0x1d5917e)

  Location is heap block of size 48 at 0x7b0c0001a880 allocated by thread T15:
    #0 operator new(unsigned long) ../recipe_cleanup/clangshYTOG/llvm_build_dir/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_new_delete.cpp:64 (dart+0x1b95d47)
    #1 dart::bin::ListeningSocketRegistry::CreateBindListen(_Dart_Handle*, dart::bin::RawAddr, long, bool, bool) ../../out/ReleaseTSANX64/../../runtime/bin/socket.cc:180 (dart+0x1bcfd08)
    #2 dart::bin::Builtin_ServerSocket_CreateBindListen(_Dart_NativeArguments*) ../../out/ReleaseTSANX64/../../runtime/bin/socket.cc:851 (dart+0x1bd20bd)
    #3 dart::NativeEntry::AutoScopeNativeCallWrapperNoStackCheck(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ../../out/ReleaseTSANX64/../../runtime/vm/native_entry.cc:217 (dart+0x1ec19a4)
    #4 dart::NativeEntry::AutoScopeNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ../../out/ReleaseTSANX64/../../runtime/vm/native_entry.cc:198 (dart+0x1ec18e0)
    #5 <null> <null> (memfd:dart-codespace (deleted)+0x2363)
    #6 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:147 (dart+0x1e1fa6b)

/cc @aam Interested in looking at this?

There seems to be an inherent problem with the way we access the fd field from the Socket object which is not MT safe, I also see that the ref counting mechanism for figuring out if it is safe to delete the socket object which using atomic operations for incrementing/decrementing the ref count is also not MT safe.


Implementation for custom GA4 analytic tracking

As a business owner and GA4 user, I want to be able to track how users are interacting with my digital reveal and other campaign pages. When a site visitor clicks on a media campaign from LinkedIn/Meta/Variant, and they click on the "Notify Me" and they complete the digital reveal form, I want to be able to know which media source the user came from.
Acceptance Criteria:

Given that I click on a LinkedIn media asset that links to the digital reveal page, when I land on the reveal page, and click notify me, and fill out the digital reveal form, then I should be able to see that the user who completed the form came from the LinkedIn media asset. To add the LinkedIn Insights Tag to GTM more details on how to add the tag are in this link: https://www.linkedin.com/help/lms/answer/a416960
GA4 custom tagging should first be implemented on the Digital Reveal page, and then the new VNL PDP (which can be done in a separate sprint). This custom tagging implementation should serve as a template framework for future campaign page needs.

Analytics Airtable: Click Here
Figma Analytics Maps: Click Here

@ZoeBeykirch Please update requirements when ready.

@ZoeBeykirch Can I and @manuel-vara get access to:
Analytics Airtable: Click Here
Figma Analytics Maps: Click Here
?
Thanks!

Yes I have requested @ozzy-krishnan to share access with you both via email<EMAIL_ADDRESS>and<EMAIL_ADDRESS>

@manuel-vara please align with @ozzy-krishnan  and @ZoeBeykirch whether they have tested the tag that has been already implemented and if it's working correctly.


MIC-689 /update-review/next-review-date screen

MIC-689

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

Project coverage is 87.60%. Comparing base (2336880) to head (2cb3a47).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #288      +/-   ##
==========================================
- Coverage   91.50%   87.60%   -3.90%
==========================================
  Files         331      333       +2
  Lines        4906     4928      +22
  Branches      739      740       +1
==========================================
- Hits         4489     4317     -172
- Misses        415      601     +186
- Partials        2       10       +8

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


3.10 is not aliased(?) to latest 3.10 beta

Description
Specifying 3.9 in python-versions will give you the most recent version of Python 3.9, but there seem to be no way to specify most recent 3.10 (beta) version which means that you will have to manually keep up with the most recent beta. An option for "development" or "3-dev" or something could also work.
Area for Triage:
Python
Question, Bug, or Feature?:
Question, Bug, or Feature (not sure which is most applicable here)
Virtual environments affected

[x] Ubuntu 16.04
[x] Ubuntu 18.04
[x] Ubuntu 20.04
[ ] macOS 10.15
[ ] macOS 11.0
[ ] Windows Server 2016 R2
[ ] Windows Server 2019

Probably all of them?  :\
Image version

https://github.com/actions/virtual-environments/releases/tag/ubuntu20%2F20210504.1
Expected behavior
I expected the build to run with the most recent version of 3.10.
Actual behavior
Got an "Error: Version 3.10 with arch x64 not found"
Repro steps

Add '3.10' to a python-versions array.
Run job

See https://github.com/JonnyJD/musicbrainz-isrcsubmit/pull/134/checks?check_run_id=2539409850 for an example.

I think this issue should come to https://github.com/actions/setup-python
@Freso , please follow action's documentation. It contains description how to specify pre-release versions:

Download and set up an accurate pre-release version of Python:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
  with:
    python-version: '3.9.0-beta.4'
- run: python my_script.py

Download and set up the latest available version of Python (includes both pre-release and stable versions):
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
  with:
    python-version: '3.9.0-alpha - 3.9.0' # SemVer's version range syntax
- run: python my_script.py

You can use 3.10-dev. It is undocumented, but seems to be used by a lot of projects anyway. See also https://github.com/actions/setup-python/issues/177


inconsistent report of "runtime dispatch detected: Base.InexactError"

Hi,
the following code
using JET
mutable struct MutStruct
    value::Float64
end
const ms = MutStruct(3.4)
function rc()
     period = trunc(Int, ms.value)
     @debug "cd" cd = ms.value
end
@report_opt rc()

reports
┌ @ float.jl:812 Base.InexactError(:Int64, Int64, %4)
│ runtime dispatch detected: Base.InexactError(:Int64::Symbol, Int64, %4::Float64)

Shouldn't Julia be able to invoke the concrete trunc version for Float64? invoke(trunc, Tuple{Float64}, ms.value) doesn't report the dispatch, but it's not feasible for me because I need the conversion to Int. . So I tried 'invoke(trunc, Tuple{Type{Int}, Float64}, Int, ms.value)', but it also reports dispatch. Finally I found that unsafe_trunc(Int, ms.value) also avoid the dispatch report. Do you know if there's a better way? thanks
The following alterations to the code also avoid reporting the issue. I thought that it was caused due to the code being inlined, but adding @noinline also avoided the dispatch report.

Declaring the struct non mutable
Commenting out the @debug line
Changing the @debug line with @debug "cd" cd = 3.2

thanks

The runtime dispatch error seems to come from the line @debug ..., which is very expected.


support angular 8

fxmontigny! Please, update ng2-ace-editor to support Angular 8!
WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed.


Add IPv6 support to connect to IPv6 supported pools

Can you add IPv6 TCP/IP stack support to Leafminer along with IPv4 in order that miners can connect to pools preferably via IPv6 rather than IPv4. This avoids having passing via a connection with NAT or even ISP CGNAT and can favor a bit more privacy in certain scenarios.
Although still a lot of people forget, IPv6 is responsible for over 50% of the Internet traffic on some networks given the biggest content generators worldwide fully support IPv6. IPv6 is the actual Internet Protocol and IPv4 is legacy already.
There are already several VPS and hosting offerings IPv6 as well.
Normally most modern operating systems with dual-stack (IPv4 and IPv6) support try to automatically connect preferably via IPv6 if both are available at source and destination. The important thing is that an IPv6 address can be received or autoconfigured by the board and when connecting to pool it will resolve the destination FQDN to IPv6 and use it to connect.
The simplest way the board can get an IPv6 address from the router is via RA/SLAAC (Stateless) which is default for almost any router with IPv6 support.
Both ESP32 and ESP9266 have support for a while in the LWIP since RTOS SDK v1.3.0
For reference Tasmota firmware has IPv6 support for both boards (https://tasmota.github.io/docs/IPv6/). For ESP32 is default, for ESP8266 requires a specific build probably due to the image size which may not be a problem for Leafminer which seems to have a smaller footprint and binary size, but anyway it says it should use an extra 20-30kB extra flash size.
In their documentation it mentions "SetOption149 1"in order to query AAAA before A.
For the most know Solo pools the following have full IPv6 support:

public-pool.io
pool.vkbit.com
solo.ckpool.org
btc.solomining.io

References:
https://tasmota.github.io/docs/IPv6/
https://github.com/esphome/esphome/pull/5449
https://esphome.io/changelog/2024.3.0.html#ipv6

It's a good improvement, for now I will put on hold till we don't have a stable mining on esp8266

Thanks Matteo
Perhaps something can be tried for ESP32 at least for now.


determine build side in hash join by total_byte_size instead of num_rows

Which issue does this PR close?
No
Rationale for this change
The memory size for hash join is limited,  users can use MemoryManager (introduced by @yjshen ) to limit memory by their demands.  So if we can load the entire build side into memory it will be very efficient, otherwise, we need to do something else like spilling to disk.
Currently, DF uses tables' num_rows to determine the build side of the hash join. It's not reasonable. In general, we say to select the smaller table as build side in hash join, the smaller in fact means the total bytes size in a table. (A smaller number of rows does not mean the entire table is smaller).
What changes are included in this PR?
determine build side in hash join by total_byte_size instead of num_rows.
Are there any user-facing changes?
No

Thanks @xudong963 that's a great point.
I think the reason for picking number of rows earlier is that lot of other design docs talks about number of rows rather than the size in bytes. I agree it makes more sense to look at the size in bytes.
The number of rows might be more often available as statistic than the total size in bytes. So I think we should look at the size in bytes if it is available and otherwise estimate the size based on the number of rows and data types involved (e.g. int32 -> 4 * number of rows)

The number of rows might be more often available as statistic than the total size in bytes. Both in external metadata but currently also inside our own statistics.

Yep, I agree.

Also it might be also good to have a look at the time it takes to construct the hash table. Having a smaller table on the left with 1M rows might be slower to construct than a bigger (in bytes) table of 1K rows (e.g. a table containing some larger documents such as JSONs, lots of columns, etc.). From that perspective, number of rows might be more useful as long as it fits in memory.

Thanks, @Dandandan. The case makes sense to me, I didn't think of that before.

So I think we should look at the size in bytes if it is available and otherwise estimate the size based on the number of rows and data types involved (e.g. int32 -> 4 * number of rows)

Nice idea, specifically, if the statistic doesn't have the information about size in bytes, we need to get all data types of the row in the table, then to do a product computation, but, this result is actually the bytes size of the table, not?

@xudong963 @Dandandan These are good ideas. +1 on not using num of rows, and provide alternative logic to estimate size. I feel it make sense to add a size estimator to consolidate the logic. An additional thought - is it possible to get size (or estimation) from Arrow directly - I think this is one of the benefit Arrow format provides.

An additional thought - is it possible to get size (or estimation) from Arrow directly

In fact, I think DF already did this. https://github.com/apache/arrow-datafusion/blob/3c1252d1c35c6b08084136e1a89bb868d32bb270/datafusion/src/physical_plan/common.rs#L205

cc @Dandandan @alamb


Distribute macOS App via Homebrew

Overview
This issue tracks the progress of preparing and distributing our macOS app through Homebrew. This includes determining the best practices for submission, understanding Homebrew and Homebrew Cask, and ensuring we meet all requirements for a smooth user experience.
Task List for Homebrew Distribution

[ ] Research how to distribute a macOS app through Homebrew.

[ ] Determine if our app qualifies for a formula or if it should be a Cask.
[ ] Understand the differences between Homebrew and Homebrew Cask in terms of distribution.

[ ] Investigate the submission process for Homebrew.

[ ] Find out what the requirements are for submitting a formula/Cask.
[ ] Check if there are any costs associated with the submission and distribution.

[ ] Learn about the review process for Homebrew submissions.

[ ] Document the steps involved in the review process.
[ ] Identify common reasons for rejection and how to avoid them.

[ ] Prepare the app for submission.

[ ] Ensure the app meets all Homebrew submission criteria.
[ ] Create a formula/Cask file for the app.
[ ] Test the installation process locally.

[ ] Submit the app to Homebrew.

[ ] Open a pull request to the Homebrew/homebrew-cask or Homebrew/homebrew-core repository.
[ ] Monitor the pull request for feedback and respond to any required changes.

[ ] Post-submission tasks.

[ ] Set up a system to monitor the app's version updates for maintaining the Homebrew formula/Cask.
[ ] Plan for user support post-distribution.

Additional Notes

Ensure that the app complies with Homebrew's acceptance criteria.
Consider setting up a tap for easier updates and more control over the distribution process if the official repositories are not suitable.

References

Homebrew Formula Cookbook: Homebrew Formula Cookbook
Homebrew Cask Documentation: Homebrew Cask

Please update this issue with any progress or additional information found during the research phase.

For our first release I would like to achieve #7 and #9 at the minimum.


instant crash

Version Information
Minecraft version:  1.12.2
Forge version:  1.12.2
Other mods (if applicable):
Steps to reproduce:

Load "CubicChunks-1.12.2-0.0.970.0-SNAPSHOT-all" into your mods folder
Start Minecraft with Forge 1.12.2
it should crash immediately

Expected Behavior: not crashing
Actual Behavior: crashing
Link to crash log (if applicable - use a site such as hastebin: https://paste.md-5.net/nunugasoru.sql
Screenshot of mods folder: https://prnt.sc/10qy8t7

This is a nearly 2 year old version of CC, please try with latest recommended (as of now it's 1185)
If you still have problems reopen this issue

uhm where do I get the newest version as Java-file from?

If you join the discord server there is an announcement with every new release. This is latest as of now: 1185


Fix planner's initialization

What type of change is this?

[x] Bug fix in a backwards-compatible manner.
[ ] New feature in a backwards-compatible manner.
[ ] Breaking change: bug fix or new feature that involve incompatible API changes.

Checklist

[x] Add the change to the CHANGELOG.rst file in the Unreleased section under the most fitting heading: Added, Changed, Removed.
[x] Run all tests on your computer (i.e. invoke test).
[ ] If you add new functions/classes, check that:

[ ] Are available on a second-level import, e.g. compas_fab.robots.Configuration.
[ ] Add unit tests (especially important for algorithm implementations).

Reviewed together with @romanarust


Question :: Torch Num Threads

Hi, I have two question:
(1) By default Torch Num Threads is equal 1. in which cases, the value should increased and which influence it will have on performance?
(2) number of torch threads is for each recognizer or for each loaded model?
Use case:

web service
load the model
create multiple recognizers / channels in parallel

So far I have tested, increasing torch threads does not bring any performance gains. Sometime, recognizer become even slower with many torch threads.
Thanks!

num threads is for GEMM for neural network inference.
Yes, it's for each recongizer.

Increasing the num threads when test offline. you can get better real time factor.
Limit the num threads in web service, you can get more concurrency.


fix use local beacon rest path error

Motivation
now, when i use local beacon rest service test to get records and transafer, first i create a client like
let client = Client::<N>::new("http://<IP_ADDRESS>:3030")?;

but the internal use Url::parse function will append / in suffix, it will be http://<IP_ADDRESS>:3030/.
when send a request to beacon rest service the url will become http://<IP_ADDRESS>:3030//testnet3/latest/height it is a invalid url
Test Plan

[x] use origin public api test ok, all test done
[x] use local snarkos beacon rest test done

Related PRs

(Link your related PRs here)

#1284

feat/client is not longer used. This can be closed.


WAF Alignment - Analyze Usage and cost

Check for previous/existing GitHub issues

[X] I have checked for previous/existing GitHub issues

Module specific issue

[X] I confirm that this issue is about this AVM module and not about the resource itself, or how to use Terraform.

Issue Type?
Feature Request
(Optional) Module Version
No response
(Optional) Correlation Id
No response
Description
https://learn.microsoft.com/en-us/azure/azure-monitor/logs/analyze-usage#send-alert-when-data-collection-is-high

@LaurentLesle - Is this still under development?


Allow retrieving claims by using the Claims enum

I think it would be a good idea to add a method JsonWebToken.getClaim(Claims claim) to allow retrieving claims by using the Claims enum. At the moment one is forced to write unnecessarily bloated code like jwt.getClaim(Claims.groups.name()). This is even true for the default methods given in the interface JsonWebToken. Adding this method could make code more readable.
Let me know if you want a PR for this.

@andreas-eberle +1, 1.2 is the next version so we can't get the implementers updating the existing working code, but for 2.0, yeah, why not. Though it would need to be tied with #100.
Thanks

This is a compatible change since it just adds a method, so it can be included in 1.2

@rdebusscher it is compatible for the users but requires the implementations to update their existing implementation code. I don't really mind to be honest from our own mplementation, but we can't just do it for the minor release ?

It is no problem that a minor release require a change to the implementation code. In fact, that is the general rule, otherwise not much will change.
However, It can't introduce a breaking change.
So I agree that this change, small (only a couple of lines) but very helpful for the developers.

@rdebusscher That said the focus is on the users, so well, I don't mind it be included in 1.2 then.

Sounds good. @andreas-eberle Go ahead please with your PR :-)

I added the methods with default implementations forwarding to the old methods. So the code is doing exactly the same and other implementations also should not have to adapt anything.

Very good, thanks

@andreas-eberle @rdebusscher
Please see #156 for the reasons why it had to be reopened. The PR for this issue needs to have a baseline plugin updated too. For now I'm changing the milestone to 2.0 but will be happy to put back to 1.1

My understanding of this plugin is that the interfaces can be changed, any idea how it can be fixed ?

MP Config has this configuration:
<configuration>
                    <base>
                        <version>1.3</version>
                    </base>
</configuration>

But I'm not sure what can we put there in our case to allow new method additions to the existing interfaces in 1.1. Has someone dealt with a similar issue before ? I can do a PR myself  once I know how to fix it

From what I see in the pom, the used bnd plugin versions seem very old (October 2017) while there exist a newer version 5.0 from January 2020. Maybe these problems are fixed in the newer versions?

@sberyozkin, @rdebusscher : It seems the relevant version is actually the version in the annotation here https://github.com/andreas-eberle/microprofile-jwt-auth/blob/add-get-claims-with-claims/api/src/main/java/org/eclipse/microprofile/jwt/package-info.java#L40 and not the dependency version.
The plugin wants us to increase this version from 1.0 to 1.1. It does not accept an increase from 1.0 to 1.0.1. Should I add this increase in my PR or should we try to find a way to not make this increase?

Btw, you can get more details on the error message when using the following as configuration for the bnd-baseline-maven-plugin.
<configuration>
      <fullReport>true</fullReport>
</configuration>

Hi @andreas-eberle Thanks, so the next version will be 1.2 (we are on 1.2-SNAPSHOT) and the current tag is 1.1.1. In that case the package property should be 1.1.1 ? What I don't understand is why the PR build passes. I agree with @rdebusscher that we need to fix the plugin anyway for us to be able to change the existing methods in the future.
Should we remove tat osgi package property, and add a base.version 1.1.1 ?

Although I never really worked with osgi, I think it would make sense to have the same osgi version tag as the module version. However, you have two packages under the org.eclipse.microprofile main package with both having their own package-info.java file. This will mean you sometimes will increase the version of one of these packages without changing the classes in that package. Just so you are aware of that. I don't think this is an issue.
Will you make a PR to increase the version again, or should I send you one?

Hi @andreas-eberle You may have seen a microprofile forum thread, @Emily-Jiang explained how this plugin operates. So indeed, lets do the following:

increase that OSI property to 1.1 to indicate we are doing the minor changes;
add that full report property
and update to the latest versiob

And please resubmit your PR alongside those changes;  please use mvn clean install to verify.
I've said I can do a PR myself, would appreciate though if you could do it all as part of a single PR
Thanks

@sberyozkin: I added the changes to my branch and opened a new PR #158.


Tab-able apps?

Hi there, would it be possible to expose our quark applications to the 'active application' tab, so that users can CMD-tab to access the application?
Thank you very much for your ongoing support.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/9090354-tab-able-apps?utm_campaign=plugin&utm_content=tracker%2F899498&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F899498&utm_medium=issues&utm_source=github).

Quark Shell is currently focusing on menubar apps, is it necessary to have Cmd-tab support?

It's certainly not necessary, just an interesting option. Thanks for the info.

@basiclaser: Yeah we may implement it in the future.


Handle access to sessions from the gateway

In order run sessions in their own subdomains. We need to change how access to the sessions is controlled.
The biggest problem is that we currently use the oauth2 proxy container in every jupyter server to control access. Because of this we would have to register different callbacks in keycloak for every session. This is not feasible.
So we would like to address the above problem with the following:

remove the oauth2 proxy from every session
add a traefik instance in every session that handles the ingress
when the session is created traefik is setup to inject the user's keycloak ID in every incoming request
the traefik container uses the forwardAuth middleware in traefik to check that the users ID that the session was created with matches the signed in users id who is trying to access the session

The forwardAuth middleware forwards the request to an external service to make a decisions if the request should succeed or not. If the external service responds with 2XX the request goes through otherwise it does not. So the gateway can have an endpoint where it does this check.

p.s. There may be a really quick and dirty way to achieve something similar here. But we should evaluate what is proposed up here instead. I will try to test this out ahead of time.

why do you need a new traefik in every session pod to do this? Can the existing gateway traefik not be used in the same way?


Convert valid feature name warning to an error.

This converts the feature name validation check from a warning to an error. This was added in #8814 in Rust 1.49 released in 2020-12-31 (about 2.5 years ago) with a warning that it will become a hard error in the future.
These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. The warning message requested anyone impacted by it to let us know. We got one report, and added support for . as result. Since there weren't any other reports, I think it should be pretty safe to move forward.
The diff here is a little large because it removes the pass-through of config since it isn't needed anymore.
Additionally, the tests were restructured since testing every edge case in an integration test has a lot of overhead. Instead, there is now a unit test which runs much faster, with the integration test just verifying that it fires and checks the two forms of error messages.
Closes #8813

This was added in https://github.com/rust-lang/cargo/pull/8814 in Rust 1.49 released in 2020-12-31 (about 2.5 years ago) with a warning that it will become a hard error in the future.

While we have given plenty of notice, what is the ecosystem impact?   I'm assuming minimal or non existent but wanted to double check

While we have given plenty of notice, what is the ecosystem impact? I'm assuming minimal or non existent but wanted to double check

These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. The warning message requested anyone impacted by it to let us know. We got one report, and added support for . as result. Since there weren't any other reports, I think it should be pretty safe to move forward.

Thanks for the clarification!
@bors r+

:pushpin: Commit<PHONE_NUMBER>f08be9a4b58ebe29dcec8f43b64b33 has been approved by weihanglo
It is now in the queue for this repository.

:hourglass: Testing commit<PHONE_NUMBER>f08be9a4b58ebe29dcec8f43b64b33 with merge dead4b8740c4b6a8ed5211e37c99cf81d01c3b1c...

:sunny: Test successful - checks-actions
Approved by: weihanglo
Pushing dead4b8740c4b6a8ed5211e37c99cf81d01c3b1c to master...


Added Intrinsic Alignment redshift evolution modes

This PR addresses #79 and will close it.

Codecov Report

Merging #80 (b9d6068) into master (07b8709) will increase coverage by 0.07%.
The diff coverage is 100.00%.

Additional details and impacted files

@@            Coverage Diff             @@
##           master      #80      +/-   ##
==========================================
+ Coverage   75.12%   75.19%   +0.07%
==========================================
  Files          29       28       -1
  Lines        1753     1758       +5
==========================================
+ Hits         1317     1322       +5
  Misses        436      436

Impacted Files
Coverage Δ

soliket/cross_correlation.py
99.19% <100.00%> (+0.13%)
:arrow_up:

soliket/__init__.py


Scrollable Chart

Hi,
I was wondering is there any update for the Scrollable feature?

Hi,
Not sure exactly, but I'll try to implement it before mid year 2021.
Thanks

Hi,
Not sure exactly, but I'll try to implement it before mid year 2021.
Thanks


Capability to receive DTMF numbers from callees so more interactions can be done like joining conference call.

I would like to convert this application to Angular 10 and .net core 31. and sql server or firebase
I would like to add ability for callees to enter secret numbers (if they are part of a secure role) so they can hear more detail information (preferably by further communicating with IVR system which could connect selected few in a conference call)
Any suggestions?
Thanks
Rad

HI @radrad. This reference app can definetely be used as kick-start for your own application. The use case you are describing, could be implemented using an IVR and offer an option to "enter identification code for more information". You can use TwiML to instruct your calls and design a workflow that does exactly what you. I suggest you to dig into the code and understand better how Twilio Programmable Voice "building blocks" work while reviewing the Voice API Documentation.

@rulldemolins
I have a scenario where there is a buzzer system with a display list of tenants that a visitor searches to find a resident/tenant and presses "Call" button on Touch display. The buzzer system registered either a cell or fixed phone provided by a tenant.
But this gives one phone to answer the buzzer (visitor) call and by pressing "9" the tenant opens the door and the buzzer system disconnects the call and opens the door.
I want to provide a Twilio phone to the buzzer system so I can control who can open the door:
Let's say I may call myself, my wife next on the cell and a cousin soft phone SIP like Linphone with dial pad.
And if our cell phones are without batteries or we are in the subway we still want our cousin to use an app on mobile smart phone or iPad to answer the phone, listen to who is at the door and press "9" on the soft phone dial pad to open the door.
I have a test app where I could call out both cell and soft phone and connect the first one (and disconnect the second), but I could not accept DTMF key for either cell or softphone.
So I would really like to understand how this can be accomplished?
With IVR this will increase cost per month.
In my case I rarely have visits. Can we connect to discuss this?
Thanks

HI @radrad. This reference app can definetely be used as kick-start for your own application. The use case you are describing, could be implemented using an IVR, have an option to "enter identification code for more information" and connect your call to a conference (or use <Say> to convert text to speech as response or use <Play> to play pre-recorded audio). You can use TwiML to instruct your calls and design a workflow that does exactly what you. I suggest you to dig into the code and understand better how Twilio Programmable Voice "building blocks" work while reviewing the Voice API Documentation.

To explain my scenario better, imagine somebody is in front of codo buzzer display (waiting to enter condo loby) is making a call to your Twilio number which passes that call to your Twilio backend, you want to call out voice calls:  to 2 Cell phones and 3 SIP callers and you would connect the first callee with the original caller, talk to each other to identify the original caller and whoever answered can press "9" to open the door. So basically the first responder should send DTMF  "9" digit to the buzzer system that initiated outgooing calls and it automatically disconnects the original caller.
My problem as stated above is the responders could not send "9".  That might only be achieved with IVR system. But the problem is how to do that when IVR is calling out.


Build Project as Module

I'm trying to build my fountain project into a module, to be consumed by other projects, using webpack (or maybe bower?).
webpack-dist is not the configuration i'm looking for: I've been playing it for some time but i couldn't seperate the vendor from the app.
Can anyone point me in the right direction?

I dug a little deeper and came across this seed project - webpack library starter;
This led me to create a new webpack config file which i've named webpack-library.conf, and adjusted it for my needs. the main part is the library property inside the output manifest -
  output: {
    path: path.join(process.cwd(), conf.paths.libraryDist),
    filename: 'my-library.js',
    library: 'MyLibrary',
    libraryTarget: 'umd',
    umdNamedDefine: true
  },

This facilitates the bundling of a single importable module (library). notice also the externals property which is important to avoid wrapping the external modules as well. in my setup it looks like this -
  externals: {
    angular: 'angular',
  },

If anyone has recommendations or improvements i'll be happy to know, and if anyone needs the entire setup let me know and i'll be happy to share.