There are 403 logs after deployment

I0302 07:57:40.557744       1 round_trippers.go:438] GET https://<IP_ADDRESS>:443/api/v1/pods?resourceVersion=1483856&timeout=8m9s&timeoutSeconds=489&watch=true 403 Forbidden in 2 milliseconds
I0302 07:57:40.557792       1 round_trippers.go:444] Response Headers:
I0302 07:57:40.557801       1 round_trippers.go:447]     Content-Type: application/json
I0302 07:57:40.557806       1 round_trippers.go:447]     X-Content-Type-Options: nosniff
I0302 07:57:40.557812       1 round_trippers.go:447]     Content-Length: 299
I0302 07:57:40.557817       1 round_trippers.go:447]     Date: Mon, 02 Mar 2020 07:57:40 GMT
I0302 07:57:40.557970       1 request.go:947] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"pods is forbidden: User \"system:serviceaccount:custom-metrics:custom-metrics-apiserver\" cannot watch resource \"pods\" in API group \"\" at the cluster scope","reason":"Forbidden","details":{"kind":"pods"},"code":403}
E0302 07:57:40.558086       1 reflector.go:283] k8s.io/client-go/informers/factory.go:133: Failed to watch *v1.Pod: unknown (get pods)
I0302 07:57:40.630759       1 reflector.go:160] Listing and watching *v1.Node from k8s.io/client-go/informers/factory.go:133
I0302 07:57:40.631215       1 round_trippers.go:419] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: adapter/v0.0.0 (linux/amd64) kubernetes/$Format" -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJjdXN0b20tbWV0cmljcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjdXN0b20tbWV0cmljcy1hcGlzZXJ2ZXItdG9rZW4tZHNkcnMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiY3VzdG9tLW1ldHJpY3MtYXBpc2VydmVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZDVjY2VlM2QtNWM1My0xMWVhLWJhMWItZmExNjNlZWMwYzg4Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmN1c3RvbS1tZXRyaWNzOmN1c3RvbS1tZXRyaWNzLWFwaXNlcnZlciJ9.B8TXbIa3NGvaCxW93anFsziH0FZPwGa64MYF1BkH-Z78Yzwt574jinf5Ai17UT0lpxP96xcuWOJ6vrGlfzHOZ298QcxMr8XIjCRH7xqYN1c6LfiAa18p0v4a4StO28vlHUVtykQ6LLIwEn5GLGUN4REBZ8iXS2KNoVt0dV_0JKpKdF1WYtF5vu2kEKDliNRN4G94ddcdjk8B4AH9ks5xS4rS5-kzzkP7Re4C5sW9RgbwRigndnMjbsOollkdDGg0GK1oAxsy7cY-GIwSr8Ey2aajfgVJ3QoibNY0rh4I0wukw-Gk3AnP2HReqhE2qnQNTMe_3i5OoB5E16nFSatepA" 'https://<IP_ADDRESS>:443/api/v1/nodes?limit=500&resourceVersion=0'

I don't know how to deal with these 403. There are a lot of them. Are they certificate issues or RBAC permissions

The error message is right there:
User \"system:serviceaccount:custom-metrics:custom-metrics-apiserver\" cannot watch resource \"pods\" in API group \"\" at the cluster scope","reason":"Forbidden"
I would double check if the role bindings, etc, are correctly applied. Check here for the yaml files-> https://github.com/DirectXMan12/k8s-prometheus-adapter/tree/master/deploy/manifests

hi I'm seeing the exact same error both for pods and for nodes.
I've checked the yaml files and all of them match exactly to the ones that are located in the repo.
any idea what could be wrong?

@nirrozenbaum Where is your kubernetes cluster hosted?
I'm not sure if a PAAS solution such as (EKS, GKE or AKS) allows you to get that type of access.
Also confirm if the deployed resources are correct with kubectl get <type> <name> -o yaml.

I found the issue, I fixed the  cannot watch resource problem by adding the verb watch in the cluster role yaml file.

I see that the examples in this repository don't contain the verb watch and even the resource nodes (here).
But the helm repository does (here) which means they have to be updated.
@nirrozenbaum are you willing to send a PR with this change?

@GMartinez-Sisti sure, I'll create a PR with the updated role.

btw, I think also this file has to be updated as well, isn't it?

Looks like it. Nice catch!

btw, I think also this file  has to be updated as well, isn't it?

fixed this in the helm chart 😄

created pull request to fix the issue.

fixed in #274


CIFS Mount

Can you share the syntax or sample .yaml on how to configure Plex to use a host mount that is pointing to a CIFS share with content to play in Plex? Thanks!

Solved it by creating a PV then a PVC and used --set extraData.claimName=name-of-claim billimek/plex


chore: include license text in crate artefact

Closes #86
Includes license texts in the crate archive - these were omitted by mistake.
Also:

Updates the license identifier to a valid SPDX identifier; use of / instead of OR is deprecated by cargo: https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields.
Prevent benchmarks from being accidentally published

Codecov Report

Merging #87 (092702f) into main (d063c77) will decrease coverage by 0.50%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #87      +/-   ##
==========================================
- Coverage   96.85%   96.35%   -0.51%
==========================================
  Files           4        3       -1
  Lines         191      192       +1
==========================================
  Hits          185      185
- Misses          6        7       +1

Impacted Files
Coverage Δ

pretty_assertions/src/printer.rs
95.58% <0.00%> (-3.66%)
:arrow_down:

...assertions_bench/benches/benchmarks/pretty_diff.rs

pretty_assertions/tests/macros.rs
98.00% <0.00%> (+0.04%)
:arrow_up:

Continue to review full report at Codecov.

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


Except for white and black, there will be obvious lag in the color panel when the mouse is moved.

Tested versions
v4.2.2.stable.official [15073afe3]
The problem always existsI still have this problem when testing version v4.3.dev5.official [89f70e98d]
System information
Win11 AMD Ryzen 7 5800H with Radeon Graphics       GTX1650
Issue description
I have an obvious problem of not following the color panel when I use it. This situation has existed for a long time.
I don’t know why I can’t publish the video on Github, so I can’t post the video of my problem.
Steps to reproduce
Create a ColorRect node, and then try to use the mouse to select a color in the box. White and black are not stuck, but other colors will obviously not follow.
Minimal reproduction project (MRP)
No

I don’t know why I can’t publish the video on Github, so I can’t post the video of my problem.

Is the video in MP4 or WebM format and smaller than 10 MB? You could try uploading it to YouTube as unlisted and link the video here.

Closing due to lack of response, if you are able to upload the video this can be reopened, but currently this cannot be investigated as there's not enough detail


[DNM][RFC] RPMsg-Lite and OpenAMP side-by-side

This pull request adds an example application using OpenAMP to do multiprocessor communication. It is adapted from the recently posted RPMsg-Lite example application, from PR #5960. This application is intended to provide a starting-point for comparison and benchmarking of RPMsg-Lite and OpenAMP, see issue #3065.
The relevant commit in this PR is the most recent commit. However, since the code is dependent on changes included in PR #5960, the commits from that PR is also included here.
I have added build instructions in a README.md file, located in samples/subsys/ipc/openamp/README.rst.
Some details:

The OpenAMP example uses the SRAMX RAM block as shared memory, to provide better separation between shared RAM and the RAM that is being used by the application. This also simplified the linking of the application.
Heap size had to be overridden in the default board configuration for both the cores in the LPC54114. This is because the heap size is needed (at compile-time) for libmetal, and when compiling libraries outside of the zephyr application folders, only the default board configuration is used.
Due to the use of static libraries, the order that the libraries are provided to the linker in matters. The libkernel.a must be linked last, and the CMakeLists.txt files contains code to fix this.

CC @stanislav-poboril @wjliang

Tenative comparison of executable sizes based on a build with default settings and GCC 7.2.1. The size of the image for the second core has been subtracted from the sizes of the .text section for the master applications.

Executable
.text
.data
.bss

RPMsg-Lite master
16782
328
15744

RPMsg-Lite remote
11040
128
8544

OpenAMP master
24000
664
9512

OpenAMP remote
18106
464
8456

Cannot we have both implementations in /ext? Is it not what is /ext intended for?
Why there are for example two crypto libraries (tinycrypt and mbedtls) supported? I can see a similar situation here...
Can we discuss on this?

@skordal could you please post also map files, you have used for code size comparison?
Did RPMSG-lite use static or dynamic allocation option? Default settings uses dynamic allocation option. There could be also used static to decrease codesize quite a bit.
Thanks, Petr

@PetrLukas I added the mapfiles to my comment above. I will get some numbers for RPMsg-Lite using the static API and add them to the table.

@skordal Thank you for analysis and map files.
I was trying to find what is reason for big difference in master BSS size. It seems that in case of RPMSG Lite shared memory buffers are included in statistics (rpmsg_sh_mem), while in case of openAMP implementation it is not. If it would be included it would add another 30kB.

#define SHM_START_ADDRESS       0x04000400
#define SHM_SIZE                0x7c00

Speed comparison - I think it more or less depends on placement of shared buffers. In case of OpenAMP they are placed in SRAMX. It may impact performance for big buffer transfers. We should pace shared buffers to the same SRAM for both implementations.

Thanks, I did not notice that the shared memory was included in the .bss section for the RPMsg-Lite code. I have updated the numbers to account for this.
I also did an experiment with the shared memory placement. Overall, there seems to be an average performance drop of around 1 % when using SRAMX. I added the numbers to the table in the comment above for comparison.

Hello,
I reviewed the figures concerning the code size provided by @skordal  and I tried to remove the zephyr code from the comparison and to keep only RPMsg-Lite  / OpenAMP RPMsg code.
The difference in code size is about 60%.
I attach the excell sheet, where the computation is done. Let me know if you find any error in this benchmark, which reflects more the reality about code size comparison between OpenAMP RPMsg and RPMsg-Lite.

B/CODE
remote
master

remote
master

lite
3106
3256

-60.8224
-58.9304

openamp
8174
7928

3.102926
REF

comparison.xlsx

@skordal @MaureenHelm should we close this now?

That's fine by me, there should be a new PR with a new example when OpenAMP is ready to be included in Zephyr.


Fix Notification merger bug

Notifications for a Name were not transferred to the surviving Name when the old Name is merged.
This left such Notifications orphaned. A side effect was that when the owner of the Notification attempted to list_interests, MO threw an error.
The bug and fix are discussed in https://www.pivotaltracker.com/story/show/129322105.

Coverage increased (+0.01%) to 87.805% when pulling a17a5a8d47d4f75faf57d15bd78dcc483aa47a58 on JoeCohen:notification-merge-bug into 6a81e378f7c54c0f8219ad4369a35e759a6c5842 on MushroomObserver:master.


Name of workflow that triggered the teams notification workflow

Hello,
Is it possible to know and to print the name of a workflow that was completed which triggered the current MS Teams workflow ?
Thank you.

