Implement Host SDK for Elixir

This implements the a basic Elixir / Erlang host SDK. I still have some work to do on it this weekend.
Testing

Pull down this branch
In a different folder create a new elixir project:
mix new extism_elixir_host && cd extism_elixir_host
Link to the local dependency by updating the deps in mix.exs:

  defp deps do
    [
      {:extism, path: "/Users/ben/Code/extism/elixir"}
    ]
  end

Run mix deps.get
Run mix deps.compile, this should trigger the rust compilation in the elixir lib depdency
Run iex -S mix to start a REPL.
Test happy path:

iex(1)> manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]}
%{wasm: [%{path: "/Users/ben/code/extism/wasm/code.wasm"}]}
iex(2)> {:ok, plugin} = Extism.Plugin.new(manifest)
{:ok,
 %Extism.Plugin{
   resource: 0,
   reference: #Reference<0.1101693245.999030787.163527>
 }}
iex(3)> {:ok, result} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
{:ok, "{\"count\": 4}"}

Test the sad path:

iex(1)> manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasmz" } ]}
%{wasm: [%{path: "/Users/ben/code/extism/wasm/code.wasmz"}]}
iex(2)> Extism.Plugin.new(manifest)
{:error, "Could not load plugin"}
iex(3)> manifest = %{ wasm: [ %{ pathe: "/Users/ben/code/extism/wasm/code.wasm" } ]}
%{wasm: [%{pathe: "/Users/ben/code/extism/wasm/code.wasm"}]}
iex(4)> Extism.Plugin.new(manifest)
{:error, "Could not parse manifest"}

Some other functions you can use:

iex(8)> Extism.Plugin.set_log_file(plugin, "/tmp/mylog.log", "debug")
:ok
iex(9)> Extism.Plugin.update(plugin, %{wasm: [%{path: "/Users/ben/Code/extism/wasm/code.wasm"}]}, true)
{:ok, true}
iex(10)> Extism.Plugin.has_function(plugin, "unknown")
false
iex(11)> Extism.Plugin.has_function(plugin, "count_vowels")
true

Test the sad path:
iex(1)> manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasmz" } ]}
%{wasm: [%{path: "/Users/ben/code/extism/wasm/code.wasmz"}]}
iex(2)> Extism.Plugin.new(manifest)
{:error, "Could not load plugin"}

To clarify,
In this test, is /Users/ben/code/extism/wasm/code.wasmz a valid path with a wasm binary at its location? or is this a non-existent file intentionally used here to fail?
In either case, we could probably be more specific in the error message, e.g. {:error, "Could not load plugin: no such file or directory" } or {:error, "Could not load plugin: failed to parse manifest" } etc.

This is looking great, @bhelx. Thanks a ton!
I can help with CI, and just to remind you, I've made a PR against your forked branch to add the From impl so the Plugin(isize)'s wrapped isize can stay private. Would you take a look at that & merge if you agree with the approach? https://github.com/bhelx/extism/pull/1


Could not resolve dependencies for project

Facing below error(Image also attached) when trying to install via mvn install in https://github.com/slackapi/java-slack-sdk/tree/main/bolt-spring-boot-examples
[ERROR] Failed to execute goal on project bolt-spring-boot-examples: Could not resolve dependencies for project com.slack.api:bolt-spring-boot-examples:jar:1.25.2-SNAPSHOT: The following artifacts could not be resolved: com.slack.api:bolt:jar:1.25.2-SNAPSHOT, com.slack.api:bolt-servlet:jar:1.25.2-SNAPSHOT: com.slack.api:bolt:jar:1.25.2-SNAPSHOT was not found in https://oss.sonatype.org/content/repositories/snapshots during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of sonatype-nexus-snapshots has elapsed or updates are forced -> [Help 1]
Reproducible in:
mvn dependency:tree | grep com.slack.api
gradle dependencies | grep com.slack.api
java -version
sw_vers && uname -v # or `ver`

The Slack SDK version
[INFO] --------------< com.slack.api:bolt-spring-boot-examples >---------------
[WARNING] The POM for com.slack.api:bolt:jar:1.25.2-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for com.slack.api:bolt-servlet:jar:1.25.2-SNAPSHOT is missing, no dependency information available
[ERROR] Failed to execute goal on project bolt-spring-boot-examples: Could not resolve dependencies for project com.slack.api:bolt-spring-boot-examples:jar:1.25.2-SNAPSHOT: The following artifacts could not be resolved: com.slack.api:bolt:jar:1.25.2-SNAPSHOT, com.slack.api:bolt-servlet:jar:1.25.2-SNAPSHOT: com.slack.api:bolt:jar:1.25.2-SNAPSHOT was not found in https://oss.sonatype.org/content/repositories/snapshots during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of sonatype-nexus-snapshots has elapsed or updates are forced -> [Help 1]
(Paste the output of mvn dependency:tree | grep com.slack.api or gradle dependencies | grep com.slack.api)
Java Runtime version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)
(Paste the output of java -version)
OS info
ProductName:	macOS
ProductVersion:	12.4
BuildVersion:	21F79
Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:22 PDT 2022; root:xnu-8020.121.3~4/RELEASE_X86_64
Steps to reproduce:
(Share the commands to run, source code, and project settings (e.g., pom.xml/build.gradle))
1.cd java-slack-sdk/bolt-spring-boot-examples
2.mvn install
Expected result:
Libraries needs to be installed
(Tell what you expected to happen)
Actual result:
Dependency libraries are missing
(Tell what actually happened with logs, screenshots)
Requirements
Please make sure if this topic is specific to this SDK. For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. :bow:
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you agree to those rules.

Hi, @praveen-raghav-ns! Thanks for reaching out with your question!
I followed the described steps and was able to replicate the error you are running into. I'll raise this issue internally; in the meantime, you can use version 1.25.1 to build the example and that should work fine. I had a successful build by doing the following:

Run mvn clean to clear out files from the previous build
Update this line to <version>1.25.1</version>
Run mvn install in the bolt-spring-boot-examples directory - should get a "Build Success" and no errors

Let me know if that works! We'll drop an update on anything that might come up to be able to use the current 1.25.2-SNAPSHOT version successfully.

@praveen-raghav-ns I have also received this update internally that when you run this command in the root of the java-slack-sdk repo, the 1.25.2-SNAPSHOT version will be available in your local machine’s maven cache.
To get this working, I:

Ran mvn clear in both the bolt-spring-boot-examples and root directory of the java-slack-sdk.
Then, I changed back the contents of the pom.xml in the bolt-spring-boot-examples directory so that it reflected the most current 1.25.2-SNAPSHOT version.
Then, I ran mvn install -Dmaven.test.skip=true in the root java-slack-sdk directory. This takes a while since it goes through all modules in the SDK.
Finally, I ran mvn install inside the bolt-spring-boot-examples, I did not receive any errors and it built successfully!

Feel free to give that a try as well, let me know if it works!


Stream with subtitles not working in Firefox

What version of Shaka Player are you using? 2.0.5
Can you reproduce the issue with our latest release version? Yes
Are you using the demo app or your own custom app? Reproducible on both
What browser and OS are you using? Firefox only
What did you do? Attempted to play the following stream

Expected: Play with captions
Actual: No captions

After further investigation, looks like this is an issue in our player.


feat: release notes

Also adding hooks for scripts to run when reconciliation has succeeded
This makes sense when jenkins-x/jx#8466 is fixed

/retest

/retest

/retest

/retest

/retest

/cc ankitm123 tomhobson babadofar

This again:  GraphQL: Could not clone: Name already exists on this account (cloneTemplateRepository)
/retest

/retest

/retest

/retest

Annoying. It doesn't seem like the bdd test actually failed
 ☸ gke_jenkins-x-bdd-326715_us-central1-a_pr-3463-5-gke-gsm
$ kubectl get job jx-bdd
NAME     COMPLETIONS   DURATION   AGE
jx-bdd   1/1           22m        41m

But somehow it was still reported back as failed
 ☸ gke_jenkinsxio-324711_us-central1-a_jenkins-x-oss
$ kubectl -n jx logs nkins-x-jx3-versions-pr-3463-gsm-jjjzr-test-pod -c step-runci --tail 5
--- PASS: TestSuite (1044.76s)
PASS
ok  	github.com/jenkins-x/bdd-jx/test/suite/spring	1044.819s
job jx-bdd has Failed
POD RESULT: FAILED: job jx-bdd failed

Since we don't test with kpt live apply the changes can't affect the tests, so I'll merge anyway.

/override gsm


Python 3.9.7 interpreter is not found on Windows

Environment Data
VS Code version: 1.60.0 (user setup) (Commit: e7d7e9a9348e6a8cc8c03f877d39cb72e5dfb1ff)
Extension version : v2021.9.1230869389
OS and version: Windows_NT x64 10.0.22000
Python version : 3.9.7
Type of virtual environment used N/A
Expected Behavior
Python interpreter is found and I can write code.
Result of executing py -3 -c "import sys;print(sys.executable) is
C:\Program Files\Python39\python.exe
Actual Behavior

Python extension loading progress bar is stuck rotating infinitely.
Python: Select interpreter shows nothing.

Logs
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
> pyenv root
> python3.7 -c "import sys;print(sys.executable)"
> python3.6 -c "import sys;print(sys.executable)"
> python3 -c "import sys;print(sys.executable)"
> python2 -c "import sys;print(sys.executable)"
> python -c "import sys;print(sys.executable)"
> py -3.7 -c "import sys;print(sys.executable)"
> py -3.6 -c "import sys;print(sys.executable)"
> py -3 -c "import sys;print(sys.executable)"
> py -2 -c "import sys;print(sys.executable)"
> python -c "import sys;print(sys.executable)"
> conda info --json
Error 2021-09-14 09:57:17: Detection of Python Interpreter for Command py and args -3.7 failed as file Python 3.7 not found!

 -3.9-64 does not exist
Error 2021-09-14 09:57:17: Detection of Python Interpreter for Command py and args -2 failed as file Python 2 not found!

 -3.9-64 does not exist
Error 2021-09-14 09:57:17: Detection of Python Interpreter for Command py and args -3.6 failed as file Python 3.6 not found!

 -3.9-64 does not exist

It seems you've opted out of the discovery experiment, can you open your User settings and check the value of python.experiments.* settings? Ensure python.experiments.optOutFrom does not contain All or python discovery experiment, and python.experiments.enabled is set to true.
If removing doesn't work, please send the user settings.

Having the same issue, python.experiments.enabled setting not affecting it.
There are many people reporting similar symptoms here in the last day https://github.com/microsoft/vscode-python/issues/14977 so I posted full debug output there.
This is probably regression bug in the latest release.

@Timsonrobl Can you add the following User setting and see if it helps:
"python.experiments.optInto": ["pythonDiscoveryModule"]

Also, please send the user settings I asked earlier https://github.com/microsoft/vscode-python/issues/17413#issuecomment-919428242.

@Timsonrobl Can you add the following User setting and see if it helps:
"python.experiments.optInto": ["pythonDiscoveryModule"]

Yes, adding this line actually seems to fix this issue and at least lets me select interpreter.

I would again ask that you also send the user settings, thanks.

@karrtikr here they are
settings.txt

Closing in favor of https://github.com/microsoft/vscode-python/issues/14977#issuecomment-919588921

Thanks, @karrtikr . That solved issue for me as well.


Add partial support for IPv6 only mode

