text:
Cilium datapath loading fails on Ubuntu 20.04 kernel 5.4.0-1028 on arm64

Bug report
Cilium datapath loading fails right after start:
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="BTF debug data section '.BTF' rejected: Invalid argument (22)!" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg=" - Length:       26982" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="Verifier analysis:" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="magic: 0xeb9f" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="version: 1" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="flags: 0x0" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="hdr_len: 24" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="type_off: 0" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="type_len: 2456" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="str_off: 2456" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="str_len: 24502" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="btf_total_size: 26982" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[1] PTR (anon) type_id=2" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[2] STRUCT __sk_buff size=184 vlen=32" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tlen type_id=3 bits_offset=0" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tpkt_type type_id=3 bits_offset=32" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tmark type_id=3 bits_offset=64" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tqueue_mapping type_id=3 bits_offset=96" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tprotocol type_id=3 bits_offset=128" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tvlan_present type_id=3 bits_offset=160" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tvlan_tci type_id=3 bits_offset=192" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tvlan_proto type_id=3 bits_offset=224" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tpriority type_id=3 bits_offset=256" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tingress_ifindex type_id=3 bits_offset=288" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tifindex type_id=3 bits_offset=320" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\ttc_index type_id=3 bits_offset=352" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tcb type_id=5 bits_offset=384" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\thash type_id=3 bits_offset=544" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\ttc_classid type_id=3 bits_offset=576" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tdata type_id=3 bits_offset=608" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tdata_end type_id=3 bits_offset=640" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tnapi_id type_id=3 bits_offset=672" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tfamily type_id=3 bits_offset=704" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tremote_ip4 type_id=3 bits_offset=736" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tlocal_ip4 type_id=3 bits_offset=768" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tremote_ip6 type_id=7 bits_offset=800" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tlocal_ip6 type_id=7 bits_offset=928" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tremote_port type_id=3 bits_offset=1056" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tlocal_port type_id=3 bits_offset=1088" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tdata_meta type_id=3 bits_offset=1120" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\t(anon) type_id=8 bits_offset=1152" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\ttstamp type_id=10 bits_offset=1216" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\twire_len type_id=3 bits_offset=1280" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tgso_segs type_id=3 bits_offset=1312" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\t(anon) type_id=12 bits_offset=1344" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tgso_size type_id=3 bits_offset=1408" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[3] TYPEDEF __u32 type_id=4" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[4] INT unsigned int size=4 bits_offset=0 nr_bits=32 encoding=(none)" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[5] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=5" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[6] INT __ARRAY_SIZE_TYPE__ size=4 bits_offset=0 nr_bits=32 encoding=(none)" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[7] ARRAY (anon) type_id=3 index_type_id=6 nr_elems=4" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[8] UNION (anon) size=8 vlen=1" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tflow_keys type_id=9 bits_offset=0" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[9] PTR (anon) type_id=92" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[10] TYPEDEF __u64 type_id=11" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[11] INT long long unsigned int size=8 bits_offset=0 nr_bits=64 encoding=(none)" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[12] UNION (anon) size=8 vlen=1" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="\tsk type_id=13 bits_offset=0" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[13] PTR (anon) type_id=93" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[14] FUNC_PROTO (anon) return=15 args=(1 ctx)" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[15] INT int size=4 bits_offset=0 nr_bits=32 encoding=SIGNED" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="[16] FUNC __send_drop_notify type_id=14 vlen != 0" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="Log buffer too small to dump verifier log 16777215 bytes (9 tries)!" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="Error filling program arrays!" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="Unable to load program" subsys=datapath-loader
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="JoinEP: Failed to load program" containerID= datapathPolicyRevision=0 desiredPolicyRevision=1 endpointID=1158 error="Failed to load tc filter: exit status 1" file-path=1158_next/bpf_lxc.o identity=4 ipv4= ipv6= k8sPodName=/ subsys=datapath-loader veth=lxc_health
Jan 29 22:50:40 pie cilium-agent[2692]: level=error msg="Error while rewriting endpoint BPF program" containerID= datapathPolicyRevision=0 desiredPolicyRevision=1 endpointID=1158 error="Failed to load tc filter: exit status 1" identity=4 ipv4= ipv6= k8sPodName=/ subsys=endpoint
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="generating BPF for endpoint failed, keeping stale directory." containerID= datapathPolicyRevision=0 desiredPolicyRevision=1 endpointID=1158 file-path=1158_next_fail identity=4 ipv4= ipv6= k8sPodName=/ subsys=endpoint
Jan 29 22:50:40 pie cilium-agent[2692]: level=warning msg="Regeneration of endpoint failed" bpfCompilation=0s bpfLoadProg=12.657033157s bpfWaitForELF="10.63µs" bpfWriteELF=2.948065ms containerID= datapathPolicyRevision=0 desiredPolicyRevision=1 endpointID=1158 error="Failed to load tc filter: exit status 1" identity=4 ipv4= ipv6= k8sPodName=/ mapSync="8.796µs" policyCalculation="18.519µs" prepareBuild=1.665738ms proxyConfiguration="34.407µs" proxyPolicyCalculation="74.538µs" proxyWaitForAck=0s reason="retrying regeneration" subsys=endpoint total=12.676971087s waitingForCTClean=12.015393ms waitingForLock="3.962µs"
Jan 29 22:50:40 pie cilium-agent[2692]: level=error msg="endpoint regeneration failed" containerID= datapathPolicyRevision=0 desiredPolicyRevision=1 endpointID=1158 error="Failed to load tc filter: exit status 1" identity=4 ipv4= ipv6= k8sPodName=/ subsys=endpoint
Jan 29 22:50:40 pie cilium-agent[2692]: level=info msg="Removed endpoint" containerID= datapathPolicyRevision=0 desiredPolicyRevision=1 endpointID=1158 identity=4 ipv4= ipv6= k8sPodName=/ subsys=endpoint

Cilium version (run cilium version)
PR on top of master

$ cilium version
Client: 1.9.90 8c07c8c7f 2021-01-29T14:16:50-08:00 go version go1.15.2 linux/arm64
Daemon: 1.9.90 8c07c8c7f 2021-01-29T14:16:50-08:00 go version go1.15.2 linux/arm64

Kernel version (run uname -a):

Linux pie 5.4.0-1028-raspi #31-Ubuntu SMP PREEMPT Wed Jan 20 11:30:45 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux

Orchestration system version in use (e.g. kubectl version, Mesos, ...): N/A

this was with default cilium-agent command line options. Adding --kube-proxy-replacement=disabled resolved the issue.

this was with default cilium-agent command line options. Adding --kube-proxy-replacement=disabled resolved the issue.

So it was a complexity issue.

So it was a complexity issue.

@pchaigno Feel free to close if this needs no more tracking. However, it would be nice if the default configuration would "just work".

@pchaigno Feel free to close if this needs no more tracking. However, it would be nice if the default configuration would "just work".

Full (verbose) debug logs attached:
log.txt

Full (verbose) debug logs attached:
log.txt

I was wrong, it is still failing the same way even with --kube-proxy-replacement=disabled. Here's the output from cilium status --verbose:
$ cilium status --verbose
KVStore:                Ok         Consul: 172.17.0.5:8300
Kubernetes:             Disabled
Cilium:                 Ok   1.9.90 (v.1.9.90-r.8c07c8c7f)
NodeMonitor:            Disabled
Cilium health daemon:   Ok
IPAM:                   IPv4: 2/65535 allocated from 10.42.0.0/16, IPv6: 2/4294967295 allocated from f00d::a2a:0:0:0/96
Allocated addresses:
  10.42.16.99 (health)
  10.42.179.30 (router)
  f00d::a2a:0:0:5eee (health)
  f00d::a2a:0:0:726 (router)
BandwidthManager:       Disabled
Host Routing:           Legacy
Masquerading:           IPTables [IPv4: Enabled, IPv6: Enabled]
Clock Source for BPF:   ktime
Controller Status:      16/17 healthy
  Name                                        Last success   Last error   Count   Message
  cilium-health-ep                            2m48s ago      12s ago      7       Get "http://10.42.16.99:4240/hello": dial tcp 10.42.16.99:4240: connect: no route to host
  consul-lease-keepalive-0x400041a5b0         2m53s ago      never        0       no error
  dns-garbage-collector-job                   53s ago        never        0       no error
  endpoint-167-regeneration-recovery          never          never        0       no error
  endpoint-1700-regeneration-recovery         never          never        0       no error
  ipcache-bpf-garbage-collection              2m49s ago      never        0       no error
  kvstore-locks-gc                            23s ago        never        0       no error
  kvstore-sync-store-cilium/state/nodes/v1    2m53s ago      never        0       no error
  metricsmap-bpf-prom-sync                    8s ago         never        0       no error
  propagating local node change to kv-store   2m53s ago      never        0       no error
  resolve-identity-167                        12s ago        never        0       no error
  restoring-ep-identity (1700)                2m49s ago      never        0       no error
  sync-IPv4-identity-mapping (167)            12s ago        never        0       no error
  sync-IPv6-identity-mapping (167)            12s ago        never        0       no error
  sync-endpoints-and-host-ips                 50s ago        never        0       no error
  sync-policymap-1700                         44s ago        never        0       no error
  template-dir-watcher                        never          never        0       no error
Proxy Status:   OK, ip 10.42.179.30, 0 redirects active on ports 10000-20000
Hubble:         Disabled
BPF Maps:       dynamic sizing: off
  Name                          Size
  Non-TCP connection tracking   262144
  TCP connection tracking       524288
  Endpoint policy               65535
  Events                        4
  IP cache                      512000
  IP masquerading agent         16384
  IPv4 fragmentation            8192
  IPv4 service                  65536
  IPv6 service                  65536
  IPv4 service backend          65536
  IPv6 service backend          65536
  IPv4 service reverse NAT      65536
  IPv6 service reverse NAT      65536
  Metrics                       1024
  NAT                           524288
  Neighbor table                524288
  Global policy                 16384
  Per endpoint policy           65536
  Session affinity              65536
  Signal                        4
  Sockmap                       65535
  Sock reverse NAT              262144
  Tunnel                        65536
Cluster health:     0/1 reachable   (2021-01-29T23:50:22Z)
  Name              IP              Node        Endpoints
  pie (localhost)   192.168.1.42    reachable   unreachable