Hi,
Following would suffice your need: https://github.com/marketplace/actions/microsoft-teams-notifications


Prepare for new release of Jira

Workflow links: https://github.com/atlassian-labs/atlassian-slack-integration-server/actions/runs/859170931, https://github.com/atlassian-labs/atlassian-slack-integration-server/actions/runs/859171427.

This issue will be addressed in #117 .


Add single-payload summary upload support to Routerlicious

Work Item
Describe the outcome you expect
Driver should be able to send a single Summary payload to the service, where it will be stored.
Approach

Enable single-payload summary uploads from client (#6291)
Add single-payload summary endpoint to Historian
Add summary endpoint to Gitrest where it will be taken apart and stored the same way summaries were before being a single-payload
Rollout support for single-payload summary uploads in r11s-driver behind policy flag

Open questions
Algorithm to deconstruct a single summary payload?
Additional context

Eventually, PragueGraph might be an alternative option to Git in Routerlicious.
Due to URL length limits in some browsers, summary size can be limited to ~600 trees. This will help us move past that blocker

Acceptance criteria
Summaries can be uploaded by the r11s-driver with one HTTP request.

Addressed by #8060


helm templating add empty line when using "nindent" in "define" bloc

Output of helm version:
version.BuildInfo{Version:"v3.5.3", GitCommit:"041ce5a2c17a58be0fcd5f5e16fb3e7e95fea622", GitTreeState:"dirty", GoVersion:"go1.15.8"}

Output of kubectl version:
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.10", GitCommit:"98d5dc5d36d34a7ee13368a7893dcb400ec4e566", GitTreeState:"clean", BuildDate:"2021-04-15T03:28:42Z", GoVersion:"go1.15.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.10", GitCommit:"98d5dc5d36d34a7ee13368a7893dcb400ec4e566", GitTreeState:"clean", BuildDate:"2021-04-15T03:20:25Z", GoVersion:"go1.15.10", Compiler:"gc", Platform:"linux/amd64"}

My deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: foo
  labels:
    app: foo
spec:
  selector:
    matchLabels:
      app: foo
  template:
    metadata:
      labels:
        app: foo
    spec:
      {{- include "pod" . | nindent 6 }}

My _pod.tpl:
{{- define "pod" -}}
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
  {{- toYaml . | nindent 2 }}
{{- end }}
serviceAccountName: foo
containers:
  - name: foo
    image: nginx:latest
{{- end }}

The result of helm template foo/ --debug:
# Source: foo/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: foo
  labels:
    app: foo
spec:
  selector:
    matchLabels:
      app: foo
  template:
    metadata:
      labels:
        app: foo
    spec:

      imagePullSecrets:
        - name: bar
      serviceAccountName: foo
      containers:
        - name: foo
          image: nginx:latest

There is an empty line after spec.template.spec. But if I swap imagePullSecrets and serviceAccountName in my _pod.tpl:
{{- define "pod" -}}
serviceAccountName: foo
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
  {{- toYaml . | nindent 2 }}
{{- end }}
containers:
  - name: foo
    image: nginx:latest
{{- end }}

So there is no empty line in my generated deployment.yaml:
# Source: foo/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: foo
  labels:
    app: foo
spec:
  selector:
    matchLabels:
      app: foo
  template:
    metadata:
      labels:
        app: foo
    spec:
      serviceAccountName: foo
      imagePullSecrets:
        - name: bar
      containers:
        - name: foo
          image: nginx:latest

I would expect to have no empty line in both cases. Is this a bug or did I miss something?

In your _pod.tpk, you have this line:

{{- with .Values.imagePullSecrets }}

Without a trailing dash, Go's text/template parser preserves all whitespace after the closing bracket, which in this case is a newline character.
If you add a trailing dash:

{{- with .Values.imagePullSecrets -}}

Then the newline character should no longer be present.
That is also why swapping imagePullSecrets and serviceAccountName in your _pod.tpl works, because

{{- define "pod" -}}

has a trailing dash.


kind: Don't wait for cluster readiness

When the default CNI is disabled, the k8s nodes won't become ready forever until CNI is installed. However, the containerlab waits for the cluster readiness which will never succeeds. To solve this issue, don't wait for the cluster readiness and let deploy command finish, so that we can install the CNI after that.
We could conditionally wait for the cluster readiness by checking cluster configuration (e.g., wait only when disableDefaultCNI=false), but it can be a bit confusing from user's standpoint and if users wish to wait, they can always do it by themselves, for example with kubectl wait command.

@YutaroHayakawa
I am hesitant to say that majority of the kind users would install a custom CNI, more meandering to say that most just need a regular cluster with most of the kind defaults (could be wrong).
So maybe it is better to be more explicit here and use the type option under the node level that could take two values:

blocking (default)
non-blocking

non-blocking would mean the cluster deployment stage won't block waiting for cluster to be rendered ready.
The topology would look like
  nodes:
    k01:
      kind: k8s-kind
      startup-config: k01-config.yaml
      type: non-blocking

/cc @steiler

I am hesitant to say that majority of the kind users would install a custom CNI, more meandering to say that most just need a regular cluster with most of the kind defaults (could be wrong).

Fair enough. Kind document also says This is a power user feature with limited support.
Regarding the solution, I like the direction to make a toggle, but using type field sounds a bit hacky. Is it really intended to be used in this kind of case? Also, it only allows having a single string value. We may want to introduce more knobs in the future. For example, kind create cluster command can take the flag like below, but we cannot specify them in ContainerLab as of today (--wait is one of them). In particular, I'm interested in exposing the --retain and --verbosity options, which are, again, niche use cases tho.
Creates a local Kubernetes cluster using Docker container 'nodes'

Usage:
  kind create cluster [flags]

Flags:
      --config string       path to a kind config file
  -h, --help                help for cluster
      --image string        node docker image to use for booting the cluster
      --kubeconfig string   sets kubeconfig path instead of $KUBECONFIG or $HOME/.kube/config
  -n, --name string         cluster name, overrides KIND_CLUSTER_NAME, config (default kind)
      --retain              retain nodes for debugging when cluster creation fails
      --wait duration       wait for control plane node to be ready (default 0s)

Global Flags:
      --loglevel string   DEPRECATED: see -v instead
  -q, --quiet             silence all stderr output
  -v, --verbosity int32   info log verbosity, higher value produces more output

So, instead of using type, how about introducing a new generic opaque field to expose node-type-specific options? Something like:
  nodes:
    k01:
      kind: k8s-kind
      startup-config: k01-config.yaml
      options:
        wait: 0s
        retain: true
        verbosity: 5

I'm happy to help with implementation.

I'm sharing your general opinion.
I am not sure if the type field is the most future proof variant for this switch. But I'm also lacking a better solution atm.
So well lets go with this approach for now.

We have the Extras knob under each node definition https://github.com/srl-labs/containerlab/blob/2d58102bcdf5b20a8da7db3aafb25664bb728873/types/node_definition.go#L68 that could be used to define kind-specific options.
We may leverage it, as it was already used for a similar case with a few other nodes

We have the Extras knob under each node definition

Ah, cool. Yeah, then I'll fix this PR to leverage it.

Done


GluonTS example airpassengers dataset not found

am trying to run the GluonTS example code, going through some struggle to install the libraries, now I get the following error:
FileNotFoundError: C:\Users\abcde\.mxnet\gluon-ts\datasets\airpassengers\test
The C:\Users\abcde\.mxnet\gluon-ts\datasets\airpassengers\ does exist but contains only train folder. Have tried reinstalling but to no avail. Any ideas how to fix this and run the example, even if finding the dataset in correct format elsewhere?

@RashidBakirov what version of gluonts are you running?

gluonts 0.11.3 installed with
pip install "gluonts[mxnet,pro]"
pip install "gluonts[torch,pro]"

This appears to be an issue with PandasDataset.
>>> test = PandasDataset(df, target="#Passengers")
>>> list(test)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/gluonts/dataset/pandas.py", line 173, in __iter__
    for entry in self._data_entries:
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/gluonts/dataset/pandas.py", line 148, in _pair_to_dataentry
    df = df.to_period(freq=self.freq)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/frame.py", line 11494, in to_period
    new_ax = old_ax.to_period(freq=freq)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/indexes/extension.py", line 98, in method
    result = attr(self._data, *args, **kwargs)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/arrays/datetimes.py", line 1137, in to_period
    return PeriodArray._from_datetime64(self._ndarray, freq, tz=self.tz)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/arrays/period.py", line 298, in _from_datetime64
    data, freq = dt64arr_to_periodarr(data, freq, tz)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/arrays/period.py", line 1066, in dt64arr_to_periodarr
    base = freq._period_dtype_code
AttributeError: 'pandas._libs.tslibs.offsets.MonthBegin' object has no attribute '_period_dtype_code'

Rather, it's an issue with pandas -- how surprising!
I've submitted a fix in #2462

This will be fixed in 0.11.4.
You can install the fixed version from GitHub until then:
pip install -U https://github.com/awslabs/gluonts.git

This appears to be an issue with PandasDataset.
>>> test = PandasDataset(df, target="#Passengers")
>>> list(test)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/gluonts/dataset/pandas.py", line 173, in __iter__
    for entry in self._data_entries:
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/gluonts/dataset/pandas.py", line 148, in _pair_to_dataentry
    df = df.to_period(freq=self.freq)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/frame.py", line 11494, in to_period
    new_ax = old_ax.to_period(freq=freq)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/indexes/extension.py", line 98, in method
    result = attr(self._data, *args, **kwargs)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/arrays/datetimes.py", line 1137, in to_period
    return PeriodArray._from_datetime64(self._ndarray, freq, tz=self.tz)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/arrays/period.py", line 298, in _from_datetime64
    data, freq = dt64arr_to_periodarr(data, freq, tz)
  File "/Users/schjaspe/.virtualenvs/fresh/lib/python3.9/site-packages/pandas/core/arrays/period.py", line 1066, in dt64arr_to_periodarr
    base = freq._period_dtype_code
AttributeError: 'pandas._libs.tslibs.offsets.MonthBegin' object has no attribute '_period_dtype_code'

I was getting this error as well, but somehow reinstalling gluonts several times seem to have fixed it.

This will be fixed in 0.11.4.
You can install the fixed version from GitHub until then:
pip install -U git+https://github.com/awslabs/gluonts.git

Thank you. I will give it a go.

I was getting this error as well, but somehow reinstalling gluonts several times seem to have fixed it.

computers!

This will be fixed in 0.11.4.
You can install the fixed version from GitHub until then:
pip install -U git+https://github.com/awslabs/gluonts.git

Now I am getting the following error:
ModuleNotFoundError                       Traceback (most recent call last)
Cell In [1], line 5
      3 from gluonts.dataset.pandas import PandasDataset
      4 from gluonts.dataset.repository.datasets import get_dataset
----> 5 from gluonts.model.deepar import DeepAREstimator
      6 from gluonts.mx import Trainer
      8 dataset = get_dataset("airpassengers")

ModuleNotFoundError: No module named 'gluonts.model.deepar'

Also, no test folder in airpassengers again :(

Looks like the website is outdated (here is the fix: https://github.com/awslabs/gluonts/pull/2467).
You now do
from gluonts.mx import DeeparEstimator

Have you tried using regenerate=True?

Looks like the website is outdated (here is the fix: #2467).
You now do
from gluonts.mx import DeeparEstimator

Thanks for your continuous assistance, but this is still not working :(
ImportError: cannot import name 'DeeparEstimator' from 'gluonts.mx' (C:\Users\abcde\Anaconda3\envs\gluontsenv\lib\site-packages\gluonts\mx\__init__.py)

Maybe try the following:
from gluonts.mx.model.deepar import DeepAREstimator

Looks like the website is outdated (here is the fix: #2467).

You now do

from gluonts.mx import DeeparEstimator

Thanks for your continuous assistance, but this is still not working :(
ImportError: cannot import name 'DeeparEstimator' from 'gluonts.mx' (C:\Users\abcde\Anaconda3\envs\gluontsenv\lib\site-packages\gluonts\mx\__init__.py)

Sorry, the A in DeepAR needs to be uppercase.

Thanks, both of the suggestions above worked and I have managed to run the example successfully.


DO NOT SUBMIT: test code coverage

Signed-off-by: tyxia<EMAIL_ADDRESS>
Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

/retest


Promise already satisfied

I am running MAVSDK v.0.42.0 on Ubuntu 20.04 inside a ROS2 node. Sometimes the node dies right after I initialize MAVSDK. The error however occurs non deterministic with a 1/20 chance. (I just started it over and over again and sometimes it crashes)
After a lot of try and error debugging, I noticed that it happens every time set_rate_battery fails. I couldn't figure out why it fails but every time it does I get the error Promise already satisfied.
[my-node-1] [INFO] [1630672509.497487560] [uuid63085.my_node_node]: Setting rate of battery failed
[my-node-1] terminate called after throwing an instance of 'std::future_error'
[my-node-1]   what():  std::future_error: Promise already satisfied
[ERROR] [my-node-1]: process has died [pid 145033, exit code -6, cmd '/home/user/my-project/install/my_node/lib/my_node/my_node --ros-args -r __node:=my_node_node -r __ns:=/uuid63085 --params-file /tmp/launch_params_vzif_yms'].

mavsdk_check_result_telemetry(telemetry_->set_rate_battery(2.0), "battery");
telemetry_->subscribe_battery([this](mavsdk::Telemetry::Battery battery) {
    auto msg = std_msgs::msg::Float32();
    msg.data = battery.remaining_percent;
    pub_state_battery_->publish(msg);
});

void MyClass::mavsdk_check_result_telemetry(mavsdk::Telemetry::Result result, string type)
{
    if (result != mavsdk::Telemetry::Result::Success) {
        RCLCPP_INFO(this->get_logger(), "%s", ("Setting rate of " + type + " failed").c_str());
    } else {
        RCLCPP_INFO(this->get_logger(), "%s", ("Setting rate of " + type + " succeeded").c_str());
    }
}

Do you use futures/promises in your code? Or is this happening in the MAVSDK side?

I do not use any futures in my code. I used a future in the system discovery before (like in the example) but I replaced it with busy waiting to narrow down the problem.
So it must be on MAVSDK side as I could not imagine any side-effects with ROS2.
It happens always the the result of telemetry_->set_rate_battery() is not success.

I have had this happen too when using the sync functions. It seems to be related to retrying commands

I did some further testing and figured out, that the result is CommandDeniedbefore the error occurs. I can't say if the behavior is unique to this result though.
I am currently testing it in SITL but it also happens when connected to a flight controller.
To reproduce the described behavior I have a disarmed copter in SITL and restart the software until I get the error. It takes approximately 20 restarts until the error occurs - sometimes even more.

I have seen this happen in CI tests recently as well. Could not track it down yet.

After some investigating I tracked the error down to: https://github.com/mavlink/MAVSDK/blob/f4987b17a0f766969efb2593e28d57c2c46c000e/src/core/mavlink_commands.cpp#L48-L56 It seems as the first result is a CommandDenied as mentioned above. However, just a moment later another result of the type Success is provided. This leads to std::future_error: Promise already satisfied.  During further investigating I found this LogWarn Message in a comment in the do_work() function, which handles the _work_queue: https://github.com/mavlink/MAVSDK/blob/f4987b17a0f766969efb2593e28d57c2c46c000e/src/core/mavlink_commands.cpp#L290-L303
After uncommentating the Warning Message I discovered, that the Error always occurs after this Warning was sent. Makes sense, as a the result is set to CommandDenied in the same if-statement.
After also uncommenting https://github.com/mavlink/MAVSDK/blob/f4987b17a0f766969efb2593e28d57c2c46c000e/src/core/mavlink_commands.cpp#L99-L100 and https://github.com/mavlink/MAVSDK/blob/f4987b17a0f766969efb2593e28d57c2c46c000e/src/core/mavlink_commands.cpp#L280 one can see these Logging messages:
[11:31:25|Debug] Command 511 to send to 1, 1 (mavlink_commands.cpp:99)
[11:31:25|Debug] sending it the first time (511) (mavlink_commands.cpp:280)
[11:31:25|Debug] sending it the first time (511) (mavlink_commands.cpp:280)
[11:31:25|Warn ] A command cannot be sent if another command with the same command_id is still processing! Ignoring command 511 (mavlink_commands.cpp:291)
[11:31:25|Debug] sending it the first time (511) (mavlink_commands.cpp:280)
terminate called after throwing an instance of 'std::future_error'
what():  std::future_error: Promise already satisfied

In my opinion this is due to the fact, that do_work() realizes, that another command with the same ID exists and ignores it but why does it return CommandDenied? Shouldn't it just skip and and during the next iteration (or whenever the previous command with the same ID is done) it takes care of this command?
I tried it by commenting out https://github.com/mavlink/MAVSDK/blob/f4987b17a0f766969efb2593e28d57c2c46c000e/src/core/mavlink_commands.cpp#L295-L300 and setting the rate worked consistently (at least for 100 consecutive tries). During these 100 tries the Warning due to another command with the same ID still being processed occured 8 times, which also leads to the question why this even happens in the first place.

It is expected that the second command receives a CommandDenied result. We don't want to retry it later, we delegate that to the user.
Now the thing is that there are two separate commands, and they should use two separate promises. Your bug suggests that maybe there is a confusion somewhere and that both results are sent to the same command :thinking:. Could it be?

Now the thing is that there are two separate commands, and they should use two separate promises. Your bug suggests that maybe there is a confusion somewhere and that both results are sent to the same command thinking. Could it be?

That's an interesting thought.

@fas2037 do you have easy steps or a setup where it's easier to trigger this?

@julianoes with this setup I got the error for approximately 5% of my tries:
#include <mavsdk/mavsdk.h>
#include <mavsdk/plugins/action/action.h>
#include <mavsdk/plugins/geofence/geofence.h>
#include <mavsdk/plugins/mavlink_passthrough/mavlink_passthrough.h>
#include <mavsdk/plugins/mission_raw/mission_raw.h>
#include <mavsdk/plugins/telemetry/telemetry.h>
#include <mavsdk/plugins/param/param.h>

#include <chrono>
#include <functional>
#include <future>
#include <iostream>
#include <thread>

using namespace mavsdk;
using std::chrono::seconds;

void usage(const std::string& bin_name)
{
    std::cerr << "Usage : " << bin_name << " <connection_url>\n"
              << "Connection URL format should be :\n"
              << " For TCP : tcp://[server_host][:server_port]\n"
              << " For UDP : udp://[bind_host][:bind_port]\n"
              << " For Serial : serial:///path/to/serial/dev[:baudrate]\n"
              << "For example, to connect to the simulator use URL: udp://:14540\n";
}

std::shared_ptr<System> get_system(Mavsdk& mavsdk)
{
    std::cout << "Waiting to discover system...\n";
    auto prom = std::promise<std::shared_ptr<System>>{};
    auto fut = prom.get_future();

    // We wait for new systems to be discovered, once we find one that has an
    // autopilot, we decide to use it.
    mavsdk.subscribe_on_new_system([&mavsdk, &prom]() {
        auto system = mavsdk.systems().back();

        if (system->has_autopilot()) {
            std::cout << "Discovered autopilot\n";

            // Unsubscribe again as we only want to find one system.
            mavsdk.subscribe_on_new_system(nullptr);
            prom.set_value(system);
        }
    });

    // We usually receive heartbeats at 1Hz, therefore we should find a
    // system after around 3 seconds max, surely.
    if (fut.wait_for(seconds(3)) == std::future_status::timeout) {
        std::cerr << "No autopilot found.\n";
        return {};
    }

    // Get discovered system now.
    return fut.get();
}

int main(int argc, char** argv)
{
    if (argc != 2) {
        usage(argv[0]);
        return 1;
    }

    Mavsdk mavsdk;

    ConnectionResult connection_result = mavsdk.add_any_connection(argv[1]);

    if (connection_result != ConnectionResult::Success) {
        std::cerr << "Connection failed: " << connection_result << '\n';
        return 1;
    }

    auto system = get_system(mavsdk);
    if (!system) {
        return 1;
    }
    auto action = Action{system};
    auto telemetry = Telemetry{system};
    auto mavlink_passthrough = MavlinkPassthrough{system};
    auto mission_raw = MissionRaw{system};
    auto geofence = Geofence{system};
    auto param = Param{system};

    if (telemetry.set_rate_position(20.0) != Telemetry::Result::Success){
        std::cout << "Setting Rate failed" << std::endl;
    } else {
        std::cout << "Setting Rate succeeded" << std::endl;
    }

    while (true){
    }
}

Nice, with this example I can reproduce it! Thanks. Let's see...

Fix coming: https://github.com/mavlink/MAVSDK/pull/1545


API Deprecated

Describe the bug
After trying to create a fine-tune job for model gpt-3.5-turbo-0613 i see response:
error:
  message: 'gpt-3.5-turbo-0613 can only be fine-tuned on the new fine-tuning API (`/fine_tuning/jobs`).
    This API (`/fine-tunes`) is being deprecated. Please refer to our documentation
    for more information: https://platform.openai.com/docs/api-reference/fine-tuning'
  type: invalid_request_error
  param:
  code:

To Reproduce
Steps to reproduce the behavior:
        response = client.finetunes.create(
          parameters: {
            training_file: file_id,
            model: "gpt-3.5-turbo-0613"
        })

Expected behavior
It should use new api endpoint for "gpt-3.5-turbo" and other recent models

Fixed in v6


Add divriots.com to sites.yml

Added divriots.com to _data/sites.yml
Link to GT Metrix results: https://gtmetrix.com/reports/divriots.com/s0eugYx9/

Sorry. Small error from the template copy-pasting adding too much indentation.
It should be fixed now.

Yep. :)
Thanks!


Range of Verses

Retrieve ranges of verses, verbosity option?
i.e Genesis 1:2-3

done in 1fad67c7aa116bd28b2c0c9f30392d9a6ec6ce3d


datagrid rowfocuse

after upgrade to V2-rc1, I found that rowfocused does not raised anymore. so I check code and found that these lines
Blazor.registerCustomEventType('cellfocus', {
        browserEventName: 'cell-focused',
        createEventArgs: event => {
            return {
                cellId: event.detail.attributes['cell-id'].value
            };
        }
    });
    Blazor.registerCustomEventType('rowfocus', {
        browserEventName: 'row-focused',
        createEventArgs: event => {
            return {
                rowId: event.detail.attributes['row-id'].value
            };
        }
    });

commented on
Microsoft.Fast.Components.FluentUI.lib.module
are you going to remove it on next release?

I found some issues with this when implementing the QuickGrid. Will try it again now that that integration is finished up.

after any dom event, we have a rerender process. and this is caused of increasing columns on column
I think we must prevent re render, and handle it on "OnParameterSet"

Fixed with merging in your PR. I've made some code changes and added samples to DataGridTemplateColumns2.razor


Replace cached_property with backports.cached_property

updated dependency to backports.cached_property
Description
Removed older cached_property
installed new backports.cached_property
updated references
Types of Changes

[ ] Core
[ ] Bugfix
[ ] New feature
[x] Enhancement/optimization
[ ] Documentation

Issues Fixed or Closed by This PR
Closes #1517
Checklist

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] I have tested the changes and verified that they work and don't break anything (as well as I can manage).

Hi, thanks for contributing to Strawberry 🍓!
We noticed that this PR is missing a RELEASE.md file. We use that to automatically do releases here on GitHub and, most importantly, to PyPI!
So as soon as this PR is merged, a release will be made 🚀.
Here's an example of RELEASE.md:
Release type: patch

Description of the changes, ideally with some examples, if adding a new feature.

Release type can be one of patch, minor or major. We use semver, so make sure to pick the appropriate type. If in doubt feel free to ask :)
Here's the tweet text:
🆕 Release (next) is out! Thanks to Rishi Kumar Ray for the PR 👏

Get it here 👉 https://github.com/strawberry-graphql/strawberry/releases/tag/(next)

@BryceBeagle can you please review the PR now

@patrick91 I have updated your changes. Please do the review

@RishiKumarRay thanks! We are missing the RELEASE.md file as suggested by the bot above, can you add it?
There's also a couple of failures related to mypy, can you add a type ignore on strawberry/field.py:135?

@patrick91 Hi, Patrick I am sorry to say but i have messed up with my repository that i forked and I also don't know how to add this , I was only able to commit your suggestions , I feel i won't be able to do

@patrick91 Hi, Patrick I am sorry to say but i have messed up with my repository that i forked and I also don't know how to add this , I was only able to commit your suggestions , I feel i won't be able to do

if you want I can try to help with that on discord :)

Yeah please let me message you there @patrick91

Yeah please let me message you there @patrick91

I think you can message me here -> patrick.py#0235
or you can join the strawberry discord http://strawberry.rocks/discord

Thanks for contributing to Strawberry! 🎉 You've been invited to join
the Strawberry GraphQL organisation 😊
You can also request a free sticker by filling this form: https://forms.gle/dmnfQUPoY5gZbVT67
And don't forget to join our discord server: https://strawberry.rocks/discord 🔥


switch axis

Pillow images are define as W, H, C

Oh True, I made the confusion with the resize my bad !

done in #124


SAK-45579 Assignments use sorted collections for persistence entities

https://jira.sakaiproject.org/browse/SAK-45579

This no longer needed as this was solved by #9651


Per layer noise config for palettes

Being able to define different noise settings per layer of blocks within a noise palette would be very handy - lets say you wanted the top layer of blocks to be organized by blobs of cellular noise, then the layer below that to be a static arrangement of blocks. This wouldn't be possible with the current config options (you could do it with absolute noise but that doesn't factor in terrain shape).
Could be configured simply like so:
layers:
  - materials:
      - "minecraft:ice": 1
    noise:
      noise-stuff
    layers: 1
  - materials:
      - "minecraft:water": 1
    noise:
      noise-stuff
    layers: 1

I will likely implement something similar to the example, where the noise key (which will probably be called distribution) is optional, and if it is not present, the layer uses the noise function defined in the root.

I will likely implement something similar to the example, where the noise key (which will probably be called distribution) is optional, and if it is not present, the layer uses the noise function defined in the root.

Implemented in 20de531c8fdc3c7adb808e2baa0d0f0325cabb15

Implemented in 20de531c8fdc3c7adb808e2baa0d0f0325cabb15


[AutoPR apimanagement/resource-manager] Added example for template params

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/4602

This PR has been merged into https://github.com/Azure/azure-sdk-for-python/pull/3106


fix: linter warnings

When compiling the linter complained that php8x was not defined. I fixed it using rustc-check-cfg as defined here.
The compiler also complained that cfg(docs) was invalid. It's because it should be cfg(doc). I updated that. After updating, the compiler mentioned that feature(doc_cfg) was only available in nightly so I update the embed Dockerfile to reflect that.

@ptondereau any idea what could be a plan to move on with this?

@ptondereau that's exactly what this PR does: only use nightly 😉

Some of this is also solved in #320 as I needed to make clippy happy.

@Xenira yeah, but considering @danog didn't seem to approve your changes, I went for a smaller change so that we can iterate.

@jdrouet ye, just wanted to make sure you've seen it.
tbh i don't know what to change to get it merged. Did the bare minimum to get ci woking again.

Agreed. I don't know if this repository will move forward at anytime soon.
Maybe @danog or @davidcole1340 would consider moving this repository to an org with more people that could contribute?

If it doesn't Ill probably create my own repo.
Have a bunch of changes locally that I would like to contribute, but am blocked by CI and can't wait 2 months on each of those.
No hard feelings towards the maintainers. Just want to move forward.

Regarding CI:

Stable and unstable are tested in CI. These changes only work on unstable (https://github.com/davidcole1340/ext-php-rs/actions/runs/10935703203/job/30365113910?pr=324#step:12:256)
Macos will also fail because of clang/llvm (#320)

I think on common issue could be the use of unstable features. Removing those would fix some CI issues.

Current CI failures are caused by #331

@jdrouet rebased with working master pipeline

Without looking further into this and correct me if I am wrong:
Merging this would mean we loose stable support. Would like to avoid that. Guess same point as https://github.com/davidcole1340/ext-php-rs/pull/324#discussion_r1766474253 made.

@Xenira the problem is that this crate has many dependencies on nightly features. This introduces some errors at build time and makes it harded to reproduce the build. It can also be unstable over time considering the nightly features are, by definition, not sure to remain the same or land in stable. I'd suggest to remove them to only rely on stable features. I can do it if you agree with that.


[LoadDigraph] edge to subgraph

File:
Resources\test\Issues[LoadDigraph] edge to subgraph\edge_subgraph.dot
Resources\test\Issues[LoadDigraph] edge to subgraph\large_graphs1.dot
Resources\test\Issues[LoadDigraph] edge to subgraph\large_graphs2.dot
Throws stack empty exception.

Will work thanks for pointing out

issue fixed
please see commit 3825b9a276ec8b0e7cc8f001fbe91f8b8c3e9838


Split out paged response types into its own header and re-enable KeyLabel Entity field.

Part of https://github.com/Azure/autorest.cpp/issues/402
Follow-up from API review discussion

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-data-appconfiguration-cpp


RuntimeException: startPreview failed

Caused by: java.lang.RuntimeException: startPreview failed
at android.hardware.Camera.startPreview(Native Method)
at com.androidhiddencamera.CameraPreview.startCameraInternal(CameraPreview.java:158)

Do you got any solution for this issue


Import all terminals and rules in a file

Hello,
is there a way to import all the terminals and rules defined in a file using the %import keyword?
Ex. %import constants.*
given the constants.lark file.
Thanks,
Luca

Hi, currently that is not possible, sorry. We can keep the issue open as a feature request

But, as you probably know, you can import several rules/terminals on one line:
%import constants (const1, const2, CONST3, CONST4)

Yes I know, thank you very much!

would find this very useful as well


Multiple security patches in dependencies

Updates to mitigate vulnerabilities in dependencies or sub-dependencies:
Critical org.thymeleaf:thymeleaf Sandbox Bypass
High net.minidev:json-smart Denial of Service (DoS)
Medium org.yaml:snakeyaml Arbitrary Code Execution
Medium com.squareup.okio:okio-jvm Denial of Service (DoS)
Low com.google.guava:guava Information Disclosure
Low com.google.guava:guava Creation of Temporary File in Directory with Insecure Permissions
Low org.jetbrains.kotlin:kotlin-stdlib Information Exposure

@LisaWellman @pbhallam @klwhaley @evbaron: any chance of getting these security fixes merged and released?

@LisaWellman @pbhallam @klwhaley @evbaron: any chance of getting these security fixes merged and released?

Reviewing now!  Will work with @LisaWellman to get a release out as well.


⚠ Bofrost.de has degraded performance

In 5bf41e6, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1881 ms

Resolved: Bofrost.de performance has improved in a36a0ea after 1 hour, 12 minutes.


Things you have to fix

Each link must end with a period
Don't mention Construct 2 in descriptions.
Bitballoon needs a description

@itsjtwright If I replace "Construct 2" by "the editor" for example, is it right ?

Possibly "the engine"? I think of construct 2 as an engine

I would try sending a pr to awesome now, seeing what the lead guy says.

ok thanks :)


Fixed wrong example in readme yaml

Fixed a wrong description in yaml example in README.

Thanks, @imjn


Sample projects not opening when Scratch Cat Sprite is in it

Sample projects won't open when the Scratch Cat Sprite is included in the project.
This is probably because you had to remove the Cat from the Sprite Library,

Ah yes cat removal can be tricky. :)
JFo

Actually there are 3 possible solutions:

Add Cat to the distribution (but I think there was a reason not to do this)
Replace Cat by Tic in all samples with Cat (4 samples effected)
Add Cat.svg to the samples folder and replace all  "md5": "Cat.svg" by  "md5": "samples/Cat.svg", so application will use Cat.svg from the samples folder (4 samples effected)

For me solution #3 is the most logical.

@jfo8000 I can make a pull request with fix. Just let me know how better to fix:

Add Cat.svg to the samples folder (so it will be used only in samples)
Replace Cat by Tic in the samples


Rename run_program to just run

Summary
Fixes #435
Details and comments

@psschwei we should rename all appearances in documentation files and in jupyter notebooks samples as well, right?


Use provided GITHUB_* URL variables

Here's the initial implementation of the GitHub URLs part of #86.
There is also the option of adding these variables to the CLI parameters and using the env clap attribute to read the defaults, but I can't think of a use case where someone would realistically want to run the action on a self-hosted GitHub instance but delete images from central GitHub or vice versa.

Something similar to your example was my first thought as well, but then I noticed that the urls module would be better off staying without IO code (so no environment variable reading) and thus cleanly unit-testable. So reading all config values (args and env) should ideally be outside the specialized, pure modules. main seemed like a good interim location.
The UrlBases struct is not my favorite permanent solution either. The URL fields could instead be added to the Input struct and loaded from CLI parameters / env / default, which clap would support nicely. But that seemed to significant of a change for now. I'm beginning to like this variant more, though, since it would allow users to use the CLI outside GitHub Actions and still target self-hosted GitHub packages.
Another idea might be to introduce a new Config struct, which would contain Input plus all extra values (like the URLs) that should only be read from environment variables. That, too, would need a new module or a rework / rename of the args module. It may be a better idea to instead just decide on letting every parameter be set by CLI as well and use Input only.
With both variants, one could then pass either Input or Config (instead of just Account) to Urls::new, to avoid having to add more parameters over time if you want to make everything more configurable in the future.
What do you think about these options?

The URL fields could instead be added to the Input struct and loaded from CLI parameters / env / default, which clap would support nicely. But that seemed to significant of a change for now. I'm beginning to like this variant more, though, since it would allow users to use the CLI outside GitHub Actions and still target self-hosted GitHub packages.

What would this look like? I think I would prefer this 👍

New version is up.
url's handling of slashes is in some cases surprising (see servo/rust-url#808 and servo/rust-url#713), but I liked the idea of getting the URL format immediately checked by clap, so I went with Url instead of String.
Test coverage seems decent already. With docs I wasn't sure what you would prefer, so I might leave the rest (Readme, possible doc comments) to you.

I made a few changes on top of your branch in https://github.com/snok/container-retention-policy/pull/91 @rkarp 👍 I'm not good enough at git to push to this PR without a few minutes more googling than I have available right now 😅
It:

Replaces Url::try_from with Url::parse, since try_from just calls parse under the hood
Adds logging when non-default URLs are loaded
Adds a test for the logging
Makes the default urls global (personal preference)

and I tested the code with and without the try_parse_url code, and it worked for both, so I removed that.
Want to take a look and see if you agree with the changes made?

The changes look good, except removing try_parse_url. That one is needed, otherwise the URL generation would break if the user provides a URL with a path, but no / at the end, like https://foo.com/bar. Additionally, there's the issue of Url.join overwriting the final path component if it doesn't end with /, so that's a good reason to make sure that URL Strings that refer to paths should always end with / before converting them to Url.
There are also some small inconsistencies in the refactoring commits that I could clean up (I'm quite good at git). I could remove your last commit and squash the refactoring commits, which would be the easiest way to clean everything up. Is that OK with you?

I've fixed your commits and also added a correction for logging. This wouldn't have worked correctly since Url::parse adds a / on an empty path, as mentioned:
input.github_server_url.as_str() != DEFAULT_GITHUB_SERVER_URL

Sounds good @rkarp!

Alright, done.

Cheers! Just a quick note to say I've left for holidays, so will get this merged and released soon, but it might take a few days. Thanks again for the work here @rkarp 👍

Sure, there's no hurry!


Server Configuration: The displayed Configuration Status is not synchron with the status in the data modell

The status of the server scheduler configuration is not displayed synchronous to the data model.
Further more, if a configuration is switched from active to stopped or vice versa all configuration are getting stopped or activated.

This problem only affects setups with JDBC repositories.

Bug fixed on branch: bugfix/server-scheduler-status-change

fixed in version 2.1.2


Kepler should have a rogues' gallery of unusual behaviour.

The gallery should include
EPIC 212285811
Credit: Hugh Osborn (tweet)
Shows cross talk from a bright moving object causing a negative flux source to move over the target.

EPIC 201736342
Credit: Ryan Ridden-Harper
Shows a moving object going through a stationary point close to a K2 target.

EPIC 201562141
Credit: @christinahedges
Shows cross talk from a bright star on a nearby channel right beside a beautiful galaxy.

Additional rogues' gallery candidates:

EPIC211741417 in C16 shows extreme rolling bands around BKJD 3307-3310 (cf. https://twitter.com/exohugh/status/1044234436009750528 ).
KOI 6.01 = KIC 3248033 is a false positive planet due to a nearby EB (KOI 1759.01  = KIC 3248019) which is 4 pixels away.
KOI 8.01 = KIC 5903312 is also a false positive planet due to an EB (KOI 3692.01 = KIC 5903301) about 2 pixels away.

A pathological case of a nearby resolved EB inducing periodic "flares" in its (Eleanor) light curve: TIC 327996093


Makefile: determine GOROOT for ease of use with make

We're all used to make.  So are vim and other editors. This patch allows users to take advantage of their editors make support without a special case in their configs. This comes from @kr patch in doozer/doozerd.

nevermind.


Use #[track_caller] attribute

I sometimes get panics like this:
thread 'tests::test_verify_fn' panicked at 'range ..22 out of bounds: 10', .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/bitvec-1.0.1/src/slice/api.rs:2702:1

It is not very helpful error because it doesn't show where error happened in my code (which is the most likely cause of such errors.
Rust has #[track_caller] that can make error point to the code that user of the library wrote instead and it would be a significant improvement for developer experience.

A change adding #[track_caller] got merged a few weeks ago. This should be resolved by the next release.

Actually I've opened https://github.com/ferrilab/bitvec/pull/230 after running into another crash without the attribute.


Queue

Coverage decreased (-0.1%) to 93.86% when pulling 5890ae6ac161bb87b4113872be1e31785d6d00e9 on queue into be68ed872568f9b4b52fb99be711d8b286731461 on master.

Coverage decreased (-0.1%) to 93.86% when pulling 7ba005679e63f9d56dda72ba9f97f3ff7b671026 on queue into be68ed872568f9b4b52fb99be711d8b286731461 on master.


Add ba-call-highlight plugin

A plugin that highlights the current barbarian assault call

Your config group should be more distinctive instead of "main", usually the plugin name in all lowercase with no spaces: https://github.com/rugg0064/ba-call-highlight/blob/8b47dcea94e5ef915cad37314f9d7e81db1ff037/src/main/java/com/ba/call/highlight/baCallHighlightConfig.java#L9
You should remove the ExamplePlugin and ExampleConfig files: https://github.com/rugg0064/ba-call-highlight/tree/8b47dcea94e5ef915cad37314f9d7e81db1ff037/src/main/java/com/example


Unable to delete resources after creating snapshot or image

After creating the image it show an error in deleting security group.

alicloud-ecs: Error delete security group failed, may still be around: Aliyun API Error: RequestId: B9212A42-1E07-45A8-9AE0-D940217B0234 Status Code: 403 Code: DependencyViolation Message: There is still instance(s) in the specified security group.

The ECS instance created by packer is still in stopped state and I need to release it manually and I also need to delete the VPC, VSWitch manually.

@royge  I have logic to check whether the depended instance is been deleted in a time duration, In normal case, it should be deleted. How offen is this happy?

@royge I have add some logic to reduce the hand resource clean possibility, you can try.
Thanks.

@zhuzhih2017 I wasn't able to check this issue again. I will try it again. Thank you.


add ability to delete packages from channels

Problem description
Doesn't look like that's currently possible

Assuming you refer to the prefix.dev/channels then this is indeed made a bit obscure as we want to demotivate removing packages and motivate to put a package on there with a new version.
But if you really need it to fix a mistake, or put some bad stuff on a channel you can use the Rest api: https://prefix.dev/docs/prefix/api#rest-endpoints


Source Dataset autocompletion does not work

Source Dataset (required)
Graph name to publish to the Databus
reports an error instead of suggestions

This issue is probably due to my port configuration in the cmem orchestration. So I will close it for now.


Speedup windows by only fetching the necessary blocks

Now from_path is aware of blocks, so it will not fetch permissions and owner and group data if they are not needed.
That creates massive speedup on Domain machines.
Based on the discussion in: https://github.com/Peltoche/lsd/pull/297

[ X] Use cargo fmt
[ ] Add necessary tests
[ ] Add changelog entry

Codecov Report

Merging #475 (b422660) into master (1396c59) will decrease coverage by 0.37%.
The diff coverage is 71.73%.

@@            Coverage Diff             @@
##           master     #475      +/-   ##
==========================================
- Coverage   84.58%   84.20%   -0.38%
==========================================
  Files          35       35
  Lines        3353     3431      +78
==========================================
+ Hits         2836     2889      +53
- Misses        517      542      +25

Impacted Files
Coverage Δ

src/core.rs
0.00% <0.00%> (ø)

src/meta/permissions.rs
35.41% <ø> (ø)

src/meta/mod.rs
18.80% <36.36%> (+1.68%)
:arrow_up:

src/flags/blocks.rs
93.36% <100.00%> (-0.45%)
:arrow_down:

src/icon.rs
97.61% <100.00%> (ø)

src/meta/filetype.rs
81.72% <100.00%> (ø)

src/meta/name.rs
93.77% <100.00%> (ø)

src/sort.rs
97.97% <100.00%> (ø)

src/flags/symlink_arrow.rs
88.00% <0.00%> (-12.00%)
:arrow_down:

src/main.rs
0.00% <0.00%> (-10.00%)
:arrow_down:

... and 10 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 1396c59...b422660. Read the comment docs.

Codecov Report

Merging #475 (b422660) into master (1396c59) will decrease coverage by 0.37%.
The diff coverage is 71.73%.

@@            Coverage Diff             @@
##           master     #475      +/-   ##
==========================================
- Coverage   84.58%   84.20%   -0.38%
==========================================
  Files          35       35
  Lines        3353     3431      +78
==========================================
+ Hits         2836     2889      +53
- Misses        517      542      +25

Impacted Files
Coverage Δ

src/core.rs
0.00% <0.00%> (ø)

src/meta/permissions.rs
35.41% <ø> (ø)

src/meta/mod.rs
18.80% <36.36%> (+1.68%)
:arrow_up:

src/flags/blocks.rs
93.36% <100.00%> (-0.45%)
:arrow_down:

src/icon.rs
97.61% <100.00%> (ø)

src/meta/filetype.rs
81.72% <100.00%> (ø)

src/meta/name.rs
93.77% <100.00%> (ø)

src/sort.rs
97.97% <100.00%> (ø)

src/flags/symlink_arrow.rs
88.00% <0.00%> (-12.00%)
:arrow_down:

src/main.rs
0.00% <0.00%> (-10.00%)
:arrow_down:

... and 10 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 1396c59...b422660. Read the comment docs.

Hey, I had given implementing this a shot after out discussions in https://github.com/Peltoche/lsd/pull/297 . There is one issue in that we use this information to get color/icon in for the name block. Due to this skipping this just because we do not have a permissions block is not really a good idea.
With that out of the way, I was not sure what the best way forward would be. One  solution that comes to mind is to have something like windows-mode like thing in the config but that for some reason does not feel right. Or, switch to showing only owner permissions in case of  windows by default with an override like unix-mode in config. But I am not sure if that is the best way to go about it.
We could however handle the cases in which we error out when trying to fetch "world" permissions buy dropping a ? in the permissions field(???rw-rwx)  but displaying everything else as is.

Hey, I had given implementing this a shot after out discussions in https://github.com/Peltoche/lsd/pull/297 . There is one issue in that we use this information to get color/icon in for the name block. Due to this skipping this just because we do not have a permissions block is not really a good idea.
With that out of the way, I was not sure what the best way forward would be. One  solution that comes to mind is to have something like windows-mode like thing in the config but that for some reason does not feel right. Or, switch to showing only owner permissions in case of  windows by default with an override like unix-mode in config. But I am not sure if that is the best way to go about it.
We could however handle the cases in which we error out when trying to fetch "world" permissions buy dropping a ? in the permissions field(???rw-rwx)  but displaying everything else as is.

Even just fetching the owner permissions only in a domain in windows takes a looong time.
We need an option to disable the fetching, even at the cost of some of the colors.

Even just fetching the owner permissions only in a domain in windows takes a looong time.
We need an option to disable the fetching, even at the cost of some of the colors.

I don't think we should be skipping fetching owner as well. Once you start removing things like color/permissions completely, I think it is better to use a tool that would be better suited for the job than trying to make lsd handle it.
Ignoring group/other(world) kinda makes sense to me as those don't translate over to Windows from what I understand, but we should at least keep owner as it more or less translates over from user in unix system.

I don't think we should be skipping fetching owner as well. Once you start removing things like color/permissions completely, I think it is better to use a tool that would be better suited for the job than trying to make lsd handle it.
Ignoring group/other(world) kinda makes sense to me as those don't translate over to Windows from what I understand, but we should at least keep owner as it more or less translates over from user in unix system.

For most Windows users, they are single-user machines.  Ownership etc. rarely comes up, other than sometimes needing to click a "Whatever" button on a prompt.  I don't think this information is significantly meaningful for the majority of Windows users -- even "do I have permissions to do X on this file" is not that useful, because 99% of the time they can just get the permission they need trivially.  So I don't think it makes sense to push a massive perf hit on lsd for something that most windows users won't care about (and if they really do, they're likely going to be using a tool that better understands or can manipulate the permissions).
One thing that's kind of interesting is that dir /q can pull this info quite quickly.  cmd /c dir /q takes about 50ms for my test dir from another PR (unpatched lsd takes about 600ms; patched to hack out permission/ownership, 40ms).  That pays the same process creation cost (cmd.exe) as lsd would.  Might be useful to systrace & profile cmd.exe and see what it's doing, as dir is an internal call there.

Closing this. https://github.com/Peltoche/lsd/pull/484 seems to be better for now.

Can you maybe re-open? The other pr doesn’t seem to be moving, plus this one is more dynamic as it doesn’t require a special compilation

@meain I think there has been a misunderstanding as to what this PR does.
It doesn't remove any features or change any of the outputs for users.
Right now, lsd always fetches permissions, even if the block isn't selected by the user.
So it does the work of fetching, and then throws it away.
All this PR does, is that for permissions for windows, it checks first if the block is requested, and if it doesn't it doesn't fetch it.
Users who use the blocks will still have them with no change, an users who don't use them will not have the penalty.

@AsafMah , I was not able to go through the code again, but if I am remembering correctly doing https://github.com/Peltoche/lsd/pull/475/files#diff-656cbac8b68ed3a36ace232e395f1bb1246301342cda210688d60babec27cda1R33-R39 will disable fetching permissions if they don't have that block and that will result in the file colors being different as we will not have information about things like if the file is an executable.


chore: [map chart widget] update the label counts and snapshot in spec

Description

[!TIP]
Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content team).
Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR.

Fixes #Issue Number
or
Fixes Issue URL

[!WARNING]
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation
/ok-to-test tags=""
:mag: Cypress test results

[!CAUTION]
If you modify the content in this section, you are likely to disrupt the CI result for your PR.

/ok-to-test @tags="tag.Widget, tag.ImportExport"

/ok-to-test<EMAIL_ADDRESS>@tag.ImportExport"


A question in function simple_context

Hi:
in train.ipynb, i'm confused about this line:
activation_energies = activation_energies + -1e20*K.expand_dims(1.-K.cast(mask[:, :maxlend],'float32'),1)
i think this line is unnecessary(i maybe wrong), please explain this line for me in detail.
And, when computing the attention weights, i think we should only use the current word's ht(ht is the time step t's hidden state) in decoding, but in the function simple_context, it use all headline words' ht every time step?
What's more,can you show me the paper or other references about how to implement the attention layer, i think i am not particularly familiar with it. Thank you.

the first line in the README file gives a link to the paper on which the code is based.
please read it several times from start to finish until you feel you understand it.
Also read the references it gives.
the line you asked about reduce the energy  by a huge value in all places in which mask is zero in the part of the input (0:maxlend) which came from the article.
Latter I take a softmax of the energy and as a result locations in which the mask was zero will have almost zero weight.
simple_context works at once on all the time steps.

Hey Udibr
Thought I would ask here since you often seem to have the answer for all my issues :)  So currently I have gotten a pc up and running with some GPU lovin so my training is now going so much better.  So after going through some iterations I thought I would start workin with "predict" and see if I would be able to run it without issue against some trained data. I ran into a few issues. One I have listed below and I was able to get around, but the one I have not had luck with resolving yet is the error:
AttributeError: 'Tensor' object has no attribute 'ndim'
As you can see in the dump below, I get it when it is accessing ndim on mask. A few things here...I am using Tensorflow and from what I have seen, this may be an issue in Keras. I am continuing to look into this and will psot something should I figure out what is going on. However, should you have any solutions, throw them my way.  Thanks!