Proposed Changes
Upstream IPv6 support related work is going on two different tracks.
Dual-stack was recently moved to stable https://github.com/kubernetes/enhancements/pull/2962 which was handled here by https://github.com/k3s-io/k3s/pull/3212
in addition IPv6 only have been on beta couple of years already https://github.com/kubernetes/enhancements/issues/1138 and https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/506-ipv6
~This PR add experimental flag --ipv6-only which let user to bypass IPv4 cluster-cidr and service-cidr requirement added by #3212~
This PR add new logic which switch to IPv6 only mode automatically when:
a) host does not have IPv4 address
b) only IPv6 service CIDR is given
c) only IPv6 host-ip is given
Types of Changes
Verification
$k3s server --node-ip=fd:1000::1 --disable-network-policy --flannel-backend=none

Linked Issues
#284 #2123 #4389
User-Facing Change

Further Comments
Currently Flannel or network policy does not support IPv6 so those are forced to be disabled.
Focus on this PR is add enough logic to allow IPv6 only to be used with vcluster after support is added to that side on https://github.com/loft-sh/vcluster/pull/209

Hmm. I'm not sure why CI failed but it does not look related.

Does this work? Last I heard the in-cluster apiserver endpoint was ipv4 only so you can't actually run a cluster with only ipv6 service cidrs.

Works on which level you mean? When started without Flannel error message like:
E1110 22:36:50.565086   66116 kubelet.go:2337] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized"

of course constantly gets printed to console and kubectl says that node is on "NotReady" state but sure apiserver server is up on level that it responses to commands like kubeclt get nodes and kubectl get namespaces just fine.

Hmm. I guess that issue which you are referencing to is that on IPv6 cluster there is no port NAT at all so services like Calico, CoreDNS, etc need to be configured to use port 6443 instead of 443. Other why they cannot connect to apiserver.
With Calico solution is set environment variable KUBERNETES_SERVICE_PORT=6443 for all its containers. For CoreDNS I didn't (yet) found solution.
However from those purposes this flag is proposed as experimental now.

Yes, the apiserver certainly binds to ipv6 just fine, but the in-cluster Endpoint list for kubernetes.default.svc will not currently ever show an ipv6 address as far as I know, which means that pods would require an ipv4 address to reach it.

I don't think flannel support ipv6 only. Another CNI plugin would need to be used too or we should contribute that to upstream flannel

Yes, the apiserver certainly binds to ipv6 just fine, but the in-cluster Endpoint list for kubernetes.default.svc will not currently ever show an ipv6 address as far as I know, which means that pods would require an ipv4 address to reach it.

It looks to be that on IPv4 world it is kube-proxy which does listen kubernetes.default.svc on port 443 and do proxying to apiserver on port 6443 and it does not do it for IPv6.
Example of to make it working
Here is example how to make apiserver listening port 443 on way that it works both inside and outside of containers without need kube-proxy to be middle of it.
Basic setup
# Start K3s with needed parameters:
k3s server --service-cidr=fd:1::/108 --cluster-cidr=fd:2::/64 --ipv6-only --flannel-backend=none --https-listen-port=443 --disable=metrics-server --disable-network-policy --disable traefik

# Remove ip6table line added by kube-proxy
# NOTE! kube-proxy will add this back when you start pods so you need remove it again then
ip6tables -D KUBE-SERVICES -d fd:1::1/128 -p tcp -m comment --comment "default/kubernetes:https has no endpoints" -m tcp --dport 443 -j REJECT --reject-with icmp6-port-unreachable

# Add IPv6 node address to loopback adapter
ip addr add fd:1::1/64 dev lo

# Test that api server respond with IPv6:
curl -k https://[fd:1::1]:443/api/v1/nodes/foo

CNI installation
Deploy Calico like it is on their guide on https://docs.projectcalico.org/networking/ipv6#enable-ipv6-only
Ready made deployment YAML with needed parameters can be found from https://pastebin.com/raw/0sRxugmk
Test deployment
Deploy something, here is example with one ASP.NET Core hello world application.
See that both pod and service have IPv6 addresses
$ kubectl -n foo get all -o wide
NAME                           READY   STATUS    RESTARTS   AGE   IP                                        NODE                               NOMINATED NODE   READINESS GATES
pod/example-69fc586f6d-qh5sp   1/1     Running   0          78m   fd12:a9f4:7ee5:7d08:75f2:ae9a:a7e3:4043   k3s   <none>           <none>

NAME              TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE   SELECTOR
service/example   ClusterIP   fd:1::561e   <none>        8080/TCP   78m   service=example

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                       SELECTOR
deployment.apps/example   1/1     1            1           78m   example      sample-app:dev   service=example

NAME                                 DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES                       SELECTOR
replicaset.apps/example-69fc586f6d   1         1         1       78m   example      sample-app:dev   pod-template-hash=69fc586f6d,service=example

Test inside of pod
Start shell inside of pod and see how thins looks lie on there:
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fd12:a9f4:7ee5:7d08:75f2:ae9a:a7e3:4043  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::c9e:61ff:fe6b:f903  prefixlen 64  scopeid 0x20<link>
        ether 0e:9e:61:6b:f9:03  txqueuelen 0  (Ethernet)
        RX packets 9  bytes 906 (906.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 770 (770.0 B)
        TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet <IP_ADDRESS>  netmask <IP_ADDRESS>
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ ping kubernetes.default.svc
PING kubernetes.default.svc(kubernetes.default.svc.cluster.local (fd:1::1)) 56 data bytes
64 bytes from kubernetes.default.svc.cluster.local (fd:1::1): icmp_seq=1 ttl=64 time=0.041 ms

$ curl -k https://kubernetes.default.svc:443/api/v1/
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "Unauthorized",
  "reason": "Unauthorized",
  "code": 401
}

Yes, the apiserver certainly binds to ipv6 just fine, but the in-cluster Endpoint list for kubernetes.default.svc will not currently ever show an ipv6 address as far as I know, which means that pods would require an ipv4 address to reach it.

Yes and as described above also kube-proxy is problematic which why example Cilium with kube-proxy free setup would be good option https://docs.cilium.io/en/v1.9/gettingstarted/kubeproxy-free/
However those are out side of scope of this PR. This just targets to allow users to play with IPv6 only config and find out where those limits are without need to build custom version of K3s.
Also my target is get to working with RKE2 on long run which why it need to be solved on here first.

FYI. Marked this as draft as I figured out intermediate solution on way that I can use MutatingAdmissionWebhook to force services on non-default/non-system namespaces to use IPv6 only like it is described on https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
For record. The problematic places on kube-proxy looks to be:

https://github.com/kubernetes/kubernetes/blob/1d8966f4f92429fc1c1073d121dca1cc3f53974a/cmd/kube-apiserver/app/server.go#L563
https://github.com/kubernetes/kubernetes/blob/9fba771fe9ea8fc4e68cada314c464d90abe4ae3/pkg/proxy/iptables/proxier.go#L1133

Also at least on theory it should be possible to use https://github.com/kubernetes-sigs/ip-masq-agent here to solve problem at least partly.

FYI. Marked this as draft as I figured out intermediate solution on way that I can use MutatingAdmissionWebhook to force services on non-default/non-system namespaces to use IPv6 only like it is described on https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
For record. The problematic places on kube-proxy looks to be:
* https://github.com/kubernetes/kubernetes/blob/1d8966f4f92429fc1c1073d121dca1cc3f53974a/cmd/kube-apiserver/app/server.go#L563

* https://github.com/kubernetes/kubernetes/blob/9fba771fe9ea8fc4e68cada314c464d90abe4ae3/pkg/proxy/iptables/proxier.go#L1133

Also at least on theory it should be possible to use https://github.com/kubernetes-sigs/ip-masq-agent here to solve problem at least partly.
EDIT: I just noticed that Calico documentation contains info how to make Kubernetes control plane operate on IPv6 only: https://docs.projectcalico.org/networking/ipv6-control-plane

Are you perhaps aware if upstream kubernetes (e.g. kube-proxy folks) are trying to add ipv6 only support?

Are you perhaps aware if upstream kubernetes (e.g. kube-proxy folks) are trying to add ipv6 only support?

I expected that would be case based on https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/506-ipv6 but not sure actually as I'm still new on Kubernetes world.

Are you perhaps aware if upstream kubernetes (e.g. kube-proxy folks) are trying to add ipv6 only support?

I expected that would be case based on https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/506-ipv6 but not sure actually as I'm still new on Kubernetes world.

Thanks

FYI. It looks to be that on K8s v1.21 and v1.22 dual-stack code is broken on way that its feature gate need to be disabled on IPv6 only nodes.
However it looks to be that v1.23 will promote it to stable which why logic is changed on way that as long --cluster-cidr , --service-cidr and --node-ip all points to IPv6 only then dual stack gets disabled automatically.

@brandond @manuelbuil I managed to get this working at least on that level that I can use vcluster with this https://github.com/loft-sh/vcluster/pull/209 to spin either IPv4 only or IPv6 only K3s clusters to top of dual-stack host cluster (I use RKE2 as host cluster).
Kube-proxy also now create correct ip6tables rules for Kubernetes API. However I don't currently have pure IPv6 lab so that scenario might still need some work (at least it need to be tested) but I would prefer to leave those for next PR as that vcluster scenario is very useful.

@brandond @manuelbuil I managed to get this working at least on that level that I can use vcluster with this loft-sh/vcluster#209 to spin either IPv4 only or IPv6 only K3s clusters to top of dual-stack host cluster (I use RKE2 as host cluster).
Kube-proxy also now create correct ip6tables rules for Kubernetes API. However I don't currently have pure IPv6 lab so that scenario might still need some work (at least it need to be tested) but I would prefer to leave those for next PR as that vcluster scenario is very useful.

How did you fix the kube-proxy issue?

How did you fix the kube-proxy issue?

Key thing with that one is that default node-ip is IPv6 so this rule apply: https://github.com/kubernetes/kubernetes/blob/c1153d3353bd4f4b68d85245d53d2745586be474/cmd/kube-proxy/app/server_others.go#L178-L180
However all those other bindings need to also use IPv6 instead of IPv4 other why other issues appears.

I have just realized that github.com still does not support ipv6, so I guess you did not download the binary using curl -sfL https://get.k3s.io | sh -, right?

I used these DNS servers on my IPv6 only lab to avoid that issue https://www.nat64.net/

BTW, why the title says: Add partial support ?

BTW, why the title says: Add partial support ? Why partial?

Because Flannel and network policy need to be disabled and separate CNI plugin to be used. Also I did most of the testing with vcluster which does disable a lot of other features too so it might be that there is still some missing changes to those features https://github.com/loft-sh/vcluster/blob/49258d6242885262fb8b6ee67f7c215f9a3ff67d/charts/k3s/values.yaml#L40-L49

BTW, why the title says: Add partial support ? Why partial?

Because Flannel and network policy need to be disabled and separate CNI plugin to be used. Also I did most of the testing with vcluster which does disable a lot of other features too so it might be that there is still some missing changes to those features https://github.com/loft-sh/vcluster/blob/49258d6242885262fb8b6ee67f7c215f9a3ff67d/charts/k3s/values.yaml#L40-L49

I'll test it next week on AWS and see if it works.
Hopefully, in the next weeks/months, we can provide ipv6 support to flannel and kube-router network policy controller, let's see!