I was wrong, it is still failing the same way even with --kube-proxy-replacement=disabled. Here's the output from cilium status --verbose:
$ cilium status --verbose
KVStore:                Ok         Consul: 172.17.0.5:8300
Kubernetes:             Disabled
Cilium:                 Ok   1.9.90 (v.1.9.90-r.8c07c8c7f)
NodeMonitor:            Disabled
Cilium health daemon:   Ok
IPAM:                   IPv4: 2/65535 allocated from 10.42.0.0/16, IPv6: 2/4294967295 allocated from f00d::a2a:0:0:0/96
Allocated addresses:
  10.42.16.99 (health)
  10.42.179.30 (router)
  f00d::a2a:0:0:5eee (health)
  f00d::a2a:0:0:726 (router)
BandwidthManager:       Disabled
Host Routing:           Legacy
Masquerading:           IPTables [IPv4: Enabled, IPv6: Enabled]
Clock Source for BPF:   ktime
Controller Status:      16/17 healthy
  Name                                        Last success   Last error   Count   Message
  cilium-health-ep                            2m48s ago      12s ago      7       Get "http://10.42.16.99:4240/hello": dial tcp 10.42.16.99:4240: connect: no route to host
  consul-lease-keepalive-0x400041a5b0         2m53s ago      never        0       no error
  dns-garbage-collector-job                   53s ago        never        0       no error
  endpoint-167-regeneration-recovery          never          never        0       no error
  endpoint-1700-regeneration-recovery         never          never        0       no error
  ipcache-bpf-garbage-collection              2m49s ago      never        0       no error
  kvstore-locks-gc                            23s ago        never        0       no error
  kvstore-sync-store-cilium/state/nodes/v1    2m53s ago      never        0       no error
  metricsmap-bpf-prom-sync                    8s ago         never        0       no error
  propagating local node change to kv-store   2m53s ago      never        0       no error
  resolve-identity-167                        12s ago        never        0       no error
  restoring-ep-identity (1700)                2m49s ago      never        0       no error
  sync-IPv4-identity-mapping (167)            12s ago        never        0       no error
  sync-IPv6-identity-mapping (167)            12s ago        never        0       no error
  sync-endpoints-and-host-ips                 50s ago        never        0       no error
  sync-policymap-1700                         44s ago        never        0       no error
  template-dir-watcher                        never          never        0       no error
Proxy Status:   OK, ip 10.42.179.30, 0 redirects active on ports 10000-20000
Hubble:         Disabled
BPF Maps:       dynamic sizing: off
  Name                          Size
  Non-TCP connection tracking   262144
  TCP connection tracking       524288
  Endpoint policy               65535
  Events                        4
  IP cache                      512000
  IP masquerading agent         16384
  IPv4 fragmentation            8192
  IPv4 service                  65536
  IPv6 service                  65536
  IPv4 service backend          65536
  IPv6 service backend          65536
  IPv4 service reverse NAT      65536
  IPv6 service reverse NAT      65536
  Metrics                       1024
  NAT                           524288
  Neighbor table                524288
  Global policy                 16384
  Per endpoint policy           65536
  Session affinity              65536
  Signal                        4
  Sockmap                       65535
  Sock reverse NAT              262144
  Tunnel                        65536
Cluster health:     0/1 reachable   (2021-01-29T23:50:22Z)
  Name              IP              Node        Endpoints
  pie (localhost)   192.168.1.42    reachable   unreachable

Minor detail from log.txt attached above: bpf generation for the host endpoint (endpoint ID 1700) succeeds, but for the health endpoint (endpoint ID 417) it fails.

Minor detail from log.txt attached above: bpf generation for the host endpoint (endpoint ID 1700) succeeds, but for the health endpoint (endpoint ID 417) it fails.

Turns out iproute2 (ip, tc, ss) I had on the system did not support BTF. The problem was solved by compiling and installing new versions of these three binaries from github.com/cilium/iproute2. I had to look at Dockerfile.runtime in cilium repo for guidance on what to install, I did not dare run make install on iproute2, possibly without a way to revert that install.

Turns out iproute2 (ip, tc, ss) I had on the system did not support BTF. The problem was solved by compiling and installing new versions of these three binaries from github.com/cilium/iproute2. I had to look at Dockerfile.runtime in cilium repo for guidance on what to install, I did not dare run make install on iproute2, possibly without a way to revert that install.

@pchaigno https://docs.cilium.io/en/v1.9/operations/system_requirements/#iproute2-requirements may need to be updated to state that BTF support is needed?

@pchaigno https://docs.cilium.io/en/v1.9/operations/system_requirements/#iproute2-requirements may need to be updated to state that BTF support is needed?

@pchaigno https://docs.cilium.io/en/v1.9/operations/system_requirements/#iproute2-requirements may need to be updated to state that BTF support is needed?

Not sure what version of iproute2 you were using, but that documentation already points to the specific forks that need to be used. If you think there's something we can improve there, please send a PR :slightly_smiling_face:

@pchaigno https://docs.cilium.io/en/v1.9/operations/system_requirements/#iproute2-requirements may need to be updated to state that BTF support is needed?

Not sure what version of iproute2 you were using, but that documentation already points to the specific forks that need to be used. If you think there's something we can improve there, please send a PR :slightly_smiling_face:

authors: jrajahalme pchaigno


text:
Connection refused when visiting localhost(127.0.0.1) address service in kube-proxy replacement mode

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
I'm testing the kube-proxy replacement mode, and I found it works except that I can't visit my registry with localhost address. It showed "connection refused" via the ipv4 address. But it works well in kube-proxy hybrid mode. I get the answer on the official slack channel that it should be supported to visit localhost address in kube-proxy replacement mode. So I think it should be a bug.
kube-proxy hybrid mode:(Notice that i didn't enable ipv6 so that it failed to connect to the ipv6 address, but it can establish connection with ipv4 address. )
[root@ip-10-164-35-236 ~]# curl -k https://localhost:5000/auth/token -v
*   Trying ::1...
* TCP_NODELAY set
* connect to ::1 port 5000 failed: Connection refused
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 5000 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt

kube-proxy free mode: (It showed that it failed to connect to 127.0.0.1:5000)
[root@ip-10-164-32-107 ~]# curl -k https://localhost:5000/auth/token -v
*   Trying ::1...
* TCP_NODELAY set
* connect to ::1 port 5000 failed: Connection refused
*   Trying 127.0.0.1...
* TCP_NODELAY set
* connect to 127.0.0.1 port 5000 failed: Connection refused
* Failed to connect to localhost port 5000: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 5000: Connection refused

Visiting registry via cluster ip is normal
# curl -k https://172.17.125.251:5000 -v
* Rebuilt URL to: https://172.17.125.251:5000/
*   Trying 172.17.125.251...
* TCP_NODELAY set
* Connected to 172.17.125.251 (172.17.125.251) port 5000 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt

installation command:
helm install cilium cilium-1.13.1.tgz -n kube-system \
  --set cni.binPath=/opt/cdf/cni \
  --set cni.confPath=/opt/cdf/cni/conf \
  --set cluster.name=cdf-kubernetes \
  --set ipam.mode=kubernetes \
  --set kubeProxyReplacement=strict \
  --set k8sServiceHost=${API_SERVER_IP} \
  --set k8sServicePort=${API_SERVER_PORT}

Cilium Version
cilium-cli: v0.13.2 compiled with go1.20.2 on linux/amd64
cilium image (default): v1.13.1
cilium image (stable): v1.13.1
cilium image (running): v1.13.1
Kernel Version
Linux ip-10-164-32-33.us-west-2.compute.internal 4.18.0-348.el8.x86_64 #1 SMP Mon Oct 4 12:17:22 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
Kubernetes Version
Client Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.1", GitCommit:"db61bf1bb93524ed38d80018b6490f910358fb05", GitTreeState:"clean", BuildDate:"2023-03-15T03:13:46Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.1", GitCommit:"db61bf1bb93524ed38d80018b6490f910358fb05", GitTreeState:"clean", BuildDate:"2023-03-15T03:10:15Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"linux/amd64"}
Sysdump
cilium-sysdump-20230411-085724.zip
Anything else?
The kubernetes v1.26.1 is self-built via some security defects fixing. I think it should not be related to this issue, but still listed here.
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@JohnJAS I think I am hit by a similar if not the same issue. Have you found a solution yet?
If not: I tested with Cilium 1.13.3, 1.13.4 and v1.14.0-snapshot.4 on K3s without KubeProxy, nodes are Ubuntu 22.04. cilium connectivity test always gives me:
⚠  Unable to contact Hubble Relay, disabling Hubble telescope and flow validation: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp 127.0.0.1:4245: connect: connection refused"
ℹ  Expose Relay locally with:
   cilium hubble enable
   cilium hubble port-forward&
ℹ  Cilium version: 1.14.0
🏃 Running tests...

but cilium hubble enable gives me:
...
🔮 Auto-detected cilium version v1.14.0-snapshot.4
🔑 Found CA in secret cilium-ca
ℹ  helm template --namespace kube-system cilium cilium/cilium --version 1.14.0-snapshot.4 --set hubble.enabled=true,hubble.relay.enabled=true,tls.ca.cert=...
✨ Patching ConfigMap cilium-config to enable Hubble...
🚀 Creating ConfigMap for Cilium version 1.14.0-snapshot.4...
♻  Restarted Cilium pods
⌛ Waiting for Cilium to become ready before deploying other Hubble component(s)...
🚀 Creating Peer Service...

Error: Unable to enable Hubble: services "hubble-peer" already exists

Apart from that cilium connectivity test succeeds with  ✅ All 45 tests (322 actions) successful, 9 tests skipped, 0 scenarios skipped. Also, cilium hubble ui works just fine.
Do you see the same on your side?
Cheers.

source: gharchive/issue

authors: JohnJAS j-be

repo: cilium/cilium

license_type: permissive

license_source: github-api


text:
cilium init container failed to copy cni onto hostpath due to permission denied

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Install cilium by setting the cni binaries path, the init contaienrd 'install-cni-binaries' will failed to copy cni plugins onto the host path due to permission denied error when the path is not root permission, like the following.
You can see the cni folder is owned by user 1999 with 700 permission. If not privileged, the init container can never copy the bins to the host path.