failed to find layer timedistributed_1 in model
stopping to load all other layers
Traceback (most recent call last):
File "predict.py", line 331, in
model.add(SimpleContext(name='simplecontext_1'))
File "/usr/local/lib/python2.7/dist-packages/Keras-1.0.8-py2.7.egg/keras/models.py", line 308, in add
output_tensor = layer(self.outputs[0])
File "/usr/local/lib/python2.7/dist-packages/Keras-1.0.8-py2.7.egg/keras/engine/topology.py", line 515, in call
self.add_inbound_node(inbound_layers, node_indices, tensor_indices)
File "/usr/local/lib/python2.7/dist-packages/Keras-1.0.8-py2.7.egg/keras/engine/topology.py", line 573, in add_inbound_node
Node.create_node(self, inbound_layers, node_indices, tensor_indices)
File "/usr/local/lib/python2.7/dist-packages/Keras-1.0.8-py2.7.egg/keras/engine/topology.py", line 150, in create_node
output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))
File "/usr/local/lib/python2.7/dist-packages/Keras-1.0.8-py2.7.egg/keras/layers/core.py", line 554, in call
return self.function(x, **arguments)
File "predict.py", line 298, in simple_context
assert mask.ndim == 2
AttributeError: 'Tensor' object has no attribute 'ndim'