Codecov Report

Merging #4450 (9307a80) into master (0c1f816) will decrease coverage by 0.53%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #4450      +/-   ##
==========================================
- Coverage   12.03%   11.50%   -0.54%
==========================================
  Files         135      135
  Lines        9179     9248      +69
==========================================
- Hits         1105     1064      -41
- Misses       7838     7961     +123
+ Partials      236      223      -13

Flag
Coverage Δ

inttests
?

unittests
11.50% <0.00%> (-0.10%)
:arrow_down:

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

Impacted Files
Coverage Δ

pkg/agent/config/config.go
0.00% <0.00%> (ø)

pkg/agent/run.go
0.00% <0.00%> (ø)

pkg/cli/server/server.go
0.00% <0.00%> (ø)

pkg/daemons/agent/agent_linux.go
0.00% <0.00%> (ø)

pkg/util/net.go
0.00% <0.00%> (ø)

pkg/flock/flock_unix.go
0.00% <0.00%> (-46.67%)
:arrow_down:

tests/util/cmd.go
0.00% <0.00%> (-42.31%)
:arrow_down:

pkg/agent/netpol/utils/iptables.go
18.91% <0.00%> (-2.71%)
:arrow_down:

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 0c1f816...9307a80. Read the comment docs.

I tested today in Ubuntu 20 on AWS using nat64 (server: https://www.nat64.net/) to avoid github and dockerhub not working well with ipv6. I deployed a control-plane node and an agent.
control-plane config:
write-kubeconfig-mode: 644
token: "secret"
node-ip: 2a05:d012:c6f:4657:6feb:ca31:3c6f:9d05
cluster-cidr: 2001:cafe:42:0::/56
service-cidr: 2001:cafe:42:1::/112
disable-network-policy: true
flannel-backend: none

agent config:
server: "https://[2a05:d012:c6f:4657:6feb:ca31:3c6f:9d05]:6443"
token: "secret"
node-ip: 2a05:d012:c6f:4657:d8ea:bc19:4495:9b80

Deployed calico via the tigera operator using the config:
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  # Configures Calico networking.
  calicoNetwork:
    # Note: The ipPools section cannot be modified post-install.
    bgp: Enabled
    ipPools:
    - cidr: 2001:cafe:42:0::/56
      encapsulation: None
      natOutgoing: Enabled
      nodeSelector: all()

I enabled ports in the security groups of AWS for ipv6 (e.g. 5473 for typha, 6443 for k3s...) and also disabled source/destination check (required when there is no encapsulation)
TESTS

Ping between pods in the same node
Ping between pods in different nodes
Access to services via the clusterIP from the host
Access to services via the externalIP provided by the svclb (klipper-lb) from the host

The 4 tests work! :partying_face:

Is there any chance, this PR will be soon validated for a next release. I'd like to build a poc on an IPv6 only k3s cluster. It would be geat if https://github.com/k3s-io/k3s/issues/284 could be closed ?
Thanks

@j-landru thanks for reminder. It have been long time waiting on my todo list.
@manuelbuil updated now and hopefully covers all changes which you requested. Note that I don't have IPv6 only lab currently so I was not able to test this anymore but I did my best to make sure that logic should works same as earlier but just moved most of the code to utils.

Code looks good! I'll try to test it again as soon as I find some time (Monday at latest). Note that we are already on code freeze, so this feature will need to be part of the March release

I tested ipv6-only, dual-stack and ipv4-only and things work! Of course using the nat64 as explained above and Cilium as the CNI plugin :). +1 from my side but note that this would need to be merged in the March release of k3s


add :reason why the circuit is open

it could be useful to add a :reason key to the return map when the circuit is :open;
someone showed interest in this feature (even if that person requested a special state which I don't like)
possible values:

:max-retries
:hard-failure
custom ones, returned by the wrapped fn, like :quota-reached, :service-not-available etc

I am also thinking about adding the timestamp of when the circuit transitioned to :open, but I am not 100% sure about this could be useful.

added :reason keyword to the map returned by the circuit breaker fn


Multiple callbacks to the same sequence

I have some use cases, particularly chieffancypants/angular-hotkeys#186 which requires multiple callbacks under the same combo. Apart from key logging for A/B tests and general purpose event cancelling, there are many more possibilities opened up with this design.
An idea to allow this pattern while maintaining backward compatibility would be adding one more parameters in methods bind(keys, callback, action[, append]) and unbind(keys, action[, callback]).
This is more intuitive for those who is familiar with the event listener patterns, which I can remove a particular callback, while keeping backward compatible without the callback argument.
All we need to do is to skip this line mousetrap.js:845 when the append argument is truthy.
If it sounds all good I can make a PR.

All we need to do is to skip this line mousetrap.js:845 when the append argument is truthy.
That did the trick for me. I needed a multipleSelect flag to be toggled true/false on CMD down/up. Would love to see that in the official repo

Hello @vicary, as you can see this repository is not too actively maintained. If you have a ready PR could you please share it? In opposite case I could issue a PR. Could you please elaborate on how did you think to handle callback argument in unbind? It seems to me that having multiple handlers for one shortcut contradicts current implementation of unbind. BTW there is an (hopefully) active fork https://github.com/mousetrap-js/mousetrap.

mousetrap-js/mousetrap is now back under maintenance. Although for the next couple weeks I'm short on time (new job, moving apartment). If you issue PRs against it, they will eventually be merged (or rejected ;) ).

@lextiz In sequence callbacks, it was a single callback inside the object. Make it an array and expose to the context of unbind will do.
Don't quite have the time for PR in the upcoming weeks, it'd be great if you have the time to do it. :smile:

I would love to see this added as either a feature or a plugin!


Generated files should include /// <auto-generated/> preamble

Describe the Bug
When these source generators are used in a project with Stylecop.Analyzers, diagnostics are produced that can block adoption.
Steps to Reproduce
Install StyleCop.Analyzers into a project that uses the ThisAssembly.Resource package.
Build.
Expected Behavior
No warnings
Actual behavior
Warnings such as this:

ThisAssembly.Resource\ThisAssembly.ResourcesGenerator\ThisAssembly.Resources.EmbeddedResource.cs(8,28,8,35): warning SA1400: Element 'baseDir' should declare an access modifier (https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1400.md)

Version Info
1.4.1
Additional Info
By adding /// <auto-generated /> to the top of every emitted file, other analyzers are warned away from reporting frivolous diagnostics.

@AArnott just curious if you figured out a way around this. I have tried every technique I could find to exclude the file with no luck.

No. I don't use this package anyway. I can't remember how I came across it initially. Probably some user asked for my help to solve it and I realized it was a problem that needed to be solved here.

just curious if you figured out a way around this. I have tried every technique I could find to exclude the file with no luck.

@svause-stryker I had to remove this package from my apps and reimplement.
There are analyzers you can turn off, but they have to be done in the csproj instead of the .editorconfig. Besides, the analyzers are correct - string comparison should be done using case sensitive comparer, and I/O should not be done in a source generator.
This won't be easily addressed by consumers until kzu reviews and merges #278 and #280, which I don't expect to happen anytime soon.

Yup I just ripped it out and went a different way. Wasn't ultra important for what I needed it for.

Merged and released! https://github.com/devlooped/ThisAssembly/releases/tag/v1.4.2


[PolicyRecordingBot] - When running locally, call never connects

I'm attempting to debug the Policy Recording Bot by running it locally, but when making a call, it rings a few times then the user sees "Forwarding to Voicemail", and a few seconds later the message "Sorry, we couldn't connect you". The call ends, and it does not go to voicemail.
While the call is establishing, I see multiple requests to OnIncomingRequestAsync and OnNotificationRequestAsync happening successfully, which leads me to believe that the issue is with the media port.
My local media port is 8445, and I'm using ngrok to attempt to tunnel traffic to this port.

To troubleshoot, I've tried connecting to the public and local media ports, and they each seem to be open:

Also, it looks like localhost:8445 is being reached. Each time I make a call, the Connections count for the media tunnel increases (highlighted in screenshot).

I've seen other people asking about similar issues here, but none of the proposed solutions in those threads has worked for me. Any help or troubleshooting guidance will be much appreciated.
Trace messages from while a call is establishing are attached:
PolicyRecordingBot-trace.log

Hi,
I have a few questions to understand your local setup of the PolicyRecordingBot.

Didn't you use SSL cert?
is it wildcard SSL?
is it against ngrok URL or public domain URL(ex: https://testdomain.com)?
Where did you apply SSL cert? local machine?
What was the CNAME value? ngrok URL or ngrok tcp URL(3.tcp.ngrok.io) ?
What is your bot channel calling webhook URL?
What are the values enter in ServiceConfiguration.Local.cscfg, ServiceDnsName and  ServiceCNAME?

Hi, thanks for your questions.
1,2&3 Yes, I'm using a wildcard SSL cert, the cert is for a public domain, like this: "*.testdomain.com"
4. The cert is in the Local Machine store. My feeling is that the cert is ok, because the signalling requests to OnIncomingRequestAsync and OnNotificationRequestAsync are working fine, and the signalling endpoint uses the same cert as the media endpoint.
5. CNAME for the media endpoint is a ngrok TCP URL, it's 3.tcp.ngrok.io
6. Bot channel is using the custom domain, like this: https://recorder.testdomain.com/api/calling
7. ServiceConfiguration.Local.cscfg settings look like this. Note, from the code, it looks like ServiceDnsName is not used when running locally.
<Setting name="ServiceDnsName" value="localhost" />
<Setting name="ServiceCNAME" value="recorder.testdomain.com" />
8. serviceFqdn in AzureConfiguration is "3.recorder.testdomain.com". I have a CNAME pointing that at 3.tcp.ngrok.io

Hi, thanks for your questions.
1,2&3 Yes, I'm using a wildcard SSL cert, the cert is for a public domain, like this: "*.testdomain.com"
4. The cert is in the Local Machine store. My feeling is that the cert is ok, because the signalling requests to OnIncomingRequestAsync and OnNotificationRequestAsync are working fine, and the signalling endpoint uses the same cert as the media endpoint.
5. CNAME for the media endpoint is a ngrok TCP URL, it's 3.tcp.ngrok.io
6. Bot channel is using the custom domain, like this: https://recorder.testdomain.com/api/calling
7. ServiceConfiguration.Local.cscfg settings look like this. Note, from the code, it looks like ServiceDnsName is not used when running locally.
<Setting name="ServiceDnsName" value="localhost" />
<Setting name="ServiceCNAME" value="recorder.testdomain.com" />
8. serviceFqdn in AzureConfiguration is "3.recorder.testdomain.com". I have a CNAME pointing that at 3.tcp.ngrok.io

Thank you for your reply.
The call goes to voicemail because it can't enageged with receiver.
Actually we require SSL cert for media URL to receive media streams. MS skype media platform not send media stream to connection without SSL cert.
Your serviceFqdn should be 3.tcp.ngrok.io not the 3.recorder.testdomain.com. Because you don't have subdomain of "3.recorder.testdomain.com" right?
And other thing is media port 8445 and public port given by ngrok pointing to the 3.tcp.ngrok.io URL.
try changing serviceFqdn  to 3.tcp.ngrok.io.
let me know it is success or not.

What is your name and value of CNAME entry? Name: 3.recorder.testdomain.com and value 3.tcp.ngrok.io?

Hi, thanks for your questions again.
When I set serviceFqdn to "3.tcp.ngrok.io", I get the exception:

InvalidOperationException: Failed to match service domain name '3.tcp.ngrok.io' against certificate with subject name 'CN=.testdomain.com, OU=Domain Control Validated' and SAN list:[DNS Name=.testdomain.com, DNS Name=testdomain.com

That's what I'd expect, because I don't have a cert for 3.tcp.ngrok.io installed locally, and the thumbprint I'm passing is for a "*.testdomain.com" cert. Do ngrok offer certs for their subdomains? I'm not aware.
To your question on CNAME entries - I have two entries, one for the signalling endpoint (like "recorder.testdomain.com"), and one for the media endpoint (like "3.recorder.testdomain.com"):

Hi,
Sorry, I was wrong. You did it in a correct way.
I followed the same steps as you did and face the same issue. I get the incoming call and notification requests, but call going to voice mail. I think this issue lies around media URL.
ngrok dashboard shows the media URL get it hit but nothing happened.
I'm doing further testing to find issue, if you find anything let me know.

Hi,
Do you able to resolve this?

Hi, no, unfortunately I have not found any solution.
My only way to test/debug is by running on Azure, which is much more time-consuming than running locally.

Hi,
I have the exact same issue. I have the exact same setup, but it throws an exception when establishing the TCP connection.


Failed to Start the Listener: panic: runtime error: invalid memory address or nil pointer dereference

START LISTENER
[*] Enter LPORT: <IP_ADDRESS>
[*] Waiting for connection...
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x4fb960]
goroutine 1 [running]:
main.RunServer()
/root/CHAOS/CHAOS.go:505 +0x6d0
main.ShowMenu()
/root/CHAOS/CHAOS.go:167 +0x96b
main.main()
/root/CHAOS/CHAOS.go:41 +0x2a
exit status 2

Hi, you entered your IP on LPORT. Enter the local PORT.
Sample:
`
START LISTENER
[*] Enter LPORT: 8080
[*] Waiting for connection...
`
Video demonstration:
https://www.youtube.com/watch?v=QRNN2KwCYOg

I can't believe i did this lol


[BUG] CDS plugin destroys my mtar

Is there an existing issue for this?

[X] I have searched the existing issues

Nature of Your Project
TypeScript
Current Behavior
After I have installed the cds-typer in my MTA project, the .mtar file generated by mbt build is corrupted.
More precisely, all TypeScript/JavaScript files in my gen/srv folder get removed.
Expected Behavior
I expect cds-typer should not touch files it does not own.
In fact, I would be better off if cds-typer would not do anything during build process and I could handle the build stuff myself.
Steps To Reproduce
No response
Environment
- **OS**:
- **Node**:
- **npm**:
- **cds-typer**: 0.24.0
- **cds**: 8.0.4

Repository Containing a Minimal Reproducible Example
No response
Anything else?
The problem is caused by this code in cds-plugin.js file:
// remove the js files generated by the nodejs buildtask,
// leaving only json, cds, and other static files
await rmFiles(this.task.dest, ['.js', '.ts'])

I commented the rmFiles line out and my mtar works again.

Hi Rafal,
thanks for the report and sorry for the inconvenience!
Do you see any output from your cds build command?
Best,
Daniel

Hello Daniel,
no, there is nothing of interest in the log.
Additional info:
As, to my understanding, the .js files being generated by cds-typer need to be included in the mtar, I run cds-typer with --outputDirectory srv/generated/cds-models. This way it becomes a part of the srv folder and is auto-propagated to gen folder during build and lands in the generated mtar without any extra effort.
Then I set up paths in my tsconfig.json as follows:
    "paths": {
      "#cds-models": ["./srv/generated/cds-models/com/pacg/cssp/index.ts"],
      "#cds-models/*": ["./srv/generated/cds-models/*/index.ts"]
    }

This makes the namespaced model (db artifacts) proposed before any artifacts from service .cds files in the code completion.
I have the tsconfig.cdsbuild.json (found with debugger) file. It loosens the compiler rules, but only for the prod build. In dev I want to keep strict. I had to add it due to #273.
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "strict": false,
    "useDefineForClassFields": false
  }
}