[root@ip-10-164-32-33 charts]# kubectl logs -f cilium-gmq42 -n kube-system -c install-cni-binaries
Installing loopback driver...
cp: cannot stat '/host/opt/cni/bin/loopback': Permission denied
Installing cilium-cni to /host/opt/cni/bin/ ...
rm: cannot remove '/host/opt/cni/bin/cilium-cni.new': Permission denied
cp: failed to access '/host/opt/cni/bin/.cilium-cni.new': Permission denied

I've already set privilege as true, but it doesn't work.
helm install cilium cilium-1.13.1.tgz -n kube-system \
    --set cni.binPath=/opt/cdf/cni \
    --set cni.confPath=/opt/cdf/cni/conf \
    --set cluster.name=cdf-kubernetes \
    --set ipam.mode=kubernetes \
    --set securityContext.privileged=true \
    --set kubeProxyReplacement=strict \
    --set k8sServiceHost=${API_SERVER_IP} \
    --set k8sServicePort=${API_SERVER_PORT}

After I check the yaml file, I found init container 'install-cni-binaries' didn't have securityContext.privileged settings inside the yaml like other init containers do. Refer to :
https://github.com/cilium/cilium/blob/master/install/kubernetes/cilium/templates/cilium-agent/daemonset.yaml#L674-L680
I think this is a defect and I will create a PR for this later to fix this issue.
Here is the PR: https://github.com/cilium/cilium/pull/24891
Cilium Version
cilium-cli: v0.13.2 compiled with go1.20.2 on linux/amd64
cilium image (default): v1.13.1
cilium image (stable): v1.13.1
cilium image (running): v1.13.1
Kernel Version
Linux ip-10-164-32-33.us-west-2.compute.internal 4.18.0-348.el8.x86_64 https://github.com/cilium/cilium/pull/1 SMP Mon Oct 4 12:17:22 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
Kubernetes Version
Client Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.1", GitCommit:"db61bf1bb93524ed38d80018b6490f910358fb05", GitTreeState:"clean", BuildDate:"2023-03-15T03:13:46Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.1", GitCommit:"db61bf1bb93524ed38d80018b6490f910358fb05", GitTreeState:"clean", BuildDate:"2023-03-15T03:10:15Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"linux/amd64"}
Sysdump
No response
Relevant log output
No response
Anything else?
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

I had the same problem

@squeed Please have a review of this issue.

@ldelossa I think no. Because cilium pods failed to start up if this issue happened. I've already created a PR for fixing anyway.


text:
Sporadic "CT: Map insertion failed" errors, mostly on short-lived connections

Is there an existing issue for this?

[X] I have searched the existing issues

Version
equal or higher than v1.16.0 and lower than v1.17.0
What happened?
This bug report is related to #33074 , where in the same context, "No mapping for NAT masquerade" errors occured. After updating from 1.15.x to 1.16.0, that issue got resolved, and instead, flows get dropped at about the same rate with the reason "CT: Map insertion failed". In #33115 , a specific race condition got "fixed", and my guess is, that if the port allocation now fails on rev snat, cilium does not try again, and drops the flow.
How can we reproduce the issue?
Try hosting a highly loaded DNS server on a kubernetes cluster with cilium as the CNI. Or create and close a lot of connections quickly in other ways (while the CT table is highly loaded), since the issue happens "randomly" on new connections. More ideas in #33074 .
Cilium Version
Client: 1.16.0 82999990 2024-07-23T22:22:14-07:00 go version go1.22.5 linux/amd64
Daemon: 1.16.0 82999990 2024-07-23T22:22:14-07:00 go version go1.22.5 linux/amd64
Kernel Version
Linux 5.14.0-427.16.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 8 17:48:14 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Kubernetes Version
v1.28.13+rke2r1
Regression
It did work differently in 1.15.x, but to my best knowledge, never worked properly.
Sysdump
No response
Relevant log output
No response
Anything else?
No response
Cilium Users Document

[ ] Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

[X] I agree to follow this project's Code of Conduct

:wave: Have you taken a look at https://docs.cilium.io/en/stable/operations/troubleshooting/#handling-drop-ct-map-insertion-failed maybe? I wonder if that potentially helps.
It would be great if you could include sysdump.

Hi. There are a lot of sensitive data in the sysdump, which I would rather not publish. Is there any specific file or section that you are interested in?
We have followed through with the common troubleshooting steps, and I'm pretty sure this has nothing to do with the CT completely filling up, like in the issue described in the reference you have sent to me. Please refer to #33074 for more information, this is essentially the same issue, just behaving differently, probably because of the "fix" in #33115 .

We are currently running 1.16.4 and encountered with the same problem. It's mainly reproduced at agent on node with pods that handles dns queries.
On metric cilium_drop_count_total{reason="CT: Map insertion failed"} we observe such drops ones per 5 sec.
From my point of view it's unlikely a bpf map scaling problem.
We can see that map grows to ~2.37M entries for Non-TCP:
# cilium status --verbose | grep "connection tracking"
  Non-TCP connection tracking   2370229
  TCP connection tracking       4740459

At the same time, ~122k alive non-TCP connections with significant GC activity with ~200k deleted non-TCP entries:
# cilium metrics list | grep conntrack
cilium_datapath_conntrack_dump_resets_total              area="conntrack" family="ipv6" name="dump_interrupts"                                     0.000000
cilium_datapath_conntrack_gc_duration_seconds            family="ipv6" protocol="TCP" status="completed"                                           75.917479
cilium_datapath_conntrack_gc_duration_seconds            family="ipv6" protocol="non-TCP" status="completed"                                       1084.062838
cilium_datapath_conntrack_gc_entries                     family="ipv6" protocol="TCP" status="alive"                                               7299.000000
cilium_datapath_conntrack_gc_entries                     family="ipv6" protocol="TCP" status="deleted"                                             11182.000000
cilium_datapath_conntrack_gc_entries                     family="ipv6" protocol="non-TCP" status="alive"                                           120216.000000
cilium_datapath_conntrack_gc_entries                     family="ipv6" protocol="non-TCP" status="deleted"                                         219242.000000
cilium_datapath_conntrack_gc_key_fallbacks_total         family="ipv6" protocol="TCP"                                                              0.000000
cilium_datapath_conntrack_gc_key_fallbacks_total         family="ipv6" protocol="non-TCP"                                                          0.000000
cilium_datapath_conntrack_gc_runs_total                  family="ipv6" protocol="TCP" status="completed"                                           555.000000
cilium_datapath_conntrack_gc_runs_total                  family="ipv6" protocol="non-TCP" status="completed"                                       555.000000

On atempt to list them using cilium bpf ct list global cilium issues error (we are running ipv6-only):
Error: Unable to open /sys/fs/bpf/tc/globals/cilium_ct4_global: loading pinned map /sys/fs/bpf/tc/globals/cilium_ct4_global: no such file or directory
In cilium monitor drops looks like this (with pod on current node as dst):
xx drop (CT: Map insertion failed, -16) flow 0xb9b89bf3 to endpoint 1134, ifindex 2, file bpf_lxc.c:1705, , identity 16777247->591038: 2a00:<removed>:2df2 -> 2a00:<removed>:e602
xx drop (CT: Map insertion failed, -16) flow 0x5d63f125 to endpoint 0, ifindex 2, file bpf_host.c:468, , identity 16777247->unknown: 2a00:<removed>:9d17 -> 2a00:<removed>:e602

We have a similar issue with pods, serving DNS requests (A lot of UDP requests).
cilium_datapath_conntrack_gc_runs_total and cilium_drop_count_total{reason="CT: Map insertion failed"} have a strong correlation.
Not all Garbage collections lead to drops with reason="CT: Map insertion failed". But all drops were exaclty at a time of GC.

@pasteley Could you attach a sysdump? If not feasible, then bpftool prog and bpftool map outputs?

@pasteley Could you attach a sysdump? If not feasible, then bpftool prog and bpftool map outputs?

bpftool_prog
bpftool_map

authors: brb lgyurci marseel pasteley vonzepp


text:
L4 policy with more than 40 ports doesn't work

Cilium endpoints go into 'not-ready' state when I apply an L4 policy with more than 40 ports. It would be nice if Cilium can validate the policy before applying it so that endpoints don't go into not-ready state. Here is the policy I'm using:
kind: NetworkPolicy
apiVersion: extensions/v1beta1
metadata:
  name: myapp
spec:
  podSelector:
    matchLabels:
      io.kubernetes.pod.namespace: mynamespace
  ingress:
  - from:
    - podSelector:
        matchLabels:
          io.kubernetes.pod.namespace: mynamespace
    ports:
    - protocol: TCP
      port: 1
    - protocol: TCP
      port: 2
    - protocol: TCP
      port: 3
    - protocol: TCP
      port: 4
    - protocol: TCP
      port: 5
    - protocol: TCP
      port: 6
    - protocol: TCP
      port: 7
    - protocol: TCP
      port: 8
    - protocol: TCP
      port: 9
    - protocol: TCP
      port: 10
    - protocol: TCP
      port: 11
    - protocol: TCP
      port: 12
    - protocol: TCP
      port: 13
    - protocol: TCP
      port: 14
    - protocol: TCP
      port: 15
    - protocol: TCP
      port: 16
    - protocol: TCP
      port: 17
    - protocol: TCP
      port: 18
    - protocol: TCP
      port: 19
    - protocol: TCP
      port: 20
    - protocol: TCP
      port: 21
    - protocol: TCP
      port: 22
    - protocol: TCP
      port: 23
    - protocol: TCP
      port: 24
    - protocol: TCP
      port: 25
    - protocol: TCP
      port: 26
    - protocol: TCP
      port: 27
    - protocol: TCP
      port: 28
    - protocol: TCP
      port: 29
    - protocol: TCP
      port: 30
    - protocol: TCP
      port: 31
    - protocol: TCP
      port: 32
    - protocol: TCP
      port: 33
    - protocol: TCP
      port: 34
    - protocol: TCP
      port: 35
    - protocol: TCP
      port: 36
    - protocol: TCP
      port: 37
    - protocol: TCP
      port: 38
    - protocol: TCP
      port: 39
    - protocol: TCP
      port: 40
    - protocol: TCP
      port: 41

... forgot to mention the version I'm using:
root@minikube:/# cilium version
Cilium 0.9.90 e71130e Sat, 3 Jun 2017 04:47:45 +0200 go version go1.8.3 linux/amd64