One other thing that I was just curious as to why it was an issue, if you know. When I initially ran predict, it failed with the below message. I was able to resolve it by changing both maxlend and maxlenh to the same value of 25. Just curious if this is an issue or not and if you have any insight as to why it is an issue in Tensorflow.
ValueError: Dimensions 25 and 50 are not compatible

File "predict.py", line 296, in simple_context
activation_energies = K.batch_dot(head_activations, desc_activations, axes=([2],[2]))
File "/usr/local/lib/python2.7/dist-packages/Keras-1.0.8-py2.7.egg/keras/backend/tensorflow_backend.py", line 367, in batch_dot
out = tf.batch_matmul(x, y, adj_x=adj_x, adj_y=adj_y)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_math_ops.py", line 390, in _batch_mat_mul
adj_y=adj_y, name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 703, in apply_op
op_def=op_def)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2336, in create_op
set_shapes_for_outputs(ret)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1725, in set_shapes_for_outputs
shapes = shape_func(op)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/math_ops.py", line 1609, in _BatchMatMulShape
inner_a.assert_is_compatible_with(inner_b)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py", line 108, in assert_is_compatible_with
% (self, other))
ValueError: Dimensions 25 and 50 are not compatible


fix(versions): update Activiti/activiti-cloud-full-chart-security versions