I spent quite some time in debugging. Trying to understand what was going on. If you have any specific question, I may be able to answer.
My general thought is, the plugin is trying to do too much. Removing the files, executing tsc - it is not its responsibility, is it? I run tsc myself in mta->before_all. No need to repeat it.
I believe, the content generated by cds-typer should be brought to gen and no other activities should be done by the cds plugin. If you want to ensure they are clean, you can run cds-typer with certain output (but you need then take care for cases like mine, where the output is already there). Or just copy the files. Or (my favourite) do nothing. And let the users know, they need to take care the files are included in the generated runtime code.
Best regards
Rafał

Hi Rafal,
thanks for the additional information you have provided. I do agree in parts that it would be preferable for the build task to not touch files created by other tasks. But I am afraid in this case it was a necessity, due to how the files generated by cds-typer work.
Your setup looks a bit excessive on first glance. You should not need to manually call tsc as part of the build process, as the build plugin provided by cds-typer would do that for you. But maybe this can actually be fully circumvented: I am currently working on providing a fix for the problem you mentioned. Would being able to use the strict config in prod unblock you?
Best,
Daniel

@daogrady thanks for taking my issue with priority 🙂
I think my setup is right. It should not be cds-typer to compile my TypeScript project. It is an opt-in plugin. And I see its responsiblity as: generating TS/JS type definitions from CDS artifacts. If it is such, it should not try to be a general purpose TS tool for cap projects.
Our project is over a year old. We use cds2types in it. And while cds-typer is not a part of it, we do run tsc in before_all. And that makes sense to me.
Transition to cds-typer should be a transparent change in my opinion. It should  replace one type generator with another.
And to answer your question: I can use build-only tsconfig as a workaround. Since I already know it, it's ok to live with it. What is blocking me is that I am currently loosing my js files in the srv folder. When this is fixed, I can move on.

Hi Rafal,
I see your point, but we must try to accommodate users of varying degree of commitment and skill level, so we try to not burden users with having to maintain yet another dependency and integrate new features with existing workflows. So cds-typer was a natural fit for providing build support for TS projects.

We use cds2types in it. And while cds-typer is not a part of it

So if you are not using cds-typer, I guess you could remove it from your dependencies then? Would that not solve this unwanted behaviour? 🤔

What is blocking me is that I am currently loosing my js files in the srv folder.

I am afraid there is always the chance of running into issues with newly added features users were formerly working around when they were missing. May I suggest setting your build process to keep unwanted plugins from running? In your case, you would specify the build plugins you want to run, forgoing the typescript plugin.
Please let me know if this is an option for you.
Best,
Daniel

Hello Daniel,
we are about to switch from cds2types to cds-typer.
cds2types, hard-sets dependency to cap 7. Became a bit hacky to upgrade cap to 8. I have my own clone now.
And we are at the moment in process of refreshing the tools and dependencies to be up to date.
So, not yet using cds-typer, but trying to jump on this train 🙂

May I suggest setting your build process to keep unwanted plugins from running? In your case, you would specify the build plugins you want to run, forgoing the typescript plugin.

Do I understand it right that if I explicitly enable some plugins, the plugin autodiscovery will not be applied and only the plugins I specify are executed? That could be an option for me.
Best regards
Rafał

Hi Rafal,

Do I understand it right that if I explicitly enable some plugins, the plugin autodiscovery will not be applied and only the plugins I specify are executed? That could be an option for me.

Yesn't. To be precise: the plugins will still be discovered, but only the ones you explicitly list will be executed.
Best,
Daniel

Thanks for the hint @daogrady. That solves my problem and I can continue the switch to cds-typer 😎
I leave the issue open, as I assume you need to find a general solution.


chore(main): release ucan 0.2.0

:robot: I have created a release beep boop
0.2.0 (2024-02-12)
Features

add agent impl and identifiers(wip) (043d179)

Bug Fixes

export wasmify (14d724b)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/fission-codes/stack/releases/tag/ucan-v0.2.0 :sunflower:


Pass MASTER_IP to post_install_args

Environment:

aws-parallelcluster-2.4.0
OS: alinux
Scheduler: slutrm
Master instance type: t2.micro
Compute instance type: t2.micro

Is is possible to pass the MASTER_IP parameter as a post_install_args? I've tried post_install_args = {MASTER_IP}, following the [aliases] section synta, but this results in cfn_postinstall_args={MASTER_IP} in /etc/parallelcluster/cfnconfig. The actual master IP does not get substituted.

Hi @joeydumont,
This is a bit tricky as normally I'd tell you to just get the output MasterServerPublicIP. However this output isn't going to be there when the post_install script runs, as the stack hasn't finished creating.
The other option is to get the stack resource, this will work before the stack goes into CREATE_COMPLETE
Here's how we do it in the ssh function:
import boto3

aws_region = "us-east-1"
stack_name = "[Your stack name]"

cfn = boto3.client(
        "cloudformation",
         region_name=aws_region
)
resources = cfn.describe_stack_resource(StackName="parallelcluster-"+ stack_name, LogicalResourceId="MasterServer")
master_id = resources.get("StackResourceDetail").get("PhysicalResourceId")

ec2 = boto3.client(
        "ec2",
        region_name=aws_region
)
instance = ec2.describe_instances(InstanceIds=[master_id]).get("Reservations")[0].get("Instances")[0]
ip_address = instance.get("PublicIpAddress")

Unfortunately we don't substitute the config file but rather when we run pcluster ssh it reads that section of the config and substitutes it.

You could also do the following to get the master fqdn on compute nodes:
#!/bin/bash

. "/etc/parallelcluster/cfnconfig"

case "${cfn_node_type}" in
    MasterServer)
        echo "I am the master node" >> /tmp/master.txt
    ;;
    ComputeFleet)
        echo "${cfn_master}"
    ;;
    *)
    ;;
esac

Thanks @demartinofra, I forgot the cfnconfig contains the cfn_master... but only on the compute nodes.
@joeydumont Here's what that file contains:
stack_name=parallelcluster-intel-mpi
cfn_preinstall=NONE
cfn_preinstall_args=NONE
cfn_postinstall=NONE
cfn_postinstall_args=NONE
cfn_region=us-east-1
cfn_scheduler=sge
cfn_scheduler_slots=vcpus
cfn_instance_slots=72
cfn_encrypted_ephemeral=false
cfn_ephemeral_dir=/scratch
cfn_shared_dir=/shared
cfn_proxy=NONE
cfn_node_type=ComputeFleet
cfn_cluster_user=centos
cfn_sqs_queue=https://sqs.us-east-1.amazonaws.com/822857487308/parallelcluster-intel-mpi-SQS-PD4EN81U2BIL
cfn_master=ip-172-31-43-191.ec2.internal

I recommend you use @demartinofra approach

I put this in the post_install script instead:
# -- Determine the IP of the master node.
MASTER_IP=
if [ ${cfn_node_type}  == "MasterServer" ]; then
	MASTER_IP=$(hostname)

elif [ ${cfn_node_type} == "ComputeFleet" ]; then
	MASTER_IP=${cfn_master}
fi

MASTER_IP=$(echo ${MASTER_IP} | sed 's/.*-\([0-9]\{1,3\}\)-\([0-9]\{1,3\}\)-\([0-9]\{1,3\}\)-\([0-9]\{1,3\}\).*/\1\.\2\.\3\.\4/')