I think we can simply reject configuration at the datapath limit for now so we fail gracefully.

On 06/06/2017 07:55 PM, Thomas Graf wrote:

I think we can simply reject configuration at the datapath limit for now so we fail gracefully.

40 proxy ports seems like enough to me. Is there any interest in supporting more?
There needs to be some upper bound but 40 was an arbitrary choice and its fairly
easy from the macro side to increase the upper bound.

40 sounds good. We may need to revisit when support ranges
On 6 Jun 2017 8:44 pm, "John Fastabend" notifications@github.com wrote:

On 06/06/2017 07:55 PM, Thomas Graf wrote:

I think we can simply reject configuration at the datapath limit for now
so we fail gracefully.

40 proxy ports seems like enough to me. Is there any interest in
supporting more?
There needs to be some upper bound but 40 was an arbitrary choice and its
fairly
easy from the macro side to increase the upper bound.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/cilium/cilium/issues/922#issuecomment-306678130, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABWiuUgoqUfNS36JGfDwR3hI_WYKxrzhks5sBhyJgaJpZM4NxtDH
.

@tgraf Is this also waiting for the policy spec?

authors: jrfastab michi-covalent scanf tgraf


text:
ip: Add MustAddrFromIP

This function is the same as AddrFromIP() but assumes the input is
valid. It doesn't return an error and instead panics if assumptions are
not true.
This is useful to have a fast-path without error handling when we are
certain the input is valid.
Signed-off-by: Chris Tarazi chris@isovalent.com

The function is not used anywhere (yet) so no need to run the full end-to-end CI. Merging.

source: gharchive/pull-request

authors: christarazi pchaigno


text:
node: Add source label to node event metric

We have struggled to identify the source of node events in the metrics. Add a source label to identify whether the event has been generated via k8s or the kvstore.

This change is

Coverage decreased (-0.03%) to 42.985% when pulling 26690befdaba4f55992089cb4bd185dd0959c67e on pr/tgraf/node-event-source-metric into 61fa86162be7ed65e2efe407bd166de055f7ad46 on master.

test-me-please

authors: coveralls tgraf


text:
bpf: review and fix 0xeff masks

https://github.com/cilium/tetragon/commit/867c6f09be293fce279e09e28e9ed6392f935c85 fixes a 0xeff mask to 0xfff. There are other instances of such masks on the code, which might lead to similar bugs. Changing all of them, however, leads to verification issues so they need to be reviewed on a case-by-case basis.
see: https://github.com/cilium/tetragon/pull/458#discussion_r985674185