UpdateBot pushed helm dependency: activiti-cloud-full-example to: 7.1.120

UpdateBot commands:
updatebot push-version --kind helm activiti-cloud-full-example 7.1.120


[Ecto] Don't preload if only requesting the "id" field of a belongs_to association

Let's say I have a :fruits_basket object that can contains fruits and that can be placed in another basket. Something like:
object :fruits_basket do
  field :id, non_null(:id)
  field :slug, non_null(:string)
  field :fruits, list_of(:delicious_fruit), do: resolve dataloader(:db, :fruits)
  field :parent, :fruits_basket, do: resolve dataloader(:db, :parent_basket)
end

As of today a request like:
basket(slug: "grandma-basket") {
  id
  fruits {
    name
    color
  }
  parent {
    id # We only ask for parent's id and no other field
  }
}

...would make two queries like:
SELECT (...) FROM fruits_baskets WHERE slug = "grandma-basket" -- Get basket
SELECT (...) FROM fruits_baskets WHERE id = 42 -- Get parent basket

The thing is that second query is not necessary: we already have the parent id in grandma's basket.
I think it is a very common pattern to query only for the id of an association. In this example, the request could be used to show a "Go to parent" link on the frontend.
My real use case is a comment system where comments can reply to each others by using a reply_to field. I would love to see Dataloader return the reply_to_id field instead of preloading the full reply_to when requesting only the id.
The easiest way to achieve this with actual system is to add a field for the id:
...
field :reply_to_id, :id
field :reply_to :comment, do: resolve dataloader(:db, :reply_to)
...

