epinio user (log in on from dex) cant do 'epinio app exec APP-name'

Describe the bug
It seems like users that login via dex. eg: epinio login --oidc <epinio-url> cant do shell to container.
To Reproduce
Steps to reproduce the behavior, e.g.:

Install epinio version 1.5.2
login using dex user: user -<EMAIL_ADDRESS>push an app (we use conda-app via paketo's sample)
try container shell via: epinio app exec <app-name> . It will fail
Now, remove epinio session's file in your current directory
login without dex. epinio login
try  epinio app exec <app-name> again... It will work

Expected behavior
dex and local user should work the same.
Logs
╰─$ epinio app exec conda-app

🚢  Executing a shell
Namespace: workspace
Application: conda-app

❌  error getting a shell to application: error sending request: Get "https://epinio.internal.frxxdenv.xxx.com/wapi/v1/namespaces/workspace/applications/conda-app/exec?authtoken=eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJlcGluaW8tc2VydmVyIiwiZXhwIjoxNjczNzk4OTc3LCJ1c2VyIjoiYWRtaW5AZXBpbmlvLmlvIn0.yd6Cdu8zRo_LpDNTgmAPhE9RtaoSo1kH0gnlJ_XsmUgAMYZqC7MZOU__ygHNidvO-WAxKUkfIv7UixTMXoc2fn2ME7CwKIB0ypkSRUVPN11XFceWQQqDD0C_6gEdXA2Agl4b0StEHMqjfySCDm-E7fFGLYvIbJNs2axJqwOiBatApv1PB-7maeImk1WUKJiXhZgEqXPRVW_amhRk1vj1DnCBC7ale1I3cs7oPGF-IO8Kv2fXm75h96Ml4JLatoRK3EmM4WT8UGSo_H538SVFRhEWw2s3jrnGVy86fvbO1f_i8UFO9dKXP-ahUSjWDtGRDANCgtBV4Am_ZvQroLh95Q": malformed HTTP response "\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\x05\x00\x10\x00\x00\x00\x03\x00\x00\x00\xfa\x00\x06\x00\x10\x01@\x00\x01\x00\x00\x10\x00\x00\x04\x00\x10\x00\x00"

Cluster (please complete the following information):

Provider: K3D
Kubernetes Version: [e.g. 1.24]

Desktop/CLI (please complete the following information):

OS: [e.g. Linux, MacOS]
Epinio Version: 1.5.2

cc: @pedro-brito-ilia  @riqueps

Sessions to confirm/falsify ...
Regarding the exec into still running sample-app :heavy_check_mark: lines in the session logs below ... I ran the exec, waited to see a shell prompt and ran the commands pwd and ls -l in that shell to confirm that I am in the container. Then exited.
Let's begin

k3d/k3s local cluster (kube 1.25)
Epinio Version: v1.5.2-45-g6fa5d830
regular login with admin/password (automatic through dev deployment helper script)
push assets/sample-app
exec into sample-app :heavy_check_mark:
re-login with oidc, same credentials
exec into still running sample-app :heavy_check_mark:
not reproduced

Retrying, with commands in slightly different order

k3d/k3s local cluster (kube 1.25)
Epinio Version: v1.5.2-45-g6fa5d830
regular login with admin/password (automatic through dev deployment helper script)
re-login with oidc, same credentials
push assets/sample-app
exec into sample-app :heavy_check_mark:
not reproduced

Third

k3d/k3s local cluster (kube 1.25)
Epinio Version: v1.5.2-45-g6fa5d830
regular login with admin/password (automatic through dev deployment helper script)
squash settings.yml
login with oidc, same credentials
push assets/sample-app
exec into sample-app :heavy_check_mark:
not reproduced

Differences local vs submitter:

kube 1.25 (vs 1.24)
Epinio 1.5.2-45-... (vs 1.5.2)
App assets/sample-app (vs conda-app)
Still have the regular login going on, even if the resulting settings are thrown away. The server still sees it

Fourth trial

k3d/k3s local cluster (kube 1.25)
Epinio Version: v1.5.2 (moved checkout to version tag!)
regular login with admin/password (automatic through dev deployment helper script)
squash settings.yml
login with oidc, same credentials
push assets/sample-app
exec into sample-app :heavy_check_mark:
not reproduced

Differences local vs submitter:

kube 1.25 (vs 1.24)
App assets/sample-app (vs conda-app)
Still have the regular login going on, even if the resulting settings are thrown away. The server still sees it

Pleading the fifth

k3d/k3s local cluster (kube 1.25)
Epinio Version: v1.5.2 (moved checkout to version tag!)
(removed the regular login from the deployment helper for this so that it does not happen)
login with oidc, admin/password
push assets/sample-app
exec into sample-app :heavy_check_mark:
not reproduced

Differences local vs submitter:

kube 1.25 (vs 1.24)
App assets/sample-app (vs conda-app)

At this point I have to suspect that something is different in the submitter's setup.

I needed to deploy an EKS cluster to try again the configuration for the https://github.com/epinio/epinio/issues/1973.
I tried to exec in a sample app and I was able to. So also within a cloud envinroment it seems to work. The Kubernetes version was the 1.23 in this case.

I did some debugs and I was able to run epinio app exec by downgrading epinio cli to 1.5.1

To reproduce:
On EKS cluster:

Eks v1.22
Epinio Server v1.5.2
Amazon Issued certificates through cert-manager
Epinio CLI v1.5.2

regular login with admin/password :heavy_check_mark:
dex login with<EMAIL_ADDRESS>:heavy_multiplication_x:

Epinio CLI v1.5.1

regular login with admin/password :heavy_check_mark:
dex login with<EMAIL_ADDRESS>:heavy_check_mark:

On K3D cluster:

K3d v1.23.8+k3s1
Epinio Server v1.5.2
Amazon Issued certificates through cert-manager

Epinio CLI v1.5.2

regular login with admin/password :heavy_check_mark:
dex login with<EMAIL_ADDRESS>:heavy_multiplication_x:

Epinio CLI v1.5.1

regular login with admin/password :heavy_check_mark:
dex login with<EMAIL_ADDRESS>:heavy_check_mark:

sslip self-signed certificates

Epinio CLI v1.5.2

regular login with admin/password :heavy_check_mark:
dex login with<EMAIL_ADDRESS>:heavy_check_mark:

Epinio CLI v1.5.1

regular login with admin/password :heavy_check_mark:
dex login with<EMAIL_ADDRESS>:heavy_check_mark:

To summarize it seems that it is the combination of

dex login + amazon cert + 1.5.2 client

which is broken. Moving away from any of the these (regular login, or other cert, or 1.5.1 client) makes the issue disappear.
The server was fixed at 1.5.2 ... Unclear if using an 1.5.1 server with 1.5.2 client would be broken too.
Cluster had different versions (1.22, 1.23), and platforms (eks, k3d), so the issue is likely independent of that.
Regarding Amazon Issued certificates through cert-manager I am currently assuming that cert-manager was configured with a "ClusterIssuer" using an AWS backend, and the Epinio install configured to use that issuer, right ?
If so, may we have the details about the cert-manager configuration/commands for that ClusterIssuer ?
At that point local reproduction should come into reach.

Could you please also check if your dex ingress manifest has the proper Issuer and tls secret assigned?

@thehejik
Yes, dex ingress has dex-tls secret assigned and it's using the proper Issuer

But there is a weird thing with dex-tls secret, it was issued, but there are two certificates using the same secret

Cert-manager keeps returning these logs

May we see the definition of the letsencrypt-epinio issuer ? (Who, despite the name, apparently generates AWS certs ?)
@enrichman As the dex person, any opinion on the second question, about two certs using the dex-tls secret ? The cert-manager logs certainly read ominous.

@andreas-kupries
# Creation of cluster issuer integrated with Route53
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-epinio
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: issuer-account-key
    solvers:
    - selector:
        dnsZones:
          - "DOMAIN.COM"
      dns01:
        route53:
          region: us-east-1
          role: arn:aws:iam::XXXXXXXXX:role/CertManager

But there is a weird thing with dex-tls secret, it was issued, but there are two certificates using the same secret

See #2041 for another report in the area. Looking to be able to fix that at least.
Oh! now I wonder if this issue could also be triggered by the cert fight.
I.e. actually different cert data stored in the secret and switching around ...

@andreas-kupries I tried with the updated helm-chart containing the cert fighting fix for dex ff1e3b521660 but the problem persists.

Any update on this bug ? I just tested on 1.6.2 server and epinio 1.6.2 client fails to login when epinio user used dex for login.
However, if you use client 1.5.1, it worked on 1.6.2 server... Same as reported by @riqueps
I was wonder whether the bug is just CLI and not server side... apparently, 1.5.1 cli works with dex-users
tagging: @riqueps

Unfortunately no progress at the moment :(

Some progress today however. The issue is only in a difference of the login command between the versions. The version of the client used for the "action" (exec, or port-forward) then does not matter. Table:

Server
Login
Action
Exec
Port-Forward

1.6.2
1.6.2
1.6.2
:boom:
:boom:

1.6.2
1.6.2
1.5.1
:boom:
:boom:

1.6.2
1.5.1
1.6.2
:ok:
:ok:

1.6.2
1.5.1
1.5.1
:ok:
:ok:

Comparing the settings.yml files produced by the two versions shows that 1.5.1 saved some certs into the settings which 1.6.2 does not. Copying these certs into the 1.6.2 settings.yaml and the commands work. The error message from app exec looks to be simply what you get of the websocket stuff then the TLS handshake fails for a bad/missing cert.
I am now suspecting PR #1964 in 1.5.2. It is the one change in the login area from .1 to .2 and later.

Yes. That PR lost (i.e. failed to save anymore) all certs which were trusted without user intervention.

Fix via #2077

nice find @andreas-kupries

Validated in v1.7.0 - used public domain, letsencrypt-production issuer and epinio commands: login --oidc; app push; app exec. All good.


alert emails - make create_lists_to_email.ts resumable

https://trello.com/c/ZldwpjOI/295-make-email-alert-sending-fully-resumable
The workflow to send email alerts creates a collection of emails to be sent for the locations that changed their threat level and then send the emails, updating the sentAt field on each email document with the timestamp of when the email was sent.
If the workflow fails while sending the emails, we will need to re-run the workflow, however, this resets the sentAt field on the emails and some users would get send the alert email more than once. This PR updates the script that generates the list of emails to be sent so it doesn't overwrite documents that already exist.
The first two commits are linting fixes and removing unused dependencies. The commit with the actual changes to the script is https://github.com/covid-projections/covid-projections/pull/1086/commits/c11067d9883af8b6544d07db2841b297bdecb006
Testing
Preparation

Download and unzip the alerts.json.zip file in the scripts/alert_emails directory.
Make sure that you have the google-services-account.json file in the scripts/alert_emails directory.

Update collection

Add an email on the alert-subscriptions collection, add a locations array with the string "11" as element.
Run yarn create-lists-to-email alerts.json 497
The script should update the snapshots/497/locations/11/emails collection, adding the email from before to the list.
Check that the sentAt field of the email document is set to null
Note: Since some documents subscribed to alerts for that location already exist, those won't be updated (check existing emails in the collection).

Failure
Locally, comment-out on the following lines and replace them with await Promise.reject({ code: 5 }) to simulate a rejection from Firestore.
try {
  // await db
  //   .collection('snapshots')
  //   .doc(`${snapshotId}/locations/${fips}/emails/${email}`)
  //   .create({ sentAt: null });
  await Promise.reject({ code: 5 });
} catch (updateError) {
  // ...
}

The script should fail and log the error code
$ yarn create-lists-to-email alerts.json 497
yarn run v1.22.4
$ ts-node-script -r tsconfig-paths/register scripts/alert_emails/create_lists_to_email.ts alerts.json 497
Done. Updated the emails for 1 locations.
Error updating emails for location 11 { code: 5 }
error Command failed with exit code 1.

 Make email alert sending fully resumable.


Setup Making a Build Release with Cargo

Setup Making a Build Release with Cargo
Setup cargo to create optimized build of the program. Use a script to automate building the release version of the program.

git fetch origin
git checkout 7-setup-making-a-build-release-with-cargo


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-main" workflow

Codecov Report

Merging #323 (3605f84) into main (2974dfe) will increase coverage by 12.10%.
The diff coverage is 100.00%.

@@             Coverage Diff             @@
##             main     #323       +/-   ##
===========================================
+ Coverage   83.33%   95.44%   +12.10%
===========================================
  Files           2        1        -1
  Lines         126      395      +269
  Branches       31       46       +15
===========================================
+ Hits          105      377      +272
+ Misses         21       18        -3

Impacted Files
Coverage Δ

src/index.ts
95.44% <100.00%> (+13.44%)
:arrow_up:

example/src/main.ts

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 35f82bb...3605f84. Read the comment docs.


update the s3 acl

last pr haning

Expected — Waiting for status to be reported
https://github.community/t/expected-waiting-for-status-to-be-reported/18001
try to update the setting


Update MainWindow.xaml.cs

Summary
I actually found the solution here:
https://stackoverflow.com/a/12252423/12371154
Fix for this ticket: https://github.com/dotnet/docs/issues/12512

This change looks great. However, due to the in progress work on dotnet/docs#17297, this change should be made to the version in the dotnet/docs repository.
/cc @Thraka

No problem! I will make a fresh PR in the right repository.

Closing in favor of dotnet/docs#17421


Consider adding unnecessary_library_name to recommended

This is a proposal to add unnecessary_library_name to the recommended set.
This very newly added lint landed in https://dart-review.googlesource.com/c/sdk/+/358561.
It fires whenever there's a library name in a library directive; this matches our recommendation in recommended Dart: "DON'T have a library name in a library declaration".
Note that this will not be generally available until 3.4.0 is stable.
Implicit in this request is that we remove package_names from the recommended set ("Use lowercase_with_underscores for package names.").

cc @lrhn, @natebosch, and @goderbauer for review

I am sympathetic to adding this to recommended eventually. Since it is very hot of the press, I would prefer letting it bake a little bit to shake out any potential bugs or unintended side effects. As part of that I'd like to dogfood it in the flutter/flutter repository first before we put this into recommended.

Based in the comments above, lets delay adding this to the ruleset until the lint's been:

available from the stable sdk
we've tried it on a few larger / representative codebases

We can reconsider at our next regular review.

I've been doing some testing and encourage people to do the same.
Try dart fix --code=unnecessary_library_name --apply and if you hit any snags let me know.
(I've got a fix for one in flight now: https://dart-review.googlesource.com/c/sdk/+/359321 -- don't lint if the unnamed-libraries feature is not enabled.)

I tried enabling this on the flutter repository (https://github.com/flutter/flutter/pull/145714) and ran into a surprising side effect: Dartdoc appears to depend on the unnecessary library names and uses them to structure the generated doc. With an unnecessary library name present (e.g. library material;) it generates nice URL paths like flutter/material/TextField-class.html. When I remove the unnecessary name (just library;) it generates the rather ugly package-flutter_material/TextField-class.html path for the same entity. This one is even worse:
flutter/material/material-library.html (with unnecessary library name present)
package-flutter_material/package-flutter_material-library.html. (without)
So, turning this on and enforcing it on Flutter would invalidate lots of external links (e.g. from stackoverflow) pointing to our docs. The same is probably also true for many other packages (I saw that package:intl for example could also be affected if the library names are removed there).
It is not clear to me why dartdoc behaves differently based on the presence of a library names. I wonder if we can change dartdoc to generate the same nicer paths based on the implicit library name when no explicit name is given before we roll out this lint further? This also should keep most external links working. (cc @srawlins)

I suspect we do want to update dartdoc to not rely on the library name to decide what the generated file paths should look like - that should be based solely on the path of the defining source library (e.g., package:flutter/material.dart).

/fyi @kallentu

An update to generate all paths one way or to generate paths the other way, regardless of library name, would break links. 😁
But we can update dartdoc such that:

for named libraries, generate the nice path,
for unnamed libraries, generate the nice path, and a redirect HTML file at the less nice path, pointing the old to the new.

See also https://github.com/dart-lang/dartdoc/issues/1346, where I could similarly leave client-side redirects in place.
Alternatively, if there is some open standard (like Apache httpd?) of server-side permanent redirect specifications, we could add a feature to dartdoc to generate such a "redirect file." I guess the important case is whatever is serving api.flutter, api.dart, and pub.dev.

I like that suggestion. 👍
The flutter API docs are hosted on Firebase. Looks like the support configuring redirects like this: https://firebase.google.com/docs/hosting/full-config#redirects

From an offline discussion:

this aligns with the effective dart guidance
the flutter framework will not be able to use this out of the box (at a min., it would need ignores for the major framework libraries)
we should add docs (in the changelog / other) to make package authors aware that this might cause path changes in their hosted docs

resolution: ok to add to recommended with the next major release

Fixed the "changed URL" issue by moving library URLs to just be .../index.html, in https://github.com/dart-lang/dartdoc/pull/3895.


Use custom error handler

We should use a custom error handler to transfer errors back to the parent process. We need to figure out how to deal with startup errors. I think we should use -d to only log them to STDERR. Another alternative would be simply parsing them. See https://travis-ci.org/amphp/file/jobs/245354788#L1645 which fails because UV can't be loaded, as compiling it fails.

Addressed by https://github.com/amphp/parallel/commit/d3ccd57d2389a8c84131469aa30efc1ed64ffe8c.


Ensured Datasets Are Bundled Properly

These datasets include

location_data.csv
example_forecast.nc (NETCDF)
nhsn_fit_COVID.csv
nhsn_fit_flu.csv
example_flusight_submission.csv

As forecasttools stands now, the following data objects are contained:

example_flu_forecast_wo_dates.nc
example_flu_forecast_w_dates.nc
example_flusight_submission.parquet
location_table.parquet
nhsn_hosp_COVID.parquet
nhsn_hosp_flu.parquet

When an individual wants to use forecasttools via
pip3 install git+https://github.com/CDCgov/forecasttools-py@main

then the individual should expect to have accessible these data objects.
The code in pyproject.toml ensures the data objects are bundled in source distribution (sdist) and wheel (.whl) formats:
packages = [{include = "forecasttools"}]
include = [
    { path = "forecasttools/location_table.parquet", format = "sdist" },
    { path = "forecasttools/location_table.parquet", format = "wheel" },
    { path = "forecasttools/example_flusight_submission.parquet", format = "sdist" },
    { path = "forecasttools/example_flusight_submission.parquet", format = "wheel" },
    { path = "forecasttools/example_flu_forecast_wo_dates.nc", format = "sdist" },
    { path = "forecasttools/example_flu_forecast_wo_dates.nc", format = "wheel" },
    { path = "forecasttools/example_flu_forecast_w_dates.nc", format = "sdist" },
    { path = "forecasttools/example_flu_forecast_w_dates.nc", format = "wheel" },
    { path = "forecasttools/nhsn_hosp_COVID.parquet", format = "sdist" },
    { path = "forecasttools/nhsn_hosp_COVID.parquet", format = "wheel" },
    { path = "forecasttools/nhsn_hosp_flu.parquet", format = "sdist" },
    { path = "forecasttools/nhsn_hosp_flu.parquet", format = "wheel" },
]

The following can be used to test whether the data objects are properly packaged:

Create an empty virtual environment, then activate it.

python3 -m venv data_bundling_test_env
source data_bundling_test_env/bin/activate

Install forecasttools in the virtual environment.

pip3 install git+https://github.com/CDCgov/forecasttools-py@main

The following was outputted:
Collecting git+https://github.com/CDCgov/forecasttools-py@main
  Cloning https://github.com/CDCgov/forecasttools-py (to revision main) to /private/var/folders/cm/dlbpxkls2djcc1psjg2fzstc0000gn/T/pip-req-build-c0sxofrs
  Running command git clone --filter=blob:none --quiet https://github.com/CDCgov/forecasttools-py /private/var/folders/cm/dlbpxkls2djcc1psjg2fzstc0000gn/T/pip-req-build-c0sxofrs
  Resolved https://github.com/CDCgov/forecasttools-py to commit 4de2b4139c7200466094c5cfe4c9375a1a0fe104
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting arviz<0.21.0,>=0.20.0 (from forecasttools==0.0.1)
  Downloading arviz-0.20.0-py3-none-any.whl.metadata (8.8 kB)
Collecting epiweeks<3.0.0,>=2.3.0 (from forecasttools==0.0.1)
  Using cached epiweeks-2.3.0-py3-none-any.whl.metadata (2.6 kB)
Collecting matplotlib<4.0.0,>=3.9.2 (from forecasttools==0.0.1)
  Using cached matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl.metadata (11 kB)
Collecting polars<2.0.0,>=1.8.2 (from forecasttools==0.0.1)
  Downloading polars-1.12.0-cp39-abi3-macosx_11_0_arm64.whl.metadata (14 kB)
Collecting xarray<2025.0.0,>=2024.9.0 (from forecasttools==0.0.1)
  Downloading xarray-2024.10.0-py3-none-any.whl.metadata (11 kB)
Collecting setuptools>=60.0.0 (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Using cached setuptools-75.3.0-py3-none-any.whl.metadata (6.9 kB)
Collecting numpy>=1.23.0 (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Downloading numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl.metadata (62 kB)
Collecting scipy>=1.9.0 (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Using cached scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl.metadata (60 kB)
Requirement already satisfied: packaging in ./data_bundling_test_env/lib/python3.12/site-packages (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1) (24.1)
Collecting pandas>=1.5.0 (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Downloading pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl.metadata (89 kB)
Collecting h5netcdf>=1.0.2 (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Downloading h5netcdf-1.4.0-py3-none-any.whl.metadata (13 kB)
Collecting typing-extensions>=4.1.0 (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting xarray-einstats>=0.3 (from arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Downloading xarray_einstats-0.8.0-py3-none-any.whl.metadata (5.8 kB)
Collecting contourpy>=1.0.1 (from matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Downloading contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (5.4 kB)
Collecting cycler>=0.10 (from matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Using cached cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Downloading fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl.metadata (163 kB)
Collecting kiwisolver>=1.3.1 (from matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Downloading kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl.metadata (6.3 kB)
Collecting pillow>=8 (from matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Downloading pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl.metadata (9.1 kB)
Collecting pyparsing>=2.3.1 (from matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Downloading pyparsing-3.2.0-py3-none-any.whl.metadata (5.0 kB)
Collecting python-dateutil>=2.7 (from matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting h5py (from h5netcdf>=1.0.2->arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Downloading h5py-3.12.1-cp312-cp312-macosx_11_0_arm64.whl.metadata (2.5 kB)
Collecting pytz>=2020.1 (from pandas>=1.5.0->arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Downloading pytz-2024.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas>=1.5.0->arviz<0.21.0,>=0.20.0->forecasttools==0.0.1)
  Downloading tzdata-2024.2-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting six>=1.5 (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.9.2->forecasttools==0.0.1)
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Downloading arviz-0.20.0-py3-none-any.whl (1.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 4.6 MB/s eta 0:00:00
Using cached epiweeks-2.3.0-py3-none-any.whl (5.7 kB)
Using cached matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl (7.8 MB)
Downloading polars-1.12.0-cp39-abi3-macosx_11_0_arm64.whl (28.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 28.9/28.9 MB 16.9 MB/s eta 0:00:00
Downloading xarray-2024.10.0-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 20.0 MB/s eta 0:00:00
Downloading contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl (251 kB)
Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)
Downloading fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl (2.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 28.2 MB/s eta 0:00:00
Downloading h5netcdf-1.4.0-py3-none-any.whl (50 kB)
Downloading kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl (63 kB)
Downloading numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl (13.5 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.5/13.5 MB 26.0 MB/s eta 0:00:00
Downloading pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl (11.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 26.2 MB/s eta 0:00:00
Downloading pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl (3.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 1.6 MB/s eta 0:00:00
Downloading pyparsing-3.2.0-py3-none-any.whl (106 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl (29.9 MB)
Using cached setuptools-75.3.0-py3-none-any.whl (1.3 MB)
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Downloading xarray_einstats-0.8.0-py3-none-any.whl (32 kB)
Downloading pytz-2024.2-py2.py3-none-any.whl (508 kB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Downloading tzdata-2024.2-py2.py3-none-any.whl (346 kB)
Downloading h5py-3.12.1-cp312-cp312-macosx_11_0_arm64.whl (2.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.9/2.9 MB 82.1 MB/s eta 0:00:00
Building wheels for collected packages: forecasttools
  Building wheel for forecasttools (pyproject.toml) ... done
  Created wheel for forecasttools: filename=forecasttools-0.0.1-py3-none-any.whl size=3869507 sha256=68c5e07f045a855de942150fbd220155f98686d1d738a07592bb5dad960b358e
  Stored in directory: /private/var/folders/cm/dlbpxkls2djcc1psjg2fzstc0000gn/T/pip-ephem-wheel-cache-faq93ygh/wheels/0e/26/44/7657c96db44897dd4745e06a9bacc4e4e01b0229bb5236a838
Successfully built forecasttools
Installing collected packages: pytz, tzdata, typing-extensions, six, setuptools, pyparsing, polars, pillow, numpy, kiwisolver, fonttools, epiweeks, cycler, scipy, python-dateutil, h5py, contourpy, pandas, matplotlib, h5netcdf, xarray, xarray-einstats, arviz, forecasttools
Successfully installed arviz-0.20.0 contourpy-1.3.0 cycler-0.12.1 epiweeks-2.3.0 fonttools-4.54.1 forecasttools-0.0.1 h5netcdf-1.4.0 h5py-3.12.1 kiwisolver-1.4.7 matplotlib-3.9.2 numpy-2.1.3 pandas-2.2.3 pillow-11.0.0 polars-1.12.0 pyparsing-3.2.0 python-dateutil-2.9.0.post0 pytz-2024.2 scipy-1.14.1 setuptools-75.3.0 six-1.16.0 typing-extensions-4.12.2 tzdata-2024.2 xarray-2024.10.0 xarray-einstats-0.8.0

[notice] A new release of pip is available: 24.2 -> 24.3.1
[notice] To update, run: pip install --upgrade pip

Create and run a Python file with the following:

import forecasttools

print(forecasttools.location_table)
print(forecasttools.nhsn_hosp_flu)
print(forecasttools.nhsn_hosp_COVID)
print(forecasttools.nhsn_flu_forecast_wo_dates)
print(forecasttools.nhsn_flu_forecast_w_dates)
print(forecasttools.example_flusight_submission)

Deactivate the virtual environment:

deactivate


[feat] add window.isAlwaysOnTop method

Describe the problem
Since window.setAlwaysOnTop func,it is naturally to found the isAlwaysOnTop but I couldn't.
Is it a mistake?
Describe the solution you'd like
Impl the window.isAlwaysOnTop,which returns Promise<boolean> as other similar func.
Alternatives considered
No response
Additional context
No response

When filing issues in the future, it's best to use correct expressions. Even if you use tools like ChatGPT or Claude to improve the grammar, at the very least, the title should be clear and understandable at first glance, rather than being confusing as it is now.

The title should be clear and understandable at first glance, rather than being confusing as it is now.

Sorry,title is corrected now.Since what I want is the window.isAlwaysOnTop func to check if the window is on the top and search nothing while use isAlwaysOnTop so do I create this issue.I don't think it is confused at that time.
But it seems really confused someone,so I correct it.Thanks for your contribution on tauri.♪(´▽｀)


Update analyze_flutter_flutter.sh

Adds the rest of the packages we are actively using dart fix in:

flutter_test
integration_test
flutter_driver

pending https://github.com/flutter/flutter/pull/141300

Related to https://github.com/flutter/flutter/issues/139249

[x] I’ve reviewed the contributor guide and applied the relevant portions to this PR.

Contribution guidelines:

See our contributor guide for general expectations for PRs.
Larger or significant changes should be discussed in an issue before creating a PR.
Contributions to our repos should follow the Dart style guide and use dart format.

Note that this repository uses Gerrit for code reviews. Your pull request will be automatically converted into a Gerrit CL and a link to the CL written into this PR. The review will happen on Gerrit but you can also push additional commits to this PR to update the code review.

This project uses Gerrit for code reviews.

I knew that. Silly me I forgot. 😜
This copybara service is awesome!

This copybara service is awesome!

Except it opened two CLs for you :P


Error: spawnSync node ENOENT

Issue
A common cause for the error is when the SST app is not sitting at the root of a repo. And the cli package is in root's node_modules, while the resources package is in app's node_modules. ie.
/
  node_modules/
    @serverless-stack/
      cli/
  app/
    node_modules/
      @serverless-stack/
        resources/

And linting Lambda functions will failed with the error
Error: spawnSync node ENOENT

Solution
The solution is to have both the cli and resources packages installed at the root, or both at the app level.
Monorepo
If you have a monorepo setup, checkout this starter - https://github.com/serverless-stack/lerna-yarn-starter
TODO for maintainer

[ ] handle the cli and resources packages not installed at the same level. Currently, path to the cli package is guessed from the path to the resources package. https://github.com/serverless-stack/serverless-stack/blob/master/packages/resources/src/App.ts#L282-L296

We are transition this repo to https://github.com/sst/v2 and are closing this issue for now. If it is still relevant please reopen it there - sorry for the trouble


Auto-complete commands with TAB

Users will be able to auto-complete command words with the TAB key when typing from the command text field.

Keywords are divided into two categories:
First word -  contains the main feature's command identifier. (e.g. "course", "note")
Second word - contains the command function words. (e.g. "add", "edit"). Only command keywords available from the first word will be used for auto-completion for faster lookup.

If more matching words are available, the user can press TAB multiple times to cycle through them.

Auto-complete is case-sensitive as all commands are also case-sensitive.

This PR also contains the checkstyle fixes from #311 PR

Resolves #287

Coverage decreased (-0.4%) to 56.119% when pulling ed55c1cf01c435498c530fd99aba298638c6dd0c on jomcruz93:feature-auto-complete-cli into c3ab2dd6749a5a02650690d0e776fcf1c98eb307 on CS2113-AY1819S1-T16-1:master.


[bug] Qubino never finishes his interview

Checklist:

[x] I am not using Home Assistant. Or: a developer has told me to come here.
[x] I have checked the troubleshooting section and my problem is not described there.
[x] I have read the changelog and my problem is not mentioned there.

Build/Run method

[x] Docker
[ ] PKG
[ ] Snap package
[ ] Manually built (git clone - yarn install - yarn run build )

Zwavejs2Mqtt version: 6.2.0
Z-Wave JS version: 8.9.1
Describe the bug
Node 23 a Flush 1 Relay never pulls it through his interview.
This is now for a while and though pushing its button triggers a response every now and then it seems it gets stuck.
The node has been excluded and included a few times now to try to fix the problem but it just wont do.
For a long time i hade made peace with it but i think its interfering with the network in general which causes performance issues.
To Reproduce
Steps to reproduce the behavior:
Reinterview or reinclude the device.
Expected behavior
The interview completing in order to see if the network stability improves.
Additional context
Maybe not part of the same problem but a other 1 flush relay reports as unknown on Manufacturer, Product and Product code.
The interview of that component succeeds though, same goes for a 2 flush relay.
Last but not least the generation of the network graph has never been working for me?
Node 23 is next to Node 5, is almost in line of sight of  node 19 and node 2.
zwavejs2mqtt_2022-01-03 - General Debug.log
zwavejs2mqtt_2022-01-03 - General Silly.log
zwavejs_2022-01-03 - Zwave Debug.log

It looks like your mesh is in a terrible state. Many commands take seconds to reach the target
                                    transmit status:        OK, took 4410 ms
                                    repeater node IDs:      11
                                    routing attempts:       1
                                    protocol & route speed: Z-Wave, 9.6 kbit/s

and the responses don't come at all sometimes.
Check out and apply the first part here:
https://zwave-js.github.io/node-zwave-js/#/troubleshooting/connectivity-issues?id=general-troubleshooting

Hi Alcazone,
Oho that doesn't sound good and is strange because the thing is in the same
place for a time longer then the time Im encountering the problems.
Maybe something shifted as living near a railroad track makes things
tremble now and then.
I need to check this on the physical machine but it's not easy to reach.
I will take a look on it this Friday when I have more time.
Thanks in advance and I'll keep you updated.
Cheers,
Op di 4 jan. 2022 14:34 schreef AlCalzone @.***>:

It looks like your mesh is in a terrible state. Many commands take seconds
to reach the target
                                transmit status:        OK, took 4410 ms
                                repeater node IDs:      11
                                routing attempts:       1
                                protocol & route speed: Z-Wave, 9.6 kbit/s

and the responses don't come at all sometimes.
Check out and apply the first part here:
https://zwave-js.github.io/node-zwave-js/#/troubleshooting/connectivity-issues?id=general-troubleshooting
—
Reply to this email directly, view it on GitHub
https://github.com/zwave-js/node-zwave-js/issues/4032#issuecomment-1004816324,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASABF4QYMKNKM5MYJMUKI23UULZNZANCNFSM5LHNP5YA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>

Hi AlCalzone,
Like i promissed i went to check on the machine and i didn't see anything out of the ordinary.

The strange thing is it has been working for quite some time without any problems.
The alternative i have at the moment is to put the stick directly on the back of the machine but that also isnt recommended.

The strange thing is it has been working for quite some time without any problems.

You might just not have noticed. Or another USB device is now interfering that didn't previously.
Both your options are not ideal, you should really get a USB extension cable.

Hmm ok well let's get this thing sorted for once and for all then.
What is the recommendation of the extension cable?
Does it have to be long? Is it depending on the location the machine is in?
The situation is the following:
The machine running the Dockers is a shallow 1U rack which is located in a closet.
Directly in the neighbourhood are some power lines Pasing the closet from the circuitbreakers of the house to different places.

I can't give an exact recommendation, for some users 30cm is enough, others use longer ones. I'd say make it long enough so you can move it far away from the power lines and USB ports (e.g. the edge of the closet) and still experiment with the location a bit if that particular location still has interference.

Hi AlCalzone,
I ordered a 1 meter long extension cable and i have to see it improved the network throughput around a dosen times.
Im now able to get a topoloy every time i ask for it.
Also no timeouts on the statistics board.
Unfortunally the device wich started our little hunt still is acting up and not finishing its interview.
Here is a new logfile with the improvements made.
I did a heal of the network twice and also reinterviewd all the nodes again.
This did resolve the fact of some slaves not displaying there manufacturer data.
zwavejs_2022-01-12 - Debug.log

The device is a Qubino device and it's failing to answer to the endpoint query, which makes me suspicious.
Qubino devices have the ability to enable/disable endpoints via configuration parameters. However, the changes only show up after excluding and re-including the device. This is written very prominently in the manual, but I'm guessing many users don't read them if they have the nice config parameters in the UI.
Is it possible this is the case here?

If those parameters have been altered then that happend without me knowing about it as I never changed something without the UI.
What I did when it was still working was changing the behavior over S2 via the UI because there is a binary switch attached to it sending a pulse when the ventilation has to go in high gear.
Perhaps the solution could be to exclude/include the module again in order to get it back talking if that's what you're suggesting.

Perhaps the solution could be to exclude/include the module again in order to get it back talking if that's what you're suggesting.

Try it

Hi AlCalzone,
Unfortunally i think excluding it made it worse.
Starting to think that something might be wrong with the qubino?
zwavejs_2022-01-21.log

Still no connection to the device:
                                    transmit status:        NoAck, took 7810 ms
                                    routing attempts:       17
                                    protocol & route speed: Z-Wave, 40 kbit/s
                                    TX channel no.:         1
                                    route failed here:      15 -> 24

and next attempt:
                                    transmit status:        NoAck, took 8040 ms
                                    routing attempts:       19
                                    protocol & route speed: Z-Wave, 40 kbit/s
                                    TX channel no.:         1
                                    route failed here:      2 -> 24

The other sent messages to other devices seem to go through just fine. This leaves either the location of the node or the node itself.

Hmm i have been going back and fourth with it and i did get it working on one point.
But today i hade to update the container of ZwaveJS to match the Homeassistant container.
Things didnt get any better unfortunaly....
i'm now even missing a second unit as well having problems with my qubino again.
Is it still the mesh or is it something different this time?
zwavejs_2022-02-04.log
zwavejs_current.log

I only see the part where the driver tries to reach Node 24, but unfortunately that just looks like previously, except it is now trying the direct range.
zwavejs2mqtt now has a health check tool included in the network map (click node, press check health). You could try using that to potentially get some more insight. Maybe another node has a bad connection too and is influencing this one.
Just note that there currently is a bug where you have to restart zwavejs2mqtt if the check seems to go on forever.

@AlCalzone What is the probability that node 24 is the old node which i removed.
Node 25 would be the new node and supposingly be the working one?
Why did node 24 return? and is it messing up node 25 because its back?

It could be, but your log is filtered somehow so I only see communication with Node 24. If that one has been removed, you need to tell the controller that it was removed using the "remove failed node" function.

Ok node 24 was confirmed a relic of the new node 25.
Still after removing node 24 and a network heal, node 25 now still doesn't want to.
If i understand the attached log correctly it reply's as expected?
zwavejs_current.log

This time the device acknowledges the commands, but we're back to this:
https://github.com/zwave-js/node-zwave-js/issues/4032#issuecomment-1011449666
I think this is a case for the Qubino support.


Support Vale suggestions

The SublimeLinter-vale package supports two of the three available alert levels:

error
warning

It would be great if it could also support suggestion.

This is probably a simple change on our Regen.  You could try a PR or post some example output from vale we need to support and parse.

This is probably a simple change on our regex. You could try a PR or post some example output from vale we need to support and parse.

@kaste I think that's right!
Looking at:
https://github.com/SublimeLinter/SublimeLinter-vale/blob/0cd7c5a1841af358ae6d0ce4df934fffb4b0d74b/linter.py#L25
the package is picking up error and warning from the output of the vale command:
https://github.com/SublimeLinter/SublimeLinter-vale/blob/0cd7c5a1841af358ae6d0ce4df934fffb4b0d74b/linter.py#L22
It looks like it's simply ignoring suggestion. There's sample output on the Vale website main page: https://vale.sh.
The second column contains either error, warning, or suggestion.
I think the required diff is:
-        r'((?P<error>error)|(?P<warning>warning))\s{2,}'
+        r'((?P<error>error)|(?P<warning>warning)|(?P<suggestion>suggestion))\s{2,}'

Yeah almost.  I think we need to use the capturing group error_type.  Maybe like so
-        r'((?P<error>error)|(?P<warning>warning))\s{2,}'
+        r'(?P<error_type>\S+)\s{2,}'


metrics csv in ddp mode

Bug description
It seems like that metrics.csv only log rank 0 when launch ddp mode? Am I able to create  different  metrics.csv for logging different ranks, because I want to log losses in different rank? If so, How?
What version are you seeing the problem on?
v2.2
How to reproduce the bug
No response
Error messages and logs
# Error messages and logs here please

Environment

Current environment
#- PyTorch Lightning Version (e.g., 2.4.0):
#- PyTorch Version (e.g., 2.4):
#- Python version (e.g., 3.12):
#- OS (e.g., Linux):
#- CUDA/cuDNN version:
#- GPU models and configuration:
#- How you installed Lightning(`conda`, `pip`, source):

More info
No response

By default PyTorch Lightning will save metrics on rank 0, after aggregation.
If you need to save them individually per rank you need to do it manually, either by recording separate metrics, or saving a file from the rank:
def training_step(self, batch, batch_idx):
    # Your training logic
    loss = ...

    # Log metrics specific to the current rank
    # this will still save metrics on rank 0, but will save separate metrics per rank
    self.log(f"rank_{self.global_rank}_loss", loss, on_step=True, on_epoch=False, sync_dist=True)

    # Optionally save metrics to disk directly
    if batch_idx % 100 == 0:  # Save every 100 batches
        with open(f"metrics_rank_{self.global_rank}.txt", "a") as f:
            f.write(f"Step {self.global_step}, Loss: {loss.item()}\n")

    return loss


Update Composer dependencies (2024-01-03-00-17)

Visual regression test passed!
View the visual regression test report


⚠ Bofrost.at has degraded performance

In fcab3a7, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1825 ms

Resolved: Bofrost.at performance has improved in 0647e1d after 19 minutes.


fixed some exceptions

fixed some exceptions with sort descriptors, started filling in some color conversion and sorting stuff

Thanks @mrRay !


Feat: want to add an important blog of terrace farming  in blog section .

Describe the feature
we know terrace farming is an important metthod of farming and I wanted to add terrace farming blog in blog page .
Add ScreenShots

wanted to add a complete blog page of terrace farming .
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@Suchitra-Sahoo please assign this issue to me under gssoc label .

Currently it is not required.


Buffered subtests

t.test('test name', { buffer: true }, function (t) {
  t.plan(2)
  t.pass('this is fine')
  t.equal(1, 1)
})

This buffers the output until the test finishes, and produces output like:
ok 1 - test name {
    1..2
    ok 1 - this is fine
    ok 2 - should be equal
}

Landed in v9


Unable to extract storage_options from URL

Integration of fsspec  in Petastorm was a great step.
Fsspec support extracting storage_options from input url. In Petastorm, the url format is restricted i.e the option of extracting the storage options from url is blocked.
Petastorm internally converts the input url into required format (get_dataset_path(parsed_url) in fs_utils.py). It would be of great help if we could have mechanism to extract the storage_options from the input url similar to fsspec.

@manjuransari : could you propose a fix PR for this issue?

@selitvin sure will try to raise PR for the fix.

0.11.2 was released and it includes @manjuransari 's fix. Thanks, Manjur!


Unverified breakpoint

When I place a breakpoint and then run delve through the IDE,
the dots turn from red to "unverified".
The debugger doesn't realize that the breakpoints are even there.
When I exit debugger they go red again.
I have faced this issue in every Django project I've worked on. Initially it'll work just fine. Once I use it for few days, it stops working.  From thereon, it never starts working again.
I'm posting this issue here because of this https://github.com/Microsoft/vscode-go/issues/1421#issuecomment-410107474

You have failed to use the issue template to provide a lot of crucial information.

Please could you look at a new issue template and provide the missing information,
Please provide a sample repo with instructions to replicate this issue
Finally please try debugging using the new experimental debugger

Closing the issue as its been over a month since the last request for additional information.
Please feel free to reopen the issue with the requested information or just ping back on the issue with the info, and we'll be happy to re-open the issue.


broken login, empty channels

Per Mattermost guidelines, GitHub issues are for bug reports: http://www.mattermost.org/filing-issues/.
For troubleshooting see: http://forum.mattermost.org/.
For feature proposals see: http://www.mattermost.org/feature-requests/
If you've found a bug--something appears unintentional--please follow these steps:

Confirm you’re filing a new issue. Search existing tickets in Jira to ensure that the ticket does not already exist.
Confirm your issue does not involve security. Otherwise, please see our Responsible Disclosure Policy.
File a new issue using the format below. Mattermost will confirm steps to reproduce and file in Jira, or ask for more details if there is trouble reproducing it. If there's already an existing bug in Jira, it will be linked back to the GitHub issue so you can track when it gets fixed.

Summary
Problem with login
Environment Information

Device Name: pixel 7, 3a (emulated)
OS Version: Android 13
Mattermost App Version: 2.1-2.3
Mattermost Server Version: 7.7,7.8.2,7.9.2,7.10

Steps to reproduce
Try to login through gitlab with oidc
Expected behavior
Logging in
Observed behavior (that appears unintentional)
Stuck in loop, and after a while login works but channels are broken
2023/04/19 09:46:08.209 INFO  Running "Onboarding
2023/04/19 09:46:11.378 INFO  Running "Server
2023/04/19 09:46:26.820 INFO  Running "SSO
2023/04/19 09:46:59.846 WARN  Failed to set store from local data {
"jsEngine": "hermes",
"intl": {
"defaultMessage": "Received invalid response from the server.",
"id": "mobile.request.invalid_response"
},
"url": "/api/v4/users/me",
"message": "Received invalid response from the server."
}
2023/04/19 09:47:05.797 WARN  Handling Javascript error fetchSessions false
2023/04/19 09:47:05.800 ERROR fetchSessions {
"jsEngine": "hermes",
"status_code": 401,
"server_error_id": "api.context.session_expired.app_error",
"url": "/api/v4/users/me/sessions",
"message": "Invalid or expired session, please login again."
}
2023/04/19 09:47:07.728 WARN  Failed to set store from local data {
"jsEngine": "hermes",
"intl": {
"defaultMessage": "Received invalid response from the server.",
"id": "mobile.request.invalid_response"
},
"url": "/api/v4/users/me",
"message": "Received invalid response from the server."
}
2023/04/19 09:47:40.909 WARN  Handling Javascript error FetchPostsForChannel false
2023/04/19 09:47:40.911 ERROR FetchPostsForChannel {
"jsEngine": "hermes",
"status_code": 403,
"server_error_id": "api.user.view_archived_channels.get_posts_for_channel.app_error",
"url": "/api/v4/channels/bytciunboff1xryydit3xa4ute/posts?page=0&per_page=60&collapsedThreads=false&collapsedThreadsExtended=false",
"message": "Cannot retrieve posts for an archived channel"
}
2023/04/19 09:47:45.542 INFO  Running "Settings
2023/04/19 09:47:46.913 WARN  Handling Javascript error fetchSessions false
2023/04/19 09:47:46.913 ERROR fetchSessions {
"jsEngine": "hermes",
"intl": {
"defaultMessage": "Received invalid response from the server.",
"id": "mobile.request.invalid_response"
},
"url": "/api/v4/users/me/sessions",
"message": "Received invalid response from the server."
}
Possible fixes

com.mattermost.rn-latest (5).log

Are you using gitlab to login with a 3rd party openID provider?

Yes with use keycloak

So that may be the reason, we supporr gitlab login being gitlab the provider but not sure about using a 3rd party through gitlab.
But for the app is actually transparent as long as the server returns a valid session token.
Are you under EMM/MDM as well? Is the external browser used in the login flow?

WE don't use MDM, I guess its the external bowser that opens our keycloak page that handles the credentials

After som more research we also get this error
{"timestamp":"2023-04-21 11:36:01.196 Z","level":"info","msg":"api endpoint requires a license","caller":"web/context.go:115","path":"/api/v4/users/------/groups","request_id":"hrbfc3gi3ifjjbdyi3r83u8qgc","ip_addr":"<IP_ADDRESS>","user_id":"----","method":"GET","err_where":"","http_code":501,"error":": api endpoint requires a license"}

and this {"timestamp":"2023-04-21 11:36:26.742 Z","level":"error","msg":"Notification error","caller":"app/notification_push.go:110","logSource":"notifications","ackId":"itmut1omnbgsmy8u8s6pzfy33w","type":"message","userId":"---","postId":"sradpie6k7ymiqbgxrir6p8cjh","channelId":"zfk7mnj6jpy5xxoec5kqhd8oha","deviceId":"---","status":"device was reported as removed"}

We have similar Problems with Apps under Android and Apple. The Android App shows an connection error while the desktop App and mobile site are working.
Mattermost Server is 7.10.0 and Apps are 2.3.0.

We have similar Problems with Apps under Android and Apple. The Android App shows an connection error while the desktop App and mobile site are working.
Mattermost Server is 7.10.0 and Apps are 2.3.0.
//Update: Problem is fixed Solution: #7313 (comment)

I don't see how this fixes our issue and there is no solution in that thread just a "we fixed something with ipv6"
Can you provide more info about what was broken on your end and what changes you did to elevate the problems.

The solution only relates to our problem. Apparently this has nothing to do with yours, even if the characteristics are similar.
Ultimately, how a possible IPv6 problem can be solved must be evaluated on the affected system. As I wrote in the linked post, the server no longer allowed a v6 version connection, a reboot solved the problem. As a consequence, our monitoring has now received explicit checks so that we are aware of this. Updates could have been the cause.

@LabanPheidias There seems to be some error while fetching the session and the users. Some of the errors in the logs are not really informative, but we are working on that. Hopefully next week beta can give more clarity into the logs.
You can see that the first thing to fail is api/v4/users/me. Is there any message in the server logs where that endpoint is not returning a 20x value?
The other error you are seeing regarding groups is normal. We should make a few changes to avoid that request to be done to begin with, but should not create any issue.

@LabanPheidias Here are instructions on how you can access the Beta app: https://mattermost.com/blog/mobile-beta-program-v2/.

This is the errorlog from the beta app. 2023/05/11 13:04:33.898 DEBUG error on ssoLogin Received invalid response from the server.; unexpected end of stream on https://mattermost-tst.smhi.se/...
2023/05/11 13:04:33.909 WARN  Failed to set store from local data {
"jsEngine": "hermes",
"intl": {
"defaultMessage": "Received invalid response from the server.",
"id": "mobile.request.invalid_response"
},
"details": {
"jsEngine": "hermes",
"code": "EUNSPECIFIED",
"message": "unexpected end of stream on https://mattermost-tst.smhi.se/...",
"userInfo": null,
"nativeStackAndroid": [
{
"lineNumber": 202,
"file": "Http1ExchangeCodec.kt",
"methodName": "readResponseHeaders",
"class": "okhttp3.internal.http1.Http1ExchangeCodec"
},
{
"lineNumber": 106,
"file": "Exchange.kt",
"methodName": "readResponseHeaders",
"class": "okhttp3.internal.connection.Exchange"
},
{
"lineNumber": 79,
"file": "CallServerInterceptor.kt",
"methodName": "intercept",
"class": "okhttp3.internal.http.CallServerInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 34,
"file": "ConnectInterceptor.kt",
"methodName": "intercept",
"class": "okhttp3.internal.connection.ConnectInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 95,
"file": "CacheInterceptor.kt",
"methodName": "intercept",
"class": "okhttp3.internal.cache.CacheInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 83,
"file": "BridgeInterceptor.kt",
"methodName": "intercept",
"class": "okhttp3.internal.http.BridgeInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 76,
"file": "RetryAndFollowUpInterceptor.kt",
"methodName": "intercept",
"class": "okhttp3.internal.http.RetryAndFollowUpInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 20,
"file": "BearerTokenInterceptor.kt",
"methodName": "intercept",
"class": "com.mattermost.networkclient.interceptors.BearerTokenInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 26,
"file": "TimeoutInterceptor.kt",
"methodName": "intercept",
"class": "com.mattermost.networkclient.interceptors.TimeoutInterceptor"
},
{
"lineNumber": 16,
"file": "RuntimeInterceptor.kt",
"methodName": "intercept",
"class": "com.mattermost.networkclient.interceptors.RuntimeInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 29,
"file": "RetryInterceptor.kt",
"methodName": "intercept",
"class": "com.mattermost.networkclient.interfaces.RetryInterceptor$DefaultImpls"
},
{
"lineNumber": 6,
"file": "ExponentialRetryInterceptor.kt",
"methodName": "intercept",
"class": "com.mattermost.networkclient.interceptors.ExponentialRetryInterceptor"
},
{
"lineNumber": 16,
"file": "RuntimeInterceptor.kt",
"methodName": "intercept",
"class": "com.mattermost.networkclient.interceptors.RuntimeInterceptor"
},
{
"lineNumber": 109,
"file": "RealInterceptorChain.kt",
"methodName": "proceed",
"class": "okhttp3.internal.http.RealInterceptorChain"
},
{
"lineNumber": 201,
"file": "RealCall.kt",
"methodName": "getResponseWithInterceptorChain$okhttp",
"class": "okhttp3.internal.connection.RealCall"
},
{
"lineNumber": 517,
"file": "RealCall.kt",
"methodName": "run",
"class": "okhttp3.internal.connection.RealCall$AsyncCall"
},
{
"lineNumber": 1137,
"file": "ThreadPoolExecutor.java",
"methodName": "runWorker",
"class": "java.util.concurrent.ThreadPoolExecutor"
},
{
"lineNumber": 637,
"file": "ThreadPoolExecutor.java",
"methodName": "run",
"class": "java.util.concurrent.ThreadPoolExecutor$Worker"
},
{
"lineNumber": 1012,
"file": "Thread.java",
"methodName": "run",
"class": "java.lang.Thread"
}
]
},
"url": "/api/v4/users/me",
"message": "Received invalid response from the server."
}
2023/05/11 13:05:42.229 DEBUG error on fetchSessions Received invalid response from the server.; Broken pipe
2023/05/11 13:15:00.344 DEBUG error on fetchSessions Received invalid response from the server.; Broken pipe

I think we have narrowed down the problem to a miss in how mattermost handles oidc through gitlab..
https://mattermost.uservoice.com/forums/306457-general/suggestions/43024092-use-the-preferred-username-claim-as-the-mattermost
we have a prefered username XXXXXX in our keycloak, but mattermost won't use it and instead creates a username derived from the mailadress.
And it seems that the apps have different levels of tolerance regarding if the username in keycloak can differ from whats in mattermost. The android app has the most app breaking problems.


Consortial Hyku for Open Educational Resources

Gretchen Gueguen
<EMAIL_ADDRESS>This presentation will explore the development of Hyku for Open Educational Resources — openly licensed educational materials such as textbooks, quizzes, classroom activities, etc. — while capitalizing on Hyku's multi-tenancy and sharing of infrastructure across two large groups of libraries. The PALCI and PALNI consortia (representing libraries in Pennsylvania, New York, New Jersey, West Virginia and Indiana) have just received a two year IMLS National Leadership Grant to develop Hyku into a multi-tenant, consortia-based service capable of handling OER in addition to other institutional repository resource types. In addition to leveraging collective expertise through consortia, two new work types are being developed for OER and electronic thesis and dissertations. This presentation will focus on the first work type being developed for OER , describing the features and uses of these resources, how the new work type model is being developed, and examine why Hyku and the Open Source Software community is a great home for this project.

8/27 Registered


[Layer] add Weight Layer

This layer contains only weights for building tensor-level graph

Self-evaluation:

Build test: [X]Passed [ ]Failed [ ]Skipped
Run test:   [X]Passed [ ]Failed [ ]Skipped

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #2694. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://ci.nnstreamer.ai/.


Fixed the error in the pdo decimal test

Coverage decreased (-0.08%) to 75.492% when pulling 83ded9f9a99f62ea0a89ae24ad6f123180deb0bb on yitam:decimals into 76c595fc2bfc0434979f5523feb03572f4bad673 on Microsoft:dev.

Codecov Report

Merging #890 into dev will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev     #890   +/-   ##
=======================================
  Coverage   80.28%   80.28%
=======================================
  Files          25       25
  Lines        7719     7719
=======================================
  Hits         6197     6197
  Misses       1522     1522

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 76c595f...83ded9f. Read the comment docs.


Make gui2 e2e tests pass on macos

When I run ./run gui2 test there is a test that always fails on macos.

note: this is because macos uses Meta (the Command key) instead of Control


roslaunch autoware_camera_lidar_calibrator

Bug report
... logging to /home/wyq/.ros/log/0d459c74-623b-11e9-bd8f-0090f5fb14b2/roslaunch-wyq-CW35S-9307.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://wyq-CW35S:45999/
SUMMARY
PARAMETERS

/autoware_camera_lidar_calibration_node/camera_info_src: /camera_info
/autoware_camera_lidar_calibration_node/image_src: /image_rectified
/calibration_publisher/calibration_file: /home/wyq/2019041...
/calibration_publisher/camera_frame: camera
/calibration_publisher/image_topic_src: /image
/calibration_publisher/publish_camera_info: True
/calibration_publisher/publish_extrinsic_mat: False
/calibration_publisher/register_lidar2camera_tf: False
/calibration_publisher/target_frame: velodyne
/rectifier/camera_info_src: /camera_info
/rectifier/image_src: /image
/rosdistro: kinetic
/rosversion: 1.12.14

NODES
/
autoware_camera_lidar_calibration_node (autoware_camera_lidar_calibrator/autoware_camera_lidar_calibration_node)
calibration_publisher (calibration_publisher/calibration_publisher)
image_view2 (image_view2/image_view2)
rectifier (image_processor/image_rectifier)
ROS_MASTER_URI=http://localhost:11311
process[calibration_publisher-1]: started with pid [9324]
process[rectifier-2]: started with pid [9325]
process[image_view2-3]: started with pid [9340]
[ INFO] [1555636984.914030462]: [image_rectifier] image_src: /image
[ INFO] [1555636984.914123850]: [image_rectifier] camera_info_src: /camera_info
[ INFO] [1555636984.914140007]: [image_rectifier] Subscribing to... /image
ERROR: cannot launch node of type [autoware_camera_lidar_calibrator/autoware_camera_lidar_calibration_node]: can't locate node [autoware_camera_lidar_calibration_node] in package [autoware_camera_lidar_calibrator]
[ INFO] [1555636984.917238717]: [image_rectifier] Subscribing to... /camera_info
[ INFO] [1555636984.921328329]: [image_rectifier] Publishing Rectified image in /image_rectified
[ INFO] [1555636984.921387237]: [image_rectifier] Ready. Waiting for data...
Required information:
When I run the code
roslaunch autoware_camera_lidar_calibrator camera_lidar_calibration.launch intrinsics_file:=/home/wyq/20190417_1624_autoware_camera_calibration.yaml image_src:=/image

ERROR: cannot launch node of type [autoware_camera_lidar_calibrator/autoware_camera_lidar_calibration_node]: can't locate node [autoware_camera_lidar_calibration_node] in package [autoware_camera_lidar_calibrator]
happened.
It seems that the problem of environment variables. I set environment variables by
source install/setup.bash

but I don't know what wrong it is.

It seems like install option in CMakeLists.txt is wrong.
Try adding these lines at the end of ~/Autoware/ros/src/sensing/fusion/packages/autoware_camera_lidar_calibrator/CMakeLists.txt.
and recompile.
install(TARGETS autoware_camera_lidar_calibration_node
        ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
        LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
        RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

thank u~, but i just copy the executable file ' autoware_camera_lidar_calibration_node ' in the folder ' Autoware/ros/build/autoware_camera_lidar_calibrator/devel/lib/autoware_camera_lidar_calibrator ', to the folder 'Autoware/ros/install/autoware_camera_lidar_calibrator/lib/autoware_camera_lidar_calibrator', and solve this problem.

already fixed on #2195


How to preserve client source IP (disable snat) at ingress gateway level (envoy) ?

Hello,
Problem description
How to configure Istio CNI and Envoy proxy at ingress level with TPROXY mode ?
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[x] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Expected behavior
I would like to keep the client source IP when its TCP packet leave the istio ingress GW pod
Version (include the output of istioctl version --remote and kubectl version and helm version if you used Helm)
$ istioctl version --remote
client version: 1.4.3
citadel version: 1.4.3
citadel version: 1.4.3
citadel version: 1.4.3
galley version: 1.4.3
galley version: 1.4.3
galley version: 1.4.3
ingressgateway version: 1.4.3
ingressgateway version: 1.4.3
ingressgateway version: 1.4.3
ingressgateway version: 1.4.3
ingressgateway version: 1.4.3
ingressgateway version: 1.4.3
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
nodeagent version:
pilot version: 1.4.3
pilot version: 1.4.3
pilot version: 1.4.3
policy version: 1.4.3
policy version: 1.4.3
policy version: 1.4.3
sidecar-injector version: 1.4.3
sidecar-injector version: 1.4.3
sidecar-injector version: 1.4.3
telemetry version: 1.4.3
telemetry version: 1.4.3
telemetry version: 1.4.3
data plane version: 1.4.3 (29 proxies), 1.4.0 (2 proxies)

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.1", GitCommit:"d647ddbd755faf07169599a625faf302ffc34458", GitTreeState:"clean", BuildDate:"2019-10-02T17:01:15Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.1", GitCommit:"d647ddbd755faf07169599a625faf302ffc34458", GitTreeState:"clean", BuildDate:"2019-10-02T16:51:36Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}

How was Istio installed?
istioctl
Istio is deployed with the following command (SDS & Istio CNI activated)
istioctl manifest generate --set profile=sds --set values.gateways.istio-egressgateway.enabled=false --set values.gateways.istio-ingressgateway.sds.enabled=true --set values.gateways.istio-ingressgateway.type=NodePort --set gateways.components.ingressGateway.k8s.hpaSpec.minReplicas=6 --set gateways.components.ingressGateway.k8s.hpaSpec.maxReplicas=8 --set values.global.mtls.enabled=false --set autoInjection.components.injector.k8s.replicaCount=3 --set configManagement.components.galley.k8s.replicaCount=3 --set trafficManagement.components.pilot.k8s.hpaSpec.minReplicas=3 --set policy.components.policy.k8s.hpaSpec.minReplicas=3 --set telemetry.components.telemetry.k8s.hpaSpec.minReplicas=3 -f istio-custom-resources.yaml > istio-sds-manifest-LoadBalancer8.yaml
istioctl manifest apply -f istio-sds-manifest-LoadBalancer8.yaml

Here the content of the istio-custom-resources.yaml  file
$ cat istio-custom-resources.yaml
apiVersion: install.istio.io/v1alpha2
kind: IstioControlPlane
spec:
  cni:
    enabled: true
    components:
      cni:
        namespace: kube-system
  values:
    cni:
      excludeNamespaces:
       - default
       - istio-system
       - kube-node-lease
       - kube-public
       - kube-system
    mixer:
      telemetry:
        podAntiAffinityTermLabelSelector:
        - key: istio
          operator: In
          values: mixer
          topologyKey: failure-domain.beta.kubernetes.io/zone
          weight: 90
        - key: istio
          operator: In
          values: mixer
          topologyKey: kubernetes.io/hostname
          weight: 100
    pilot:
      podAntiAffinityTermLabelSelector:
      - key: istio
        operator: In
        values: pilot
        topologyKey: failure-domain.beta.kubernetes.io/zone
        weight: 90
      - key: istio
        operator: In
        values: pilot
        topologyKey: kubernetes.io/hostname
        weight: 100
    prometheus:
      podAntiAffinityTermLabelSelector:
      - key: app
        operator: In
        values: prometheus
        topologyKey: failure-domain.beta.kubernetes.io/zone
        weight: 90
      - key: app
        operator: In
        values: prometheus
        topologyKey: kubernetes.io/hostname
        weight: 100
    grafana:
      podAntiAffinityTermLabelSelector:
      - key: app
        operator: In
        values: grafana
        topologyKey: failure-domain.beta.kubernetes.io/zone
        weight: 90
      - key: app
        operator: In
        values: grafana
        topologyKey: kubernetes.io/hostname
        weight: 100
    gateways:
      istio-ingressgateway:
        ports:
        - name: status-port
          port: 15020
          targetPort: 15020
        - name: http2
          port: 80
          targetPort: 80
          nodePort: 30620
        - name: https
          port: 443
          nodePort: 31068
        - name: kiali
          port: 15029
          targetPort: 15029
        - name: prometheus
          port: 15030
          targetPort: 15030
        - name: grafana
          port: 15031
          targetPort: 15031
        - name: tracing
          port: 15032
          targetPort: 15032
        - name: tls
          port: 15443
          targetPort: 15443
  unvalidatedValues:
    cni:
      logLevel: info
    gateways:
      istio-ingressgateway:
        externalTrafficPolicy: Local
        podAntiAffinityTermLabelSelector:
        - key: app
          operator: In
          values: istio-ingressgateway
          topologyKey: failure-domain.beta.kubernetes.io/zone
          weight: 10
        - key: app
          operator: In
          values: istio-ingressgateway
          topologyKey: kubernetes.io/hostname
          weight: 20
        - key: app
          operator: In
          values: istio-ingressgateway
          topologyKey: accessed-from-internet
          weight: 100
  security:
    components:
      citadel:
        k8s:
          replicaCount: 3

Here is the infrastructure topology (very common).
Customer (IP <IP_ADDRESS>) => LoadBalancer (HaProxy) => Kube Proxy (istio-ingressgateway) => Istio Ingress GW POD (envoy) => Customer POD (container + envoy sidecar)
All is working well into my k8s cluster and Istio Mesh. I'm using bookinfo application to test Istio.
Bookinfo application is reachable through HTTP and HTTPS.
My goal is to apply Istio AuthorizationPolicy based on source ipBlocks at the envoy proxy level of the customer POD. I want my customer to be able to filter the external trafic coming into their pods at the cusotmer POD level and not at the Ingress GW level.
To do that i need ingress GW Envoy proxy to preserve source IP (SNAT disable).
By default the souce IPs are natted by the envoy proxy of the Ingress GW using its own IP which is the IP of the ingress GW POD. So the packet coming into the envoy sidecar has the source IP of the Ingress GW POD and not the one of the real customer.
After many reads about the subject (tproxy mode) and certainly a misunderstanding from my side, i don't succeed in keeping the client source IP when the TCP packets goes outside the envoy proxy from the ingress gw pod.
I do not understand how to activate TPROXY mode on the Envoy proxy at the ingress GW  POD level.
Moreover, i think i need to modify Istio CNI DaemonSet to instruct it to use TPROXY mode to make iptables rules configured accordingly. How to do that with Istio CNI ?
Hope i've provided the needed information to get some help !
Thanks

I think that you can change externalTrafficPolicy: Cluster to externalTrafficPolicy: Local in istio-ingressgateway service

@luisra51  can not work in istio1.4.5 or istio1.5

@catman002 I try in 1.4.5 version and work

I think that you can change externalTrafficPolicy: Cluster to externalTrafficPolicy: Local in istio-ingressgateway service

Already done.
The externalTrafficPolicy parameter set to Local at the service level allow to keep source IP when the packet leave the ipvs proxy. So the IP is preserved when coming into the ingress GW POD. But not when leaving the Ingress GW Pod which is what i want.
Here is my "schema" annotated which illustrate where my problem is.
Customer (IP <IP_ADDRESS>) => LoadBalancer (HaProxy) (source ip <IP_ADDRESS> is preserved thanks to haproxy "usesrc clientip") => Kube Proxy (istio-ingressgateway) (source ip <IP_ADDRESS> is preserved thanks to service externalTrafficPolicy: Local parameter) => Istio Ingress GW POD (envoy) (How to preserve the source IP here when the packet leave the Envoy Proxy ?) =>  Customer POD (container + envoy sidecar) (Source IP is lost at this level because source ip is natted by Istio Ingress GW POD)

@luisra51 can not work in istio1.4.5 or istio1.5

Are you telling me that it's impossible to preserve source IP after Istio ingress GW POD ?
How to do some ip based authorizationpolicies in that case ?
Thanks

no,  @jaxklag

With the change of externalTrafficPolicy: Local I resolved to keep the source ip.
The authorizationpolicies to restrict by ip did not work for a specific service. for the entire cluster yes

Hi @jaxklag,
Did you ever find a solution to this? I'm facing the exact same issue. Using GCP network load balancers, externalTrafficPolicy Local, DaemonSets, I see the ingress GW gets the real user's IP but just the pod IP makes it to the service pods. Any help appreciated! Thanks

Is there a solution for this issue?
I have the same issue with an azure AKS cluster. externalTrafficPolicy Local is working fine without istio. But with istio inplace the request will be always natted with the ip of the ingressgateway pod

Also curious on a resolution to this issue

Ran into this same issue, but with a bit of a different setup as i'm using apisix for the ingress gateway. Turns out i needed interceptionMode: TPROXY for this to work. I enabled this only for the ingress gateway pod(s) using the following annotation:
sidecar.istio.io/interceptionMode: TPROXY

see:

https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#ProxyConfig-InboundInterceptionMode
https://istio.io/latest/docs/reference/config/annotations/

I noticed that many of you have been inquiring about preserving client source IP in Istio. I recently wrote a blog post titled Maintaining Traffic Transparency: Preserving Client Source IP in Istio that addresses this topic in detail. I hope you find it helpful in solving your source IP preservation challenges. Feel free to check it out and let me know if you have any questions or feedback.


Little papercuts

What

[ ] Bad translation in Turkish
[ ] the add price icon in edit mode should be the same as the one in the action bar
[ ] Dark mode issue in edit mode
[ ] dark mode issue in Road to Scores

Two issues are fixed in https://github.com/openfoodfacts/smooth-app/pull/5829
One suggestion (but I'm not sure it's relevant).
On the product page, the AppBar has two lines : name and brands
On the edit page, name and brands are on the same line and the barcode is visible when scrolling.
Should we harmonize that behavior? Or is-it OK?

Actually, SSS is the proper Turkish translation, not a bug (I had already spotted it and forgotten about it).
@g123k maybe not, the barcode has more value in edit mode, and it might be noise elsewhere. That said we show the barcode in the view as well in edit mode, right ? so we might remove it from the header.

@g123k also, pressing the visual barcode in edit mode, I would expect it to copy it. We have a copy button directly in the top bar which currently does that.


fix(influxdb): use influxdb.Error in ID.Decode

Closes #13873
https://github.com/influxdata/influxdb/blob/e725e1a2bc7361b3cbf3e3b85984cd6cbf1d9db2/http/org_service.go#L268-L273
Describe your proposed changes here.
conv ErrInvalidID ErrInvalidIDLength to influxdb.Error.
so all callers of ID.DecodeFromString no need to wrap err returned by ID.DecodeFromString to influxdb.Error.

[x] CHANGELOG.md updated with a link to the PR (not the Issue)
[x] Well-formatted commit messages
[x] Rebased/mergeable
[x] Tests pass
[x] http/swagger.yml updated (if modified Go structs or API)
[x] Documentation updated or issue created (provide link to issue/pr)
[x] Signed CLA (if not already signed)

ping @jademcgough


"At the current rate you would receive" does not match "Unrealized P/L"

This might be a user error on my side but I don't understand why these two metrics disagree:

P/L indicates that I am making a loss but right next to it, it says that I will be making a profit.
I also don't understand what "At the current rate" actually means. Does this refer to the exchange rate? Interest rate?

As discussed today in the morning:
Unrealized P/L represents profit or loss, i.e. a plus or minus on your margin.
At the current rate you would receive defines the complete payout.
It would help to relate these, i.e. display
      Margin
+/- Unrealized P/L
-------------------
      Payout


GLM when observations of one variable are all the same

Hello everyone,
I'm a new Spark user (through sparklyr) so sorry if I'm reporting this to the wrong people!
The title is pretty much self explanatory: When one of the variables of a table are all the same the GLM routine throws an error, which is not very clear (at least to me!). Wouldn't it be easier if the user got just a warning, instead?
Also, would anyone suggest a quick workaround to this? As I have several variables, I really don't want to spend time checking if each one of them is all the same (specially knowing this test will also be performed on Scala...).
Here is a minimal reproducible example. Note that the behaviour is different from the glm routine from base R.
library(sparklyr)
library(dplyr)

sc <- spark_connect(master = "local")

x = cbind(rep(1,5), 1:5)
y = rnorm(5)

df = as.data.frame(cbind(x,y))

copy_to(sc, df)

ml_generalized_linear_regression(x= tbl(sc, "df"), formula = y ~. , family = "gaussian", link = "log")

glm(formula = y ~. , family = gaussian(link = "log"), data = df, start = rep(1,3))

Seems to be a convergence issue? With identity link:
> ml_generalized_linear_regression(x= tbl(sc, "df"), formula = y ~. , family = "gaussian", link = "identity")
Coefficients:
(Intercept)          V1          V2
 -0.2234908   0.0000000  -0.1019399

Degress of Freedom:  4 Total (i.e. Null);  2 Residual
Null Deviance:       0.7395
Residual Deviance:   0.6356	AIC: 11.88

Closing since this doesn't seem to be a sparklyr issue.


Lazy loading components

Light start with basic async loading of search result components related to the different instances.
Skipped factory implementation and all that advanced stuff for now.

This looks good.


Added a Timer

Added a timer, this change should improve the overall user experience and engagement.
Kindly label it under hacktoberfest 2024

I have created Pull Request pls check it


Missing the requirement to include a header value

This page should include a reference to the request header with name "aeg-event-type" and value "Notification" that is required for an Event Grid triggered function.
I kept getting Bad Request responses and it was only after reading through documentation for an hour that I found this page that told me I needed to include this header:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid-trigger?tabs=csharp#manually-post-the-request

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 65180748-1596-466c-d651-2acfdc47a89f
Version Independent ID: 7924ea9d-0669-6fa5-655a-ce2dee7bbc01
Content: Post event to custom Azure Event Grid topic - Azure Event Grid
Content Source: articles/event-grid/post-to-custom-topic.md
Service: event-grid
GitHub Login: @spelluru
Microsoft Alias: spelluru

@JohnMcAvinue Thank you for your feedback! We will review and update as appropriate.

@JohnMcAvinue I have reviewed both the document.
This first document: https://docs.microsoft.com/en-us/azure/event-grid/post-to-custom-topic talks about how you can post the events to the custom topic that you have created in the portal. To authenticate the custom topic you need to pass the authentication header as 'aeg-sas-key'
Example: aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg==
This second document section: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid-trigger?tabs=csharp#manually-post-the-request talks about how you can test your event grid function locally. If you see the endpoint URL : http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME} it is the localhost not the custom topic that you create in the Azure portal. The azure event grid triggers are configurated at the azure event grid subscription end (not the event grid topic).
There are event sources and event subscriptions in azure event grid. The first article talks about event sources i.e. custom events where the second talks about event handler i.e. event grid subscriptions (Event Grid Trigger)
Reference: https://docs.microsoft.com/en-in/azure/event-grid/overview

Hope the above clarifies. Let me know if you have any concerns.

Thanks for looking into this and replying so promptly.
The first article does not make it clear that it only works when submitting to the real Azure Event Grid. It may have been written for that purpose but it definitely isn't clear and obvious.
From a developer perspective I definitely think this should be made clear and/or the page modified to explain how to call locally. The only differences are the addition of that header and lack of requirement for authentication.

@JohnMcAvinue Apology if it was not clear in my initial response. Event Grid sources and event grid handlers are two different things. The event grid sources are classified as system topics (azure inbuild topics that pushes the event to event grid) and custom topics (where you can push your custom events to the event grid)
Once you have pushed the events to the event grid topics there are subscriptions that you create on the topics having filter conditions (only events that you are interested in).
Therefore the first talks article talk about event grid topics and the article heading says "Post to custom topic for Azure Event Grid" and if you into the individual sections it only talks about custom topics like
To get the endpoint for a custom topic with Azure CLI, use:
This article describes how to post an event to a custom topic.
For custom topics, the top-level data contains the same fields as standard resource-defined events.
For example, a valid URI is: https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01.
More details what are custom topics: https://docs.microsoft.com/en-us/azure/event-grid/custom-topics
Event subscription pushed the events to configured endpoints like webhook, function app, service bus, event hub, etc.
When you azure function with event grid trigger then you specify event source (event grid subscription name) that will push the events to your function.
Now the second articles talk about this stimulation when you don't specify any source (event grid subscription) and want to test your function without the real event grid subscription. To stimulate this you need to pass "aeg-event-type" value as "Notification" so your local function app can be tested.

@JohnMcAvinue Just following up here. Hope my previous comment clears things up.

@JohnMcAvinue Hope the above helps and clears things up. We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Support for Homebridge 2.0

Please update the plugin to work with Homebridge 2.0.  It breaks a lot of plugins once it goes live, and this is one of them.

I do not have a controller to test against at this point just hose timers. Would you mind share the warning messages you see, and could you test a beta?

I could test a beta. This is the error below. The homebridge team has shared this link on how version 2.0 will break plugins:  TO USERS AND PLUGIN DEVELOPERS

Homebridge 2.0 is on the way and brings some breaking changes to existing plugins.
Please visit the following link to learn more about the changes and how to prepare
https://github.com/homebridge/homebridge
/wiki/Updating-To-Homebridge-v2.0

[7/23/2024, 10:35:17 PM] [Rachio] Error updating service TypeError: service.getCharacteristic(...).getValue is not a function
at /opt/homebrew/lib/node_modules/homebridge-rachio-irrigation/rachioupdate.js:138:60
at Array.forEach ()
at RachioPlatform.updateService (/opt/homebrew/lib/node_modules/homebridge-rachio-irrigation/rachioupdate.js:133:38)
at RachioPlatform.eventMsg (/opt/homebrew/lib/node_modules/homebridge-rachio-irrigation/rachioplatform.js:946:4)
at RachioPlatform.setOnlineStatus (/opt/homebrew/lib/node_modules/homebridge-rachio-irrigation/rachioplatform.js:674:9)
at /opt/homebrew/lib/node_modules/homebridge-rachio-irrigation/rachioplatform.js:454:11
at processTicksAndRejections (node:internal/process/task_queues:95:5)

I have posted a beta version that I tested against 2.0 beta 8 (which is no longer available) I was able to address the error you reported and a naming warning for valve accessories, I am not sure if the controller will have the same warning or not.
If you can restart the plugin and look for errors and remove the cached accessory and restart.
thanks

This worked for me, thank you @valiquette


Missing CRDs after upgrade

Describe the Bug:
Following VPC Resource Controller upgrade from v1.1.4 to v1.1.5, SecurityGroupPolicy objects created before the upgrade are returning as not found by the annotation webhook:
Webhook couldn't find SGP definition: GroupVersionResource or GroupKind didn't match. Will allow regular pods creation.

Those objects are present when kubectl get SecurityGroupPolicy -A is run.
Observed Behavior:
Newly created pods are not annotated with the correct branch ENI.
Expected Behavior:
Pods should be annotated based on the SecurityGroupPolicy that they match.
How to reproduce it (as minimally and precisely as possible):
It is not clear how to reproduce this, though the setup seems to require:

VPC RC v1.1.4 and SecurityGroupPolicy objects to exist
VPC RC upgrade

Additional Context:
Environment: EKS 1.24

Kubernetes version (use kubectl version): v1.24
CNI Version - v1.12.6
OS (Linux/Windows): Linux

If we upgrade EKS control plane from 1.24 to 1.25, the vpc resource controller will also be upgraded from v1.1.4 to v1.1.5 automatically? Or does AWS sometime upgrade the vpc resource to newer version as needed?

@hitsub2 sorry for a late response. When you update your control plane, the service in control plane will be updated to the latest version. If you don't update, EKS will keep services updated as needed.

This should be a cache missing issue. We are using cached client. We are working on upgrading dependencies to make it more resilient.

Since it is not reproducible, I am closing it for now. Please feel free to reopen for any concern.


Ugly Number

Write a program to check whether a given number is an ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5.

Example 1:
Input:
6
Output:
true
Explanation:
6 = 2 × 3
Example 2:
Input:
8
Output:
true
Explanation:
8 = 2 × 2 × 2
Example 3:
Input:
14
Output:
false
Explanation:
14 is not ugly since it includes another prime factor 7.

Input is within the 32-bit signed integer range: [−231,  231 − 1].
read README.md carefully.
your code should pass all the test case on leetcode.

Hello want to work on this


Update build status link to new CI in the README.md file

Description
@marcoabreu
The top level README file still points to the old CI (builds.apache.org) status page. I have updated this to the new CI.
Note: This README.md still contains two more broken links to build.apache.org which should be updated. (These are logos from the apache build page but I do not know what they used to be)
Checklist
Essentials

[ ] Passed code style checking (make lint)
[ ] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[x] updated one link in the README.md file

Comments
Two more broken links exist in this file. If I am unable to fix it as a part of this PR, I will create a github issue for it.

Ah yeah I didn't add the Jenkins build status plugin yet. This is on my ToDo list but moved to later since it's a config change.


Inline SCSS/Template

Hello, how does it exactly work in angular-cli@1.0.0-beta.18??
I have
  "styles": [
        "content/styles/style.scss"
      ],

...

  "inline": {
      "style": true,
      "template": false
    },

In my angular-cli but the style is still in

The defaults is default arguments when you create a new component. If the template and style should be inlined in the component or creating a separate html/css file.
The global styles are currently written to a js file which appends all styles to your head upon loading. There's nothing wrong here.

Ah so.. so my fault.. i though its additional functionality, where i cant choose if the styles should be rendered to the DOM, or loaded as .css files with map files :-(

angular-cli does not let you configure any of the output.
#2646 is hopefully what you're looking for.

thank you..i cant wait for it


replace texts and link (master -> main)

I don't change at docs files, but also have old references to master branch at docs/source/installation.mdx. I should also update the docs?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Faster StartsWithSegments Ordinal check

Framework's call to native comes with a cost
Before

After

As an aside; the sets and whatnot have high costs as they are also doing dictionary lookups; typecasts and initalizing the feature cache

:shipit:
Do you have any thoughts @Tratcher?

Not a fan of this. Looks pretty unmaintainable. Is it really worth it? Can we make a change like this in corefx instead?

Would be change to coreclr https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/String.cs#L2562
Will propose.

@davidfowl No less maintainable than GetAsciiString :stuck_out_tongue:
I see your point though. This is something probably done once per request at most, and I doubt most apps are going to specify StringComparison.Ordinal.

Raised PR in coreclr https://github.com/dotnet/coreclr/pull/2667


Moonkin - Player Latency not working

Describe the bug
Varying values do not affect rotation. It is effectively a boolean switch triggered by either a positive or negative value (only way to affect DPS is to change from positive to negative value or vice versa). Technically impossible to react with a negative time lol but that's beside the point.
This current version is better than what was before, it at least recognizes a guaranteed 1 spell offset from eclipse proc.
To Reproduce
Ensure seed is set to anything other than 0
Changing latency to 1. Sim. Change to any other positive value, try 15000. Sim. Same results. If it took me 15s to realize eclipse proc'd, I shouldn't be reacting the way as explained in the timeline for casts.
Changing to a negative value will alter results, all negative values hold same result.
Expected behavior
Player reaction to eclipse buff should make the sim think a buff does NOT exist if it has been active for less than the current latency value.
Desktop (please complete the following information):
OS: Win
Browser: Chrome
Version: Unsure how to find
Additional context
I can only assume "moonkin.LunarEclipseProcAura.Duration" isn't what it seems from looking at the code. Possibly changing line 82 (and equivalent for solar) to..
lunarIsActive = (sim.CurrentTime - moonkin.LunarEclipseProcAura.startTime) > playerLatency
Would prove more accurate?

should be set now, the parameter was 'nanoseconds', its now the amount of 'milliseconds'


Specialize Intersperse::fold

Overriding Intersperse::fold's default implementation makes iteration with for_each approximately 10× faster than external iteration, and approximately 20× faster than for_each with an un-specialized fold:
$ cargo bench -- specialization
specialization::intersperse::internal_specialized          64 ns/iter (+/- 1)
specialization::intersperse::external                     638 ns/iter (+/- 45)
specialization::intersperse::internal_unspecialized     1,274 ns/iter (+/- 131)

@bluss I'd be interested in helping maintain itertools if you're still looking for someone. I'm a member of the rustsim organization, a regular contributor to nalgebra, and a drive-by contributor of API improvements to many libraries.

bors: r+
Thanks!

Yes, maintenance is definitely needed here, it would be great to have you if you are willing to take ownership!

Yes, maintenance is definitely needed here, it would be great to have you if you are willing to take ownership!

I am!

Great, you're added as a contributor. crates.io invite sent. Nothing more is technically needed, but we could move this repo to an organization?

Thanks, @bluss! Life is unusually busy for me at the moment (all good things!), but I think I can generally give itertools at least a few hours each week, and I'll aim for (at the very least) monthly minor releases.
I'm thrilled to have the opportunity to give back to this library. I've used itertools in nearly every data analysis pipeline I've built so far in my PhD.
I've sent you an invitation to the rust-itertools organization. At your convenience, could you transfer this repository to that organization? To avoid breaking any cargo git dependencies, it's probably a good idea if you then create a fork of itertools under your account.

Interesting conundrum since afaik if I create a fork, it breaks a lot of the redirects that github sets up. Will transfer after having done some research on that

Ah, I wasn't aware github creates redirects. If so, no need to create a fork!

New home done. :tada:  I've renamed the repo to just itertools since I think that's what we would use inside this organisation. All the automatic redirects should mean it all works.
The old github pages site was just full of redirects to docs.rs. I removed github pages in the new location, because right now it dosen't seem useful to establish a new url for a lot of redirects. The redirects are kept at http://bluss.github.io/rust-itertools/  (by moving the github pages content from blus/rust-itertools to blus/bluss.github.io.

Also, thrilled that you are coming on! If you feel like it, we can see if others want to join the team. I haven't had much time for Rust, and uncertain about the future. Near future is vacation and not Rust at least :)

I'll be able to start giving itertools attention this thursday, and also next week. :)
Enjoy your vacation!