Now sure that this is related but we still have some 0xeff masks:
~/tetragon/bpf$ grep 3ff. -rnI
process/types/basic.h:177:	asm volatile("%[off] &= 0x3fff;\n" ::[off] "+r"(off)
process/types/basic.h:1490:		size = argm & 0x03ff;
process/data_event.h:24:	asm volatile("%[bytes] &= 0x3fff;\n"
process/pfilter.h:131:		asm volatile("%[o] &= 0x3ff;\n" ::[o] "+r"(o)
process/pfilter.h:150:		asm volatile("%[o] &= 0x3ff;\n" ::[o] "+r"(o)
process/bpf_process_event.h:386:	asm volatile("%[offset] &= 0x3ff;\n" ::[offset] "+r"(offset)

authors: kkourt tpapagian

repo: cilium/tetragon


text:
🛑 Collection Analysis Datasette is down

In 7b24b5b, Collection Analysis Datasette (https://collection-analysis.cincy.pl/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Collection Analysis Datasette is back up in 4183117 after 18 minutes.

repo: cincinnatilibrary/uptime-reports

license: MIT


text:
iOS11でサードパーティアプリの画像が選べない

たぶんiOS11で仕様が変わったせい

なんかいつのまにか直っていたらしいのでクローズ

repo: cinderella-project/iMast


text:
⚠ Cioos National CKAN has degraded performance

In fa33b57, Cioos National CKAN (https://catalogue.cioos.ca/) experienced degraded performance:

HTTP code: 200
Response time: 14026 ms

Resolved: Cioos National CKAN performance has improved in 0afe71e after 40 minutes.

repo: cioos-siooc/cwatch-upptime


text:
🛑 CIOOS Pacific ERDDAP dataset DFO_MEDS_BUOYS is down

In 204e974, CIOOS Pacific ERDDAP dataset DFO_MEDS_BUOYS (https://data.cioospacific.ca/erddap/tabledap/DFO_MEDS_BUOYS.htmlTable?STN_ID&time>=now-1week&distinct()) was down:

HTTP code: 0
Response time: 0 ms

Resolved: CIOOS Pacific ERDDAP dataset DFO_MEDS_BUOYS is back up in 716150a after 1 hour, 7 minutes.


text:
Keep tags

Provide the option to not directly go to latest

Codecov Report

Merging #48 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master    #48   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           7      7
  Lines         145    149    +4
=====================================
+ Hits          145    149    +4

Impacted Files
Coverage Δ

ouroboros/defaults.py
100% <100%> (ø)
:arrow_up:

ouroboros/cli.py
100% <100%> (ø)
:arrow_up:

ouroboros/main.py
100% <100%> (ø)
:arrow_up:

ouroboros/image.py
100% <100%> (ø)
:arrow_up:

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 8262046...9d18c38. Read the comment docs.


text:
Json.findAllByKey: avoid allocations.

The existing code of findAllByKey was performing several memory allocations, not needed to create the final result.

It creates a long list with keyValues from which it filters   only the pairs with a certain Key.
Performs several transformations of Vector to list, which may  mean copying the whole Vector.
For each field, it creates a new tuple-pair.

Instead of all that, we use a mutable ListBuffer, and a recursive loop that runs through the Json, picking only the fields and values that it cares about.

Thanks for doing this, @diesalbla! Would you mind merging master?

Codecov Report

Merging #1135 into master will decrease coverage by 4.61%.
The diff coverage is 28.57%.

@@            Coverage Diff             @@
##           master    #1135      +/-   ##
==========================================
- Coverage   84.29%   79.67%   -4.62%
==========================================
  Files          77       77
  Lines        2508     2509       +1
  Branches      107      108       +1
==========================================
- Hits         2114     1999     -115
- Misses        394      510     +116

Impacted Files
Coverage Δ

...les/core/shared/src/main/scala/io/circe/Json.scala
77.16% <28.57%> (-2.35%)
:arrow_down:

...chmark/src/main/scala/io/circe/benchmark/Foo.scala
0% <0%> (-100%)
:arrow_down:

...o/circe/benchmark/GenericDerivationBenchmark.scala
0% <0%> (-100%)
:arrow_down:

...rc/main/scala/io/circe/benchmark/ExampleData.scala
0% <0%> (-100%)
:arrow_down:

...scala/io/circe/benchmark/JsonObjectBenchmark.scala
0% <0%> (-100%)
:arrow_down:

...la/io/circe/benchmark/NumberParsingBenchmark.scala
0% <0%> (-100%)
:arrow_down:

...in/scala/io/circe/benchmark/FoldingBenchmark.scala
0% <0%> (-89.66%)
:arrow_down:

...n/scala/io/circe/benchmark/PrintingBenchmark.scala
0% <0%> (-75%)
:arrow_down:

...rc/main/scala/io/circe/shapes/SizedInstances.scala
78.57% <0%> (-14.29%)
:arrow_down:

...re/shared/src/main/scala/io/circe/JsonNumber.scala
92.5% <0%> (-2.5%)
:arrow_down:

... and 5 more

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 8c4e26d...771eab5. Read the comment docs.

Looks like it just needs sbt scalafmt now.

authors: codecov-io diesalbla travisbrown

repo: circe/circe

license_source: bigquery


text:
Provide tenant license information to users

Description
There is value in collecting information around licenses in tenants assessed by Scubagear.  The ScubaGear results and report should capture licenses aligned to the tenant and potentially other information such as # of seats per license, and # of assigned/unused licenses per license level.  The license information is useful for tenant administrators planning updates based on the baseline assessments to understand any licensing gaps or baseline items that are not addressable at a given license level.
This information can be captured in the AAD provider using existing APIs.  A quick read suggests the subscribedSkus API may be the most appropriate.
Steps to completing this epic include:

Validate which licenses are important to capture and needed via API calls
Identify how license information is represented in both JSON results
Identify how license information is displayed in the HTML reports
Collect license information as part of provider assessment JSON results
Implement license display in HTML reports

Initiative / Goal
The goal is to provide ScubaGear users with license information to inform baseline conformance decisions and identify potential license gaps or barriers to implementing secure tenant and service settings.
Hypothesis
Adding license information to the results and reporting will aid the user in implementing policies that require specific licenses.  This hypothesis can be measured by user feedback on license features thru pilot interactions.
Acceptance criteria
Criteria that are considered must have for feature launch and in-scope for this epic include:

[ ] Licenses to include have been determined by product owner
[ ] API calls needed to extract license information have been verified as working
[ ] License information JSON format has been agreed upon by devs and product owner
[ ] License information display in HTML report(s) demo'd and agreed upon by product owner
[ ] Provider(s) updated to successfully collect license information and add to JSON results
[ ] Tenant licenses are displayed in HTML report(s)

Stakeholders / Resources
Include CISA decision makers and dev team members in discussions about this epic.  Resources needed for this epic include API access to test tenants to validate ability to acquire license information under different licensing bundles.
Timeline
The current projected timeline for delivery of this epic feature is with the associated release milestone.
Associated Tasks
See the following related issues:

I have split this epic into subtasks including issue 778, and for Flipper, I will put the data for the licensing information into the JSON for Flipper. After the meeting with CISA, we decided on the specific licensing information relevant for ScubaGear.

authors: dagarwal-mitre gdasher

repo: cisagov/ScubaGear


text:
Remove role_tags from cisagov/terraform-state-read-role-tf-module configuration

🗣 Description
This pull request modifies the Terraform code to remove role_tags from the cisagov/terraform-state-read-role-tf-module configuration.
💭 Motivation and context
This is in accordance with the changes in cisagov/terraform-state-read-role-tf-module#5.
Note that var.tags is passed in via the provider's default tags, so there is no need to use additional_role_tags here.
🧪 Testing
I applied these changes to our COOL production and staging environments and verified that the only change that terraform apply wanted to apply was to add some tags to an extant IAM policy resource.
✅ Checklist

[x] This PR has an informative and human-readable title.
[x] Changes are limited to a single goal - eschew scope creep!
[x] All relevant type-of-change labels have been added.
[x] I have read the CONTRIBUTING document.
[x] These code changes follow cisagov code standards.
[x] All new and existing tests pass.

Are we not updating the provisionterraform provider to exclude the Workspace tag? We're doing similar in other PRs to remove the role_tag key.

See commit e69e239.

Do we want to also add the Workspace-exclusion foo here like we have elsewhere (e.g. cisagov/cool-userservices-dns@b86b715?)

See commit e69e239.

repo: cisagov/cool-domain-manager-networking


text:
Refactor Users page component

💡 Summary
File: frontend/src/pages/Users/Users.tsx
The Users page component contains a mixture of logic, content, and style. It needs to be broken down in to smaller, more focused subcomponents.
Motivation and context
Cleans up the code so that it is easier to evaluate and manage.
Acceptance criteria

[ ] Style is moved into it's own file
[ ] All in-line style is moved out of JSX into css classes
[ ] All logic is moved from JSX into variables defined by typescript
[ ] All areas of concern are broken off into subcomponents
[ ] Markup represents what is visually in the page

@schmelz21 - Ideally, user management would follow the way of the Feeds page insofar as we should be creating a proper user management interface on the backend that feeds XFD.  The new user management interface would be a proper functional, role-based application module.
I would keep this issue low on the list while we figure things out. I will provide additional detail as it becomes available.
cc @stewartl97, @rapidray12, @nickviola, @Matthew-Grayson

authors: actualeyes dmfezzareed

repo: cisagov/crossfeed


text:
"Invite User" feature not working.

1. When using "Invite User" feature, page responds with "Error 500".

2. However, upon manual page refresh the changes and invited user are reflected.

@schmelz21 let's put this one on hold.  I have some concerns around the invitation process as a whole.

I have used the invite option twice in two days. Worked perfectly. No error message.

authors: ValeriaReveles dmfezzareed


text:
Plan of supporting DELETE command

Hi
Does libacvp have the plan to support DELETE command describing in the ACVP specification? such as
12.16.5. Cancel Test Session
DELETE /testSessions/{testSessionId}
12.17.3. Cancel Testing of a Vector Set
DELETE /testSessions/{testSessionId}/vectorSets/{vectorSetId}
Thanks,
Sean

It's not presently on our backlog, but I'll add it. I can't promise the priority will be high.

It's not presently on our backlog, but I'll add it. I can't promise the priority will be high.

Thanks Barry, adding this issue on the backlog is good enough. For me, most normal use cases do not need DELETE command; however, the command is useful while trying to recover unused vector-sets points. Hopefully this command can be supported after high priority issues are done.

Thanks Barry, adding this issue on the backlog is good enough. For me, most normal use cases do not need DELETE command; however, the command is useful while trying to recover unused vector-sets points. Hopefully this command can be supported after high priority issues are done.

authors: bfussell luckywqe

repo: cisco/libacvp


text:
Directory creation and cleanup after database operations

This PR addresses an issue when a foreign server is created inside a template database, newly created databases can not create foreign tables due to missing folder. This fix makes sure required directroy exists prior to creating files in it.
This also makes sure that cstore files are removed after a database or cstore extension is dropped out of current database.
There are 2 mishaps that we can't address

if the cstore table is created with file name option, there is no way of removing it when a database/extension is dropped
if the active database does not have cstore extension created, then we can't reclaim resources of the dropped database.

Fixes : #124 , #129

Looks good to me, :shipit:

authors: mtuncer pykello


text:
Kibernetes compatibility - download documents when local folder vanishes

This change improves Kubernetes (k8s) compatibility.
One of the main concepts in  k8s is the idea of ephemeral pod - which can be destroyed/recreated at any moment.
In such case - entire media folder will vanish.
As result of "vanished media folder" - application should be capable of bringing back i.e. download from cloud storage all "vanished" files:

page hocr files
document file (i.e. original document)

Notice that page previews won't be downloaded -  they will be locally regenerated (but before that, original document must be downloaded).

Fixes available in 2.0.x branch:
fix in default django project

In Kubernetes deployment you'll need to use papermerge-s3 package as persistent storage.

repo: ciur/papermerge


text:
Tech/civic popup appears for a split second even when Disabled

macOS 10.15.5, Mac app store version. cqui current GitHub master branch. it happens with only cqui installed, and no settings changed.
[infixo copied from the title]
tech/civic popup seems to appear for a split second even though its not supposed to show up by default

Ok yeah, I see this too.  Good to know I'm not going crazy.  I think this is new after the recent patch, maybe something changed from Firaxis.  Anyway, looking into it.

It's the standard popup window you see when completing research on a tech or civic -- middle of the screen, "Research Complete" etc.  It appears very briefly, and while there were no changes on the CQUI side recently, the mechanism used by CQUI to hide that popup was likely not the correct way to go about it.  In looking last night I was not able to figure a way to keep the popup hidden and still play the audio that reads the quote.
In TechCivicCompletedPopup.lua, the CQUI change is in RealizeNextPopup, where after the rest of the code has done the work to populate the properties that would appear on the popup (ShowTechCompletedPopup), CQUI just hides the thing by calling UIManager:DequeuePopup.
The popup itself is "Queued" in AddCompletedPopup:
UIManager:QueuePopup( ContextPtr, PopupPriority.Low, { DelayShow = true });

My assumption is that prior to the recent set of changes from Firaxis, there was enough going on in the background that this low priority popup would end up not showing on screen by the time CQUI called DequeuePopup in the RealizeNextPopup function.  Now that popup will appear very briefly - less than half a second on my machine.
I tried preventing the QueuePopup, which results in the popup not appearing, but also no audio plays because RealizeNextPopup no longer gets called as a result.

What’s the point of having an audio without a popup? This doesn’t make much sense imho. Also, is there an option to actually disable a window and enable audio? I thought that the “disable popup” is meant for both.

Yes - CQUI_TechPopupVisual and CQUI_TechPopupAudio; visual defaults to false while audio defaults to true.  There's a notification message when civic or research is completed, so I guess the idea was those two things pair together.  Existing design, so I'm not sure what the thoughts were behind it.

No problem.  Assuming it pastes (as it's 6mb), I used ScreenToGif to show exactly what happens (recorded at 15FPS, to save on size):

The CQUI version of TechCivicCompletedPopup.lua has minimal differences between it and the current version in game.  There were no changes to this file recently, and this did not start occurring until the most recent patch or one of the recent CQUI changes is somehow affecting this (WorldTracker change?)... either way, it's a recent happening.
The mechanism of "QueuePopup then update Popup data" is Firaxis design, something that exists in the unmodified game.  While not as obvious, the issue of showing the popup before it's been updated is present in the unmodified game, as the previous tech very briefly shows before the Popup is updated and resized.
For example: you can see in this screenshot from ScreenToGif that for a single 33ms frame, the previous tech Military Science is visible, before the control is updated to show the tech just discovered (Scientific Theory).

It's barely noticeable, but noticeable nonetheless, and I assume more noticeable on slower machines.  I recorded this gif at 60FPS, so it's really short gif, but you can just see it.  It's kind of a jarring visual so I'll just link it: PopupIssue

I agree that if we tie hiding the popup with also losing the audio, we should simply not queue it.  I kind of like the audio - or at least, don't mind it, and will leave it on when I play with sound.  I haven't been on CivFanatics or Reddit enough to know whether I'm in the minority there, but I'll take your word for it.
I'm not following you on "the audio option should do what it says".

The Sean Bean voiceover is enabled by default in the CQUI settings.  The audio should play when the popup is enabled.  If the Play Civic/Tech audio quote is disabled, then it should only play when someone clicks on the quote in the popup UI.
The audio also does not overlap - whenever UI.PlaySound is called, it stops whatever happened to be playing at the time - at least when called from the FireTuner.  I assume this would translate to the lua module, and if 3 techs were discovered at once only the audio from the last one would play.
> techType = GameInfo.Technologies[1].TechnologyType
> results = DB.Query("SELECT Quote, QuoteAudio from TechnologyQuotes where TechnologyType = ? ORDER BY RANDOM() LIMIT 1", techType);
> audio = nil
> for i, row in ipairs(results) do audio = row.QuoteAudio; break; end
> audio
Play_Animal_Husbandry_Quote_1
> UI.PlaySound(audio)
> UI.PlaySound(audio)

Thanks for providing some more info.
I wasn’t sure what happened when more than 1 sound is queued.
a) “do what it says” bad wording maybe. Option says “popup audio”. There is no SEPARATE popup for an audio. There is only ONE popup. So for me it means “audio that plays when the popup appears”. No popup, no audio.
B) thanks for checking multiple quotes. That only proves my point. Separate audio is pointless as you will only hear the last quote.

As a separate note - I always play with tech popups enabled. Disabling them saves so little time compared to the entire game that is pointless imho. Finishing a tech or civic is a pretty important event in the game and this kind of extra attention is useful.
If I don’t want to see it, I just press ESC.

Yeah I was curious on the last one because I couldn't remember if it did or not.  I didn't think it did, but also didn't know offhand what mechanism existed to ensure it didn't.  I'm kind of surprised it actually requires a "real" audio clip of some sort to stop the sound - UI.PlaySound("Stop_Speech_Tech") stops it, while UI.PlaySound("foo") does not.
Also - treating it as "automatically play the audio with the popup" makes more sense than having the audio be completely independent.  While I didn't mind the voiceover playing without the popup, it's also not my favorite CQUI feature by any means.
I'm curious if removing that "feature" will generate any grumbling...I guess we can find out
I'll update the PR.  I wouldn't mind other opinions on this, but the code changes are easy enough that if for some reason there's clamoring to maintain the current design, it can be updated easily to do so

So, to be clear, we basically go with my proposition, i.e.
a) hook into notification, so the popup will never be even queued in the first place
b) audio on/off only when popup is enabled

Yeah I was curious on the last one because I couldn't remember if it did or not. I didn't think it did, but also didn't know offhand what mechanism existed to ensure it didn't. I'm kind of surprised it actually requires a "real" audio clip of some sort to stop the sound - UI.PlaySound("Stop_Speech_Tech") stops it, while UI.PlaySound("foo") does not.

It is actually a quirk from WWise engine which handles all sound and audio. It works like sort of one-way mixer. E.g. you just insert sounds there and it plays them. All sound-related things happen in the engine and there is really no control from e.g. Lua. There is no API for it, etc. So, to stop the sound a trick needs to be used.

yeah - for
for a) use the same logic that the blocked_by_tutorial does.  Popup is never "built" and queued in that case.
and b) it becomes "automatically play the audio when popup shows"

Yeah I was curious on the last one because I couldn't remember if it did or not. I didn't think it did, but also didn't know offhand what mechanism existed to ensure it didn't. I'm kind of surprised it actually requires a "real" audio clip of some sort to stop the sound - UI.PlaySound("Stop_Speech_Tech") stops it, while UI.PlaySound("foo") does not.
Also - treating it as "automatically play the audio with the popup" makes more sense than having the audio be completely independent. While I didn't mind the voiceover playing without the popup, it's also not my favorite CQUI feature by any means.
I'm curious if removing that "feature" will generate any grumbling...I guess we can find out
I'll update the PR. I wouldn't mind other opinions on this, but the code changes are easy enough that if for some reason there's clamoring to maintain the current design, it can be updated easily to do so

I have read this thread a few times and I am sorry I am not sure what exactly you are talking about removing but the way I play is with popup only, no audio, so I hope you are not suggesting removing that as an option. iow I should not have to listen to the audio if I want to see the popup.

@wayneb64 It will still be possible.
What will be possible: popup with audio (standard), silent popup, no popup (and no audio).

Perfect, silent popup is the option that is important to me.

Fixed.


text:
Translation Batch 8

Next round of translations

Submitted for review after pulling strings from transifex

repo: civiform/civiform


text:
Update stylings of error states

Description
Please explain the changes you made here.
Release notes
The title of the pull request will be used as the default release notes description. If more detail is needed to communicate to partners the scope of the PR's changes, use this release notes section.
Checklist
General
Read the full guidelines for PRs here

[ ] Added the correct label: < feature | enhancement | bug | under-development | dependencies | infrastructure | ignore-for-release | database >
[ ] Assigned to a specific person, civiform/developers, or a more specific round-robin list
[ ] Added an additional reviewer from outside your organization as FYI (if the primary reviewer is in the same organization as you)
[ ] Created unit and/or browser tests which fail without the change (if possible)
[ ] Performed manual testing (Chrome and Firefox if it includes front-end changes)
[ ] Extended the README / documentation, if necessary

Database evolutions
Read the guidelines here

[ ] Assigned two reviewers
[ ] Guarded against already existing resources using IF NOT EXISTS and IF EXISTS
[ ] Downs created to undo changes in Ups

User visible changes

[ ] Followed steps to internationalize new strings

[ ] Added context strings to new messages
[ ] Didn't use a message in applicant facing code that isn't translated yet (unless behind a flag)
[ ] Follow the workflow here

[ ] Wrote browser tests using the validateAccessibility method
[ ] Tested on mobile view. See mobile device mode
[ ] Manually tested at 200% size
[ ] Manually evaluated tab order

New Features

[ ] Add new FeatureFlag env vars to server/conf/helper/feature-flags.conf
[ ] Conditioned new functionality on a FeatureFlag
[ ] Wrote browser tests with the feature flag off and on, etc.

Instructions for manual testing
If instructions are needed for manual testing by reviewers, include them here.
Issue(s) this completes
Fixes #<issue_number>; Fixes #<issue_number>...

#7420  👈
main

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

Join @greg-hyde and the rest of your teammates on  Graphite

What is our guideline about when to use USWDS utilities vs when to use tailwind utilties?

I've been trying to use USWDS styles for Thymeleaf since we're using USWDS components and it provides some consistency there and a path towards theming, but for most classes we could honestly use tailwind or uswds or vanilla CSS and it wouldn't really make a difference


text:
maintaining bidirectional transformation equality when automatically converting (semantically) immutable data

from julia import Main as jl
jl.seval("1 => 2") #  python tuple (1, 2)
f = jl.seval(r"""
function (p::Pair{Int, Int})
    p.first
end """)

f(jl.seval("1 => 2"))
# TypeError: Julia: MethodError: no method matching (::var"#1#2")(::Tuple{Int64, Int64})
# Closest candidates are:
#  (::var"#1#2")(!Matched::Pair{Int64, Int64}) at none:2

Automatic conversion is handy, but we could avoid possible issues if we hold to_julia(to_python(o)) === o in Julia or to_python(to_julia(o)) == o in Python.

Invariants
Going from Julia to Python to Julia, the invariant pyconvert(typeof(x), Py(x)) === x holds for any Julia value x. The typeof(x) is necessary because for example Int32, Int64, BigInt etc are all converted to Python int.
If x is semantically* mutable, then pyconvert(Any, Py(x)) === x also holds, because Py(x) will be a wrapper and converting a wrapper by default just unwraps it. If x is semantically* immutable, then pyconvert(Any, Py(x)) == x should usually hold, but no promises.
*for example BigInt is a mutable type, but is semantically immutable because there is no API to mutate it.
In the other direction (Python to Julia to Python) then pyeq(Py(pyconvert(Any, x)), x) should be true for any x::Py. That is, the default conversion to Julia and back should be equal to the original, but not necessarily be the exact same object. This invariant might not actually always hold (for the same reason above that type information gets lost) but I think there are always fewer Python types than Julia ones so it does hold.
Stricter Invariants?
You want pyconvert(Any, Py(x)) === x to always hold. The issue here is that it means that Py(x) needs to know not only the value of x but also its type. The only way this seems possible would be to e.g. have subtypes of int corresponding to each Julia subtype of Integer (so Int64 is converted to int_Int64, which is then converted back to Int64) but this would complicate things a lot.
Your Example
In your example you have
f = jl.seval("function (p::Pair) ... end")
x = jl.seval("1 => 2")
f(x)

but it doesn't work because x was automatically converted to a Python tuple, which is then converted to a Julia Tuple when calling f.
In practice, when calling f(x), the caller should know enough information about f and x to make this work via one of these two methods:

Call f(juliacall.convert(T, x)) instead for some appropriate type T (such as jl.Pair or jl.Pair[jl.Int, jl.Int] in the example).
Define f = jl.seval("PythonCall.pyfunc(function(x::Py) ... end)")) instead. If you wrap a function in pyfunc then when calling f(x) it receives x as an unconverted Py, which the function can convert itself as necessary.

Your explanation is pretty neat, and I think jl._jl_raw() is extractly what I need. Actually, I'm always thinking about such a thing when using juliacall.
Checking the functionality of jl._jl_raw, if things works fine I will close this issue.
P.S: I'd appreciate it a lot for this well-designed Julia-Python interop packages 👉🥇.

authors: cjdoris thautwarm


text:
python string wrapper?

Converting strings from Python is of course really expensive because it involves a lot of copying and not even of contiguous blocks of data.  Once you start getting above a few MB of data converting strings starts to look like a really bad option.  The Py objects can do a lot, but they are not AbstractString so they don't really look like strings on the Julia end until you convert them.
Any interest in creating some kind of PyStr wrapper that provides an AbstractString interface for Py's?

I've just done a quick benchmark with x = "a"^100_000_000 and y = Py(x):

x * "b" takes 17ms
Py(x) takes 33ms
pyconvert(String, y) takes 41ms

So conversion to/from Python strings appears to be within a small factor of optimal.
Is it that you don't want to pay this conversion cost at all, or have limited memory and therefore want a lazy wrapper?
I'm not against adding PyString, but AFAIU Python strings have no defined storage representation so there is no good way to access its codepoints or do fast random access to its characters. I think the best you can do is explicitly encode the string as UTF8 first, which is exactly what conversion to String does.
We could have a PyString wrapper type which simply uses ordinary Python indexing to access substrings and characters, but this will be sloooow.

I think the problem is that it doesn't scale well.  I don't have a MWE but I have observed converting large sets of strings to be much more expensive.  I think the reasons for this are the burden on the garbage collector and that the memory holding the strings is not in general contiguous as in your example with one large string.
I'm aware that PyString would still have enormous disadvantages, but it might be "good enough" in some cases.  For example, I recently had to get $\sim 10^7$ strings from Python but there were only $\sim 100$ distinct strings, and my task was much faster by encoding them with a hash or whatever rather than trying to copy them.  In my case not having a PyString didn't matter much, but sometimes it may... on the other hand maybe in cases where you would really need a PyString it's just not worth it and you should just convert 🤷
I'm not sure it's the right approach, it was just a thought.

The main use for a wrapper is to provide a zero-copy interface to a mutable object. A secondary use is to access only a small portion of a large container. I can't think of more uses than these two. If you don't have either of these uses (i.e. you are only reading, and will read most of the container) then usually you're better off eagerly converting the container instead.
Strings are immutable, which leaves only the second use, i.e. reading a small portion of a large string. But then you may as well just take the relevant substrings on the python side before converting. Maybe that's not always possible (e.g. this is happening inside a function which is acting generically on strings).

That's interesting, if strings ever use UTF-8 internally then we could add a PyString wrapper. Until then I don't think a wrapper would gain much so gonna close this issue for now. Feel free to reopen whenever.

authors: ExpandingMan cjdoris


text:
How to run cell containing Python script (within Pluto)

Hi!
Thank you for this package, switching over from PyCall.
I'm using Pluto and I had a cell that had only Python code:
begin
py"""

from package import something

def function pyfun():
    return something()

"""
julia_funWrap = py"pyfun"

This would allow me to define several helper functions (that call other functions) all in Python, and then wrap those functions so that I can call them from Julia when needed.
Is it possible to do something similar in PythonCall?
I have a script that I'd like to reuse, the alternative being writing Julia helper functions instead, wrapping the inner calls, as well as prepare the necessary inputs so that they can be passed.
This example seems to point instead towards writing "hybrid" Python/Julia code:
https://discourse.julialang.org/t/passing-parameters-to-a-python-function-via-pycall-that-need-to-be-in-a-dict-form/84691/4

Update
I'm having more fun (and appreciating) rewriting the script as Julia functions, making the necessary mappings and type conversions before/after calling each wrapped (Python) function.
It would still be interesting to know if is possible to run entire Python scripts residing in a call, the documentation wasn't explicit about this.

It's possibly a bit buried, but there are functions pyexec and pyeval and macros @pyexec and @pyeval for evaluating or executing Python code.
https://cjdoris.github.io/PythonCall.jl/stable/pythoncall-reference/#PythonCall.@pyexec
Your example using PyCall can be rewritten using PythonCall as
@pyexec """
from package import something

global pyfun
def function pyfun():
    return something()
"""
julia_funWrap = @pyeval "pyfun"

You need global pyfun because @pyexec introduces a new local scope.

Thank you!!

authors: cjdoris danvinci


text:
CXX options in add_nodejs_module

First, thanks for your work on a great project. My issue: it would be nice to be able to pass compiler options to add_nodejs_module (I'm specifically interested in CXX_STANDARD, currently hardcoded to 11, but I'd imagine other options might be useful as well). Cheers!

Node.js requires a minimum of C++11 to compile at this point (due to inheriting this requirement from V8). I've long held (see #18) that I want this to work "out of the box" for most people, so I need to make sure that at least some minimum is set.
add_nodejs_module creates a standard CMake library target based on the name you specify, which allows you to override this behaviour with an additional call to set_target_properties:
set_target_properties(<module_name> PROPERTIES CXX_STANDARD 14)

I don't want to expand the scope of add_nodejs_module too much as parsing / handling arguments in CMake is pretty tricky and potentially confusing to users. For now, I believe that the ability to modify the target after this call (which is a standard design pattern in CMake, see target_link_libraries, target_include_directories, etc.) is sufficient. Please let me know (with examples, if possible :wink:) if this isn't the case for you.

thanks, works on my box 👍

repo: cjntaylor/node-cmake

license: isc


text:
docs: update introduction of kuai

Ref:

Introduction: https://github.com/ckb-js/kuai/issues/228

Codecov Report

Merging #331 (b309a5e) into develop (e126294) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #331   +/-   ##
========================================
  Coverage    68.13%   68.13%
========================================
  Files           87       87
  Lines         2617     2617
  Branches       587      587
========================================
  Hits          1783     1783
  Misses         755      755
  Partials        79       79

Continue to review full report in Codecov by Sentry.

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

authors: Keith-CY codecov-commenter

repo: ckb-js/kuai


text:
CLTypingLabel. ArgumentError - Illformed requirement "~-> 0.4.0"

`bijeshkawan@Bijeshs-MacBook-Pro Flash-Chat-iOS13 % pod install
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Command
/usr/local/bin/pod install

Report

What did you do?

What did you expect to happen?

What happened instead?

Stack
   CocoaPods : 1.9.1
        Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
    RubyGems : 3.0.3
        Host : Mac OS X 10.15.3 (19D76)
       Xcode :  ()
         Git : git version 2.21.0 (Apple Git-122.2)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories : trunk - CDN - https://cdn.cocoapods.org/

Plugins
cocoapods-deintegrate : 1.0.4
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.1.0
cocoapods-trunk       : 1.4.1
cocoapods-try         : 1.1.0

Podfile
platform :ios, '13.0'

target 'Flash Chat iOS13' do

  use_frameworks!

  # Pods for Flash Chat iOS13

pod 'CLTypingLabel', '~-> 0.4.0'

end

Error
ArgumentError - Illformed requirement `"~-> 0.4.0"`
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:63:in `parse'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:88:in `block in initialize'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:88:in `map!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:88:in `initialize'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:34:in `new'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:34:in `create'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/dependency.rb:101:in `initialize'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:979:in `new'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:979:in `block in pod_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:975:in `map'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:975:in `pod_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:96:in `non_inherited_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:74:in `dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer/podfile_dependency_cache.rb:44:in `block in from_podfile'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer/podfile_dependency_cache.rb:43:in `each'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer/podfile_dependency_cache.rb:43:in `from_podfile'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer.rb:85:in `initialize'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:416:in `new'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:416:in `create_analyzer'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:228:in `resolve_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:156:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/command/install.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'

――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
[!] Oh no, an error occurred.
Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=Illformed+requirement+`"~->+0.4.0"`&type=Issues
If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new
Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md
Don't forget to anonymize any private data!
Looking for related issues on cocoapods/cocoapods...

CocoaPods 1.0 doesn't handle lockfiles that used to have :head declared
https://github.com/CocoaPods/CocoaPods/issues/4710 [closed] [4 comments]
05 Jan 2016

ArgumentError - Illformed requirement " Source = 0.0.1"
https://github.com/CocoaPods/CocoaPods/issues/2850 [closed] [4 comments]
20 Nov 2014

bijeshkawan@Bijeshs-MacBook-Pro Flash-Chat-iOS13 %
`

remove - from this ~->
do as below
pod 'CLTypingLabel', '~> 0.4.0'

pod 'CLTypingLabel', '~> 0.4.0'
Thanks <3

authors: bijeshkawan danmarchuk tributem

license: mit


text:
cla-assistant.io is not responding to incoming webhooks

URL to the linked Repo/Org:
https://github.com/trailofbits/algo/pull/1351
Steps to reproduce the problem:

Activate a Github org in cla-assistant.io
Create a new pull request
There is no status check for the CLA on the PR

What is the expected result?
cla-assistant.io responds to Github with the required information to evaluate CLA acceptance
What happens instead?
cla-assistant.io responds with a 200 OK and does not perform the status check
The organization is linked in cla-assistant.io:

The webhook is installed:

Third-party access is allowed:

However, there is no cla-assistant check in the Github PR:

Thanks @dguido for reporting this.
Looks like a bug...

to be honest, I can not find any trail neither in logs nor in our code 😕
You can trigger the check via "Recheck PRs" this should create status for all open PRs

Now the question is, whether the issue persists or not. It'd be great if you'd give me a quick message if the next PR won't get CLA status.

I clicked "Recheck PRs" for the 3 organizations that I have linked to cla-assistant: crytic osql and trailofbits. Then, I opened a recent PR where this is a missing CLA check, trailofbits/algo#1345, and noted that the check from cla-assistant is still missing. Upon manual inspection, Github user 0xmilkmix, has not signed a CLA for our organization so I would expect cla-assistant to flag on his PR.

ok, I believe to have found the root of all evil...
Could you remove the trailing comma in the field "Exclude the following repos from the org" and click "Recheck PRs" again, please?

Good catch! I removed the trailing comma in the listed of repositories excluded from trailofbits, then pressed "Recheck PRs" on trailofbits crytic and osql. I waited a few minutes and then opened the same trailofbits/algo issue as above. It is still missing the cla-assistant check.

I waited a few minutes and then opened the same trailofbits/algo issue as above. It is still missing the cla-assistant check.

Do you mean trailofbits/algo#1345 ? I can see CLA status there. CLA assistant doesn't comment on the existing PRs but it creates a status.
Btw. GitHub has not recognized @0xmilkmix as a committer there (see gray octocat symbols near commit messages). This means that he used a different email address for the commits than he stored in his GitHub account. CLA assistant checks only committers and not an author of a PR. @0xmilkmix can add the commit email to his account then GitHub will assign all commits to his account.

Hooray! The status was not there when I checked. It must have taken a bit longer than I expected to show up. Thank you so much! I will check that the other PRs in my orgs have a status check from cla-assistant.

Hello!
We're trying to setup cla assistant for our organization. The org-wide setup seems to be up:

However, pull requests to a private repo do not show any status check from cla-assistant. We verified that the webhook are being delivered successfully.

Is there anything else we need to do?
Thanks.

Hi @sdht0 :) ,
The CLA Assistant check will only work for the public repos but not for the private repos. This is because for private repos, we need extended scopes to access the Private repos which the CLA Assistant don't request for.
Thank you for using CLA Assistant 😄

Okay, thank you.

update_changes_cuggestion_commits

[ ] test all changes=success

[ ] Get Put updates

[ ] merge_master_file_branche

[ ] GeT Build portfolio - true

[ ] Get BuildConfig - all cpu

[ ] echo booleon -true

[ ] Push Upstream for enrichment

[ ] OnSuccess 200ok

[ ] GetDebug_account details

[ ] update account

Push_upstream

authors: BIAgents KharitonOff dguido ibakshay sdht0

repo: cla-assistant/cla-assistant


text:
making AnnotationProperties class to inherit Mapping ABC

This PR patches the AnnotationProperties class, so that it inherits MutableMapping ABC and behaves like a dict.

Failed tests are coming from typing errors fixed in #193. Ignoring for now.

Fixes #186.

repo: clamsproject/mmif-python


text:
HELP clanfd's auto format contradict with my vscode indent space settings(4 spaces)

Please describe the problem.
For hints on what information is helpful, see: https://clangd.llvm.org/troubleshooting.html
If you can, provide a minimal chunk of code that shows the problem (either inline, or attach it if larger).
Logs
Please attach the clangd stderr log if you can. (Usually available from the editor)
If possible, run with --log=verbose - note that the logs will include the contents of open files!
If this is a crash, try to put llvm-symbolizer on your PATH per the troubleshooting instructions.
System information
Output of clangd --version:
Editor/LSP plugin:
Operating system:

Clangd uses clang-format for formatting, it in configured with a .clang-format file.
https://clang.llvm.org/docs/ClangFormat.html
(LSP does let the editor communicate a few formatting settings to the server, but unfortunately it made them mandatory, so editors send them even if they're incorrect, so we have to ignore them)

authors: Ramblestsad sam-mccall

repo: clangd/clangd


text:
Search function

Needs to be smarter - keep the whole cluster when we search

Closed with 9887207

repo: clarewest/targetage-pipeline


text:
🛑 Main is down

In f075f09, Main (https://www.nsercresnet.ca) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Main is back up in 5dd0e67 after 28 minutes.

repo: clarkwrks/resnet-status


text:
Sort Helper not being displayed

Hey,
When I drag an element the element shows the Sort Helper without any of the CSS that should be applied to the Element because the nested css is very specific to the parent(s) of the Sort Helper. Currently you are appending it to the body element and this is not even the root of the application. Would it be possible to allow me to choose which element the Sort Helper should be appended to.
Thanks

This isn't really an issue per-se, going to close and we can discuss in the PR instead.

I created a pull request for this, #194
On Wed, Apr 26, 2017, 9:47 PM Claudéric Demers notifications@github.com
wrote:

This isn't really an issue per-se, going to close and we can discuss in
the PR instead.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/clauderic/react-sortable-hoc/issues/192#issuecomment-297588522,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGEzSnYQjfdpSXrlGQiff4JP9vbVXewKks5rz_PAgaJpZM4NCJRm
.

--
Faried Amani

repo: clauderic/react-sortable-hoc


text:
Add support for 3D Volumetric Cloud

Hi. Could you add support for 3D Volumetric Cloud like in Microsoft Flight Simulator, but with the option to reduce the quality?
Let me know if you could.
Thanks in advance!

Hi, Thank you for your interest in this demo.
I have no plans to add new features to this demo. I have purposefully kept the code as simple as possible so that it can be used as an educational tool rather than optimize it to be used as a feature in real games.

Alright then, thanks for your response!

repo: clayjohn/godot-volumetric-cloud-demo


text:
🛑 livevault is down

In 42deb92, livevault (https://livevault.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: livevault is back up in 0ce6499.

repo: claytonplong/backup-uptime


text:
🛑 livevault is down

In 01258b5, livevault (https://livevault.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: livevault is back up in cd11d74.


text:
🛑 livevault is down

In 4dd3965, livevault (https://livevault.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: livevault is back up in 168f062.


text:
Data access logs create a feedback loop of messages

Data access logs for get-ing a bucket is processed as a change, which triggers policy evaluation, which gets the bucket...which generates a data access log for get-ing a bucket [...]

Added more parsing to stackdriver log parser: 9cae40677f162af71ed2efeeacb6d35d82d2965e

repo: cleardataeng/forseti-policy-enforcer


text:
Python 3 Release

Looks like you're working on a python 3 compatible version.  Any chance we could get a release to try?

I was able to manually copy in the src folder and get it to run.  Thanks for your hard work!  I'd still love to see an official tagged release with the python 3 code.

Released version is now available.

authors: CyborgMaster cleobis

repo: cleobis/alfred-cal


text:
Latest @clerk/nextjs package uses deprecated dependency.

Preliminary Checks

[X] I have reviewed the documentation: https://clerk.com/docs

[X] I have searched for existing issues: https://github.com/clerk/javascript/issues

[X] I have not already reached out to Clerk support via email or Discord (if you have, no need to open an issue here)

[X] This issue is not a question, general help request, or anything other than a bug report directly related to Clerk. Please ask questions in our Discord community: https://clerk.com/discord.

Reproduction
https://codesandbox.io/p/devbox/github/codesandbox/sandbox-templates/tree/main/nextjs-app-router?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clukp9xtb00073j6gc2wwoyoh%2522%252C%2522sizes%2522%253A%255B70%252C30%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clukp9xtb00023j6grpgdiq8l%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clukp9xtb00043j6graq4yi8m%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clukp9xtb00063j6gtdcrstwc%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clukp9xtb00023j6grpgdiq8l%2522%253A%257B%2522id%2522%253A%2522clukp9xtb00023j6grpgdiq8l%2522%252C%2522tabs%2522%253A%255B%255D%257D%252C%2522clukp9xtb00063j6gtdcrstwc%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clukp9xtb00053j6gkpisaxqx%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522TASK_PORT%2522%252C%2522taskId%2522%253A%2522dev%2522%252C%2522port%2522%253A3000%252C%2522path%2522%253A%2522%252F%2522%257D%255D%252C%2522id%2522%253A%2522clukp9xtb00063j6gtdcrstwc%2522%252C%2522activeTabId%2522%253A%2522clukp9xtb00053j6gkpisaxqx%2522%257D%252C%2522clukp9xtb00043j6graq4yi8m%2522%253A%257B%2522id%2522%253A%2522clukp9xtb00043j6graq4yi8m%2522%252C%2522activeTabId%2522%253A%2522clukplmig00c23j6furasf1ur%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clukp9xtb00033j6gp2316zaa%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522dev%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522pnpm%2520add%2520%2540clerk%252Fnextjs%2522%252C%2522id%2522%253A%2522clukpj1i0002n3j6figfp5jpj%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522pnpm%2520why%2520%2540types%252Fmime%2522%252C%2522id%2522%253A%2522clukplmig00c23j6furasf1ur%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Atrue%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A36.75824175824176%257D
Publishable key
.
Description
Latest @clerk/nextjs package introduced a deprecated dependency, you are using @types/mime@4.0.0.
That dependency is deprecated and can create some unwanted vulnerabilities!
WARN  1 deprecated subdependencies found: @types/mime@4.0.0
dependencies:
@clerk/nextjs 4.29.10
└─┬ @clerk/clerk-sdk-node 4.13.12
├─┬ @types/cookies 0.7.7
│ └─┬ @types/express 4.17.14
│   ├─┬ @types/express-serve-static-core 4.17.43
│   │ └─┬ @types/send 0.17.4
│   │   └── @types/mime 1.3.5
│   └─┬ @types/serve-static 1.15.7
│     └─┬ @types/send 0.17.4
│       └── @types/mime 1.3.5
└─┬ @types/express 4.17.14
├─┬ @types/express-serve-static-core 4.17.43
│ └─┬ @types/send 0.17.4
│   └── @types/mime 1.3.5
└─┬ @types/serve-static 1.15.7
└─┬ @types/send 0.17.4
└── @types/mime 1.3.5
Environment
System:
    OS: Linux 6.1 Debian GNU/Linux 12 (bookworm) 12 (bookworm)
    CPU: (2) x64 AMD EPYC
    Memory: 1.85 GB / 4.01 GB
    Container: Yes
    Shell: Unknown
  Binaries:
    Node: 20.9.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 9.8.1 - /usr/local/bin/npm
    pnpm: 8.10.2 - /usr/local/share/npm-global/bin/pnpm
  npmPackages:
    @clerk/nextjs: ^4.29.10 => 4.29.10
    @types/node: ^20 => 20.11.5
    @types/react: ^18 => 18.2.48
    @types/react-dom: ^18 => 18.2.18
    eslint: ^8 => 8.56.0
    eslint-config-next: 14.1.0 => 14.1.0
    next: 14.1.0 => 14.1.0
    react: ^18 => 18.2.0
    react-dom: ^18 => 18.2.0
    typescript: ^5 => 5.3.3

You can check the mimo repo for more context:  https://github.com/broofa/mime#readme, but migrating to v4 that package for types its not needed:

Hi, thanks for the issue. Your issue is a duplicate of https://github.com/clerk/javascript/issues/3074 and the underlying issue was already fixed here: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/69231
When I do a fresh install of @clerk/nextjs it shows that it's working as intended:
playground/nextjs-mime-test is 📦 1.0.0 via ⬢ v20.11.1
➜ yarn add @clerk/nextjs
yarn add v1.22.19
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning "@clerk/nextjs > @clerk/clerk-react@4.30.8" has unmet peer dependency "react@>=16".
warning "@clerk/nextjs > @clerk/shared > swr@2.2.0" has unmet peer dependency "react@^16.11.0 || ^17.0.0 || ^18.0.0".
warning "@clerk/nextjs > @clerk/shared > swr > use-sync-external-store@1.2.0" has unmet peer dependency "react@^16.8.0 || ^17.0.0 || ^18.0.0".
warning " > @clerk/nextjs@4.29.10" has unmet peer dependency "next@>=10".
warning " > @clerk/nextjs@4.29.10" has unmet peer dependency "react@^17.0.2 || ^18.0.0-0".
warning " > @clerk/nextjs@4.29.10" has unmet peer dependency "react-dom@^17.0.2 || ^18.0.0-0".
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
success Saved 45 new dependencies.
info Direct dependencies
└─ @clerk/nextjs@4.29.10
info All dependencies
├─ @clerk/clerk-react@4.30.8
├─ @clerk/clerk-sdk-node@4.13.12
├─ @clerk/nextjs@4.29.10
├─ @peculiar/asn1-schema@2.3.8
├─ @peculiar/webcrypto@1.4.1
├─ @types/cookies@0.7.7
├─ @types/express-serve-static-core@4.17.43
├─ @types/express@4.17.14
├─ @types/http-errors@2.0.4
├─ @types/keygrip@1.0.6
├─ @types/mime@1.3.5
├─ @types/node-fetch@2.6.2
├─ @types/range-parser@1.2.7
├─ asn1js@3.0.5
├─ asynckit@0.4.0
├─ camelcase-keys@6.2.2
├─ camelcase@5.3.1
├─ combined-stream@1.0.8
├─ cookie@0.5.0
├─ csstype@3.1.1
├─ deepmerge@4.2.2
├─ delayed-stream@1.0.0
├─ dot-case@3.0.4
├─ form-data@3.0.1
├─ glob-to-regexp@0.4.1
├─ js-cookie@3.0.1
├─ lower-case@2.0.2
├─ map-obj@4.3.0
├─ mime-db@1.52.0
├─ mime-types@2.1.35
├─ no-case@3.0.4
├─ node-fetch-native@1.0.1
├─ path-to-regexp@6.2.1
├─ pvutils@1.1.3
├─ quick-lru@4.0.1
├─ snake-case@3.0.4
├─ snakecase-keys@3.2.1
├─ swr@2.2.0
├─ to-no-case@1.0.2
├─ to-snake-case@1.0.0
├─ to-space-case@1.0.0
├─ type-fest@2.19.0
├─ undici-types@5.26.5
├─ use-sync-external-store@1.2.0
└─ webcrypto-core@1.7.9
✨  Done in 6.21s.

playground/nextjs-mime-test is 📦 1.0.0 via ⬢ v20.11.1 took 6.4s
➜ yarn why @types/mime
yarn why v1.22.19
[1/4] 🤔  Why do we have the module "@types/mime"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] 🔍  Finding dependency...
[4/4] 🚡  Calculating file sizes...
=> Found "@types/mime@1.3.5"
info Reasons this module exists
   - "@clerk#nextjs#@clerk#clerk-sdk-node#@types#express#@types#express-serve-static-core#@types#send" depends on it
   - Hoisted from "@clerk#nextjs#@clerk#clerk-sdk-node#@types#express#@types#express-serve-static-core#@types#send#@types#mime"
info Disk size without dependencies: "24KB"
info Disk size with unique dependencies: "24KB"
info Disk size with transitive dependencies: "24KB"
info Number of shared dependencies: 0
✨  Done in 0.04s.

authors: LekoArts RicardoGEsteves

repo: clerk/javascript