But that doesn't look very neat to me.

This is a good idea :)
Implementation is a bit tricky. You gotta do some projection to determine if there's only an id field AND you gotta determine if the id field is using a custom resolver or not. If it's using a custom resolver then we're out of luck.
Still, probably doable. I probably won't have time to take a crack at it for a bit though unfortunately.


freeRDP can't connect after update from Ubuntu 21.10 to 22.04

Hello,
We use xfreerdp 2.3.0 on Ubuntu 21.10 to connect to a Windows Terminal Server 2019 via RDP Gateway.
Now we made an update to Ubuntu 22.04 with xfreerdp 2.6.1  using the same parameters.
It seems that authentication works but application then stalls.
Parameters used are:
xfreerdp /v:ts.remote.net /g:gw.remote.net gt:/rpc /u:user /p:pass /cert:ignore /auth.only /log-level:Debug
Playing around with different values on /gt or /sec didn't help.
See attached Logfiles form 22.10 an 22.04
Regards Helmut
2110_xfreerdp.log
2204_xfreerdp.log

@koe0005 sure you are using /auth-only? that will disconnect right after authentication succeeds.
As for error analysis, sorry, not enough information to tell what is going on there, I can only tell that I have access to a gateway/broker setup (server 2019) and can connect with 2.6.1 and master just fine (include redirection to final target host)