echo "The master IP is ${MASTER_IP}"


Suggestions: staging

I thought this was more useful than I expected, but can be refined.

[ ] also formerly (presently?) known as the index.  (or cache, via the option git diff --cached)
[ ] Add some examples using the guacamole recipe and remove existing example which doesn't go into detail.  Now we see big collections of commands but not many examples.

[ ] by the same token, I used the "homework" section as an in-class example.

[ ] remove is not a git command
[ ] git diff vs git diff --cached - two complimentary things which go naturally here.
[ ] I really like git add -p.  Also git commit -p.
[ ] We've been using the staging area the whole time - think about what the point of this section is.  It already does have a good point, but if the earlier part of the talk just used git commit instead of git add, there would be a more direct purpose for it here.  By adding more examples covering everything, this becomes a capstone "practice" session with side-purpose of teaching good staging practices.
[ ] The "git file stages" diagram is different than what I had on the board.  Not saying it is bad, but I found it hard to explain given my flow.  Can this somehow be integrated into my cheatsheet (#61)?

Not looking at the episode now, but start with description of what can go wrong without staging (too many things listed below... pick just the most powerful):

You do several things at once, but have to commit them at the same time.  Hard to do in some version control systems.
You have to wait until you are fully done to commit: greater risk of losing things.  What about bugs before you commit?
You commit things and realize there is a bug.  Maybe you missed something or did too much.  Instead, you can stage, review, then commit.
Other version control systems have only two places to store data: untracked or committed and might require you commit whole files at once.

If you add -p, you can also commit -p to commit only certain parts, too.

Other staging area analogies (this specific answer + whole question)
https://softwareengineering.stackexchange.com/questions/119782/what-does-stage-mean-in-git/249539#249539

Brief section at bottom: But staging takes too much time!      Recommended to run git diff first and ask "should this really be one patch?"

Also make sure that examples are aligned with rest of the lesson (taken from #62).

I'd say the episode is complete, but there are still many things to do here.  I think putting them here would start to get too busy.  what do you think?
Most of these seem more fitting for a "practical tips" section, which I noticed isn't there yet.  I'd say wait for that until after Oslo, unless you want to now.

Not closing this yet because there are good points here which are not in material, especially the "what can go wrong if you don't use it".


bcpkix-jdk18on 1.78.1: 3 files found with path 'META-INF/versions/9/OSGI-INF/MANIFEST.MF'

Hi, my team has been using BC for a few years, and we keep it updated from time to time. Our old version was 1.77 and today we wanted to upgrade to 1.78.1, but Gradle sync on an Android library project is currently failing:
Execution failed for task ':app:mergeDevDebugJavaResource'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
   > 3 files found with path 'META-INF/versions/9/OSGI-INF/MANIFEST.MF' from inputs:
      - /Users/cheeyi/.gradle/caches/transforms-4/ee9bc3a4401575fa3ac2c180e3b1b03a/transformed/jetified-bcpkix-jdk18on-1.78.1.jar
      - /Users/cheeyi/.gradle/caches/transforms-4/02b634b1e824d63f602c8f18f1902446/transformed/jetified-bcutil-jdk18on-1.78.1.jar
      - /Users/cheeyi/.gradle/caches/transforms-4/73a4df265e1d83e0d61ef8f741984bdf/transformed/jetified-bcprov-jdk18on-1.78.1.jar
     Adding a packaging block may help, please refer to
     https://developer.android.com/reference/tools/gradle-api/8.4/com/android/build/api/dsl/Packaging
     for more information

Adding an exclusion to lib/build.gradle did not work:
    packaging {
        resources.excludes.add("META-INF/versions/9/OSGI-INF/MANIFEST.MF")
    }

Has anyone else run into a similar issue?
Our dependency used is
implementation("org.bouncycastle:bcpkix-jdk18on:1.78.1")

Fixed by adding the excludes block to the app/build.gradle file instead of lib/build.gradle, but I'm curious why 1.78 and 1.78.1 have this issue while 1.77 did not.
    packaging {
        resources.excludes.add("META-INF/versions/9/OSGI-INF/MANIFEST.MF")
    }

So these are the multi-release manifests for OSGi. What version of the JVM is your Android platform based on?

So these are the multi-release manifests for OSGi. What version of the JVM is your Android platform based on?

Hi @dghgit, we're using Java 17:
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString()
    }

Okay, so it's the 8on jar you want, yes the best thing to do is get Android to ignore the extra files then. I guess they haven't got the memo on this one yet...

Thanks, I'm not familiar with JAR packaging and OSGi so it's good to get confirmation that this is an acceptable workaround for now. I was mostly curious why 1.77 and prior versions didn't have this issue but all of a sudden 1.78 and 1.78.1 both exhibit the same issues with our Android project, but sounds like it may fix itself eventually in the future?

So 1.77 and earlier wasn't properly supporting multi-release OSGi. 1.78 and later does (or in the case of 1.78 at least tries to). Ideally the Android tools would recognise the files for what they are one day... but in our case we have to keep inserting them for now.

Thanks @dghgit, that makes a lot of sense now!


New Adapter: @effect/schema

Can we consider supporting https://github.com/Effect-TS/effect/tree/main/packages/schema ? If it looks like something we can support, willing to work on it!

Of course, check one of the existing adapters to get started: https://github.com/ciscoheat/sveltekit-superforms/tree/main/src/lib/adapters

A test suite should be added here: https://github.com/ciscoheat/sveltekit-superforms/blob/main/src/tests/superValidate.test.ts#L140

great! thanks. will keep things posted here as I work on it!

@geekodour Are you still planning to implement this adapter?

@jkonowitch apologies for not keeping up. Please feel free to take this forward. Otherwise I do still plan to write this out if this doesn't go out as soon as I get back on working related projects.

hi there, I started work on this. will open a pr later today/tomorrow


Saving LLMCharacters takes up a lot of storage space

Describe the bug
As far as I understand, saving a character saves the chat history and also the LLM cache. Is there a way to only save the History?
The two files saved are a JSON, which I think is the history, and another file, which I think is the cache (I might be wrong). After just a minute of conversation, the cache file is 400 megabytes for one character alone. I guess not saving it will just increase the load times. Maybe there is also a more efficient way of saving it?
I know that most games will probably not have too many characters and I also guess it will stop increasing in size once the chat history limit is reached (if there is such a setting. I have not found it yet), but I love optimizing my games to use the least amount of storage possible, and this is a bit annoying.
Steps to reproduce

Create an LLMCharacter
Make it save it's history and cache
Look at the size of the cache file

LLMUnity version
2.0.0
Operating System
Windows

The size of the cache file depends on the context size and can reach around this size.
I can't work around this, this is the way llama.cpp saves it.
It is also probably compressed in some way because zipping it further doesn't do much.

The cache is needed otherwise the whole conversation will have to be recomputed from scratch

Okay, thanks. How long does it take to recompute a conversation? I know it will be very different depending on the context size, hardware and so on, but will it be around the time it takes to compute one request times the amount of requests the user made in the past?

I added an option to save or not the LLM cache (or only the chat history).
The prompt processing can be split into 2 parts:

prompt evaluation: this is quite faster and is affected by the LLM cache
prompt response generation: this is slower and not affected
It really depends on the model how long you can save with the LLM cache, but a ballpark number is around doubling the prompt time.
You can evaluate the prompt by calling the Warmup() function though so you can manage that time during your loading process


bbox vertical flip is not handled correctly when aug test

The vertical flip process is the same as the horizontal flip.
If I set random vertical flip, bbox transform in mmdet/core/bbox/transforms.py handle the vertical flip via horizontal flip.
def bbox_flip(bboxes, img_shape):
"""Flip bboxes horizontally.
Args:
    bboxes(Tensor or ndarray): Shape (..., 4*k)
    img_shape(tuple): Image shape.

Returns:
    Same type as `bboxes`: Flipped bboxes.
"""
if isinstance(bboxes, torch.Tensor):
    assert bboxes.shape[-1] % 4 == 0
    flipped = bboxes.clone()
    flipped[:, 0::4] = img_shape[1] - bboxes[:, 2::4]
    flipped[:, 2::4] = img_shape[1] - bboxes[:, 0::4]
    return flipped
elif isinstance(bboxes, np.ndarray):
    return mmcv.bbox_flip(bboxes, img_shape)

def bbox_mapping(bboxes, img_shape, scale_factor, flip):
"""Map bboxes from the original image scale to testing scale"""
new_bboxes = bboxes * bboxes.new_tensor(scale_factor)
if flip:
new_bboxes = bbox_flip(new_bboxes, img_shape)
return new_bboxes
def bbox_mapping_back(bboxes, img_shape, scale_factor, flip):
"""Map bboxes from testing scale to original image scale"""
new_bboxes = bbox_flip(bboxes, img_shape) if flip else bboxes
scale_factor = new_bboxes.new_tensor(scale_factor)
new_bboxes = (new_bboxes.view(new_bboxes.size(0), -1, 4) / scale_factor).view(
new_bboxes.size()[0], -1)
# print(new_bboxes.shape, new_bboxes.new_tensor(scale_factor))
# new_bboxes = new_bboxes / new_bboxes.new_tensor(scale_factor)
return new_bboxes
I find another bbox transform in mmdet/datasets/pipelines/transforms.py is correct.
def bbox_flip(self, bboxes, img_shape, direction):
"""Flip bboxes horizontally.
    Args:
        bboxes(ndarray): shape (..., 4*k)
        img_shape(tuple): (height, width)
    """
    assert bboxes.shape[-1] % 4 == 0
    flipped = bboxes.copy()
    if direction == 'horizontal':
        w = img_shape[1]
        flipped[..., 0::4] = w - bboxes[..., 2::4]
        flipped[..., 2::4] = w - bboxes[..., 0::4]
    elif direction == 'vertical':
        h = img_shape[0]
        flipped[..., 1::4] = h - bboxes[..., 3::4]
        flipped[..., 3::4] = h - bboxes[..., 1::4]
    else:
        raise ValueError(f"Invalid flipping direction '{direction}'")
    return flipped

bbox_flip in mmdet/core/transform.py only deals with horizontally flip. Please read the doc carefully. You can implement the vertical flip by yourself. It should be very easy.

Hi @asdiuzd
Thanks for reporting. I will create a PR to fix this bug.


Following-Follower Count Is Wrong (Swapped)

I am fetching the account information from 10 different sources and only one of the accounts show wrong information about the number followers and followings. The numbers are provided in swapped form. I have tried with different number of sources but there is one specific source giving wrong information "Breaking911". The account has 0 followings and 570k followers but these numbers are displayed as 1 follower and 570k followings. I believe there could be a bug due to having accounts with 0 "followings"

[UPDATE] In reality the account "Breaking911" has 0 followings and 527k followers

Hi, thanks for the issue. Please checkout #120 and test it. Don't forget to leave a message. Then I can merge it pleasurely.


Fixes #3931 -- Installation documentation is confusing

This patch retitles the two installation documents (one for automated, one for manual, installation)
and clarifies their purpose.

Coverage increased (+0.01%) to 87.57% when pulling 53c2c4a54ff5e7d7549a6f24fa595542781e83a3 on evildmp:improve-install-docs into ce075ff5c690e1f47cb17268d5ad3aa8a768a971 on divio:support/3.0.x.

Coverage increased (+0.01%) to 87.57% when pulling 53c2c4a54ff5e7d7549a6f24fa595542781e83a3 on evildmp:improve-install-docs into ce075ff5c690e1f47cb17268d5ad3aa8a768a971 on divio:support/3.0.x.

Coverage increased (+0.01%) to 87.57% when pulling 53c2c4a54ff5e7d7549a6f24fa595542781e83a3 on evildmp:improve-install-docs into ce075ff5c690e1f47cb17268d5ad3aa8a768a971 on divio:support/3.0.x.

LGTM

@mkoistinen Your comments?
This should address the concerns raised in https://github.com/divio/django-cms/issues/3931, though it doesn't move either of the installation chapters out of their respective sections, since I think they do properly belong there.


Propose an explanation how to restart gracefully gitea after an update

This documentation patch propose to be more clear about kill action.
Gitea support -1 signal to gracefully stop its actions.
Thanks to @zeripath  about his explanations

Codecov Report

Merging #10866 into master will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #10866      +/-   ##
==========================================
+ Coverage   43.40%   43.42%   +0.02%
==========================================
  Files         593      593
  Lines       83271    83276       +5
==========================================
+ Hits        36140    36162      +22
+ Misses      42640    42623      -17
  Partials     4491     4491

Impacted Files
Coverage Δ

services/pull/check.go
50.00% <0.00%> (-3.05%)
:arrow_down:

modules/git/command.go
86.95% <0.00%> (-2.61%)
:arrow_down:

services/pull/pull.go
34.70% <0.00%> (-1.18%)
:arrow_down:

modules/git/repo_commit.go
53.45% <0.00%> (-0.22%)
:arrow_down:

routers/repo/view.go
36.82% <0.00%> (+0.67%)
:arrow_up:

modules/git/repo.go
48.11% <0.00%> (+0.83%)
:arrow_up:

modules/log/event.go
65.64% <0.00%> (+1.02%)
:arrow_up:

models/unit.go
44.44% <0.00%> (+2.46%)
:arrow_up:

modules/queue/workerpool.go
60.49% <0.00%> (+3.55%)
:arrow_up:

modules/git/utils.go
70.14% <0.00%> (+4.47%)
:arrow_up:

... and 2 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 ea67e56...450407f. Read the comment docs.

I'd think we should be 'recommending' using the service file since thats our previous recommendation in the same document
sudo systemctl restart gitea

And manually killing as a last resort if not.

There also: ```
gitea manager help                                                                       [20:44:10]
NAME:
Gitea manager - Manage the running gitea process
USAGE:
Gitea manager [global options] command [command options] [arguments...]
VERSION:
1.12.0+dev-518-gf9f2c163b built with GNU Make 4.2.1, go1.14.1 : sqlite, sqlite_unlock_notify
DESCRIPTION:
This is a command for managing the running gitea process
COMMANDS:
shutdown      Gracefully shutdown the running process
restart       Gracefully restart the running process - (not implemented for windows servers)
flush-queues  Flush queues in the running process
GLOBAL OPTIONS:
--custom-path value, -C value  Custom path file path (default: "/home/andrew/src/go/gitea/custom")
--config value, -c value       Custom configuration file path (default: "/home/andrew/src/go/gitea/custom/conf/app.ini")
--version, -v                  print the version
--work-path value, -w value    Set the gitea working path (default: "/home/andrew/src/go/gitea")
--help, -h                     show help
DEFAULT CONFIGURATION:
CustomPath:  /home/andrew/src/go/gitea/custom
CustomConf:  /home/andrew/src/go/gitea/custom/conf/app.ini
AppPath:     /home/andrew/src/go/gitea/gitea
AppWorkPath: /home/andrew/src/go/gitea

Either of those seem much better to recommend than killall etc...
I'm not familiar with it but should the systemd unit be trying to use gitea manager to restart/shutdown? Is that better? Or does it otherwise need to be updated for newer graceful features?

Hello
systemd is a solution among other sys init solution.
Then to be more complete/explicit about binary use don't  remove other methods information.
And gitea help presume mono instance usage with defaults paths. I don't know if it's adapted when we use custom path.
Maybe we could add a warning about our preferred solution and propose other sys init approach but is not related to this PR.
In my personal use, as I've two instances and I don't understand well systemd, I've written a  bash script as far as I understand. I think I'm not alone to launch gitea with a script it's why I propose this addon.

@mrsdizzie systemd will natively use kill and kill -1 to stop or restart processes as standard. Gitea catches kill -1 and causes a graceful restart.  The only problem is kill -9 which can cause loss of data and corruption.

make lg-tm work


Add option to control group/layer listing order

Currently the groups and layers seem to be ordered arbitrarily in the control panel. It would be nice to preserve the order from the group definition or specify the order via a flag.

Is there a solution to this? I am using grouped overlays and the styled layer control plug in, and the top two overlay groups won't display in the order I want. How can I force the order?


Failing tests on spo list view field

As per the instructions in 'Minimal Path to Awesome'
After forking, I ran npm test
4 tests fail
As below

spo list view field add
uses correct API url when list id option is passed:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/garrytrinder/Documents/GitHub/office365-cli/dist/o365/spo/commands/list/list-view-field-add.spec.js)

spo list view field add
uses correct API url when list title option is passed:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/garrytrinder/Documents/GitHub/office365-cli/dist/o365/spo/commands/list/list-view-field-add.spec.js)

spo list view field remove
uses correct API url when list id option is passed:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/garrytrinder/Documents/GitHub/office365-cli/dist/o365/spo/commands/list/list-view-field-remove.spec.js)

spo list view field remove
uses correct API url when list title option is passed:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/garrytrinder/Documents/GitHub/office365-cli/dist/o365/spo/commands/list/list-view-field-remove.spec.js)

Hi @garrytrinder ,
Having the Error: Timeout of 2000ms exceeded means something is very slow on your machine.
Could you please see if node 8.x or 10.x is installed and try npm run clean, npm run build and npm t?
These tests are support to be ok since we run pipeline and continuous deployment before and after every pull request and they pass there. They also pass on my both machines.
What OS and version of nodejs are you using?

I'm running Node v8.11.4 on MacOS Mojave 10.14.5, I've completed the steps and still the same.

Thanks Garry! I will try to reproduce with clean clone on my side.

I did some testing following the steps you did with clean clone of the pnp/office365-cli, but the tests passed for me. I will try few more things tomorrow.

I've just tried this on different versions of Node v8.16.0 and v10.16.1 which result in the same test failures for me. Before each test I removed node_modules and repeated the MPA steps. 🤔

Not sure if this is relevant but I'm also running TypeScript v3.5.3

@garrytrinder , what you can do is to increase the timeout limit for a mocha test. You can open the packages.json and add --timeout 10000 to the npm test task.
It should look like this
  "scripts": {
    "build": "tsc -p . && node scripts/copy-files.js",
    "watch": "tsc -w -p .",
    "clean": "rimraf ./dist",
    "test": "nyc -r=lcov -r=text mocha \"dist/**/*.spec.js\" --timeout 10000"
  },

Could you please run the tests with it and let me know if they pass?

Adding the timeout doesn't appear to be making any difference, still getting same four fails 🤔

I've increased the timeout all the way up to 999999 and I have now seen the tests complete, see below. I have no idea why these specific tests would run so slow though 🤷🏻♂

I've been able to debug one of the tests and can see that done() is being called quickly but then seems to get stuck in a loop somewhere.

This is very interesting. I have not seen that before, we can monitor that behavior and see it someone else will experience the same.
@garrytrinder, this should not be a show stopper for you to build command since you better run only the tests you are adding for the new command.
What I usually do is to change the package.json to
    "test": "nyc -r=lcov -r=text mocha \"dist/**/<NAME_OF_FILE_OF_MY_NEW_COMMAND>.spec.js\"" to speedup the tests execution when I develop commands. I do not commit that to the upstream branch.

@VelinGeorgiev thanks for that tip 😀
For reference, here is my machine spec.

That is a top notch hardware + software combination, I doubt this is the reason. I assume it is a combination of nodejs version + npm + mocha + typescript + some other package that makes nodejs to respond slowly.

Agreed, as I have the issue on my machine, I'm happy to look into it further and if I resolve the issue, I will raise a PR.

@VelinGeorgiev Ok, so I think I've found a fix for this, but i'm not 100% on why.
I noticed that some tests call stubAllGetRequests(); so I added that to the first line of one of the failing tests and it resolved quickly as you would expect. So I've added that line to the other three failing tests and I can now run a complete suite of tests with success.

I'm new to writing tests, so just following what I see in the codebase. What is stubAllGetRequests(); method doing and why would it resolve this issue?

Code changes can be seen here... let me know if you want me to create a PR...
https://github.com/pnp/office365-cli/compare/master...garrytrinder:TestTimeouts

@garrytrinder, that is a great first contribution.  Thank you!
Let me explain what actually happens:

stubAllGetRequests(); is a custom function that aims to fake all GET http requests for that particular command so the unit test would not send a GET request, but would be intercepted by the sinonjs and it will send back fake response. Sinon is a library that we use for faking stuff.
In the tests that were failing for you seems that only the POST requests were stubbed/faked directly in the test, but the command probably kept trying to send real GET requests to the server for some reason, I can see the list view commands perform GET and POST requests.
Why they do not fail on the build machine is perhaps something we can investigate, that could be a weak point in the command itself.

@garrytrinder , lets bring the changes you've made, but this should be a pull request against the dev branch. That means that you have to create a branch out of dev add your changes there and create a PR against dev so we can merge them at the end of the week.

Makes sense now, thanks for the explanation @VelinGeorgiev
I'll get a PR raised against dev later today 😀

@VelinGeorgiev I've just noticed that the changes I have made locally against master, already exist in the dev branch, so these updates will get merged in when the next release happens.
To confirm this is the case, when I checkout dev and run a test I don't get any errors.
I suspect that this is why you also didn't see any issues (making the assumption you just default to dev branch) and also no issues have been reported in the builds as they take from the dev branch also.

Thanks for your input @garrytrinder !
It is interesting how the master worked without that so far. I am pretty sure tested the master and the dev on my Mac and the tests passed. I will try to investigate the root cause further when I have more time.
I'd suggest, we can close that issue once we merge master with dev since you would not experience these issues. We can always open new one if the issue is there again.

Happy to help :)
I agree, I'm happy to just leave this open and check after next release 👍🏻

@VelinGeorgiev and @garrytrinder  I had the same issue today and the timeout resolved it for me :) phew

We should not increase the timeout for tests. With proper mocking we should not need more time per test. An issue like the one you noticed is often a sign of something else, so whenever we hit something similar we should have a closer look at the failing test.

I have re-cloned the repo tonight, followed the "awesome" steps and confirmed that 1.23.0 (master) still has the four failed tests, but 2.0.0 (dev) does not.

I agree. Increasing the timeouts was just for troubleshot purposes to see it is ever going to pass :)

Thanks for double checking @garrytrinder. I'll have a look at it if I can repro it and find the reason why it's happening. Appreciate your help 👏

I've just tried it and I can't repro it :( All tests pass as expected.
I'm on:

Node v10.15.3
npm 6.8.0
pulled the latest source from the dev branch, installed deps and ran npm t. Also running on macOS 10.14.6

I can try a different machine next week to see if it helps.

@waldekmastykarz I don’t have an issue with running tests against the dev branch, it’s when I run them against master the failed tests occur.

Ah sorry, my bad. I'll have another look.

There is one test that takes a bit longer to execute, but overall all tests pass.

Thanks for checking @waldekmastykarz this does seem to be a really odd issue, not sure what it is... 🤔
Sent with GitHawk

It's interesting indeed. Let's keep an eye out on it to see if we can repro it. For now, let's close this issue, ok?

Sure, no problem 👍🏻


Fee estimate during contract creation

Right now the fees are hardcoded at 1 sat/vbyte which could become a problem as it is impossible to predict the fees in the future.
#491 will take a more sophisticated approach.
For now we should just estimate the fees (e.g. using the wallet) at time of contract creation. In particular, it is important to estimate fees for tx_commit.

I underestimated the size of this ticket: it turns out that changing the fee for the commit transaction involves various changes in the library as well as in our protocol.

the fee tx_commit depends on this constant (https://github.com/comit-network/maia/blob/6d18a152f4f1c1d306677d39f32ddcdc3d44421c/src/protocol/transactions.rs#L96)
we would need to pass into create_cfd_transactions a new parameter for the fee with which the constant above is multiplied (https://github.com/comit-network/maia/blob/6d18a152f4f1c1d306677d39f32ddcdc3d44421c/src/protocol.rs#L83)
this constant needs to be communicated between both parties, so it needs to be part of a Msg

Initially I thought that it would be a much smaller change, e.g. that we had this fee already in place and all we would need to change is how we would come up with this fee (e.g. by estimating it according the current network situation).
That's unfortunately not the case.
Since this was just a temporary solution for https://github.com/itchysats/itchysats/issues/491 I'm not sure if we should go for this anymore but rather focus on https://github.com/itchysats/itchysats/issues/491 instead.
What do you think @thomaseizinger

CC @da-kami / @thomaseizinger / @itchymax / @scratchscratchscratchy : I've updated the ticket description. I think we should prioritize this and #491 afterwards.

We should estimate the fees (e.g. using the wallet) at time of contract creation for a target block. I propose to hardcode the target block at 3 for the start and we can think about making this configurable later on.

Sounds good to me!
To make this more transparent to the user, we could:

Let the maker estimate it and share it 50:50 with the taker
Include the expected fee in the order that is sent to the taker


monitor.py regression

the code that was added to prevent a name error crash in this commit: f42cdd001f5221802d27217fed909084084dd3ee
has been removed in this commit: 8e5cc1da5a659231efa088694f77f94ffdf7ab35
so now monitor.py is crashing again when crypto.load_certificate() returns None

Thanks; fixed.

You still need to add in an initialization of the subject var or else you will get "UnboundLocalError: local variable 'subject' referenced before assignment" in the except block
see: https://github.com/wgoulet/CTPyClient/blob/f42cdd001f5221802d27217fed909084084dd3ee/monitor.py#L108

Got it; I actually refactored that function to not print the subject (and use the var) if an exception is thrown when I try to decode the certificate data.


Swipe to reveal breaking list scroll

I try to use "Swipe to reveal", but I notice that on swipe elements I'm not able to scroll list, even in compile sources from this repo.
I think it's bug, couse Swipe to reveal" is designed for list view.
I'm looking forward bugfix or any help.
Kind regards

@langowskiadam please post a demo

This "App Framework Kitchen Sink" in Touch Event menu can be a demo.
I check it and is not working as well

Please provide your device, OS version and browser

I'm not using browser. I build for android via IntelXDK. Device: LG L90, Android 4.4.2

Finally I figured it out. It was because swipe elements need scroll class to enabling scrolling. There is nothing about it in documentation so I update example here: https://github.com/01org/appframework/pull/879

Thanks - I will merge your fix


Bad Request Issue

on running app.py i get error(actually on loading localhost:8000):
Bad Request
The browser (or proxy) sent a request that this server could not understand.
What could be the reason

Hi @ab-bh to properly use the script you must supply a file argument in the address bar:

http://localhost:8000?file=/home/pete/mypoodle.jpg


(x5 over 3m36s)   kubelet  MountVolume.MountDevice failed for volume "pvc-f" : rpc error: code = Internal desc = Volume pvc-2f is not ready: Replicas yet to connect to controller

Hi Team @mittachaitu/ Or,
Basically once I create the pods with pvcs with VolumeSnapshots and StorageClassess configured. I get the below error
events:
  Type     Reason       Age                   From               Message
  ----     ------       ----                  ----               -------
  Normal   Scheduled    3m47s                 default-scheduler  Successfully assigned netbackup/datamover-pod-3e58abac-66ed-4167-af4e-3a298f7cdfac to 3578
  Warning  FailedMount  116s (x4 over 3m35s)  kubelet            MountVolume.MountDevice failed for volume "pvc-2966bf9e-5596-4388-89ff-a53b7d1c913f" : rpc error: code = Internal desc = rpc error: code = Internal desc = object is being deleted: cstorvolumeattachments.cstor.openebs.io "pvc-2966bf9e-5596-4388-89ff-a53b7d1c913f-vrak8swsl3578" already exists
  Warning  FailedMount  105s                  kubelet            Unable to attach or mount volumes: unmounted volumes=[datamover-pvc-3e58abac-66ed-4167-af4e-3a298f7cdfac], unattached volumes=[kube-api-access-ctcc9 datamover-pvc-3e58abac-66ed-4167-af4e-3a298f7cdfac config-volume secret-volume]: timed out waiting for the condition
  Warning  FailedMount  39s (x5 over 3m36s)   kubelet            MountVolume.MountDevice failed for volume "pvc-2966bf9e-5596-4388-89ff-a53b7d1c913f" : rpc error: code = Internal desc = Volume pvc-2966bf9e-5596-4388-89ff-a53b7d1c913f is not ready: Replicas yet to connect to controller

So this issues comes every time for me but basically lasts for 2 mins, for every new setup and resolved automatically. but we have an other process which will create pods with pvc for every 1 hour or so automatically, in such continous running cases, the error I shared above is persistent and not auto resolving after 2 mins or even after 15-20 mins. Please help.

I have the same issue right now.
csi-node.log
Normal   Scheduled    100s  default-scheduler  Successfully assigned michael/iep-codec-5dc8b567bc-pflrc to lnx-kub18
  Warning  FailedMount  90s   kubelet            MountVolume.MountDevice failed for volume "pvc-08ae0ddc-363e-41c0-9410-041a50fa3efd" : rpc error: code = Internal desc = Waiting for pvc-08ae0ddc-363e-41c0-9410-041a50fa3efd's CVC to be bound
  Warning  FailedMount  90s   kubelet            MountVolume.MountDevice failed for volume "pvc-4b6a6e4e-55d8-49e2-bf78-cb2d0bb68bc1" : rpc error: code = Internal desc = Waiting for pvc-4b6a6e4e-55d8-49e2-bf78-cb2d0bb68bc1's CVC to be bound
  Warning  FailedMount  77s   kubelet            MountVolume.MountDevice failed for volume "pvc-08ae0ddc-363e-41c0-9410-041a50fa3efd" : rpc error: code = Internal desc = Volume pvc-08ae0ddc-363e-41c0-9410-041a50fa3efd is not ready: Replicas yet to connect to controller
  Warning  FailedMount  76s   kubelet            MountVolume.MountDevice failed for volume "pvc-4b6a6e4e-55d8-49e2-bf78-cb2d0bb68bc1" : rpc error: code = Internal desc = Volume pvc-4b6a6e4e-55d8-49e2-bf78-cb2d0bb68bc1 is not ready: Replicas yet to connect to controller
  Warning  FailedMount  76s   kubelet            MountVolume.MountDevice failed for volume "pvc-08ae0ddc-363e-41c0-9410-041a50fa3efd" : rpc error: code = Internal desc = rpc error: code = Internal desc = object is being deleted: cstorvolumeattachments.cstor.openebs.io "pvc-08ae0ddc-363e-41c0-9410-041a50fa3efd-lnx-kub18" already exists
  Warning  FailedMount  73s   kubelet            MountVolume.MountDevice failed for volume "pvc-4b6a6e4e-55d8-49e2-bf78-cb2d0bb68bc1" : rpc error: code = Internal desc = rpc error: code = Internal desc = object is being deleted: cstorvolumeattachments.cstor.openebs.io "pvc-4b6a6e4e-55d8-49e2-bf78-cb2d0bb68bc1-lnx-kub18" already exists

I even uninstall my application (helm uninstall app) and waited for few minutes and and I reinstall the application I still obtain those errors.  So far I'm stucked.

I started a discussion here
https://kubernetes.slack.com/archives/CUAKPFU78/p1654176277287779


bug with two spinner in layout

when I add two spinner in my layout file ,  I click one spinner ,the other spinner's arrow animate a little ,

i am also

This should be fixed in this commit: 9e18b1f35f5d7017e3affe34e73b37e02c97ba2b.


Running cargo swift package

Hello,
I apologize if this isn't ideal to open a issue for this inquiry. I'm new to Rust and attempting to work through the example provided.

cargo swift init test
cd test
cargo swift package --name Test --platforms ios

Then Im getting this error:
✔ Generating Swift bindings...
 x Building target iOS
    cargo build --target aarch64-apple-ios --target-dir ./target

Failed due to the following error:
    Updating crates.io index
   Compiling proc-macro2 v1.0.67
   Compiling unicode-ident v1.0.12
   Compiling serde v1.0.188
   Compiling thiserror v1.0.48
   Compiling serde_json v1.0.107
   Compiling camino v1.1.6
   Compiling semver v1.0.18
   Compiling anyhow v1.0.75
   Compiling version_check v0.9.4
   Compiling paste v1.0.14
   Compiling minimal-lexical v0.2.1
   Compiling unicase v2.7.0
   Compiling itoa v1.0.9
   Compiling memchr v2.6.3
   Compiling ryu v1.0.15
   Compiling nom v7.1.3
   Compiling mime v0.3.17
   Compiling once_cell v1.18.0
   Compiling bytes v1.5.0
   Compiling log v0.4.20
   Compiling siphasher v0.3.11
   Compiling askama_escape v0.10.3
   Compiling fs-err v2.9.0
   Compiling plain v0.2.3
   Compiling weedle2 v4.0.0
   Compiling heck v0.4.1
   Compiling glob v0.3.1
error[E0463]: can't find crate for `core`
  |
  = note: the `aarch64-apple-ios` target may not be installed
  = help: consider downloading the target with `rustup target add aarch64-apple-ios`

error[E0463]: can't find crate for `compiler_builtins`

error[E0463]: can't find crate for `core`
  --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs:45:5
   |
45 | use core::mem::{self, MaybeUninit};
   |     ^^^^ can't find crate
   |
   = note: the `aarch64-apple-ios` target may not be installed
   = help: consider downloading the target with `rustup target add aarch64-apple-ios`

error[E0463]: can't find crate for `core`
  --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs:46:5
   |
46 | use core::{ptr, slice, str};
   |     ^^^^ can't find crate
   |
   = note: the `aarch64-apple-ios` target may not be installed
   = help: consider downloading the target with `rustup target add aarch64-apple-ios`

error: cannot find macro `debug_assert_eq` in this scope
  --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/udiv128.rs:44:5
   |
44 |     debug_assert_eq!(quot, n / d as u128);
   |     ^^^^^^^^^^^^^^^

error: cannot find macro `debug_assert_eq` in this scope
  --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/udiv128.rs:45:5
   |
45 |     debug_assert_eq!(rem as u128, n % d as u128);
   |     ^^^^^^^^^^^^^^^

error[E0405]: cannot find trait `Default` in this scope
  --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs:64:6
   |
64 | impl Default for Buffer {
   |      ^^^^^^^ not found in this scope

error[E0405]: cannot find trait `Copy` in this scope
  --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs:71:6
   |
71 | impl Copy for Buffer {}
   |      ^^^^ not found in this scope

error[E0405]: cannot find trait `Clone` in this scope
  --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs:73:6
   |
73 | impl Clone for Buffer {
   |      ^^^^^ not found in this scope

error[E0405]: cannot find trait `Copy` in this scope
   --> /Users/mha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/itoa-1.0.9/src/lib.rs:109:23
    |
109 |     pub trait Sealed: Copy {
    |                       ^^^^ not found in this scope

Some errors have detailed explanations: E0405, E0463.
For more information about an error, try `rustc --explain E0405`.
error: could not compile `itoa` (lib) due to 10 previous errors
warning: build failed, waiting for other jobs to finish...

I can't figure out what Im missing.
rustup target list | grep installed gives me this output:
aarch64-apple-darwin (installed)
aarch64-apple-ios (installed)
aarch64-apple-ios-sim (installed)
x86_64-apple-darwin (installed)
x86_64-apple-ios (installed)

And my active toolchain looks fine as well:
rustup show
Default host: aarch64-apple-darwin
rustup home:  /Users/mha/.rustup

installed targets for active toolchain
--------------------------------------

aarch64-apple-darwin
aarch64-apple-ios
aarch64-apple-ios-sim
x86_64-apple-darwin
x86_64-apple-ios

active toolchain
----------------

stable-aarch64-apple-darwin (default)
rustc 1.72.0 (5680fa18f 2023-08-23)

I have of course also tried cargo clean.
Would you be able to guide me or point me in the right direction?

I have fix with this: https://stackoverflow.com/questions/72504022/failed-to-follow-yew-tutorial-on-mac-m1-use-of-undeclared-type-vec       List of commands I have run:
rustup target remove wasm32-unknown-unknown
rustup self uninstall
brew uninstall rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add wasm32-unknown-unknown
cargo install --locked trunk
cargo clean
trunk clean
cargo install --locked wasm-bindgen-cli
And finally
trunk serve

@claudioitalian12, I appreciate your input!
You hit the nail on the head. The root cause of my issue was the Rust installation via Homebrew.
For the sake of future reference and anyone who might come across a similar issue, here are the commands I executed to rectify the situation:

rustup self uninstall
brew uninstall rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install cargo-swift
cargo swift package --name Test --platforms ios

And got this output: 🥳

On a related note, I found it peculiar that when using the Homebrew-installed Rust version, I didn't see any indication like Installing Toolchains. This added to my initial confusion.
Thanks once again for pointing me in the right direction!

Good point, I should make it clear that rustup is required for installing toolchains, i.e. showing a message that toolchain installation was skipped if rustup is not available

@martinmose Did you have rustup installed already when trying to run it with the homebrew version of Rust?
If yes, did you have the toolchains installed already? If yes, then it is expected that you don't get the "Installing toolchains" step. If no, I should look into this

@antoniusnaumann,
I'm fairly new to Rust, so before diving in, I looked into installing Rust via Homebrew. (On a side note, I have a personal preference for using Homebrew whenever possible.)
It does make logical sense that the installation script wouldn't display "Installing toolchains" if it's not actually installing anything. However, I noticed distinct differences in the installation behavior when using Homebrew compared to the current Rust installation method I've adopted (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh)


Feature Request: Integrate with Conversation tab

Hey there,
Great extension! A nice addition would be to be able to call it from the Conversation (Chat) tab. e.g. @myprompts "Convert from JS to TS"
A good example is here: https://github.com/microsoft/vscode-extension-samples/tree/main/chat-sample

@Djiit Would you like it behave like from a shortcut or print proposed changes in the chat?

Mostly print proposed changes in the chat. As an illustration, in this screenshot I'm invoking a saved prompt and the agent is responding in the chat. The code is untouched, only the conversation is ongoing.

(yeah, I was developing this kind of extension too, but happy to use yours, seems more advanced ;) )


Queries fail to fetch data from azure_key_vault_secret

Describe the bug
A clear and concise description of what the bug is.
keyvault.BaseClient#GetSecrets: Failure responding to request: StatusCode=401 -- Original Error: autorest/azure: Service returned an error. Status=401 Code="Unauthorized" Message="AKV10022: Invalid audience. Expected https://vault.azure.net/, found: https://management.azure.com/." (SQLSTATE HV000)
Need to figure out, what conditions it is failing, whether any specific permissions or underlying API change etc
Steampipe version (steampipe -v)
Example: v0.3.0
Plugin version (steampipe plugin list)
Example: v0.5.0
To reproduce
Steps to reproduce the behavior (please include relevant code and/or commands).
Expected behavior
A clear and concise description of what you expected to happen.
Additional context
Add any other context about the problem here.

Depends

Already addressed - https://github.com/turbot/steampipe-plugin-azure/blob/main/CHANGELOG.md#v0280-2022-06-09


REQUEST folder of tag models ?

where is the folder of downloaded tag models in windows?
here only is one model i have downlaoded 3 and all working fine
..\kohya_ss_Booru\interrogator_rpc\models\

c:\Users"userfolder".cache\huggingface\hub\


LFX Footer - Bottom Alignment Issue

Summary
LFX Footer - Bottom Alignment
Background
There is a white horizontal line at the bottom of the page - remove it.
Expected behavior
No extra white line at the bottom of the page.
Screenshots

Environment
Please complete the following information:

Environment:

[X] DEV
[ ] STAGING
[ ] PROD

Browser:

[X] Chrome/Brave
[ ] Firefox
[ ] Edge
[ ] Lynx

Version: v1.0.XX

Additional Context
N/A
References
N/A

Verified in windows 10 chrome and firefox


Localization Reloaded

This is issue to revise localization module in more details and track the related issues.
Proposal
After spend sometime in what we have already have in localization modules in terms of Database, APIs .. etc. I'd like to suggest and share some ideas of how localization could be.
1. Localization Module
Proposal
Change the localization tables to the following:
1. Localization_Cultures

Code
Name
Default

en-US
English (United States)
False

ar
Arabic
True

fr-FR
French (France)
False

2. Localization_Resources

Name
Value

Name1
{"en-US": "Value1_en-US","fr-FR": "Value1_fr-FR","ar": "Value1_ar"}

Name2
{"en-US": "Value2_en-US","ar": "Value2_ar"}

Expectation

Robust data infrastructure for localization
Ability to the localize resources from the admin
Flexibility & Extensibility to support content localization module afterward
Avoid creating SQL scripts per new culture

2. Content Localization Module
Proposal
Change the localization tables to the following:
1. Localization_Contents

Id
Value

0000-0000-0000-0000
{"ar": {"name":"name_ar", "price":"price_ar"}, "fr-FR": {"name":"name_fr-FR", "price":"price_frFR"}}

1111-1111-1111-1111
{"ar": {"title":"title_ar", "body":"body_ar"}}

2. Localization_ContentMappings

ContentTableName
ContentItemId
LocalizedContentId

CMS_Articles
65
0000-0000-0000-0000

Commerce_Products
101
1111-1111-1111-1111

Expectation

Robust data infrastructure for content localization
Ability to the localize contents from the admin
Avoid creating records or tables to store multi languages

/cc @thiennn

Thanks @hishamco
I have just implemented the localization for content.
I think it's possible to enable update localized from the admin without reload.
It's good to add some friendly way for admin to add new language pack.
Just some quick thought. Will check your proposal soon

I will try to check what you did soon, but hopefully to discuss the major things to avoid redundancy contribution

I don't think storing the Localization_Resources Value as the json string is a good idea. It will be hard to add or update

I don't think storing the Localization_Resources Value as the json string is a good idea.

I already suggested something similar in OrchardCore CMS

It will be hard to add or update

If it's manually it's right, but I will the SimplCommerce to deal with it on the behalf of the user using JSON APIs


Notification delay

There's a small delay (~200ms) between an action triggering a notification and the notification itself. Most noticeable when changing volume. Doesn't happen with xfce4-notifyd.
Wired version: 0.10.2.
Maybe it has something to do with polling interval?

Im noticing this too with last release, Ive built from master but not yet tested..

Yep, this is very likely a poll interval thing.  I haven't tested this, but it probably comes from dbus.rs:

pub fn process_dbus() {
    let conn = get_connection();
    loop {
        match conn.process(Duration::from_millis(1000)) {
            Ok(_) => (),
            Err(e) => eprintln!("DBus Error: {}", e),
        }
    }
}

I've been meaning to make that configurable.

Sorry, it's actually this one: https://github.com/Toqozz/wired-notify/blob/f4300acba8180f8fc6babc1a118f9b3753a2b052/src/main.rs#L164
Adding a config option now.

Fixed in 73bb268.  See idle_poll_interval option in wired.ron.


Update virtual-machines-common-sizes-general.md

Added missing max disks on Dv2 series VMs.

@andrewallen  -- thank you for your contribution!  We are reviewing our this content and will update it with the latest information from our engineering team. We have several related PRs, so we are going to roll the updates together into a new one.
With your permission, I'd like to close this PR in anticipation of this issue being resolved.  Is that ok with you?
FYI @cynthn
FYI @cynthn

#sign-off @andrewallen thanks for the contribution!


Youtube music player

Get the bot to be able to join a voice channel, and stream audio from youtube.
And have the ability to make user defined playlists.

[ ] Auto Play
[ ] Lyrics
[ ] youtube
[ ] soundcloud
[ ] Current song
[ ] skip
[ ] summon
[ ] playlist
[ ] add
[ ] remove
[ ] pause
[ ] resume
[ ] settings
[ ] clear
[ ] queue
[ ] volume
[ ] shuffle play
[ ] Admin skip

 Media Player


Making dot qualified expression configurable

What's done:

now dot qualified expression will be configured with 'maxCallsInOneLine' again

@nulls thank you


Extend getitem to Include Location Labels

In this PR, I propose an enhancement to the __getitem__ method in the dataset codebase.
Currently, the __getitem__ method returns just the data and class labels. This implementation limits its usage for some methods that could benefit from location labels. A notable example is GroupDRO.
In an effort to expand the functionality of the code, I've updated the __getitem__ method to also include location labels.

Hi
Thanks a lot for your interest in this project and the contribution. Just merged the commit. The example script had not been updated to work with the new __getitem__ so I made a commit to fix that. Thanks again, and I hope you enjoy using spawrious


Accept more file extensions from GrpcDocStringExtractor

Motivation:
Currently, Armeria accepts .dsc file only as gRPC descriptor set.
However some user might want to use another filename such as *.pb or *.bin.
Modifications:

Accept the following extensions from GrpcDocStringExtractor as gRPC descriptor set file.

.bin
.desc
.dsc
.pb
.protobin

Result:

Users can use a descriptor set filename what they want.

@ikhoon Missed updating site docs. :-) Please check the new commit!

Thanks, @hyangtack! 😄


json support

This change is

Reviewed 4 of 4 files at r1.
Review status: :shipit: complete! all files reviewed, all discussions resolved

Comments from Reviewable