error: PyObjC requires macOS to build

Hello. When installing requirements on Linux I get this error:
Collecting pyobjc-core==7.3
  Downloading pyobjc-core-7.3.tar.gz (684 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 684.2/684.2 KB 5.4 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [2 lines of output]
      running egg_info
      error: PyObjC requires macOS to build
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

Thank you for letting me know about the error situation.
Fixed to support pip install on Linux.
Try Pull Request #17.
Please let me know if it works in your environment.

#17 has been merged. Please try it!


Test changing an endorsement policy

Add Support to dynamically change the endorsement policy and test the following scenarios

Move from a less restrictive to more restrictive endorsement policy
Move from a more restrictive to a less restrictive endorsement policy

From Saptha:
FINDINGS: Endorsement Policy Update: Majority to "AND('Org1MSP.member','Org2MSP.member','Org3MSP.member')"
Network : 3 Org, 2 peer each
-- During update
gateway throws error message:10 ABORTED: failed to assemble transaction: ProposalResponsePayloads do not match
No Events received as: status code 11—mvcc_read_conflict
Also randomly got endorsement policy failure ,status code 10.
-- After the policy is updated successfully,
client recovers well and transactions seems to work fine.

Endorsement policy failures are expected when moving from a less restrictive to a more restrictive policy and the endorsements were collected before the policy change was completed.
Proposal Response Payload mismatches can also occur because proposal response payloads reference the endorsement policy eg a read which creates an entry in the read set and while that's different due to the commit to multiple peers not being atomic then it's entirely possible to get mismatched proposal response payloads.
At this time mvcc read conflicts are still not understood as to why you might get these

From Saptha:
I retested the scenario with latest fabric-gateway version.
Findings:
Status code 10 - Observed for transactions happening during the update.
After the update all transactions are failing with either one of the following errors.
"4 DEADLINE_EXCEEDED: Deadline exceeded"
"14 UNAVAILABLE: Stream refused by server"
gatewayPeer.log
client.log
script.log

@sapthasurendran This is a new issue and certainly unexpected, we need to try to recreate this and understand how a client permanently lost comms with the gateway server. Did a restart of the client address the issue ?

Moving to a more restrictive policy I hit
{"component":"CLIENT","timestamp":"2021-11-25T17:00:04.066Z","txnId":"8d1920a9563418b467f831ca231040299a22d6c5710d39775acb9c5ef0deccda","stage":"Endorsing","message":"addUpdateAssets({\"arguments\":[\"1\",\"2000\"]})"}
{"component":"CLIENT","timestamp":"2021-11-25T17:00:09.001Z","txnId":"8d1920a9563418b467f831ca231040299a22d6c5710d39775acb9c5ef0deccda","stage":"Failed","message":"14 UNAVAILABLE: no combination of peers can be derived which satisfy the endorsement policy: required chaincodes are not installed on sufficient peers"}

Plus
{"component":"CLIENT","timestamp":"2021-11-25T17:00:04.112Z","txnId":"2ff7f00089bebd1e294444705bd76d233367df2451f07b4ab5fa6dc4af7739d0","stage":"Endorsing","message":"updateChaosAsset({\"arguments\":[\"cd1\",\"99\"]})"}
{"component":"CLIENT","timestamp":"2021-11-25T17:00:07.365Z","txnId":"2ff7f00089bebd1e294444705bd76d233367df2451f07b4ab5fa6dc4af7739d0","stage":"Submitting","message":""}
{"component":"CLIENT","timestamp":"2021-11-25T17:00:07.379Z","txnId":"2ff7f00089bebd1e294444705bd76d233367df2451f07b4ab5fa6dc4af7739d0","stage":"Submitted","message":""}
{"component":"CLIENT","timestamp":"2021-11-25T17:00:09.440Z","txnId":"2ff7f00089bebd1e294444705bd76d233367df2451f07b4ab5fa6dc4af7739d0","stage":"Failed","message":"unexpected validation code 10"}

I can recreate the problem where the client loses connection to the gateway and the connection doesn't recover
{"component":"CLIENT","timestamp":"2021-11-25T17:05:58.440Z","txnId":"f4bcbe05d1c9257ebfbaa7492d3a853935ab69789c2d2feb661b413662d10a76","stage":"Endorsing","message":"addUpdateAssets({\"arguments\":[\"1\",\"2000\"]})"}
{"component":"CLIENT","timestamp":"2021-11-25T17:06:28.454Z","txnId":"f4bcbe05d1c9257ebfbaa7492d3a853935ab69789c2d2feb661b413662d10a76","stage":"Failed","message":"4 DEADLINE_EXCEEDED: Deadline exceeded"}
{"component":"CLIENT","timestamp":"2021-11-25T17:05:58.443Z","txnId":"bcd6cc53c262a76f23015a2003af3e72785079f44be01ba28840c6adaa31bc6a","stage":"Endorsing","message":"updateChaosAsset({\"arguments\":[\"cd1\",\"99\"]})"}
{"component":"CLIENT","timestamp":"2021-11-25T17:06:28.454Z","txnId":"bcd6cc53c262a76f23015a2003af3e72785079f44be01ba28840c6adaa31bc6a","stage":"Failed","message":"14 UNAVAILABLE: Stream refused by server"}

A restart of the client fixes the issue (but is most likely just down to the grpc connection being recreated).

The issue where the client loses connection to the gateway https://github.com/hyperledger/fabric-gateway/issues/332


[Xcode] Links to SwiftPackageIndex aren't valid (https:/ instead of https://)

Extension
https://www.raycast.com/SvenTiigi/xcode
Description
When opening a link to a Swift package in the browser Raycast always opens an invalid URL, e.g. https:/github.com/apple/swift-argument-parser instead of https://github.com/apple/swift-argument-parser.
Steps To Reproduce

Search for a package
Open in browser

Current Behaviour
No response
Expected Behaviour
No response

The bug should be fixed with https://github.com/raycast/extensions/pull/4531 ✌ (https://github.com/SvenTiigi/extensions/commit/143388e18c2dddca71932e0d4f6777e8f57c247a)

Thanks for the extremely fast fix @SvenTiigi!
I gotta ask though because I'm curious and know next to nothing about Typescript. In SwiftPackageIndexService I see the following line, which looks to be fine.
private static gitHubHostUrl = "https://github.com";

How is it that the change you made (using Array.join instead of Path.join) affects if the scheme has the right number of slashes if the host URL being joined already contained them? Was Path.join deduping the slashes to make it a valid path identifier?

This should be resolved @kiliankoe - do you mind giving it a go and close the issue with @raycastbot close this issue

@kiliankoe correct the usage Path.join accidentally removed the last slash character of https:// as Path.join seems to perform some kind of path normalization.
I was also unaware about this behavior until you reported this issue 😅

Good to know, thanks! :D
And it looks to be working just as intended now 👍 @raycastbot close this issue

Could you try to write it as the only thing in the message (Just want to confirm it works @kiliankoe) 😊

@raycastbot close this issue

I don't think it does 😅 Does the bot do additional housekeeping or could I just close this manually?


The package uploaded to npm is not licensed

The npm distribution of this package is not properly licensed. It does not contain full license text, which is an issue - see https://github.com/babel/babel/pull/7308#issuecomment-367615152
Effectively, this way the source code distributed on npm is unlicensed and cannot be used by anyone else (or, to be more precise, by anyone who cares about licensing).

license field in package.json: MIT
GitHub repository license file: license
npm package contents license: (missing) :warning:

To reproduce this issue:
$ mkdir /tmp/foobar
$ cd /tmp/foobar
$ npm install is-supported-regexp-flag
$ ls -al ./node_modules/is-supported-regexp-flag/  # look for a license file

Related issue: https://github.com/sindresorhus/ama/issues/537

Done


Add GNP Sim Swap API

Add support for the Vonage Sim Swap API

Codecov Report
Attention: Patch coverage is 95.00000% with 2 lines in your changes are missing coverage. Please review.

Project coverage is 97.44%. Comparing base (13808e1) to head (f7651bb).
Report is 10 commits behind head on main.

Files
Patch %
Lines

src/vonage/camara_auth.py
93.75%
1 Missing :warning:

src/vonage/sim_swap.py
94.44%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #296      +/-   ##
==========================================
+ Coverage   97.27%   97.44%   +0.16%
==========================================
  Files          25       28       +3
  Lines        1102     1331     +229
==========================================
+ Hits         1072     1297     +225
- Misses         30       34       +4

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


[Feature Request] Media - overlay

Hi,
I'm not too sure how it is on android, but for iOS, the native media picker supports the possibility of adding an overlay.
The use I would have for an overlay is, similar to how the Nexus 5 default camera does when recording videos, the possibility to add a clear indicator telling the users to capture in landscape as the content created in my case targets widescreens.
There are a few ways I see as possibilities:
1- nullable svg property (probably not the best and most intuitive)
2- svg property & possibility to show/hide (this would be more than enough to satisfy my requirements)
3- custom view & possibility to show/hide (probably ideal since more flexible)
As stated in my other issue, I would not mind adding it to the implementation myself if need be (and if you have any design preferences, I'm all ears)

I have an implementation of this (iOS only) that responds to my apps needs, I have the changes in my fork https://github.com/LostBalloon1/Xamarin.Plugins/
I did not issue a pull request as I've only implemented for iOS.

Scope is too large for plugin.

I understand your concern, but since your plugin basically hides the native implementations of the pickers, it is impossible for us to even add one unless we modify your sources.
All that is really needed is having the possibility to provide the overlay's UI to the picker. In my own implementation (which I've done for iOS) it was only a [very] few lines of code.
I see that it isn't impossible on Android, I can't tell how complicated it is, but again, it doesn't need to be something crazy, just an entry point.
I would really rather not have to maintain a fork indefinitely for one feature.

These could be extensions into the core PCLs there isn't going to be an easy way of doing a cross platform API on that, however it could be an extension on iOS or Android. If you have the implementation you can do a pull request. I personally have no plans to add it in right now, but open to pull requests.

Sounds good, I'll need to synchronize myself to your new version and retest. I'll submit a pull request as soon as I get the chance to work on this.


arc: init at 17.0.9

Description of changes
https://www.advancedrestclient.com/
https://github.com/advanced-rest-client/arc-electron
Advanced Rest Client (ARC) is an application made for testing web APIs' similar to Postman.

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 247651 run on x86_64-linux 1

1 package built:

arc

Do we really want to add a new software to nixpkgs which is already EOL upstream and unmaintained since 2 years?

When this PR was originally made it hadn't been nearly as unmaintained and there were branches that were still active. I'd opted to include it as part of my flake's packages after a bit until migrating to Bruno not long after so I'm not too concerned about this PR anymore


Fix TEMPLATE_DIRS test config

The config was picking the wrong directory so the custom test templates were not used during tests.
Notes

Fix missing i18n load tags
Remove mixed tab/space indentation
Add two settings tests

Looks good to me - thanks.


[Task]: add ci process to tour of beam

What needs to happen?
add ci process to tour of beam
Issue Priority
Priority: 3 (nice-to-have improvement)
Issue Components

[ ] Component: Python SDK
[ ] Component: Java SDK
[ ] Component: Go SDK
[ ] Component: Typescript SDK
[ ] Component: IO connector
[ ] Component: Beam examples
[X] Component: Beam playground
[ ] Component: Beam katas
[ ] Component: Website
[ ] Component: Spark Runner
[ ] Component: Flink Runner
[ ] Component: Samza Runner
[ ] Component: Twister2 Runner
[ ] Component: Hazelcast Jet Runner
[ ] Component: Google Cloud Dataflow Runner

.take-issue


Add support for src="//{something}" form

In https://tools.ietf.org/html/rfc1808#section-4 (see http://stackoverflow.com/a/4661857/1406662 for more info), the possibility to introduce URLs of the form "//{content}" (without http or https) is defined (examples in section 5).
It would be great to know which browsers support this notation.

Better known as protocol-relative URLs.
As noted in the blog post, they're now an antipattern. Their support is likely near-universal, considering that they work even in IE6.

Great, I didn't know if that was really the case. Thanks.


Ignore SNAPSHOT dependencies of plugin extension sub-projects when publishing

We are not yet publishing these artifacts to Maven Central. Will ignore SNAPSHOT versions for now.

Oops, wrong branch.


fix(command-init): remove code duplication with sites:create and add error handling

- Summary
Related to https://github.com/netlify/cli/issues/1611
Fixes https://github.com/netlify/cli/issues/486
Fixes https://github.com/netlify/cli/issues/233
Context: The flow of configuring a repo can be summarized to:

Adding a deploy key - relevant for manual+auto
Adding a Webhook - relevant for manual+auto
Adding Netlify hooks (commit status updates) - relevant for auto

Since manual and automatic flows are very similar, I could also remove a lot of code duplication between config-github.js and config-manual.js.
- Test plan
I tested ntl init and ntl sites:create --with-ci with a GitHub repo and ntl init --manual and ntl sites:create --with-ci --manual with a Bitbucket repo.
- Description for the changelog
Remove code duplication between ntl init and ntl sites:create --with-ci and add error handling for GitHub configuration.
- A picture of a cute animal (not mandatory but encouraged)

@ehmicky I pushed another commit to sync the functions dir UI setting https://github.com/netlify/cli/pull/1619/commits/b09dbf9b8dd2d481377133fcf77a509a3f2b1b57.
An additional updateSite call is needed due to a bug in our API (going to open an issue for that)


4.x: Enable microprofile/tests/tck/tck-config/src/test/tck-suite.xml tests

https://github.com/helidon-io/helidon/issues/6105
Description
We were waiting for microprofile-config 3.1 to enable one test. This version made other issues that are fixed in this PR too.
There were 2 types of issues:

In one case we were returning an empty optional of the ConfigValue. It needs to have some properties, like ordinal and name.
We were iterating the sources for profile and then for non-profile. It has to be iterated in the way that each source is iterated with and without profile because of the ordinal value.

Documentation
N/A

After merging main I found out this already sort out the problems:
https://github.com/helidon-io/helidon/pull/8757


Contributing/style guide

Pretty much irresponsible not to have one these days.
Note, this requires us settling on a JS style which we've avoided.. or documenting that each module gets to pick whatever it wants to (please no)

Let's do eslint with airbnb.
https://github.com/airbnb/javascript

Thanks for the recommendation, LGTM @brhoades.
I made an initial shot at the eslint part over here: https://github.com/euank/EuIrcBot/pull/171
I'm leaving this open since contributing.md still needs to exist regardless.


Is Safebrowsing limited to Oreo?

In your app, Android 8.0 or greater is required to enable GoogleSafebrowsing although Google says "5.0 and above". Why?

Because WebView is distributed as a separate APK, Safe Browsing for WebView is available today for devices running Android 5.0 and above. With just one added line in your manifest, you can update your app and improve security for most of your users immediately.

Source written in English:
https://android-developers.googleblog.com/2017/06/whats-new-in-webview-security.html
Source written in Japanese:
https://developers-jp.googleblog.com/2017/07/whats-new-in-webview-security.html

By the way, thanks for the good app!

I think it would be better to enabling it and writing "Can't be disabled on 7.9 or below due to the restriction of older Android API". I can't tell exactly, but I don't think it's heavy because most browsers such as Chrome, Firefox and Opera enable it by default.
Let's wait until others comment on this thread. Thank you for the reply.

I'll test the change in beta.


Support tasty-1.5

tasty-grading-system-<IP_ADDRESS>$ cabal build -c 'tasty>=1.5' --allow-newer
[1 of 1] Compiling Test.Tasty.Grade

src/Test/Tasty/Grade.hs:197:80: error: [GHC-83865]
    • Couldn't match type: Tasty.Traversal
                             (Functor.Compose (State.StateT IntMap.Key IO) (Const Summary))
                     with: [Tasty.Traversal
                              (Functor.Compose (State.StateT IntMap.Key IO) (Const Summary))]
      Expected: Tasty.OptionSet
                -> Tasty.TestName
                -> [Tasty.Traversal
                      (Functor.Compose (State.StateT IntMap.Key IO) (Const Summary))]
                -> Tasty.Traversal
                     (Functor.Compose (State.StateT IntMap.Key IO) (Const Summary))
        Actual: Tasty.OptionSet
                -> Tasty.TestName
                -> Tasty.Traversal
                     (Functor.Compose (State.StateT IntMap.Key IO) (Const Summary))
                -> Tasty.Traversal
                     (Functor.Compose (State.StateT IntMap.Key IO) (Const Summary))
    • In the expression: runGroup
      In a record update at fields ‘Tasty.foldSingle’, ‘Tasty.foldGroup’,
      with type constructor ‘Tasty.TreeFold’
      and data constructor ‘Tasty.TreeFold’.
      In the first argument of ‘Tasty.foldTestTree’, namely
        ‘Tasty.trivialFold
           {Tasty.foldSingle = runTest, Tasty.foldGroup = runGroup}’
    |
197 |              Tasty.trivialFold { Tasty.foldSingle = runTest, Tasty.foldGroup = runGroup }
    |                                                                                ^^^^^^^^
Error: cabal: Failed to build tasty-grading-system-<IP_ADDRESS>.

Done https://github.com/fendor/tasty-grading-system/commit/5dcdae494c1a95730dd5ac3fc351e3f1d03ef55d


Page crashed, no obvious errors

Steps to reproduce
Tell us about your environment:

Puppeteer version: 0.11
Platform / OS version: GCP container engine/debian node 8.6-slim image
URLs (if applicable): https://gloucesterma.beta.mapgeo.io/api/printablemap?url=https%3A%2F%2Fgloucesterma.beta.mapgeo.io%2Fproperties%2F92-34-2%3Flatlng%3D42.628666%252C-70.685595%26modal%3Dprint%26zoom%3D18&token=&title=&layout=standard&width=1380&height=884&scale=

What steps will reproduce the problem?
My screenshot code looks like so:
  const browser = await puppeteer.launch({
    ignoreHTTPSErrors: true,
    args: ['--no-sandbox'],
    headless: !testPrint
  });
  const page = await browser.newPage();

  page.on('console', (msg) => {
    console.log('screenshot browser console message: ', msg);
  });

  page.on('error', (error) => {
    console.log('screenshot browser error: ', error);
  });

  await page.setViewport({
    width: Math.round(mapSize.width),
    height: Math.round(mapSize.height)
  });
  await page.goto(pageUrl, { waitUntil: 'networkidle' });
  await page.waitFor(15000);

  const imageBuffer = await page.screenshot();

  if (!testPrint) {
    try {
      await browser.close();
    } catch(e) {
      console.log(e);
    }
  }

  //use imageBuffer.toString('base64');

What is the expected result?
I expect a pdf to be created with a screenshot of a map.
What happens instead?
I get no screenshot, and this shows up in the logs:
screenshot browser error:  Error: Page crashed!
2017-10-12T17:12:27.457689833Z     at Page._onTargetCrashed (/usr/src/mapgeo/node_modules/puppeteer/lib/Page.js:92:24)
2017-10-12T17:12:27.457693225Z     at Session.Page.client.on.event (/usr/src/mapgeo/node_modules/puppeteer/lib/Page.js:88:56)
2017-10-12T17:12:27.457695651Z     at emitOne (events.js:115:13)
2017-10-12T17:12:27.457698083Z     at Session.emit (events.js:210:7)
2017-10-12T17:12:27.457706544Z     at Session._onMessage (/usr/src/mapgeo/node_modules/puppeteer/lib/Connection.js:199:12)
2017-10-12T17:12:27.457709249Z     at Connection._onMessage (/usr/src/mapgeo/node_modules/puppeteer/lib/Connection.js:98:19)
2017-10-12T17:12:27.457711649Z     at emitOne (events.js:115:13)
2017-10-12T17:12:27.457713779Z     at WebSocket.emit (events.js:210:7)
2017-10-12T17:12:27.457718282Z     at Receiver._receiver.onmessage (/usr/src/mapgeo/node_modules/ws/lib/WebSocket.js:143:47)
2017-10-12T17:12:27.457720731Z     at Receiver.dataMessage (/usr/src/mapgeo/node_modules/ws/lib/Receiver.js:389:14)
2017-10-12T17:12:27.457722831Z     at Receiver.getData (/usr/src/mapgeo/node_modules/ws/lib/Receiver.js:330:12)
2017-10-12T17:12:27.457725005Z     at Receiver.startLoop (/usr/src/mapgeo/node_modules/ws/lib/Receiver.js:165:16)
2017-10-12T17:12:27.457727122Z     at Receiver.add (/usr/src/mapgeo/node_modules/ws/lib/Receiver.js:139:10)
2017-10-12T17:12:27.457729237Z     at Socket._ultron.on (/usr/src/mapgeo/node_modules/ws/lib/WebSocket.js:139:22)
2017-10-12T17:12:27.457731283Z     at emitOne (events.js:115:13)
2017-10-12T17:12:27.457733319Z     at Socket.emit (events.js:210:7)
2017-10-12T17:12:27.457735306Z     at addChunk (_stream_readable.js:266:12)
2017-10-12T17:12:27.45773785Z     at readableAddChunk (_stream_readable.js:253:11)
2017-10-12T17:12:27.457739903Z     at Socket.Readable.push (_stream_readable.js:211:10)
2017-10-12T17:12:27.45774204Z     at TCP.onread (net.js:587:20)

I get this if I try to open the URL in Chrome:

I use ignoreHTTPSErrors above, so that should be avoided, no?

Console of the page returns the following:
2017-10-12T17:45:17.76299942Z screenshot browser console message:  cartodb.js 3.15.10
2017-10-12T17:45:18.504531146Z screenshot browser console message:  ServiceWorker Registration Error:
2017-10-12T17:45:20.428029681Z screenshot browser console message:  property.related setup

The service worker registration error is caught and just logged. The setup message means that it entered the route of the app.

Sometimes it works, just not for all requests. Haven't found a working one that I can link to.

@knownasilya There's a ton of undefined variables if I try to run your snippet as-is. Can you please update your snippet so that it's runnable? It will save me a lot of time.

@aslushnikov I've edited the code example above to make it more self-contained. Thanks for taking the time to look!
On a related note, has puppeteer been working better on App Engine instead of Container Engine?

@knownasilya Puppeteer works fairly well in GAE for basic things. AFAICT, one of the main issues right now that's causing pages to crash is https://bugs.chromium.org/p/chromium/issues/detail?id=736452. Please star that one!

@ebidel seems like GAE would have similar issues since node.js runs in the flexible environment, which uses Docker under the hood, as far as I can tell.

Indeed!

Setting the docker run --shm-size 1G ... param or something higher solved this issue for me, but I was lucky enough to be able to specify the size.

Let's close this in favor of the upstream chromium bug. Not much we can do from the Puppeteer side until that's fixed.

I got it working on GAE custom flexible environment with VOLUME /dev/shm in my Dockerfile. I'm not sure that this is a good idea. This slows things down but works in my case. So it might be considered as a temporary solution while waiting for fix for Chromium.

I guess the Page crash errors can also be related to not enough swap memory. I've increased my swap memory to 1G and haven't seen these errors anymore.


Merge branch-PPP-vinod with Master

Codecov Report
Base: 72.15% // Head: 72.15% // No change to project coverage :thumbsup:

Coverage data is based on head (8534b65) compared to base (53d4f60).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff            @@
##             master      #24   +/-   ##
=========================================
  Coverage     72.15%   72.15%
  Complexity      399      399
=========================================
  Files            70       70
  Lines          1232     1232
  Branches        125      125
=========================================
  Hits            889      889
  Misses          311      311
  Partials         32       32

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Unfortunately on the team's list your PPP does not show up. I think this could be because of how you named your PPP filename which should be your GitHub username.


TODO before publish to crates.io

Some TODO I think we need to address before publish to crates.io

[x] Design review
[x] More testcase
[x] Demo, multiple envs setup
[x] CI
[x] Issue/PR template

Context

https://github.com/CeresDB/ceresdb/issues/397
https://github.com/MariaDB/server/blob/10.11/mysql-test/mariadb-test-run.pl

Similar projects

sqllogictest-rs
....

https://crates.io/crates/sqlness
Released!


eBPF is disabled by default due to eBPF reliability issues

eBPF should eventually be enabled by default, but reliability issues have forced us to disable eBPF in the XDP driver and spinxsk tests, as well as allowing the CI pipeline to partially fail for eBPF tests.
Depends on:
https://github.com/microsoft/ebpf-for-windows/issues/2126
https://github.com/microsoft/ebpf-for-windows/issues/2130
https://github.com/microsoft/ebpf-for-windows/issues/2131
https://github.com/microsoft/ebpf-for-windows/issues/2135

eBPF is again enabled by default in CI.


Update the cloud-gov training tracker spreadsheet

https://drive.google.com/open?id=17LPbVR-ibZ7W5tURNGKmtHSP-5OI0npU3LImcUYOYtA PeterB / compliance needs to own this and ensure it's update to date and accurate.
From the onboarding:

[ ] Add their name, whether they're Cloud Ops (Platform), and the date they joined the team to the training tracker. Copy the formulas for the due dates from an existing row (grab the "corner" of the cells and pull down).
[ ] As they complete training, fill out their completion dates in the training tracker.

Acceptance Criteria:

[ ] All cloud-gov users have accurate dates in the tracker
[ ] The associated trainings have links back to the tracker

It may also be worthwhile to make the onboarding process easier to track and update as an associated epic.

Looks like I did this as gravel work leading up to spring trainings


chore: try nvm to install node on wsl

fixes #2737
Try to install node with nvm as suggested here:
https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-wsl#install-nvm-nodejs-and-npm

That didn't succeed...
https://ci.appveyor.com/project/ljharb/eslint-plugin-import/builds/46531151/job/suaoh4f063ydn60n#L34
wsl : Cloning into '/home/appveyor/.nvm'...
At line:1 char:1
+ wsl curl -sL https://raw.githubusercontent.com/nvm-sh/nvm/master/inst ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Cloning into '/home/appveyor/.nvm'...:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Fails again...
https://ci.appveyor.com/project/ljharb/eslint-plugin-import/builds/46533693/job/1kvv7b5dqps3kg5b#L33
bash: line 137: unexpected EOF while looking for matching `}'
bash: line 138: syntax error: unexpected end of file
Command exited with code 2

(please keep reusing this PR for future attempts, rather than opening up a new one)
That particular failure indicates the script didn't download in its entirety.

@ljharb I needed to pipe it through dos2unix 🤨
I will try to touch ~/.bash_profile for the next error...
https://ci.appveyor.com/project/ljharb/eslint-plugin-import/builds/46535646/job/evt689nv4sdsfnw2#L77
=> Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zprofile, ~/.zshrc, and ~/.profile.
=> Create one of them and run this script again
   OR
=> Append the following lines to the correct file yourself:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

It installs nvm, but in a path which I can't access inside wsl.
https://ci.appveyor.com/project/ljharb/eslint-plugin-import/builds/46540082#L84
=> Downloading nvm from git to '/c/Users/appveyor/.nvm'
=> Cloning into 'C:/Users/appveyor/.nvm'...

https://ci.appveyor.com/project/ljharb/eslint-plugin-import/builds/46540082#L114
wsl ls -aR /c/Users/appveyor/
ls: cannot access '/c/Users/appveyor/': No such file or directory
Command exited with code 2

Honestly I never worked with WSL before and I'm sure there is some magic I don't know 😕
Anyway nvm should be installed inside $HOME by default - but the path seem to resolve to different locations inside bash and wsl 😕
https://github.com/nvm-sh/nvm/blob/edacf8275e3bef4a80971625ed89df13a9af427c/install.sh#L23-L25

@ljharb
Sorry, I give up.
I assumed it would be straight-forward to follow this guide to get node running inside WSL
https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-wsl#install-nvm-nodejs-and-npm
But man, was I wrong...

ps: fails with NativeCommandError if a command outputs to STDERR

https://help.appveyor.com/discussions/problems/5413-calling-external-executable-causes-nativecommanderror-despite-no-apparent-error
curl -s needs to be silenced
E.g git clone 2>&1 outputs non-errors to STDERR and needs to be redirected - fore that reason I needed to fork nvm

appveyor doesn't seem to support nodejs for WSL
https://www.appveyor.com/docs/lang/nodejs-iojs/
Actually that's all I can find about WSL on appveyor 🤨

https://www.appveyor.com/blog/2019/10/11/vs2019-image-with-docker-wsl-preheated/#windows-subsystem-for-linux-wsl
https://www.appveyor.com/docs/windows-images-software/#wsl


first attempt

Check List:

[x] Tests pass (./test.sh <username>)
[x] All formatting changes by the build are committed
[x] Output matches that of calculate_average_baseline.sh

Execution time: 8s
Execution time of reference implementation: 236s

Xeon 6148, Debian 12

00:13.615. Thx for participating!


Remove KeePass integration

This integration is not actively supported. It has zero tests, little documentation, and has not really been actively maintained. As far as I can tell, noone uses this integration, and even if they do, they will simply have to copy/paste password from keepass instead of using this integration.

Concept ACK.


Clean up stylesheets

Overview
With a lot of the latest changes (like the new classification design), we need to clean up some of the styles.
Subtasks

[ ] Add a postprocessor and split up application.tailwind.css
[ ] Create CSS components to clean up views (basically removing long chain of tailwind classes when possible)

PR created: https://github.com/codeforamerica/classifyr/pull/74


[POC/WIP] - Trio based discovery service

PR open for my own tracking purposes.  Nothing to see here....

Current thoughts on isolating this into smaller pieces.

Service implementation and tests
TrioIsolatedProcessPlugin implementation and tests
Extract "preferred peers" concept from discovery, convert to use peer backend system, convert to trio based plugin.

Nasty part is going to be unraveling p2p/discovery.py but it looks doable.

Extractable piece that has bubbled out of this is elimination of the TrinityEventBusEndpoint subclass via a new BaseService that does all of the fancy announcement stuff that is needed.


Update Immich's LivePhotos Implementation

LivePhotos on Immich has been released
https://github.com/immich-app/immich/releases/tag/v1.36.0_55-dev

Great work!


[web] [bug] Pressing return when entering a hyperlink removes selected text

Using Chrome latest (90.0.4430.212).
Steps to reproduce:

Start the sample editor (Editor Demo) for web
Mark any word or sequence of characters
Press the hyperlink icon
Type in any link
Hit return/enter

The marked word is removed.
Edit: this is working fine on MacOS.

Try to solve this after #609 is solved.

@angelosilvestre can you check whether this issue is still happening?

@matthew-carroll I tested and it doesn't seem to be happening.

Thanks. I'll close this as complete.

Since upgrading to Flutter 3.16.2 this problem has reappeared on Windows.

Re-opening per @hillelcoren 's comment. @angelosilvestre can you please take a look?
@hillelcoren which version of Super Editor are you using?

@hillelcoren Is there a specific sequence of steps or a specific SuperEditor configuration needed to trigger the issue? I'm not being able to reproduce it.

I'm following the steps listed above.


Review page doesn't tell me when I fail prototype task

I had two workers both reject the prototype task but the feedback in the review page says I can launch:

Shouldn’t it tell me to revise my task and relaunch the prototype task?

is it that the link to Edit Project is missing?

n/a anymore until redesign


Feature/es merge operation

Elasticsearch supports a "document level upsert" which is basically a merge operation:

If the document does not exist during a merge operation, it is created/inserted as is.
If the document does exist in the index during a merge operation, then all of the fields in the incoming document are merged with the existing document. Any fields with the same key take the value of the incoming document, any fields in the existing document not in the incoming document are left as is. This behavior works with nested fields as well.

Currently Streamsets does not support this operation in the Elasticsesarch destination.
This PR adds a new top-level MERGE OperationType, that is leveraged by the ElasticsearchTarget to support document update using the doc_as_upsert value in the request.
Our team is currently using 2.7.X line, but if you'd prefer these changes against the current development target, let me know.

Thanks for the contribution, @ml10! Please confirm that you (or your company) have signed the CLA: https://streamsets.com/contributing/
Once that's in place, we can have an engineer review your changes.

I thought we had a corporate CLA in place already, and it sounds like that is something we want to do. Unfortunately with the current holiday schedule we probably won't get to that until the new year. If you'd rather this PR not hang out that long, I can work on a personal CLA, otherwise we can revisit after the holidays.

Probably best to get the CCLA in place after the holidays; it's unlikely anyone would get to this before Jan anyway.

The change looks good to me, so let me know when the CCLA gets signed and we'll push it through @ml10 !


Cannot integration tawk.to

I add this code to file brand/header.blade.php
@push('scripts')
    <script src="/vendor/js/tawk.js?v={{ time() }}"></script>
@endpush

After switching screens, chat box tawk cannot be displayed again

Hello, this is not a direct error. Orchid emulates SPA using https://hotwired.dev
You can also view events briefly on the documentation site https://orchid.software/en/docs/javascript/


Fix missing function :crypto.hmac/3 error in Erlang 24

Erlang 22.1 introduces :crypto.mac/4, 23 deprecates :crypto.hmac/3 and 24 removes it.
This PR adds support for both functions depending on which one exists.

Should be fixed


Plagiarism Detector

Script Title - Plagiarism Detector
Brief - This script will take 2 files and show the amount (percentage)  of similarity between those files .
Instructions

Create a new folder for your script and file/folder name should be appropriate.
Create a README.md in your folder for program Instructions
add requirements.txt if needed

Programming Language

[x] Python

Happy Coding

Pleasee assign me this issue : )

Hey,
Can you assign this issue to me.This will be my first contribution to open source world.
Thanks in advance

@vipinkatara  Actually I wanted to work on this issue myself . This would be first issue for me too . You can create your own issue to work on .

@akshitasinghal4444  okay thanks.

Hey @akshitasinghal4444 this is duplicate of #324


Should DNS discovery use all IPs in a multi-address DNS name as cluster seeds?

My experience is that DNS discovery fails when 1 node out of 3 is down, and discovery spends all of maxDiscoverAttempts trying to get gossip from the node that is down, instead of also considering the other 2 nodes' IPs registered with a multi-address DNS name.
I was able to implement the behaviour I expect like this
# ClusterDiscovery.java:

    void discover(ConnectionState state) {
-       List<InetSocketAddress> candidates = new ArrayList<>(this.seeds);
+       List<InetSocketAddress> candidates = new ArrayList<>();
+
+       if (state.getSettings().isDnsDiscover()) {
+           try {
+               InetSocketAddress dnsSeed = this.seeds.get(0);
+
+               // Resolve cluster DNS name
+               candidates = Arrays.stream(InetAddress.getAllByName(dnsSeed.getHostName()))
+                   .map(addr -> new InetSocketAddress(addr, dnsSeed.getPort()))
+                   .collect(Collectors.toList());
+
+           } catch (UnknownHostException e) {
+               throw new UncheckedIOException(e);
+           }
+       } else {
+           candidates = new ArrayList<>(this.seeds);
+       }

        if (candidates.size() > 1) {

I'm not sure, however, if you'd prefer to delegate somehow this behaviour to the gRPC client, since it's the gRPC client that currently does the lookup.

Hey @lbodor,
If what you describe is true then that's a bug on our part. You shouldn't have to do all this. Let me get back to you after I conduct some investigation.
Thanks for taking the time to reach out.

Hey @lbodor
I did my investigation on the matter and I'd would like you to confirm a few things first. Did you set your connection string with esdb+discover:// or if you use the builder configuration, did you set dnsDiscover(true) and submitted more than one endpoint/seed as well?

 This is documented for cluster-side node discovery (https://developers.eventstore.com/server/v24.2/cluster.html#cluster-with-dns), and it seems fair for it to also work in the client.

And that should be the case. Could you provide some logs showing the client not going for other members of the cluster if it fails to connect to the first seed? By logs, I mean those emitted by the java client.

2024-07-08 10:39:35,963 [DEBUG] [] [] [] [esdb-client-4ff4b4e0-38a4-4030-a0ef-be30fde11ae6] [com.eventstore.dbclient.ConnectionService] Start connection attempt (1/3)
2024-07-08 10:39:35,963 [DEBUG] [] [] [] [ForkJoinPool.commonPool-worker-1] [com.eventstore.dbclient.ClusterDiscovery] Using seed node [nodes.dev-eventstore.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-07-08 10:39:38,054 [ERROR] [] [] [] [ForkJoinPool.commonPool-worker-1] [com.eventstore.dbclient.ClusterDiscovery] java.util.concurrent.ExecutionException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 1.941476417s. Name resolution delay 0.000000000 seconds. [closed=[], open=[[buffered_nanos=1944060611, waiting_for_connection]]]
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)
	at com.eventstore.dbclient.ClusterDiscovery.discover(ClusterDiscovery.java:60)
	at com.eventstore.dbclient.ClusterDiscovery.lambda$run$2(ClusterDiscovery.java:42)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Caused by: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 1.941476417s. Name resolution delay 0.000000000 seconds. [closed=[], open=[[buffered_nanos=1944060611, waiting_for_connection]]]
	at io.grpc.Status.asRuntimeException(Status.java:533)
	at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:481)
	at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:574)
	at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:72)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:723)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Exception during the node selection process
2024-07-08 10:39:38,059 [ERROR] [] [] [] [esdb-client-4ff4b4e0-38a4-4030-a0ef-be30fde11ae6] [com.eventstore.dbclient.ConnectionService] java.util.concurrent.ExecutionException: com.eventstore.dbclient.NoClusterNodeFoundException
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
	at com.eventstore.dbclient.ConnectionService.createChannel(ConnectionService.java:130)
	at com.eventstore.dbclient.ConnectionService.process(ConnectionService.java:170)
	at com.eventstore.dbclient.RunWorkItem.accept(RunWorkItem.java:30)
	at com.eventstore.dbclient.ConnectionService.run(ConnectionService.java:46)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: com.eventstore.dbclient.NoClusterNodeFoundException: null
	at com.eventstore.dbclient.ClusterDiscovery.discover(ClusterDiscovery.java:79)
	at com.eventstore.dbclient.ClusterDiscovery.lambda$run$2(ClusterDiscovery.java:42)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Error when running discovery process
2024-07-08 10:39:38,060 [DEBUG] [] [] [] [esdb-client-4ff4b4e0-38a4-4030-a0ef-be30fde11ae6] [com.eventstore.dbclient.ConnectionService] Start connection attempt (2/3)
2024-07-08 10:39:38,061 [DEBUG] [] [] [] [ForkJoinPool.commonPool-worker-1] [com.eventstore.dbclient.ClusterDiscovery] Using seed node [nodes.dev-eventstore.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-07-08 10:39:40,071 [ERROR] [] [] [] [ForkJoinPool.commonPool-worker-1] [com.eventstore.dbclient.ClusterDiscovery] java.util.concurrent.TimeoutException: null
	at java.base/java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1960)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2095)
	at com.eventstore.dbclient.ClusterDiscovery.discover(ClusterDiscovery.java:60)
	at com.eventstore.dbclient.ClusterDiscovery.lambda$run$2(ClusterDiscovery.java:42)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Exception during the node selection process
2024-07-08 10:39:40,072 [ERROR] [] [] [] [esdb-client-4ff4b4e0-38a4-4030-a0ef-be30fde11ae6] [com.eventstore.dbclient.ConnectionService] java.util.concurrent.ExecutionException: com.eventstore.dbclient.NoClusterNodeFoundException
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
	at com.eventstore.dbclient.ConnectionService.createChannel(ConnectionService.java:130)
	at com.eventstore.dbclient.ConnectionService.process(ConnectionService.java:170)
	at com.eventstore.dbclient.RunWorkItem.accept(RunWorkItem.java:30)
	at com.eventstore.dbclient.ConnectionService.run(ConnectionService.java:46)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: com.eventstore.dbclient.NoClusterNodeFoundException: null
	at com.eventstore.dbclient.ClusterDiscovery.discover(ClusterDiscovery.java:79)
	at com.eventstore.dbclient.ClusterDiscovery.lambda$run$2(ClusterDiscovery.java:42)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Error when running discovery process
2024-07-08 10:39:40,074 [DEBUG] [] [] [] [esdb-client-4ff4b4e0-38a4-4030-a0ef-be30fde11ae6] [com.eventstore.dbclient.ConnectionService] Start connection attempt (3/3)
2024-07-08 10:39:40,074 [DEBUG] [] [] [] [ForkJoinPool.commonPool-worker-1] [com.eventstore.dbclient.ClusterDiscovery] Using seed node [nodes.dev-eventstore.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-07-08 10:39:42,078 [ERROR] [] [] [] [ForkJoinPool.commonPool-worker-1] [com.eventstore.dbclient.ClusterDiscovery] java.util.concurrent.ExecutionException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 1.997705374s. Name resolution delay 0.000000000 seconds. [closed=[], open=[[buffered_nanos=1999385336, waiting_for_connection]]]
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)
	at com.eventstore.dbclient.ClusterDiscovery.discover(ClusterDiscovery.java:60)
	at com.eventstore.dbclient.ClusterDiscovery.lambda$run$2(ClusterDiscovery.java:42)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Caused by: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 1.997705374s. Name resolution delay 0.000000000 seconds. [closed=[], open=[[buffered_nanos=1999385336, waiting_for_connection]]]
	at io.grpc.Status.asRuntimeException(Status.java:533)
	at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:481)
	at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:574)
	at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:72)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:723)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Exception during the node selection process
2024-07-08 10:39:42,080 [ERROR] [] [] [] [esdb-client-4ff4b4e0-38a4-4030-a0ef-be30fde11ae6] [com.eventstore.dbclient.ConnectionService] java.util.concurrent.ExecutionException: com.eventstore.dbclient.NoClusterNodeFoundException
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
	at com.eventstore.dbclient.ConnectionService.createChannel(ConnectionService.java:130)
	at com.eventstore.dbclient.ConnectionService.process(ConnectionService.java:170)
	at com.eventstore.dbclient.RunWorkItem.accept(RunWorkItem.java:30)
	at com.eventstore.dbclient.ConnectionService.run(ConnectionService.java:46)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: com.eventstore.dbclient.NoClusterNodeFoundException: null
	at com.eventstore.dbclient.ClusterDiscovery.discover(ClusterDiscovery.java:79)
	at com.eventstore.dbclient.ClusterDiscovery.lambda$run$2(ClusterDiscovery.java:42)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Error when running discovery process
2024-07-08 10:39:42,081 [ERROR] [] [] [] [esdb-client-4ff4b4e0-38a4-4030-a0ef-be30fde11ae6] [com.eventstore.dbclient.ConnectionService] Maximum discovery attempt count reached: 3

Hi @YoEight, does the above log show what you wanted to see? Are you able to reproduce the problem?

Hey @lbodor, sorry for not getting back to you sooner. I totally forgot about that issue since I was back from vacations. When reading my notes, I wasn't able to reproduce it and concluded you might have a different DNS configuration than what we expected with our connection code.
Is your java application running with a security manager or a custom security policy that restricts DNS lookups?

I think that our DNS setup is pretty standard, provided by AWS Route53. Here it is as shown by aws route53 list-list-resource-record-sets
...
{
    "Name": "nodes.dev-xxx.",
    "Type": "A",
    "SetIdentifier": "0",
    "MultiValueAnswer": true,
    "TTL": 300,
    "ResourceRecords": [
        {
            "Value": "3.105.10.xxx"
        }
    ]
},
{
    "Name": "nodes.dev-xxx.",
    "Type": "A",
    "SetIdentifier": "1",
    "MultiValueAnswer": true,
    "TTL": 300,
    "ResourceRecords": [
        {
            "Value": "3.107.137.xxx"
        }
    ]
},
{
    "Name": "nodes.dev-xxx.",
    "Type": "A",
    "SetIdentifier": "2",
    "MultiValueAnswer": true,
    "TTL": 300,
    "ResourceRecords": [
        {
            "Value": "3.24.251.xxx"
        }
    ]
},
...

Would the fact that my proposed change to your ClusterDiscovery.java shown above demonstrate that there isn't anything restricting DNS lookups, since the change fixes my issue?
Our cluster is publicly accessible, so if you'd like I can share our DNS name with you (maybe via email), and you could send me your Java client's log output.
Alternatively, if possible, you could send me a DNS name of one of your public test clusters, and I could try from my end. I would use iptables locally to reject outbound traffic to one of your nodes.

If your cluster is publicly accessible, please send me the details. I'll do my best to identify the root cause.

OK, thanks. I'll send you the details shortly via DM on discord to keep the DNS name private.

On second thought, I made a temporary DNS multiaddress A record, which I can share here.
$ host es-tmp-1.geodesy.ga.gov.au
es-tmp-1.geodesy.ga.gov.au has address <IP_ADDRESS>
es-tmp-1.geodesy.ga.gov.au has address <IP_ADDRESS>
es-tmp-1.geodesy.ga.gov.au has address <IP_ADDRESS>

The IP addresses are random; there is no cluster, it's not needed to demonstrate the issue.
Without the above patch, cluster discovery resolves the DNS, but uses only the first IP returned, not all 3.
2024-09-23 06:41:11,119 [DEBUG] [c.e.dbclient.ConnectionService] Start connection attempt (1/3)
2024-09-23 06:41:11,119 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 06:41:14,205 [ERROR] ...
2024-09-23 06:41:14,707 [DEBUG] [c.e.dbclient.ConnectionService] Start connection attempt (2/3)
2024-09-23 06:41:14,708 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 06:41:17,712 [ERROR] ...
2024-09-23 06:41:18,213 [DEBUG] [c.e.dbclient.ConnectionService] Start connection attempt (3/3)
2024-09-23 06:41:18,213 [DEBUG] [c.e.dbclient.ConnectionService] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 06:41:21,215 [ERROR] ...
2024-09-23 06:41:21,716 [ERROR] [c.e.dbclient.ConnectionService] Maximum discovery attempt count reached: 3

With the above patch, cluster discovery resolves the DNS, grabs all 3 IPs, and tries them each 3 times.
2024-09-23 07:41:51,561 [DEBUG] [c.e.dbclient.ConnectionService] Start connection attempt (1/3)
2024-09-23 07:41:51,562 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:41:54,628 [ERROR] ...
2024-09-23 07:41:54,629 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:41:54,743 [ERROR] ...
2024-09-23 07:41:54,744 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:41:57,748 [ERROR] ...
2024-09-23 07:41:58,250 [DEBUG] [c.e.dbclient.ConnectionService] Start connection attempt (2/3)
2024-09-23 07:41:58,251 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:41:58,343 [ERROR] ...
2024-09-23 07:41:58,344 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:42:01,349 [ERROR] ...
2024-09-23 07:42:01,350 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:42:04,355 [ERROR] ...
2024-09-23 07:42:04,856 [DEBUG] [c.e.dbclient.ConnectionService] Start connection attempt (3/3)
2024-09-23 07:42:04,857 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:42:07,861 [ERROR] ...
2024-09-23 07:42:07,861 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:42:07,938 [ERROR] ...
2024-09-23 07:42:07,938 [DEBUG] [c.e.dbclient.ClusterDiscovery] Using seed node [es-tmp-1.geodesy.ga.gov.au/<IP_ADDRESS>:443] for cluster node discovery.
2024-09-23 07:42:10,940 [ERROR] ...
2024-09-23 07:42:11,442 [ERROR] [c.e.dbclient.ConnectionService] Maximum discovery attempt count reached: 3

Please let me know if you can reproduce the issue.

Hey @lbodor ,
I wasn't able to reproduce your error because your server is always unavailable when I try to reach it.
host es-tmp-1.geodesy.ga.gov.au
es-tmp-1.geodesy.ga.gov.au has address <IP_ADDRESS>
es-tmp-1.geodesy.ga.gov.au has address <IP_ADDRESS>
es-tmp-1.geodesy.ga.gov.au has address <IP_ADDRESS>

ping -c 3 es-tmp-1.geodesy.ga.gov.au
PING es-tmp-1.geodesy.ga.gov.au (<IP_ADDRESS>) 56(84) bytes of data.

--- es-tmp-1.geodesy.ga.gov.au ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2025ms

curl https://es-tmp-1.geodesy.ga.gov.au:443/gossip
curl: (60) SSL: no alternative certificate subject name matches target host name 'es-tmp-1.geodesy.ga.gov.au'
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

You don't need a cluster to reproduce the issue. All you need is a DNS record that resolves to 3 IP addresses. The issue is that the Java client doesn't use all 3 IP addresses returned from DNS as cluster seeds, but just one.
All 3 IPs returned by es-tmp-1.geodesy.ga.gov.au are down, but the difference is between the cluster discovery trying to get gossip from only one node and failing or it trying to get gossip from all 3 nodes and then failing, as the log above shows.

I believe there is a misunderstanding on how the node discovery works. Yes, in your case it will only resolve one. As I said earlier

We used to support A DNS queries a long time ago when there were only TCP clients. We stopped doing it because configuring a DNS properly is not given to everybody.

In your case, the DNS should at least use round-robin for IP selection. However, this doesn't change the fact that the Java client won't handle node resolution on its own. This is not the end of the node discovery process. Once an IP is selected, the client will call the /gossip endpoint to retrieve information about all nodes in the cluster (including their respective IPs). Node selection and shuffling will happen based on your preferences at that stage, not during the DNS resolution.
If your DNS uses round-robin for IP selection, it shouldn't be an issue since the Java client would eventually access all the IPs through multiple connection attempts.

From https://developers.eventstore.com/server/v24.6/cluster.html#cluster-with-dns:
When you tell EventStoreDB to use DNS for its gossip, the server will resolve
the DNS name to a list of IP addresses and connect to each of those addresses
to find other nodes.

Python client docs also say that gossip documents will be requested from all DNS A records.
From https://pypi.org/project/esdbclient:
The client will use the cluster domain name with the gRPC library's 'round robin' load balancing
strategy to call the Gossip APIs of addresses discovered from DNS 'A' records.

Here a test that shows that the Python client does consider all 3 IPs:
GRPC_VERBOSITY=debug GRPC_TRACE=all python3 test.py 2>&1 | grep -e "CLIENT_CONNECT"
I0927 06:22:20.487756977    3330 tcp_client_posix.cc:391]              CLIENT_CONNECT: ipv4:<IP_ADDRESS>:2113: asynchronously connecting fd 0x7f93d8013180
I0927 06:22:20.487888677    3330 tcp_client_posix.cc:391]              CLIENT_CONNECT: ipv4:<IP_ADDRESS>:2113: asynchronously connecting fd 0x7f93d8020a20
I0927 06:22:20.488005372    3330 tcp_client_posix.cc:391]              CLIENT_CONNECT: ipv4:<IP_ADDRESS>:2113: asynchronously connecting fd 0x7f93d802c630

Round-robin DNS is unsuitable for client-server connection fail-over, as I've explained in a previous comment. This is well documented, for instance, see https://en.wikipedia.org/wiki/Round-robin_DNS.
I take your point that once the client has gotten hold of a gossip document from any one node, it will extract from it all the nodes' IPs as advertised by the cluster. But when round-robin is not configured or not happening fast enough, discovery will fail.
Why not implement DNS resolution like you say was done in the old TCP client? It is only a few lines of code, and the Java gRPC client would be strictly better for it, because discovery would work reliably for more users. For us, using Route53, DNS records rotate sometimes every few seconds and sometime not for as long as 5 minutes, we have no control over this.
Would you please be kind enough to revisit this issue together with your colleagues.

@lbodor You’ve chosen the only gRPC client that explicitly performs DNS resolution through lookup queries. While the Python client is officially maintained by the company, it’s not directly managed by our organization, and its author has considerable flexibility in its implementation, provided it remains compatible with the gRPC server interface.
We’re unable to adopt your suggestion because, first, it would introduce a breaking change. Second, in nearly five years, you’re the only one who has encountered this issue.
What I propose instead is to offer an option to select this specific DNS resolution implementation via a feature flag. We could expose this through both the connection string and the connection builder. How does that sound?

That would be great. Thanks very much.

@lbodor as soon as that PR get merged, I'll cut a new release right after.

@YoEight, awesome, thanks. I've tested the branch in the PR, and it works for me as expected.

@lbodor The feature is available in the 5.4.2 release.

@YoEight, thanks, we've just updated to the new version.


Make assumed_state for RTS configurable via option flow

Current behaviour is that assumed_state is True for all rts devices, since RTS doesn't have a feedback function.
However, when you are only controlling your RTS devices via Home Assistant, some people don't want to have this optimistic mode.

A setting is not needed, can be tweaked already via core. https://www.home-assistant.io/docs/configuration/customizing-devices/#assumed_state

Tested and works as expected with customize.yaml.

@vlebourl great! We need to add it to the README at some point, same for the device class that could be changes via customize.yaml.

We can add it to the README, although it's a standard feature of HA, every entity can be customized. Not sure whether we should be that thorough in our README.


Add @default tag support

given:
/**
 * A base uri
 *
 * @constant
 * @default
 */
  const BASE_URI = 'http://my-example.com'

vanilla jsdoc would display the value of the constant here as I have labeled it as a default, I'd like to see the same support for the tag in docma.

This was already supported for symbol parameters.
Added support for symbol itself.
Available in Docma 3.1.0.


Typed CSS support

Compared to HTML this should be simpler. Most of what we need to do is pull down: https://github.com/w3c/webref/tree/main/ed/css, denormalize it, and then generate code from it.
I suspect we can create a chaining API for this too. Though there are some questions about whether to return the style sheets, inline them on the elements, how to create selectors, etc. But those are all things which can be figured out.

The way I'm thinking we should do this is not by injecting any magic ids or classes. But as we traverse the DOM tree, we create a list of nested selectors. And by using the declarative shadow DOM API, we can create boundaries for the lists. This would mean something like this:
use html::{styles::colors::Color, text_content::OrderedList};

let ol = OrderedList::builder()
    .background_color(Color::Black)
    .list_item(|li| li.text_el("hello", |t| t.color(Color::Magenta)))
    .list_item(|li| li.text_el("world", |t| t.color(Color::Cyan)))
    .build();
assert_eq!(ol.styles(), "
ol {
  color: black;

  &:first_child {
    color: magenta;
  }

  &:nth_child(2) {
    color: cyan;
  }
}");

We can probably do apply some de-nesting if types declare classes which we can attach styles to, etc. The exact rules are something we can figure out and consult experts on. The idea is that from an element tree's perspective, all elements in the tree are unambiguous and we produce a parallel tree of selectors next to it.
Then using declarative shadow DOM we can include the list of styles we've just generated:
let custom_el = CustomElement::builder("my-custom-element")
    .template(|tmpl| tmpl.shadow_root_mode(ShadowRootMode::Open))
    .style(ol.styles())
    .append(ol)
    .build();

Which will compile to:
<custom-element>
  <template shadowrootmode="open">

hello

world

  </template>
</custom-element>

Some higher level framework could probably define a Component type/trait which can handle custom element creation for them, and do things like convert styles to <link> tags rather than


Should upgrade poise-python to relieve conflict with poise-languages ~> 2.0

As of releases to supermarket yesterday, unpinned versions of many poise- cookbooks (at least poise-ruby and poise-javascript ) depends on poise-languages, '~>2.0'
The pin in this cookbooks metadata.rb to 'poise-python', '~> 1.2.1' causes me to get
Error: Failed to generate Policyfile.lock
Reason: (Solve::Errors::NoSolutionError) Unable to satisfy the following requirements:

- `poise-languages (~> 1.2)` required by `poise-python-1.2.1`
- `poise-languages (~> 2.0)` required by `poise-ruby-2.2.0`

upon attempting to chef update
Please consider updating your pin.

yes, I would also like to use this. but it's dependency on old poise-python is causing struggles.

Can one of you submit a PR with the changes needed? I don't have any time these days to maintain this cookbook but I'll get one final fix in for this before I officially stop taking PR's and Issues for it.

@nickryand The only fix you need is to change your dep to ~> 1.2.


Multilingual support & MCEF Support

When working with a modpack for a large 1.7.10 server, we came across a few issues with languages, being a primarily bilingual server. The first question is; is there some way to change the main menu so we can use a translated menu following the language selected under the language settings? The second question is; could you include some form of scrollable text box or support the Minecraft chromium embedded framework  ( https://github.com/montoyo/mcef ) or some otherbversion of jcef and the resulting features? For wiki's and change logs as mentioned in other tickets.

Generally things like button labels & text supports language keys so using Resource Loader you would probably be able to change the labels based on language.

That's something i wanted to add for a long time, might even add it next update, will see.

MCEF support would be awesome ^-^

I have no idea how to use language keys... All of our buttons have the text on the images themselves too so that'd be another problem on our end.


feat: add features section

Please make the requested changes.
Other than that the UI looks super cool 😎
Thank you

Looks fabulous to me🥳

Thank you 😁


Add uninstall target

Adds an uninstall target to conveniently remove rukpak from the cluster
entirely. Relies on the kustomize output to build a list of objects to
remove.

rukpak(main): kustomize build manifests | kubectl delete -f -
namespace "crdvalidator-system" deleted
namespace "rukpak-system" deleted
customresourcedefinition.apiextensions.k8s.io "bundleinstances.core.rukpak.io" deleted
customresourcedefinition.apiextensions.k8s.io "bundles.core.rukpak.io" deleted
serviceaccount "crd-validation-webhook" deleted
serviceaccount "plain-provisioner-admin" deleted
serviceaccount "rukpak-core-admin" deleted
clusterrole.rbac.authorization.k8s.io "bundle-reader" deleted
clusterrole.rbac.authorization.k8s.io "crd-validation-webhook" deleted
clusterrole.rbac.authorization.k8s.io "plain-provisioner-admin" deleted
clusterrolebinding.rbac.authorization.k8s.io "crd-validation-webhook" deleted
clusterrolebinding.rbac.authorization.k8s.io "plain-provisioner-admin" deleted
service "crd-validation-webhook" deleted
service "plain-provisioner" deleted
service "rukpak-webhook-service" deleted
deployment.apps "crd-validation-webhook" deleted
deployment.apps "plain-provisioner" deleted
deployment.apps "rukpak-core-webhook" deleted
certificate.cert-manager.io "crd-validation-webhook-certificate" deleted
certificate.cert-manager.io "rukpak-webhook-certificate" deleted
issuer.cert-manager.io "selfsigned" deleted
issuer.cert-manager.io "rukpak-selfsigned" deleted
validatingwebhookconfiguration.admissionregistration.k8s.io "crd-validation-webhook" deleted
validatingwebhookconfiguration.admissionregistration.k8s.io "rukpak-validating-webhook-configuration" deleted

kubectl delete -k manifests

If that works for apply and delete, we could drop our kustomize dep entirely right?

@joelanford Not necessarily as we're reliant on kustomize build to render the installation release manifests: https://github.com/operator-framework/rukpak/blob/main/Makefile#L189.

Alternatively: kubectl delete -k manifests?

That looks good, but I got the following trying it locally:
$: kubectl delete -k manifests
error: AccumulateTarget: couldn't make target for ./crds: json: cannot unmarshal object into Go struct field Kustomization.patchesStrategicMerge of type patch.StrategicMerge

not sure if you're seeing this locally as well, or maybe there is more to it.

@exdx Weird - this worked for me locally:
$ k delete -k manifests
k delete -k manifests
namespace "crdvalidator-system" deleted
namespace "rukpak-system" deleted
customresourcedefinition.apiextensions.k8s.io "bundleinstances.core.rukpak.io" deleted
customresourcedefinition.apiextensions.k8s.io "bundles.core.rukpak.io" deleted
serviceaccount "crd-validation-webhook" deleted
serviceaccount "plain-provisioner-admin" deleted
serviceaccount "rukpak-core-admin" deleted
clusterrole.rbac.authorization.k8s.io "bundle-reader" deleted
clusterrole.rbac.authorization.k8s.io "crd-validation-webhook" deleted
clusterrole.rbac.authorization.k8s.io "plain-provisioner-admin" deleted
clusterrolebinding.rbac.authorization.k8s.io "crd-validation-webhook" deleted
...

I'm using a 1.21 k8s client version btw.

@joelanford Not necessarily as we're reliant on kustomize build to render the installation release manifests: https://github.com/operator-framework/rukpak/blob/main/Makefile#L189.

I realize there's a kubectl kustomize sub-command that can tackle this mirror this process. Maybe we need to replace the hack/tools entry for kustomize with kubectl, or is that overkill?

There's also this way to do it: kubectl create -k manifests --dry-run=client -o yaml

Maybe we need to replace the hack/tools entry for kustomize with kubectl, or is that overkill?

Not necessarily, though I'd probably try to align the kubectl version we depend on the our main k8s.io/client-go version in go.mod.

Ok, nice kubectl delete -k manifests worked for me after updating my kubectl client. Updated PR to use this command instead.


python: fix

Fixes #12
Fixes #11
Fixes #10
Good luck figuring any of this out.

Ok I tested this with a lightly modified examples/new-route.py and it seems to make the gRPC calls.


Add Global Protect and Petty France Wifi to allowlist

@tpmcgowan sorry this was already out of date for some reason, needs reapproving please 🙂


fix(ssrf): update PL1 ssrf list

Signed-off-by: Felipe Zipitria<EMAIL_ADDRESS>Fixes #2641

Do we need to update the regex rule for those "blind Java SSRF"? We currently don't check for the exclamation mark.

We surely do. Let's merge this and track the other in the PL2 rule.


adds replace_field() to schema so one can alter a field after creatio…

…n, especially usefull in schemaless mode.

Thanks!


What's Azure AWS BYOIP equivalent service? Docs aren't clear.

Hi,
As AWS BYOIP is not yet available in my region I am searching Azure docs trying to find an equivalent service that could help me on transferring my own ASN (Autonomous System Number) to the Azure Cloud.
- [ ] The relevant Azure service or technology.
Azure ExpressRoute or any AWS BYOIP equivalent
- [ ] A link to the published documentation article that you have feedback about.
This doc makes me believe ExpressRoute is the AWS-BYOIP equivalent, but not really clear if the service does what AWS BYOIP does or even how to hire the service:
https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/hybrid-networking/expressroute
On this other doc:
https://docs.microsoft.com/en-gb/azure/vpn-gateway/vpn-gateway-bgp-overview#can-i-use-private-asns-autonomous-system-numbers
The asked question Can I use private ASNs (Autonomous System Numbers)? has a clear answer: YES But doesn't say how to contract such a service.
- [ ] Clear, specific feedback that the author can act on.
Could you please point me to the right documentation on how to hire any Microsoft Azure service that would allow my company to move our own IP range/ASN to the Azure cloud on similar terms as the AWS BYOIP service?

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

ID: 8c1d3b93-4e51-b2ec-c779-d80313275297
Version Independent ID: 1811faf4-3a71-f037-6d08-6872ec5120a2
Content: Overview of BGP and Azure VPN gateways
Content Source: articles/vpn-gateway/vpn-gateway-bgp-overview.md
Service: vpn-gateway
GitHub Login: @yushwang
Microsoft Alias: yushwang

@jfoliveira , Unfortunately, you will not be able to Bring your Own IP to Azure as of now.
Here is the feedback link: https://feedback.azure.com/forums/217313-networking/suggestions/4127175-bring-your-own-public-ip-address-space-and-interne
Also you can use Azure Public Prefixes where you can buy a bunch of Azure IPs and use them in Azure.
Here is the Doc: https://docs.microsoft.com/en-us/azure/virtual-network/public-ip-address-prefix

@msrini-MSFT

Please assign the issue to @anavinahar to triage or redirect
Please include @telmosampaio if any clarification is needed for the arch doc mentioned above

@jfoliveira - Azure VPN BGP is a complete private peering between your virtual network and on-premises networks. The recommendation is to use Private ASNs within the IPsec tunnels for cross-premises routing and communication. If you have a public ASN, you can use it on Azure VPN but the concern will be the affect when Azure VPN gateways advertise the routes with the ASNs to other networks connected.
Thanks,
Yushun

We do not have BYOIP today in Azure.


something seriously changed lately?

I have installed zsh approx 100 times and never had problems. yesterdaty for a friend it looked like it was ok . it said shellc hanged. opened a new term and it still was bash. Today I innstallled Antergos on a machine and experienced the exact same issue. it says the shell have changed but on the next term you're still in bash. so now I had to type zsh to get into zsh.
I loked over my .zshrc but cant seee anything ifferent from what I've seen befor
So was just wondering if something important have changed  - say the last 2 weeks - thats about the time since I last installed it for a frined
edit:
when I speak of zsh I mean zsh AND oh-my-zsh

Same thing for me. After last update for git plugin I had an issue for line 42 (around 'elif' statement to be precise). Today I tried to reinstall it completely and I cannot even install it. VIM shows that there are bunch of ^M chars at the end of each line in .zshrc and I cannot proceed because of:
/Users/myuser/.zshrc:3: command not found: ^M
.....
and many more

Same thing for me.
After update
zsh: command not found: git_prompt_info
then i reinstall zsh and oh-my-zsh:
/home/user/.zshrc:source:65: no such file or directory: /home/user/.oh-my-zsh/oh-my-zsh.sh^M /home/user/.zshrc:66: command not found: ^M

I usually install manually but this have made me try both curl and wget but it's the same result no matter what i do. I do have zsh and omz though but have to start it every time i open a terminal. Using a browser and only terminals for everything else i think zsh is the command typed most the last 2 days.   😁  feel real sorry for those who don't even have it.  It must be hard to live without a computer -  as using bash is unthinkable

I've not looked into implementing a fix but reverting and disabling auto-updates seems to be a temporary workaround until this is patched.
cd $ZSH
git checkout 41eedd37005f6b3668fcebe2a5f5a26324753519

YMMV but in ~/.zshrc
DISABLE_AUTO_UPDATE="true"

Oddly, I just double checked and master seems to be working again.

^M is a CR setting in git config. This here may be helpful.

Thanks @eugenpirogoff ! Disabling autocrlf option helped

Works fine for me now it seems.   Bsh is gone and I open a teminal and the old familiar jnrowe theme is already there,
Obviously een fixed. Thank You and closing


Comparing performance for synchronous and asynchronous gRPC servers on ACA.

According to https://github.com/futurewei-cloud/alcor-control-agent/blob/master/src/comm/aca_grpc.cpp#L88, the current gRPC server on ACA, which is responsible for receiving GoalStates and applying it to the ACA, is synchronous.
We wonder if it will speed up the overall ping time, if we make it asynchronous(so that the receiving function doesn't block until the current goalstate is finished being applied)?
To get started on the C++ gRPC async APIs, please refer to https://grpc.io/docs/languages/cpp/async/
To add code to measure time elapsed from point A to point B inside ACA, please refer to https://github.com/zzxgzgz/alcor-control-agent/blob/time_measurement/src/ovs/aca_vlan_manager.cpp#L191 and its following few lines.

I think this really depends on the NCM/DPM side on how to handle the async return from ACA which indicate the work is not done yet. What happen if the completion call from ACA comes later with a failure?
One model to consider is both grpc sender and receiver would do the async streaming, similar to a work item queue approach (i.e. I will tell you when there are stuff to do, and I will give you update like pending/success/failed when I have the status). But that would require some good coordination on both sender and receiver side, and potentially add more threads to handle the work in flight...


feature: handle git dependencies

add git and cacert as deps to cacheDrvs
use pkg.reference instead of version in package.json of isolated builds
since it allow yarn to find the git repo (this will probably also fix
oter type of deps)

Oh, I'm surprised that's all it took. The added dependencies are packages common enough that it should be fine.
Thanks for contributing! 👍

I'm afraid this broke the test we have in CI, which adds the plugin to this repo itself, then tries to do an isolated build of sqlite3: https://github.com/stephank/yarn-plugin-nixify/blob/01bf568bdc1de0792adb322c8831861d9b9adef6/.github/workflows/build.yml#L74-L89
The nix-build step output of that is:
these 4 derivations will be built:
  /nix/store/1p66rdlaj6zr6n5ja8p76ilwfilahf91-collect-cache.sh.drv
  /nix/store/lnyaj1kz067ymaixf09x8j3cpbazk59y-collect-cache.sh.drv
  /nix/store/9fhxsdfnxrjm932mwm0nl6ybsd3crzka-sqlite3-5.0.2.drv
  /nix/store/hdlywkqh8pv0n4ydhb492nr1jsm4jl2i-yarn-plugin-nixify.drv
these 2 paths will be fetched (0.80 MiB download, 2.16 MiB unpacked):
  /nix/store/3pj61q16c2cmivip0lrf45bpdybs0w0r-sqlite-3.37.0-dev
  /nix/store/g2pigzz84n531ra2q56ln9x25xbxrgs6-sqlite-3.37.0-bin
building '/nix/store/1p66rdlaj6zr6n5ja8p76ilwfilahf91-collect-cache.sh.drv'...
copying path '/nix/store/g2pigzz84n531ra2q56ln9x25xbxrgs6-sqlite-3.37.0-bin' from 'https://cache.nixos.org'...
copying path '/nix/store/3pj61q16c2cmivip0lrf45bpdybs0w0r-sqlite-3.37.0-dev' from 'https://cache.nixos.org'...
building '/nix/store/lnyaj1kz067ymaixf09x8j3cpbazk59y-collect-cache.sh.drv'...
building '/nix/store/9fhxsdfnxrjm932mwm0nl6ybsd3crzka-sqlite3-5.0.2.drv'...
building
➤ YN0000: ┌ Resolution step
➤ YN0001: │ Error: Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported
    at Fg.bindDescriptor (/nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:432:8107)
    at pd.bindDescriptor (/nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:432:5076)
    at pd.bindDescriptor (/nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:432:5076)
    at I (/nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:441:6932)
    at async Promise.all (index 0)
    at async Ke.resolveEverything (/nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:441:8197)
    at async /nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:444:2138
    at async Fe.startTimerPromise (/nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:412:3730)
    at async Ke.install (/nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:444:2077)
    at async /nix/store/liggs6jpg4lbm700jvdpyqlk2ja66xi8-yarn-3.1.1.cjs:486:14900
➤ YN0000: └ Completed
➤ YN0000: Failed with errors in 0s 43ms
error: builder for '/nix/store/9fhxsdfnxrjm932mwm0nl6ybsd3crzka-sqlite3-5.0.2.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/hdlywkqh8pv0n4ydhb492nr1jsm4jl2i-yarn-plugin-nixify.drv' failed to build

The mkIsolatedBuild call contains: reference = "virtual:..."

I’ll investigate tomorrow. I wonder why it would be virtual btw. I guess a temporary solution would be to strip the virtual prefix as the behaviour would be no different then before the change in this case, while it would still work with git deps.

Just reading the code from my phone, but maybe we need to call this?
https://github.com/yarnpkg/berry/blob/e64af835177f64fc4820f1bb582e0f918b73ebfc/packages/yarnpkg-core/sources/structUtils.ts#L203

Ah, of course. There's already a devirtualized devirtPkg in scope there, so it was a one line change:
https://github.com/stephank/yarn-plugin-nixify/commit/c999d4070cf463758198868b824ea5e549e9622d#diff-0e9ffa40772b7eca15b8e9fed0a847258c6a80dca2f41d5ddc0cb70357736f2cR248
Works now! 👍


strict_function_checks invalidates sqlc.arg and sqlc.narg

Version
1.15.0
What happened?
First, I want to say I very much appreciate everybody's work on this really cool project that is working out very well for my use case. Thank you so much for your time and dedication.
I was trying to follow along with the documentation for nullable named parameters, and kept getting the error:
: function "sqlc.narg" does not exist
I encountered the same output when using a plain sqlc.arg.
I found an earlier issue filed before the feature was formally released, but that was before version 1.14, and I was using the latest docker tag, which I assumed was 1.15.0. I tried:

explicitly using the 1.15.0 tag in the docker image
explicitly using the 1.14.0 tag in the docker image (thinking maybe it was released and then revoked lol)
installing sqlc 1.15.0 via go get and running that manually

Eventually what "fixed" it was removing strict_function_checks: true from my configuration. I feel like this is either a bug in the functionality of the flag or of the documentation for not calling it out. I'm happy to implement either fix as well, but I'm definitely not familiar enough with the project to assess which is which.
Relevant log output
No response
Database schema
No response
SQL queries
No response
Configuration
version: "2"
sql:
  - schema: "internal/database/postgres/migrations"
    queries: "internal/database/postgres/queries"
    engine: "postgresql"
    strict_function_checks: false  # <-- this was true, previously
    gen:
      go:
        package: "generated"
        sql_package: "database/sql"
        out: "internal/database/postgres/generated"
        output_files_suffix: ""
        emit_interface: true
        emit_exported_queries: true
        emit_empty_slices: false
        emit_params_struct_pointers: true
        emit_result_struct_pointers: true
        emit_exact_table_names: true
        emit_enum_valid_method: true
        emit_all_enum_values: true

Playground URL
No response
What operating system are you using?
Linux
What database engines are you using?
PostgreSQL
What type of code are you generating?
Go

@verygoodsoftwarenotvirus can you try this fix ?
I believe it will fix your issue.

Hi @skabbes @kyleconroy FYI I can't confirm the fix because a new version has not been pushed to Docker Hub, and my org requires we use dockerized versions where possible. :)


Provider Mode: Object Dashboard: fix RGW performance card

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2276393

Also fixed: occasional crashes related to wrong date values in metric data points.

BEFORE: page crash when selecting Object Gateway (RGW) on Performance Card (Object Dashboard)
AFTER:

/cherry-pick release-4.16

/cherry-pick release-4.16-compatibility


Include sourcemap file in karma files section

so we can debug TypeScript source code for browser tests. One still
needs to disable code coverage first though to have the source mapping
working.

@sadasant I remember you did the consistency work for the browser output directory.  However I still found two directories are used for browser test rollup output: test-browser and dist-test?


Converted from general utility to a file export plugin

Resolves #12
This is another larger change. I added a dialog for the export options. We can add the Z to Y mapping option from #21 there. The plugin class was changed to an export and the supporting code added. I added the gltf and glb options to the save file dialog filter. Now the binary option is inferred from the name.

This is amazing! It would have taken me forever to figure out all the details!

This is amazing! It would have taken me forever to figure out all the details!


fix call to clj-jgit.porcelain/git-clone

clj-jgit has annoyingly changed the name of keyword arguments to their clone function which breaks kit when you specify custom module tag etc.  I created a kit project and then ran
(doc git/git-clone)
clj-jgit.porcelain/git-clone
([uri & {:keys [bare? branch callback clone-all? clone-branches clone-subs? dir git-dir no-checkout? mirror? monitor remote tags], :or {branch "master", callback nil, remote nil, tags :auto-follow, bare? false, clone-branches nil, dir nil, mirror? false, clone-subs? false, clone-all? true, git-dir nil, no-checkout? false, monitor nil}}])
Clone a repository into a new working directory from given uri.
Options:

:bare?          Whether the cloned repository shall be bare. (default: false)
:branch         The initial branch to check out when cloning the repository. Can be
                specified as ref name ("refs/heads/master"), branch name
                ("master") or tag name ("v1.2.3"). If set to nil "HEAD"
                is used. (default: "master")
:callback       Register a progress callback. See JGit CloneCommand.Callback
                interface. (default: nil)
:clone-all?     Whether all branches have to be fetched. (default: true)
:clone-branches String or coll of strings of branch(es) to clone. Ignored when
                :clone-all? is true. Branches must be specified as full ref
                names (e.g. "refs/heads/master"). (default: nil)
:clone-subs?    If true; initialize and update submodules. Ignored when :bare?
                is true. (default: false)
:dir            The optional directory associated with the clone operation. If
                the directory isn't set, a name associated with the source uri
                will be used. (default: nil)
:git-dir        The repository meta directory (.git). (default: nil = automatic)
:no-checkout?   If set to true no branch will be checked out after the clone.
                This enhances performance of the clone command when there is no
                need for a checked out branch. (default: false)
:mirror?        Set up a mirror of the source repository. This implies that a
                bare repository will be created. Compared to :bare?, :mirror?
                not only maps local branches of the source to local branches of
                the target, it maps all refs (including remote-tracking branches,
                notes etc.) and sets up a refspec configuration such that all
                these refs are overwritten by a git remote update in the target
                repository. (default: false)
:monitor        Set a progress monitor. See JGit ProgressMonitor interface.
                (default: nil)
:remote         The remote name used to keep track of the upstream repository for the
                clone operation. If no remote name is set, "origin" is used.
                (default: nil)
:tags           Set the tag option used for the remote configuration explicitly.
                Options:
                  :auto-follow  - Automatically follow tags if we fetch the thing they point at.
                  :fetch-tags   - Always fetch tags, even if we do not have the thing it points at.
                  :no-tags      - Never fetch tags, even if we have the thing it points at.
                (default: :auto-follow)

thanks!


UIWebView Deprecation and App Store Rejection (ITMS-90809)

I am still having this issue!
I have followed all the documented steps (https://docs.microsoft.com/en-au/xamarin/xamarin-forms/user-interface/webview?tabs=macos#uiwebview-deprecation-and-app-store-rejection-itms-90809)
My versions of Xamarin.Forms + Xamarin.iOS are higher than required.
I've added the additional mtouch args.
Any ideas?

Hi @jackkranz, thanks for reporting this!
We've had a couple of more cases where it didn't seem to work, while all the bits seemed to be in place. You can see all the suggestions and conversation here.
The gist of it is;

Make sure you've got the right versions, which you say you do
Make sure you set the linker behavior to either LinkAll or SDK Only
Make sure that you have the mtouch argument for the right build configuration, see https://github.com/xamarin/Xamarin.Forms/issues/9823#issuecomment-594135484
Make sure that you did a clean build. Delete the bin and obj folders and rebuild the whole thing

One of the last options is that you might be using a third-party library that still references the UIWebView, this won't be captured by our solution. However, this hasn't been the case for the majority of people.
Let me know if any of these suggestions make sense. If you still need assistance you would probably be better off opening an issue on the Forms repository. In this case you may also contact me directly at gerald.versluis [mail sign] microsoft.com so we can get to the bottom of this.

Hi @jfversluis I also have this issue, i don't use Material component.
This is my build configuration - I use AppCenter to build Ipa file.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
    <DebugType>none</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\iPhone\Release</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <MtouchArch>ARM64</MtouchArch>
    <CodesignKey>XXX</CodesignKey>
    <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
    <CodesignProvision>Automatic:AppStore</CodesignProvision>
    <MtouchExtraArgs>--optimize=experimental-xforms-product-type</MtouchExtraArgs>
    <MtouchLink>Full</MtouchLink>
  </PropertyGroup>

List of nuget packages:
<ItemGroup>
    <PackageReference Include="Xamarin.Forms" Version="<IP_ADDRESS>6" />
    <PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
    <PackageReference Include="sqlite-net-pcl">
      <Version>1.6.292</Version>
    </PackageReference>
    <PackageReference Include="Newtonsoft.Json">
      <Version>12.0.3</Version>
    </PackageReference>
    <PackageReference Include="Com.Airbnb.Xamarin.Forms.Lottie">
      <Version>3.0.3</Version>
    </PackageReference>
    <PackageReference Include="SkiaSharp">
      <Version>1.68.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.FFImageLoading">
      <Version><IP_ADDRESS>2</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.FFImageLoading.Forms">
      <Version><IP_ADDRESS>2</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.FFImageLoading.Svg">
      <Version><IP_ADDRESS>2</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.FFImageLoading.Svg.Forms">
      <Version><IP_ADDRESS>2</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.FFImageLoading.Transformations">
      <Version><IP_ADDRESS>2</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugins.Settings">
      <Version>3.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Google.iOS.MobileAds">
      <Version>7.47.0</Version>
    </PackageReference>
    <PackageReference Include="Plugin.InAppBilling">
      <Version>2.0.0</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugin.HtmlLabel">
      <Version><IP_ADDRESS></Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugins.Forms.ProgressRing">
      <Version>0.1.2</Version>
    </PackageReference>
    <PackageReference Include="Acr.UserDialogs">
      <Version><IP_ADDRESS>0</Version>
    </PackageReference>
    <PackageReference Include="MarcTron.Admob">
      <Version>1.4.5</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Google.iOS.SignIn">
      <Version>4.4.0</Version>
    </PackageReference>
  </ItemGroup>

App Center build configuration:

Please give advice.

I’ve answered in the issue on the Forms repository. This issue has to do with Forms, not the docs. If there are still any issues, please find an issue on the Forms repo that is appropriate or open a new one. Thanks!
@davidbritch feel free to close


[question] autocompletion, item with spaces

Hi,
I'm trying to add autocompletion to my custom language editor. Apart from single words, I'd like to add autocompletion for multiple words, in example, "script Init" or "script Main" or small code snippets.
As the list of AC items is added as a list of strings separated by spaces, obviously I can't add those items. How can I do that?
thanks!

I just found about the AutoCSeparator field, which solves my problem.


Token view should let original minter Claim the Letter

Along with showing current Claim status, have something for users to Claim those they like.

WordTool has a "Cast Word" button that does all the work except writing to the contract.

does this create a capture we can use as an IPFS mint?
these are the ones we really want to show off on rarible etc., so the metadata is important.

Mint button is on Letters


Multi-lingual resources

My line of thought:
Language is detected with GetLocalization, so we don't have to make a selection gui (we'll still add an option to change it in /settings)
Translation resource that has all translation files
Files are for each resource and language separate in xml so people can easily translate them
Resource triggers an event for resources to get their translations
Each resource will need an update function to change the text

Today I tried to make this resource but I got problems with xmlNodeGetAttributes. Seems like it returns table for me but this table is empty or what. I would be happy to get some help. :)  Draft

I think "Files are for each resource and language separate in xml" isn't really needed. Keep translations for all resources in one "english.lua" file even better, because all searches you will do in one file, so it's easy to find a text that you need. Translations in "english.lua" could be separated by comments like this:
--gcshop resource
--race resource
Also, there is ready-for-use resource in mta community. Click
"Each resource will need an update function to change the text" it's also isn't really needed. I have an easy solution and it's pretty good imo: if somebody want to change language in settings, he will be noticed, that he will need to reconnect to change language and there will appear a GUI button to reconnect. You don't change language every day, week, month, and most players will never change the default-detected language, so there is no problems with this and no reason to do unnecessary job :)
Please correct me if I'm wrong.