@akallabeth i used /auth-only for test, because program doesn't come back and i have to interrupt it with ctrl-c.
See attached the logfile with loglevel TRACE and without /auth-only.
2204_xfreerdp.2.log

that is indeed strange.
do you happen to know how your server is configured?
have a few test setups I can test with and can´t reproduce such an issue here, so any hint appreciated.
(also, does /gt:http work for you or is your gateway specifically configured for only /gt:rpc?)

@akallabeth i will try to get some information from hosting company.

@akallabeth another strange behavour: if i use xfreerdp 2.3.0 on Ubuntu 21.04 connection works with all /gt:auto|rpc|http options.
Using xfreerdp 2.3.0 on Ubuntu 21.10, only option /gt:rpc works.

this sounds like your server is using outdated encryption settings (we use OpenSSL for that, which might have hardened settings for newer distros)
Can you do a local build with current versions to eliminate possible packaging issues?
(e.g. do a apt build-dep freerdp2-x11 to install required dependencies and then run cmake -GNinja -DCMAKE_INSTALL_PREFIX=/tmp/freerdp -DBUILD_TYPE=Debug -Hsource_dir -Bsome_build_dir && cmake --build some_build_dir --target install should do the trick, might complain about some still missing -dev package though) or test with our nightly packages?

@akallabeth built a new version on 22.04 using the following parameters:
xfreerdp /v:ts.remote.net /g:gw.remote.net gt:/rpc /u:user /p:pass /cert:ignore /log-level:TRACE
See attached the log file. Should i try it with special environment variables?
2204_xfreerdp.3.log

@koe0005 could you try with /gt:http,no-websockets? it might be your server just does not support websockets and always tries to use these (it looks like /gt:rpc does not disable it)

@koe0005 We´ve fixed that on master now with #7808 , so if you rebuild from current master it should give you some different log

@akallabeth ok, made a new build and tried /gt:http,no-websockets
Here is the log but had to interrupt again with ctrl-c.
2204_xfreerdp.4.log

@akallabeth Just another hint: Remote site has a self-signed certificate with the following parameters:
Protocol version: TLSv1.2
Ciphersuite: ECDHE-RSA-AES256-GCM-SHA384
Hash used: SHA512
Signature type: RSA
Supported Elliptic Curve Point Formats: uncompressed:ansiX962_compressed_prime:ansiX962_compressed_char2
Server Temp Key: ECDH, prime256v1, 256 bits

@koe0005 certificate with a cipher suite and a TLS version? doubt that ;)
but that stage has long passed with what you see in the log

@koe0005 with the (updated) master you might also try /gt:rpc again, as now websocket is disabled for that branch by default.

@koe0005 I don´t know how well you are with compiling and git, but you might try a git bisect between the tags 2.3.0 and 2.6.1 to find the commit that breaks it for you (as you told the 2.3.0 version still works)

but from the diff it most likely is the websocket support which seems to be not working with your server.

@akallabeth I tried it already with /gt:rpc but didn't work.
Above was the output of the gateway against the command:

echo | openssl s_client -connect gw.remote.net:443 -brief

and cut off private informations

Will try some builds.

@akallabeth So i did a build party  on Ubuntu 21.10 and Ubuntu 22.04:
On 21.10 all builds work with /gt:rpc - linked against libssl.so.1.1
On 22.04 no build works with any /gt:xxx - linked against libssl.so.3, libssl.so.1.1 isn't available anymore
So it must be an issue with libssl3 versus libssl1.1

@koe0005 ok, thank you for the debugging.
So we need to investigate if there is still something to fix for full openssl 3.0 support

Just a note that this looks like a duplicate of https://github.com/FreeRDP/FreeRDP/issues/7449.

@ondrejholy thank you, true.


Remove the now-EOL 9.0

It's been EOL since September 2015; see http://www.postgresql.org/support/versioning/
Closes #121
Thanks @md5 :heart:

LGTM


--viewer opens a window and displays samples.

This is great, thanks for the PR.  I ran it on develop with a huge batch size.

LGTM 👍


ShareWindow accessibility label is "Recent searches"

Looking at your ShareWindow component shared (ah!) on episode 775, I noticed it has aria-labelledby="search-header" which doesn't seem to be related.
I imagine it might be correct in some context, but I reckon it isn't when you share an episode:

Thanks for all the amazing podcasts 🌟

Fixed here: https://github.com/syntaxfm/website/pull/1809/commits/96b9b09d37fb74ec97afa30dd421726df28e4816


Discussion: WinUI 3.0 and XAML Performance

Discussion: WinUI 3.0 and XAML Performance
During the WinUI community call, there was a comment about improvements coming to the performance of XAML Rendering with WinUI 3.0
I thought I would start a discussion thread where people could collate performance quirks they have come up against, but for my own view, I would just like to ask if the team working on it, could write up some blog posts talking about what improvements are being made, along with the Alpha release, as well as how the process extracting the stack from the OS, enables ongoing improvements in the future.

This may be completely irrelevant, but retargeting the SDK takes forever for the XAML UI project, this may be a performance issue for VS itself though, not sure where it lies. I had my reasons for retargeting, I know it may sound really weird.

Here are my performance issues, when it comes to UWP:

uwp: compilation times are insanely slow! (pretty much, 6 times slower that WPF - i'm using target version build 1809 - build 17783)
I know StorageFolder file enumeration API is not part of UWP, but that is insanely slow. The UWP sandbox (at least on Windows Desktop) is hurting more than helping.
async programming is fun, but in UWP, when an exception happens, it's somehow eaten by the UWP code, and then later break in debugger, with all the stack context lost. Sometimes, I do have the stack context inside the thrown exception itself, but not always.
Profiling UWP code is close to impossible. Event dotTrace instantly breaks when trying to do it.

Please don't use XAML ambiguously in discussions. "XAML Performance" could refer to the parsing of XAML files or it could refer to the performance of the WinUI framework. My guess is that this thread is about the latter.

On UWP performance, this is very good at the moment in release mode using .Net Native. I expect that with .Net 5 it will be similarly fast using AOT. I am concerned that in the meantime with .Net Core 3.0 it will become slow again. It would be great if UWP with .Net Core 3.0 would work with CoreRT which is very similar to .Net Native.

@charlesroddie Your comment is about the initial discussion, or my comment?

About the initial post and title, but applies to a lot of threads in this repo.

@jtorjo

Here are my performance issues, when it comes to UWP:

uwp: compilation times are insanely slow! (pretty much, 6 times slower that WPF - i'm using target version build 1809 - build 17783)

I guess you are talking about Release build times right? The Release build is so slow because of .NET Native. It makes build times much slower, but gives you major improvements in startup times, XAML rendering (data binding) and memory usage. In Debug mode, apps should usually build pretty fast, so this does not really affect development cycles that much IMO. At least, I usually only build Release every now and then, so for me this is not a problem (I am a big fan of .NET Native performance gains).

I know StorageFolder file enumeration API is not part of UWP, but that is insanely slow. The UWP sandbox (at least on Windows Desktop) is hurting more than helping.

I agree that StorageFolder/StorageFile API is a major painpoint for any file driven application. I don't believe that this is caused by sandboxing, it is probably more a problem of how the API is designed. Every instance contains these properties: Attributes, DateCreated, DisplayName, DisplayType. In the old FileInfo API, these would only be retrieved on-demand on first access. But in UWP all of these properties are always retrieved as soon as an instance is created, which makes the API so much slower when you enumerate large folders. It works well if you only access files every now and then (like, open one file through file dialog). But apps that work with a lot of files and folders will have major performance hits due to the bad API design.
UWP really needs a fast, light-weight file API that pretty much only wraps the file name (and maybe some file permission token). Then there should be an async method to create the "fat" StorageFile/StorageFolder instances from it, or open streams directly, on demand.

async programming is fun, but in UWP, when an exception happens, it's somehow eaten by the UWP code, and then later break in debugger, with all the stack context lost. Sometimes, I do have the stack context inside the thrown exception itself, but not always.

I have seen things like this, but I don't think that async is really the cause of these problems. Normally, exceptions from async code are handled very well. The bigger problem might be that you usually don't see any call stack from native platform code, so if the platform calls back into user code and things fail there, you sometimes don't even know why or how things have failed, where in WPF you would always see a clear stack trace of how your code was invoked.

Profiling UWP code is close to impossible. Event dotTrace instantly breaks when trying to do it.

Did you try with VS performance tools? They work very well for me.

@lukasf Thanks for replying!

I guess you are talking about Release build times right? The Release build is so slow because of .NET Native.

I'm talking about Debug times, without .Net Native. For me .Net Native generated a weird crash a while ago, and I haven't tested it since. My project in Debug x86 (it is slightly faster than Debug x64), usually takes 30-40 seconds to compile.
Once again, this is build 17783 - I have read on the internet that lower builds generate faster time - I think it's on your uservoice forum.

I agree that StorageFolder/StorageFile API is a major painpoint for any file driven application. ....UWP really needs a fast, light-weight file API that pretty much only wraps the file name (and maybe some file permission token).

I couldn't agree more. Or, much simpler maybe - just allow access to System.IO for all HDD ;) That would simplify things a lot.
My app displays photos/videos from user's folders, making it easy for him/her to select his favorites to edit them to create another video - in WPF, this fast simply insanely fast. In UWP, this is beyond slow.

... so if the platform calls back into user code and things fail there, you sometimes don't even know why or how things have failed, where in WPF you would always see a clear stack trace of how your code was invoked.

It is possible that this is the issue, but it does make debugging a huge pain...

Did you try with VS performance tools? They work very well for me.

I will definitely try them. I used dotTrace a low with WPF, and isolated errors insanely fast. Will definitely try the VS performance tools - just read an article about them, seems they should fit my needs.

In our case we are using UWP for a LOB app and we have found big performance issues in two common scenarios:

We need to put a lot of data in some views, so we use use datagrid inside pivot or tab controls, this generates big visual trees of more than 5000 items which are hard to reduce more. The first load of the visual tree or when you switch from one tab to another is not smooth.

Something similar happens with frame cache, we have it enabled so the state of our list views is keeped when you return from it's associated form, but if the page cached has a big visual tree the navigation when you go back is not smooth and hangs for a while. Moreover we notice a performance degradation when using the frame cache and you have navigated to a big number of views.

Things come worse in this scenarios if you don't have a powerfull machine or any other windows process is requiring CPU, most of our users are using i5 or i3 with 8Gb of RAM and the performance with this hardware is very bad, there is continuous hangs of several seconds on this environments
Here is a sample project which try to show this two issues:
App1.zip

@jtorjo
The problem is that FileInfo APIs do not work well with permissions and sandboxing. If you can just create an instance from a file path, the system cannot know if/how you got access to that file. So I think a new file API is required, but one that is optimized for performance. One that does not query lots of data, when all you need is the plain folder+file names.
If you want good file performance, there is one thing you should be aware of: Enumerating files usually involves lots of async calls. Every single "await" on the UI thread is very slow and will cost you about 10ms. This is just the "await", with no actual work being done. So for bigger file operations, it is highly recommended to not await every single async call on the UI thread. You can do that by adding ConfigureAwait(false) on every async method call, or by running the whole file IO stuff on a background thread. I use the latter, since it is easier to implement:
// read files on background thread and await result only once on UI thread
var files = await Task.Run(() => ScanFilesAsync());

// now work with files on UI thread
ShowFiles(files)

Now all the countless await calls inside ReadFilesAsync will not be awaited on the UI thread but on the background thread (which is very fast). Only the final result is awaited once on the UI thread, and then it can be used on UI tread and for data binding. Be careful to not access UI stuff in ScanFilesAsync().
The same concept is useful for other complex file or stream operations, like reading or writing stuff in a loop, where you have lots of await calls. Put that in a background task or use ConfigureAwait(false) and you will have much better performance, close to classic .NET APIs.

@lukasf Thanks for the advice. I wish that were true. That was also my idea - to just do it in another thread. But in my tests, the gain is close to 0%.
About a new file API is required: I just don't understand why MS won't simply allow System.IO over all HDD, once you've requested broadSystemAccess. It's clearly possible, since if I write a Desktop Bridge app, I can use System.IO all over the place, and it's fast as hell.
Best,
John

uwp: compilation times are insanely slow! (pretty much, 6 times slower that WPF - i'm using target version build 1809 - build 17783)

I agree.  I started to reply, but decided it makes sense to take this to another discussion (specifically related to compilation performance):
Related links.

https://github.com/microsoft/microsoft-ui-xaml/issues/1535

I couldn't agree more. Or, much simpler maybe - just allow access to System.IO for all HDD ;) That would simplify things a lot.

@jtoro I have heard this from customers that this would be preferable (and I have to agree). I think the appropriate place to have this discussion is in the xlang project, and I opened this issue a while back for this exact issue https://github.com/microsoft/xlang/issues/484. Please go comment/upvote if you'd like to see that 😄

nobody talks about navigation performance of cached pages with a large visual tree? Why a cached page needs so much time to be rendered again? For us this is more important than shadows, lights, or rounded corners... @jevansaks you pointed me to start a discussion here, but I don't see any interest in improving performance, and I think there is a lot of work to be done in this area.

Just as as jtorjo  mentioned, the compiling of UWP/C# projects is many times slower than WPF(even in release mode and the .NET Native checkbox is unchecked), which is very frustrating for me. Hope WinUi can change this.

@danzil @fabiant3-zz - FYI for compiler/tooling performance. @bartekk8 @Austin-Lamb - FYI for runtime performance.
Looks like there is another discussion on compiler performance here.
@asierpn If you have a specific scenario (navigation) that is not performant, can you please open an issue with a repro so it can be investigated independenty ?

We're well aware that UWP/WinUI project compile performance, including full and incremental builds, can be way better and we're taking steps to make it so. Issue #1535 that Ranjesh mentioned tracks that.

@ranjesh I've opened the issue #2032  explaining better our scenario and with a sample app.

@danzil As an FYI, the more recent of a Windows version you're targeting, the worse the compile time.
Right now, I'm targeting 1903, and just the deployment itself takes 6+ seconds! (no building at all). On 1809, deploment was less than 1 second.
Here are a few other notes:

if I have a project, say edit_ui, and another project depends on it, say test_ui. If I modify anything in the xaml part of edit_ui, I will need to recompile test_ui, or otherwise, I can get exceptions (if I modify something in the implementation, that is not needed). In my mind, this should not happen.
sometimes some projects get recompiled even if I haven't done anything (can't repro consistently)
compilation times are very very slow, and I don't see anything as "incremental build". In other words, my main UI project takes roughly 10-15 seconds to compile. If I modify basically nothing (I just type an Enter, in a .cs class file), it will take the same amount of time.
I don't understand why xaml files get recompiled even if I haven't touched them

@jtorjo thanks for adding your experience! We've got all these issues in mind as we're designing the upcoming performance improvements in XAML compilation.

@danzil Cool! Trust me, I'm more than looking forward to any improvements you guys may have. Probably on a daily basis, I'm wasting at least 45 minutest just compiling/deploying stuff.

@danzil Any ETA on this? Compile times are simply insane...
Me, and I'm sure anyone doing UWP, would love anything -- like, gradual improvements! And we'd be the first to test them. Thanks!

I totally understand it's painful and I'm sorry I can't give you better news. Right now, my understanding is that it will likely take several more months before the team could start working on an implementation for this problem. @LucasHaines may be able to help with a more precise ETA or plan.

@LucasHaines Could you please share an ETA? Thanks!

@danzil, @stevenbrix, as noted here: https://github.com/Noemata/XamlBenchmark
UWP has slipped behind WPF in rendering performance.  I didn't think that was possible??  Clearly, a lot can be done to improve performance.  Why is WPF now faster?  Why have we not seen any performance gains in UWP of late?  Why is WinUI so very slow?
Despite the .Net Native compiler being slow, I'm still a big fan.  With a rational code segregation scheme when designing a larger app, it's possible to greatly diminish the pain of a rebuild for release.  So for those experiencing lengthy rebuilds, you probably need a better understanding of your apps dependency tree in order to fix your rebuild issue.  .Net Native is surprisingly good at this stage.
Everything but UI should live in .Net Standard libs.  Take a look here for how this helps: https://github.com/Noemata/FakePOS

@charlesroddie , WPF's performance gains are quite impressive indeed.  I opted to remove one part out of the benchmark, and that's raw compute, since it's not a fair comparison.  .Net Native still outpaces .Net 5.x when compiled for release.  So the performance picture is more complicated than can be gleaned by looking at the surface details.  Not sure what all the tweaks consisted of (jitter, libs, etc.), but .Net 5.x + WPF is more than the sum of its parts.  It's also quite impressive how the .Net team managed to maintain stability throughout the different releases.
Given that most of the benchmark is happening at the rendering layer which is mostly driven by machine code, I would expect UWP to be fastest.  Clearly, UWP has not gotten as much attention lately.  The .Net compiler has received some needed tweaks of late and is looking pretty good.  It's not flawed as much as it is limited to constraints that require careful design choices when using reflection.  It's a shame it's not being progressed further.
Fingers crossed that WinUI will some day reach WPF+.Net 5 level of stability.  Microsoft will need to re-invest in UWP.  At least until they come up with a better alternative to CsWinRT.

It's a bit embarrassing, but I got the tests results for WinUI and UWP wrong.  I won't make any excuses, should have known better than to do all my testing inside the debugger.  VS2019 has a significant performance drag on both UWP and WinUI (about the same for both).  When running outside of VS2019, UWP is still fastest.  About 3 times faster than WinUI.  WinUI's numbers are a lot better, but still sluggish compared to UWP.  WPF perf is respectable nonetheless.  I've revised my posted results.

UWP has slipped behind WPF in rendering performance.

I second that. When I upgraded to the lasted WinUI 2.5, my app started 8 times slower! (compiled 3 times slower)
I simply had to revert to WinUI 2.3 to make this bearable again.

@jtorjo could you collect some traces for your case in both 2.3 and 2.5 ?
Here are the instructions.

Install ADK.  You only need Windows Performance Toolkit option to be selected.

For more details.

Execute wprui.exe (Windows Performance Recorder UI).
Click on More options to reveal recording profiles and then select the following:

For CPU trace:

First level triage
CPU usage
Disk I/O activity
XAML activity

For memory usage trace:

First level triage
Heap usage
VirtualAlloc usage
Reference Set analysis
XAML activity

Click on Start.
Run your scenario.
Click Save and follow the prompts.  If you'd like to look at the trace right away, after it's saved click on Open in WPA.
WPA is a great tool for analyzing traces.  For intro on how to use it take a look here.

@bartekk8 as FYI.

@ranjeshj , thanks for the info.  What I was looking for was an apples to apples performance comparison to see how WinUI fairs when compared to UWP.  Performance tooling can to used to evaluate perf, but first you need a well constructed test scenario that touches the areas of interest in a way that doesn't skew results.  Initially, I was only looking to evaluate basic XAML rendering times for WPF/UWP/WinUI; XAML primitives only.  I'll leave it to experts like yourself to do the nuanced analysis.  I'm only looking for big picture real world applicable results.
Here's another example of a tool I put together to do LOB related sorts of testing: https://github.com/Noemata/RosettaNavigation
I'm more interested in the performance/validation suites Microsoft uses.  I find those more telling because I can see the API surface being traversed during the test.  API interactions are often quite surprising.

@ranjeshj Yes, will do, but it will be a good few days before I can do that. I'm already behind everything on launching my app. As soon as I have a few hours, I'll do it.
As a side note, the first thing I wanted to do was to do some profiling, but I ran into the other Windows bug (https://developercommunity.visualstudio.com/t/No-Data-in-CPU-Usage-Tool-Windows-Updat/1384519). I lost several hours getting my system back into a decent state, I got insanely nervous and reverted everything.
So, I will do this ASAP, since I clearly want this fixed -- for me upgrading with these performance drops is simply out of the question.

UWP has slipped behind WPF in rendering performance.

I second that. When I upgraded to the lasted WinUI 2.5, my app started 8 times slower! (compiled 3 times slower)
I simply had to revert to WinUI 2.3 to make this bearable again.

@jtorjo could you collect some traces for your case in both 2.3 and 2.5 ?


GridView sort arrow in the header is missing

Should add arrows indicate the sort is desc or asc

Both basic and advanced templates contains CSS styles for that:
https://github.com/yiisoft/yii2-app-basic/blob/master/web/css/site.css
https://github.com/yiisoft/yii2-app-advanced/blob/master/frontend/web/css/site.css
Scroll to /* add sorting icons to gridview sort links */ comment to see it.

thanks,
My personal opinion the ico is not appropriate