[Package Issue]: Microsoft.Git cannot be distinguished from Git.Git

Please confirm these before moving forward

[X] I have searched for my issue and not found a work-in-progress/duplicate/resolved issue.
[X] I have not been informed if the issue is resolved in a preview version of the winget client.

Category of the issue
Installation issue.
Brief description of your issue
Microsoft.Git is installed as Git.Git.
Steps to reproduce

Install Microsoft.Git via winget install Microsoft.Git
Verify installation via winget list --name Git this shows Git.Git is installed.
Verify installation via winget list --id Microsoft.Git - this shows Microsoft.Git is installed.
Verify installation via winget list --id Git.Git - this shows Git.Git is installed.

Actual behavior
at 11:56:50 ❯ winget list --id Microsoft.Git
Name Id            Version    Source
-------------------------------------
Git  Microsoft.Git <IP_ADDRESS>.0 winget
at 11:57:00 ❯ winget list --name Git
Name                      Id                    Version      Available Source
------------------------------------------------------------------------------
Git                       Git.Git               <IP_ADDRESS>.0   2.46.2    winget
at 11:57:12 ❯ winget list --id Git.Git
Name Id      Version    Available Source
----------------------------------------
Git  Git.Git <IP_ADDRESS>.0 2.46.2    winget

Expected behavior
winget should always show Microsoft.Git installed, not Git.Git. If I run winget update -r, it will update Microsoft.Git using Git.Git
Environment
Windows Package Manager v1.8.1911
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.26100.1742
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.23.1911.0

Winget Directories
-----------------------------------------------------------------------------------------------------------------------
Logs                               %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagΓÇª
User Settings                      %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settΓÇª
Portable Links Directory (User)    %LOCALAPPDATA%\Microsoft\WinGet\Links
Portable Links Directory (Machine) C:\Program Files\WinGet\Links
Portable Package Root (User)       %LOCALAPPDATA%\Microsoft\WinGet\Packages
Portable Package Root              C:\Program Files\WinGet\Packages
Portable Package Root (x86)        C:\Program Files (x86)\WinGet\Packages
Installer Downloads                %USERPROFILE%\Downloads

Links
---------------------------------------------------------------------------
Privacy Statement   https://aka.ms/winget-privacy
License Agreement   https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage            https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Disabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride                     Disabled
LocalArchiveMalwareScanOverride           Disabled
ProxyCommandLineOptions                   Disabled
DefaultProxy                              Disabled

Screenshots and Logs
2024-09-27 11:53:18.935 [CORE] WinGet, version [1.8.1911], activity [{16E95466-5E53-489D-BB2A-E08FEC48E2FF}]
2024-09-27 11:53:18.935 [CORE] OS: Windows.Desktop v10.0.26100.1742
2024-09-27 11:53:18.935 [CORE] Command line Args: "C:\Users\tilagnes\AppData\Local\Microsoft\WindowsApps\winget.exe" install Microsoft.Git
2024-09-27 11:53:18.935 [CORE] Package: Microsoft.DesktopAppInstaller v1.23.1911.0
2024-09-27 11:53:18.935 [CORE] IsCOMCall:0; Caller: winget-cli
2024-09-27 11:53:18.946 [CLI ] WinGet invoked with arguments: 'install' 'Microsoft.Git'
2024-09-27 11:53:18.946 [CLI ] Found subcommand: install
2024-09-27 11:53:18.946 [CLI ] Leaf command to execute: root:install
2024-09-27 11:53:18.950 [CLI ] Executing command: install
2024-09-27 11:53:18.960 [REPO] Default source requested, multiple sources available, adding all to source references.
2024-09-27 11:53:18.960 [REPO] Adding to source references msstore
2024-09-27 11:53:18.960 [CORE] Default proxy is not set
2024-09-27 11:53:18.960 [REPO] REST HTTP Client helper does not use proxy
2024-09-27 11:53:18.960 [REPO] Adding to source references winget
2024-09-27 11:53:18.961 [CLI ] Created authentication arguments. Mode: silentPreferred, Account:
2024-09-27 11:53:18.972 [CORE] Examining extension: PFN = Microsoft.Winget.Source_8wekyb3d8bbwe, ID = IndexDB
2024-09-27 11:53:18.972 [CORE] Found matching extension.
2024-09-27 11:53:18.977 [REPO] Multiple sources available, creating aggregated source.
2024-09-27 11:53:18.977 [REPO] Adding to aggregated source: msstore
2024-09-27 11:53:18.977 [REPO] Sending http GET request to: https://storeedgefd.dsx.mp.microsoft.com/v9.0/information
2024-09-27 11:53:19.083 [REPO] Response status: 200
2024-09-27 11:53:19.083 [REPO] Authentication node not found. Assuming authentication type none.
2024-09-27 11:53:19.084 [REPO] Sending http GET request to: https://storeedgefd.dsx.mp.microsoft.com/v9.0/information
2024-09-27 11:53:19.098 [REPO] Response status: 200
2024-09-27 11:53:19.098 [REPO] Authentication node not found. Assuming authentication type none.
2024-09-27 11:53:19.098 [REPO] Adding to aggregated source: winget
2024-09-27 11:53:19.105 [CORE] Examining extension: PFN = Microsoft.Winget.Source_8wekyb3d8bbwe, ID = IndexDB
2024-09-27 11:53:19.106 [CORE] Found matching extension.
2024-09-27 11:53:19.160 [REPO] Opening database for ImmutableRead at 'C:\Program Files\WindowsApps\Microsoft.Winget.Source_2024.927.1710.43_neutral__8wekyb3d8bbwe\Public\index.db'
2024-09-27 11:53:19.161 [REPO] Opened SQLite Index with version [2.0], last write [2024-09-27 09:08:15.000]
2024-09-27 11:53:19.595 [REPO] Creating new SQLite Index with version [Latest] at ':memory:'
2024-09-27 11:53:19.600 [REPO] Reading MSI UpgradeCodes
2024-09-27 11:53:19.740 [REPO] Reading MSI UpgradeCodes
2024-09-27 11:53:20.495 [REPO] Opening database for ReadWrite at 'C:\Users\tilagnes\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\StoreEdgeFD\installed.db'
2024-09-27 11:53:20.496 [REPO] Opened SQLite Index with version [1.6], last write [2023-07-27 11:43:00.000]
2024-09-27 11:53:20.573 [REPO] Sending http POST request to: https://storeedgefd.dsx.mp.microsoft.com/v9.0/manifestSearch
2024-09-27 11:53:20.597 [REPO] Response status: 200
2024-09-27 11:53:20.603 [REPO] Opening database for ReadWrite at 'C:\Users\tilagnes\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\Microsoft.Winget.Source_8wekyb3d8bbwe\installed.db'
2024-09-27 11:53:20.604 [REPO] Opened SQLite Index with version [1.6], last write [2024-09-25 15:02:05.000]
2024-09-27 11:53:20.741 [CLI ] Found one app. App id: Microsoft.Git App name: Microsoft Git
2024-09-27 11:53:20.748 [REPO] Attempting to open pinning database: C:\Users\tilagnes\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\pinning.db
2024-09-27 11:53:20.748 [REPO] ... opening existing pinning database
2024-09-27 11:53:20.748 [REPO] Opening database for Read at 'C:\Users\tilagnes\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\pinning.db'
2024-09-27 11:53:20.749 [REPO] Opened Pinning Index with version [1.0], last write [2023-07-27 11:44:21.000]
2024-09-27 11:53:20.765 [CLI ] Manifest fields: Name [Microsoft Git], Version [<IP_ADDRESS>.0]
2024-09-27 11:53:20.925 [CLI ] Generated temp download path: C:\Users\tilagnes\AppData\Local\Temp\WinGet\Microsoft.Git.<IP_ADDRESS>.0\37d605445e4253c665212f233f3e4a6b225fb8dad29f9eddb12ca58f68f96c55
2024-09-27 11:53:20.926 [CORE] Downloading to path: C:\Users\tilagnes\AppData\Local\Temp\WinGet\Microsoft.Git.<IP_ADDRESS>.0\37d605445e4253c665212f233f3e4a6b225fb8dad29f9eddb12ca58f68f96c55
2024-09-27 11:53:20.927 [CORE] DeliveryOptimization downloading from url: https://github.com/microsoft/git/releases/download/v2.46.0.vfs.0.0/Git-2.46.0.vfs.0.0-64-bit.exe
2024-09-27 11:53:27.137 [CORE] Download completed.
2024-09-27 11:53:29.187 [CORE] Started applying motw to C:\Users\tilagnes\AppData\Local\Temp\WinGet\Microsoft.Git.<IP_ADDRESS>.0\37d605445e4253c665212f233f3e4a6b225fb8dad29f9eddb12ca58f68f96c55 with zone: 3
2024-09-27 11:53:29.201 [CORE] Finished applying motw
2024-09-27 11:53:29.201 [CLI ] Installer hash verified
2024-09-27 11:53:29.201 [CORE] Started applying motw to C:\Users\tilagnes\AppData\Local\Temp\WinGet\Microsoft.Git.<IP_ADDRESS>.0\37d605445e4253c665212f233f3e4a6b225fb8dad29f9eddb12ca58f68f96c55 with zone: 2
2024-09-27 11:53:29.213 [CORE] Finished applying motw
2024-09-27 11:53:29.215 [CLI ] Successfully renamed downloaded installer. Path: C:\Users\tilagnes\AppData\Local\Temp\WinGet\Microsoft.Git.<IP_ADDRESS>.0\Git-2.46.0.vfs.0.0-64-bit.exe
2024-09-27 11:53:29.215 [REPO] Creating new SQLite Index with version [Latest] at ':memory:'
2024-09-27 11:53:29.220 [REPO] Reading MSI UpgradeCodes
2024-09-27 11:53:29.368 [REPO] Reading MSI UpgradeCodes
2024-09-27 11:53:29.629 [CLI ] Installer args: /SP- /SILENT /SUPPRESSMSGBOXES /NORESTART /LOG="C:\Users\tilagnes\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\WinGet-Microsoft.Git.<IP_ADDRESS>.0-2024-09-27-11-53-29.629.log" /SUPPRESSMSGBOXES /enable-component windowsterminal
2024-09-27 11:53:29.629 [CLI ] Starting: 'C:\Users\tilagnes\AppData\Local\Temp\WinGet\Microsoft.Git.<IP_ADDRESS>.0\Git-2.46.0.vfs.0.0-64-bit.exe' with arguments '/SP- /SILENT /SUPPRESSMSGBOXES /NORESTART /LOG="C:\Users\tilagnes\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\WinGet-Microsoft.Git.<IP_ADDRESS>.0-2024-09-27-11-53-29.629.log" /SUPPRESSMSGBOXES /enable-component windowsterminal'
2024-09-27 11:54:17.321 [REPO] Creating new SQLite Index with version [Latest] at ':memory:'
2024-09-27 11:54:17.327 [REPO] Reading MSI UpgradeCodes
2024-09-27 11:54:17.487 [REPO] Reading MSI UpgradeCodes
2024-09-27 11:54:17.655 [CLI ] During package install, 1 changes to ARP were observed, 0 matches were found for the package, and 0 packages were in both
2024-09-27 11:54:17.655 [CLI ] The entry determined to be associated with the package is 'Git', with publisher 'The Git Fundamentals Team at GitHub'
2024-09-27 11:54:17.668 [REPO] Opening database for ReadWrite at 'C:\Users\tilagnes\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\Microsoft.Winget.Source_8wekyb3d8bbwe\installed.db'
2024-09-27 11:54:17.669 [REPO] Opened SQLite Index with version [1.6], last write [2024-09-25 15:02:05.000]
2024-09-27 11:54:17.758 [CLI ] Removing installer: C:\Users\tilagnes\AppData\Local\Temp\WinGet\Microsoft.Git.<IP_ADDRESS>.0\Git-2.46.0.vfs.0.0-64-bit.exe
2024-09-27 11:54:17.767 [CLI ] Leaf command succeeded: root:install

Maybe they are mostly the same, only with some specific patches. winget.exe can't distinguish them.

Can winget use git --version output to detect which one is installed? For Microsoft.Git the output includes vfs (e.g. git version 2.46.0.vfs.0.0). Currently, I have to pin Git.Git so winget update --all won't replace Microsoft.Git with Git.Git
(BTW, @tilagnes, I think it worth updating the issue title to be more informative)

Can winget use git --version output to detect which one is installed?

I think it can't at the moment. winget.exe will read Windows Registry for identifying a package.
Portable applications won't write any information to the Registry, except you install them via winget.exe (winget.exe will write them). But for those installer wizard (exe, burn, nullsoft, etc.), winget.exe will do nothing about it. All information will be written by the installer itself.

In other systems, like Linux debian, this would be treated as "alternatives" - https://wiki.debian.org/DebianAlternatives - it's probably much harder to pull this one here, as packages (AFAIK) are pretty much black box (unlike Debian's apt), but it might work on some higher level - e.g. given competeting alternatives to deliver the same package (?), files (?), etc. - which one should win.

Should be fixed in #185863, #185864, #185865, #185866, #185867

@SpecterShell can you explain how these PRs fix this? I see the manifests are generated by some new tool, but what exactly in the manifest fixes the issue described in this issue?

I think it might be resolved by removing AppsAndFeaturesEntries in the manifests.


The viewer.js can not take online PDF stream

The viewer.js can not take online PDF stream.
By default, viewer.js has:
var kDefaultURL = 'compressed.tracemonkey-pldi-09.pdf';
Now use PDF stream:
http://www.liferay.com/documents/31578/11925632/sample.pdf
as
var kDefaultURL = 'http://www.liferay.com/documents/31578/11925632/sample.pdf';
In FireFox 9.0.1 and Chrome 16.0.912.63 , it throws errors:
"
PDF.JS Build: 9161c2e
Message: Unexpected server response of 0.
".

Related issues are #522, #586 and #842

As referenced in the above issues this is something that the user will have to fix on their own using a proxy or CORS.

Hi Brend,
what's the main reason that "the user will have to fix on their own using a proxy or CORS"?
It is important that the PDF could be coming from local (uploading), server as a file, server as stream like "http://".
As image URL, the PDF reader should support HTTP URL.
Thanks

@jonasyuandotcom the cors allows you get the pdf using http from the same server. however the browser protects the user from getting/sending the data to foreign servers. Those  servers must use http headers to bypass this restriction.
Since your server side proxy will be located on same server as a viewer cors will be okay with that.

@notmasteryet thanks. It works when using same server like
var kDefaultURL = '/pdf-reader-web/sample.pdf';

Hi @brendandahl
I  was wondering if there is any update since 2011 ? Is it still impossible to fix the CORS problems ?

Yes. See https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#faq-xhr for more information.

Thank you Tim !

Hi @timvandermeij. Thanks for your response. I've tried many solutions but I'm still not enable to allow CORS on my web server. Do you have any git example ?

 Notice that async5.org allows mozilla.github.io to get files. Otherwise a web browser has to block accessing a remote file for security reasons. It is a standard practice on the web and there is nothing PDF.js can do to circumvent browsers security.
If you embedding browser control into desktop/mobile application, you can requests a binary data by using OS/Framework APIs and pass it to the PDF.js as Uint8Array.

Thanks @yurydelendik for your links. I know that PDF.js doesn't manage CORS. I've tried the solutions sent by @timvandermeij and other but they failed. I'm looking for the right implementation/modifications solutions once the pdf.js repo downloaded. Thanks

@yurydelendik  I am also having the issue of loading remote PDF file. But this error happens only in Chrome.
PDF.js v1.0.1040 (build: 997096f)
Message: Unexpected server response (0) while retrieving PDF "http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal.pdf".
You can see that the PDF I try to load is on another server upon which I don't have any control. But still I wish to show this PDF on my viewer.js
I have not much experience with CORS but I created a least security crossdomain.xml file on my server but even then it doesn't work.

@hashbyte You will need a proxy for the server. A very simple proxy (developed by me) is CORS Anywhere. Simply prepend the URL of the proxy before the URL to the PDF file, e.g.
"https://cors-anywhere.herokuapp.com/" +
"http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal.pdf" =
"https://cors-anywhere.herokuapp.com/http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal.pdf"

Then URL-encode this URL and put it in the file parameter, and you will get a link that can open any page: https://mozilla.github.io/pdf.js/web/viewer.html?file=https%3A%2F%2Fcors-anywhere.herokuapp.com%2Fhttp%3A%2F%2Fbhpr.hrsa.gov%2Fhealthworkforce%2Frnsurveys%2Frnsurveyfinal.pdf
Note: If the URL for the PDF does not contain any percent signs or & characters, then an easier way to quickly get a link is to just prepend the viewer URL before the link (so, without URL-encoding first). Only do this if you manually type the URL (e.g. when doing a quick test):
https://mozilla.github.io/pdf.js/web/viewer.html?file=https://cors-anywhere.herokuapp.com/http://bhpr.hrsa.gov/healthworkforce/rnsurveys/rnsurveyfinal.pdf
Note: The CORS Anywhere demo is only provided to demonstrate the feature. If you are going to use this feature on a site with many visitors, please host the CORS Anywhere instance yourself, to avoid putting an unfair load on the public demo server. If I notice that the performance of CORS Anywhere is crawling due to abuse, your origin will be blacklisted. When hosting CORS Anywhere yourself, you can restrict access to your site only via the originWhitelist configuration parameter to avoid this kind of abuse.

Hello,
I have this error when i want to load pdf from foreign url
Error: file origin does not match viewer's
throw new Error('file origin does not match viewer's');
please help!

I have this error when i want to load pdf from foreign url

@gildassamuel see #6916 for details.

@jonasyuandotcom you can add the file and pdfjs on a same file server.

Hey I have followed the instructions to set a "Access-Control-Allow-Origin" on the file server but I keep getting this error:

The http headers are as follows:

Any pointers would be appreciated, even if you are not sure can you provide some possible cause for the problem. Thank you very much!

@yjguoo The error message and the headers do not add up.
I think that the redirect target is lacking the expected headers.
Visit chrome://net-internals/#events and repeat the steps to see the actual headers of the blocked redirect in the log.

Hi Rob thanks for the quick response,
I notice the when I manually input requested url "https://files.dev52.slack.com/files-pri/T076SHX5W-F07CGBKK2/git-for-beginners-handout.pdf" I get different response header from the file server:

Notice that I got routed to a different location in response header. And at that new location I get a status 200 ok.

My first questions: is there a different between manually typing the url in the browser vs through XmlHttpRequest?
BTW I am using the default pdf.js viewer(html css js) all functionalities work except requesting a pdf from different origin (e.i. cross oring request issue)
Second question: do you think it's a problem on my end or the way the default viewer.js/ pdf.js is doing the XmlHttpRequest
Thank you :)

My first questions: is there a different between manually typing the url in the browser vs through XmlHttpRequest?

Yes, especially with cross-origin requests. When you perform a cross-origin request, the request is only accepted if the request is allowed by CORS. The browser will issue a request with the Origin header, the server can use this to decide whether to approve the request (by including the requested origin in the Access-Control-Allow-Origin response header).
Also, by default credentials are not included in cross-origin requests. To include cookies, the server must respond with Access-Control-Allow-Credentials: true and the XHR request must have the withCredentials attribute set to true.

Second question: do you think it's a problem on my end or the way the default viewer.js/ pdf.js is doing the XmlHttpRequest

I think that your server must be configured differently.
See the documentation on MDN for more info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
Or read the specification of CORS: https://www.w3.org/TR/2014/REC-cors-20140116/

Hi Rob,
I think I fixed the issue by also setting Access-Control-Allow-Credentials: true. Thank you so much for the help <3.  However I get another problem regarding a redirect and I don't know if you could give me some pointers. I do XHR
request using URL#1 (the issue that you help me fix). Then I get a redirect to URL#2(status 302). But both URL#1 and URL#2 points to the same server. Causing the following error:

I tried to set a the same response headers as I did to URL#1 but I realize that they are both on the same server and Origin is null.
I think it's because both URL's points to the same server so the redirect origin is NULL but i'm not too sure? Now how would I go about adding headers dealing with two different origin but both URLs points to the same file server. I tried using regex like * but apparently it is no allowed :( Again thank you!

After a cross-origin redirect, Chrome sets the Origin header to the "null" value instead of the actual URL - https://crbug.com/154967
You could conditionally return an Access-Control-Allow-Origin with value null, but only if you want all websites to be able to read that resource. If not (which is most likely), then you have to avoid the redirect. For example, by directly sending the request to the destination URL (if you don't know the URL in advance, add a new API endpoint to your server that returns the destination URL).

Thank you! I'll look into it :)

Hey Rob do you think there is another way to initialize the pdf viewer or pdf.js with the src already set and avoid XHR request all together?

@yjguoo You can base64-encode the PDF data and use a data-URL. For large PDF files, this results in a worse user experience (=blank page without progress bar) because encoding the data as base64 increases the file size by 33%. I recommend to continue using XHR for this reason.

Hi, just tested and it works if CORS is enabled, but what I see is that doesn't get the file in chunks/range if the file is very big.
Is this the expected behavior?
Thank you!!!

@Rob--W It was very helpful. There is any possibility from it to work from inside the project(like changing the XHR headers) ? (inside worker.js)

Hi, for any one still having problems with this, I solved it with:
https://drive.google.com/viewerng/viewer?embedded=true&url=http://www.africau.edu/images/default/sample.pdf


Integrate with Google Analytics

Google Analytics supports exception tracking via Measurement Protocol and that could be called from PHP.
Some events can also be tracked real-time, other have a short delay which may for some users provide a good experience that is also easier to deploy than using Raven/Sentry.

I think this would belong more in a third party handler package as I guess it'll depend on a google analytics sdk lib of some sort.

You can just send an HTTP request like:
https://www.google-analytics.com/collect?v=1&tid=UA-XXXXXX-Y&cid=555&t=exception&exd=my-exception-description&exf=1

See exception hit type for details about the fields.
So it should be pretty simple, just urlencode each argument.

Ok that's good but still I think I would rather have it as a third party
package just because it's not exactly a mainstream logging target and I
am trying to limit the maintenance burden of this repo :)


[ES] Docs Clarification

The entropy source documentation currently contains this paragraph:
The hardware conditioning can also be bypassed and replaced in normal operation with a firmware-defined conditioning algorithm.
This firmware conditioning algorithm, can be disabled on boot for security purposes.
The exact mechanism for this functionality will be described in a future update to this document (TBD).

Is this still TBD, or has this been resolved (i.e., should it be removed from the docs, or should it be expanded)?

Hi Micheal,
This is now defined and verified in DV.   @mwbranstad do you have time to write a paragraph on the procedure here?  It should include the procedures for doing this with or without HW conditioning
-Martin

That would be great, thanks!


Torii doesn't read configuration from config/environment.js

Given installation of torii ember-cli-simple-auth and ember-cli-simple-auth-torii, and the setup of some simple actions on a route, login.js, I get an issue when hitting this action on the route:
    ...
    googleLogin: function() {
      this.get('session').authenticate('simple-auth-authenticator:torii', 'google-oauth2');
      return;
    }
    ...

Issue is:
```Expected configuration value providers.google-oauth2.apiKey to be defined````
Relevant part of config/environment.js is:
    var ENV = {
     ...
     torii: {
        providers: {
            'google-oauth2': {
            apiKey: 'api-key-here',
            scope: 'profile',
            redirectUri: 'http://localhost:4200'
         },
            'facebook-oauth2': {
             apiKey:      'api-key-here',
             redirectUri: 'http://localhost:4200'
          }
        }
     },
    ...

Why is torii not reading the configuration from the environment.js?

@deeksy perhaps this is a regression related to https://github.com/Vestorly/torii/commit/27ae712242e8c8cf987d462701f5c86570d6b486? Can you check version 0.3.3 of Torii?

Hi, apologies for wasting time on this one, but it seems like this was entirely resolved by restarting the 'ember serve' process.


Add Configuration device plugin

What this PR does / why we need it:
This PR is to implement the proposal of exposing resource at Configuration level. https://github.com/project-akri/akri-docs/blob/main/proposals/configuration-level-resources.md#configuration-level-resources
With Configuration level resource, users can select resource to use at configuration level without knowing the instance id beforehand.
Special notes for your reviewer:
The implementation is described in the document PR:https://github.com/project-akri/akri-docs/pull/76
Summary of changes in this PR

CL resource and IL resource share the capacity pool. i.e. (# of allocated CL virtual devices + # of allocated IL virtual devices) <= capacity.
The name of CL device plugin is the Akri Configuration name and follows the same convention of IL device plugin, i.e., replace ['.', '/'] with "-".
The CL device plugin uses dynamic name for virtual device ids. The virtual device id reported by CL device plugin looks like "0", "1", "2", ....  The actual device usage slot being used is selected when ConfigurationDevicePlugin::allocate() is called.
ConfigurationDevicePlugin represent the behavior of CL device plugin.  InstanceDevicePlugin represents the behavior of IL device plugin.
DevicePluginService contains a list_and_watch_message_senders to notify refreshing list_and_watch, used by the DevicePluginService internally, a copy of list_and_watch_message_sender is stored in the associated InstanceInfo, used by external entity to refresh the InstanceDevicePlugin's list_and_watch.
ConfigurationDevicePlugin contains a list_and_watch_message_sender to notify refreshing list_and_watch, used by the ConfigurationDevicePlugin internally, a copy of list_and_watch_message_sender is store in the InstanceConfig, used by external entity to refresh the ConfigurationDevicePlugin's list_and_watch
When IL DPS allocate a virtual device, it notifies CL DPS to refresh list_and_watch, and vice versa, CL DPS notify IL DPS to refresh list_and_watch when it allocates a virtual device.

If applicable:

[ ] this PR has an associated PR with documentation in akri-docs
[ ] this PR contains unit tests
[ ] added code adheres to standard Rust formatting (cargo fmt)
[ ] code builds properly (cargo build)
[ ] code is free of common mistakes (cargo clippy)
[ ] all Akri tests succeed (cargo test)
[ ] inline documentation builds (cargo doc)
[ ] all commits pass the DCO bot check by being signed off -- see the failing DCO check for instructions on how to retroactively sign commits

For history of discussions around this work, see previous PR https://github.com/project-akri/akri/pull/565

this is so awesome to see!

Regarding report already reserved virtual devices + 1 free device usage (if available) per instance, it seems to be a design decision to only allow CL to claim resources from differing nodes (so requesting 2 CL resources would only work if there were 2 nodes with 1 healthy slot ... 1 node with 2 healthy slots could not be scheduled to).
I assume the purpose of that is to ensure high availability.  And certainly, that provides it from a node perspective.
I'm not sure I'd make that a hard requirement though ... or at least allow the user to pick if they want it to be a requirement or a preference.  For example, if there was a configuration that specifieid NodeHA=preference (rather than requirement) and there was a single node with 2 healthy slots, the user could schedule their workload.  This might provide HA from a device API perspective (maybe the camera has glitchy software) or from a network perspective (maybe the network connection to the camera isn't great).

overall, this looks super awesome and am very excited about you bringing this feature in!!!

Regarding report already reserved virtual devices + 1 free device usage (if available) per instance, it seems to be a design decision to only allow CL to claim resources from differing nodes (so requesting 2 CL resources would only work if there were 2 nodes with 1 healthy slot ... 1 node with 2 healthy slots could not be scheduled to).
I assume the purpose of that is to ensure high availability. And certainly, that provides it from a node perspective.
I'm not sure I'd make that a hard requirement though ... or at least allow the user to pick if they want it to be a requirement or a preference. For example, if there was a configuration that specifieid NodeHA=preference (rather than requirement) and there was a single node with 2 healthy slots, the user could schedule their workload. This might provide HA from a device API perspective (maybe the camera has glitchy software) or from a network perspective (maybe the network connection to the camera isn't great).

The algorithm of CL resource allocation ensures allocating slots from different devices for a container on a given node.  For example, 2 devices are discovered and the capacity is 3.  On nodeA, a container can allocate 1 or 2 slots and you can have multiple containers scheduled to nodeA (e.g. 6 container, each requests 1 slot, or 3 containers each requests 2 slots, or combination of 1-slot and 2-slot containers).  On nodeB, the same algorithm is used and both nodes share the total 6 slots.
The purpose of report already reserved virtual devices + 1 free device usage (if available) per instance is to reduce the change that kubelet allocate slots more than available devices.  For the example above, 2 devices are discovered and the capacity is 3, we can report 2 * 3 slots or 2 slots first and increase the available slots later.
In the case of reporting 2 * 3 slots, if a container requests 4 CL resources, kubelet issue allocate request for the container and Agent will fail the request due only 2 devices are available.  This end up in a infinite loop that kubelet keeps retry to allocate for 4 CL resources until another 2 devices discovered.
If we report 2 slots and increase the available slots later, then the container request 4 CL resources won't be scheduled until the reported available slots exceeds 4. This will reduce the chance that kubelet entering the infinite loop allocating resources for the container.

The algorithm of CL resource allocation ensures allocating slots from different devices for a container on a given node.

i'm not sure i grasp this, but hope that a container requesting 2 slots will be schedulable if there is 1 node discovering 1 device and capacity 2.  i can understand prioritizing high availability across nodes if possible, but i don't really agree with that being a requirement.

The purpose of report already reserved virtual devices + 1 free device usage (if available) per instance is to reduce the change that kubelet allocate slots more than available devices. For the example above, 2 devices are discovered and the capacity is 3, we can report 2 * 3 slots or 2 slots first and increase the available slots later.
In the case of reporting 2 * 3 slots, if a container requests 4 CL resources, kubelet issue allocate request for the container and Agent will fail the request due only 2 devices are available. This end up in a infinite loop that kubelet keeps retry to allocate for 4 CL resources until another 2 devices discovered.
If we report 2 slots and increase the available slots later, then the container request 4 CL resources won't be scheduled until the reported available slots exceeds 4. This will reduce the chance that kubelet entering the infinite loop allocating resources for the container.

i can't seem to wrap my brain around this.  i'm not sure i get why we would fail if a container requests 4 slots and there are 6.  i can understand why we'd prefer to succeed using slots from 4 different devices, but i don't understand why we'd fail to schedule if we had enough slots for the 2 devices.

The purpose of report already reserved virtual devices + 1 free device usage (if available) per instance is to reduce the change that kubelet allocate slots more than available devices. For the example above, 2 devices are discovered and the capacity is 3, we can report 2 * 3 slots or 2 slots first and increase the available slots later.
In the case of reporting 2 * 3 slots, if a container requests 4 CL resources, kubelet issue allocate request for the container and Agent will fail the request due only 2 devices are available. This end up in a infinite loop that kubelet keeps retry to allocate for 4 CL resources until another 2 devices discovered.
If we report 2 slots and increase the available slots later, then the container request 4 CL resources won't be scheduled until the reported available slots exceeds 4. This will reduce the chance that kubelet entering the infinite loop allocating resources for the container.

i can't seem to wrap my brain around this. i'm not sure i get why we would fail if a container requests 4 slots and there are 6. i can understand why we'd prefer to succeed using slots from 4 different devices, but i don't understand why we'd fail to schedule if we had enough slots for the 2 devices.

There are actually only 2 devices even we reports 6 slots.  When allocating virtual devices to a container, does Agent treat each slot as a different virtual device? or Agent maps the slot back to actual device and allocate different devices?  If Agent treat each slot as a different virtual device, when a container request 4 virtual devices, it should allow it.  If Agent maps slots back to actual devices, then it should reject the allocation since only 2 devices are available.
We had a long discussion about what behavior should be when facing this situation.  I pasted the paragraph from the CL-resource proposal (https://github.com/project-akri/akri-docs/blob/main/proposals/configuration-level-resources.md) below.  The implementation is based to the concept of allocation by "unique device".  If we think allocation by "unique slot" is a valid scenario, we can add that support.  (I do have that implemented, we can add a field "uniqueDevice" in Configuration CRD to decide which allocation policy to use.)
There are two implementation options in the case where there are not enough unique Instances to meet the requested number of Configuration-level resources. One scenario where this could happen is if a Pod requests 3 cameras when only 2 exist with a capacity of 2 each. In this case, the Configuration-level camera resource shows as having a quantity of 4, despite there being two cameras. In this case, the kubelet will try to schedule the Pod, thinking there are enough resources. The Agent could either allocate 2 spots on one camera and one on the other or deny the allocation request. The latter is the preferred approach as it is more consistent and ensures the workload is getting the number of unique devices it expects. After failing an allocate request from the kubelet, the Pod will be in an UnexpectedAdmissionError state until another camera comes online and it can be successfully scheduled.

The purpose of report already reserved virtual devices + 1 free device usage (if available) per instance is to reduce the change that kubelet allocate slots more than available devices. For the example above, 2 devices are discovered and the capacity is 3, we can report 2 * 3 slots or 2 slots first and increase the available slots later.
In the case of reporting 2 * 3 slots, if a container requests 4 CL resources, kubelet issue allocate request for the container and Agent will fail the request due only 2 devices are available. This end up in a infinite loop that kubelet keeps retry to allocate for 4 CL resources until another 2 devices discovered.
If we report 2 slots and increase the available slots later, then the container request 4 CL resources won't be scheduled until the reported available slots exceeds 4. This will reduce the chance that kubelet entering the infinite loop allocating resources for the container.

i can't seem to wrap my brain around this. i'm not sure i get why we would fail if a container requests 4 slots and there are 6. i can understand why we'd prefer to succeed using slots from 4 different devices, but i don't understand why we'd fail to schedule if we had enough slots for the 2 devices.

There are actually only 2 devices even we reports 6 slots. When allocating virtual devices to a container, does Agent treat each slot as a different virtual device? or Agent maps the slot back to actual device and allocate different devices? If Agent treat each slot as a different virtual device, when a container request 4 virtual devices, it should allow it. If Agent maps slots back to actual devices, then it should reject the allocation since only 2 devices are available.
We had a long discussion about what behavior should be when facing this situation. I pasted the paragraph from the CL-resource proposal (https://github.com/project-akri/akri-docs/blob/main/proposals/configuration-level-resources.md) below. The implementation is based to the concept of allocation by "unique device". If we think allocation by "unique slot" is a valid scenario, we can add that support. (I do have that implemented, we can add a field "uniqueDevice" in Configuration CRD to decide which allocation policy to use.)
There are two implementation options in the case where there are not enough unique Instances to meet the requested number of Configuration-level resources. One scenario where this could happen is if a Pod requests 3 cameras when only 2 exist with a capacity of 2 each. In this case, the Configuration-level camera resource shows as having a quantity of 4, despite there being two cameras. In this case, the kubelet will try to schedule the Pod, thinking there are enough resources. The Agent could either allocate 2 spots on one camera and one on the other or deny the allocation request. The latter is the preferred approach as it is more consistent and ensures the workload is getting the number of unique devices it expects. After failing an allocate request from the kubelet, the Pod will be in an UnexpectedAdmissionError state until another camera comes online and it can be successfully scheduled.

i guess i read preference in this line in the proposal: the Agent will preference unique Instances ... it is fine to preference unique instances, but if you don't have that, available access (capacity) should be acceptable.

i guess i read preference in this line in the proposal: the Agent will preference unique Instances ... it is fine to preference unique instances, but if you don't have that, available access (capacity) should be acceptable.

@kate-goldenring, I imagine you've done more thinking on this than I have.  My gut is that preferring unique instances is fine for CL, but that there should be a way to schedule to available slots (regardless of instance uniqueness).  What is your take?

i guess i read preference in this line in the proposal: the Agent will preference unique Instances ... it is fine to preference unique instances, but if you don't have that, available access (capacity) should be acceptable.

@kate-goldenring, I am way late to this party and I imagine you've done far more in-depth thinking on this than I have. My gut is that preferring unique instances is fine for CL, but that there should be a way to schedule to available slots (regardless of instance uniqueness). What is your take?

@bjfield for me the main use case is "I want to deploy a workload with 2 (distinct) cameras", if I have a single camera available on a node then the workload is not scheduled on that node, but if you expose all slots, if a single camera has two slots then it will end up scheduled on the node even though that's not what you wanted.
The current implementation has a lot of unsolved corner cases here, as @johnsonshih told during community call there is a "race window" when a workload gets deleted where two device plugin slots will still be "available" even though we only want one, or a case where we have two containers on the same pod each asking for the 2 cameras that wouldn't be scheduled. But I don't really see any way to solve these with the Device Plugin API (maybe we could solve these with the new Dynamic Resource Allocation API, but I don't think we want to push it right now) without sacrificing the "If I want 2 distinct cameras, I don't want to end-up with two slots of the same camera" thing.

@bjfield for me the main use case is "I want to deploy a workload with 2 (distinct) cameras", if I have a single camera available on a node then the workload is not scheduled on that node, but if you expose all slots, if a single camera has two slots then it will end up scheduled on the node even though that's not what you wanted.
The current implementation has a lot of unsolved corner cases here, as @johnsonshih told during community call there is a "race window" when a workload gets deleted where two device plugin slots will still be "available" even though we only want one, or a case where we have two containers on the same pod each asking for the 2 cameras that wouldn't be scheduled. But I don't really see any way to solve these with the Device Plugin API (maybe we could solve these with the new Dynamic Resource Allocation API, but I don't think we want to push it right now) without sacrificing the "If I want 2 distinct cameras, I don't want to end-up with two slots of the same camera" thing.

i think i've always understood this scenario to be: i want to schedule against slots without having to understand instance hashes.  nothing about distinct or non-distinct entered into my mind.

i think i've always understood this scenario to be: i want to schedule against slots without having to understand instance hashes. nothing about distinct or non-distinct entered into my mind.

but i'll defer to the other folks.  the code seems good to me, approved.

i think i've always understood this scenario to be: i want to schedule against slots without having to understand instance hashes. nothing about distinct or non-distinct entered into my mind.

but i'll defer to the other folks. the code seems good to me, approved.

thanks for reviewing this PR.


Update NPM published version

Short description of the problem:
The version of ionic v1 published on NPM is outdated
What behavior are you expecting?
To see an up to date version of ionic published at https://www.npmjs.com/package/ionic-sdk
Which Ionic Version? 1

Hello! The current v1 version of Ionic is on the ionic-angular package as well as the latest version of Ionic 2. The ionic-sdk package is for legacy support. To install the latest version of Ionic 1 you can run npm install<EMAIL_ADDRESS>--save --save-exact. Thanks!


Errors with copy back of files using rsync

I created a GH workflow with vmactions/openbsd-vm v1.0.4 to run a job (build of a Rust project on OpenBSD 7.4/stable).
I'm using rsync to sync files between OpenBSD guest and Ubuntu host (GH runner):
with:
  sync: rsync

At the end of my workflow, I want to copy back files from the OpenBSD guest to the Ubuntu host => copyback: false is not defined in my job.
Errors occurs at the end of my job to copy files back from the VM:
Copy files back from the VM
  get back by rsync
  /usr/bin/bash /home/runner/work/_actions/vmactions/openbsd-vm/v1.0.4/run.sh rsyncBackFromVM
  Config file: openbsd-7.4.conf
  Permission denied, please try again.
  Permission denied, please try again.
<EMAIL_ADDRESS>Permission denied (publickey,password,keyboard-interactive).
  rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
  rsync error: unexplained error (code 255) at io.c(231) [Receiver=3.2.7]
  Error: The process '/usr/bin/bash' failed with exit code 255

=> errors with SSH connection from OpenBSD VM to guest when running rsync.
See my workflow logs https://github.com/lcheylus/cargo-nextest-openbsd/actions/runs/7428205763 for details.

can you please try to run it again?  Is that just a random error?
My test is working well:
https://github.com/vmactions/openbsd-vm/actions/runs/7430759846/job/20220798176

It's not a random error, same logs with "Copy files back from the VM" during a new try for my job => https://github.com/lcheylus/cargo-nextest-openbsd/actions/runs/7430800108/job/20220876993

I just made a new release,  please try with the new release.

Same errors with<EMAIL_ADDRESS>during "Copy files back from the VM" => https://github.com/lcheylus/cargo-nextest-openbsd/actions/runs/7430893869/job/20221084790
I don't understand your fix in v1.0.5 : where are the changes in base-vm (minor fix)?

try with the latest version

NOK with vmactions/openbsd-bsd v1.0.6, see my last test => https://github.com/lcheylus/cargo-nextest-openbsd/actions/runs/7433193219/job/20225905183
Download a tar.gz file in OpenBSD VM with curl and copyback to Linux host => always the same errors with "Permission denied" for SSH connection/rsync.
Please, be more precise in your commit logs for your fix: "minor fix/try with the last version" is not very constructive and helpful to help you to debug and fix an issue.

Problem solved using user root in OpenBSD VM => files are correctly copied back from VM to Ubuntu host at the end of job.
See my workflow with tests => https://github.com/lcheylus/cargo-nextest-openbsd/actions/runs/7433787501/job/20227215535


[new-prom-metrics] prometheus metrics

to track broadcasts, private messages, and token mint/burn/transfers
Signed-off-by: David Echelberger<EMAIL_ADDRESS>

Will the "start time" values be accurate if there are lots of things in flight (both from me and from others)? Seems like there's not enough correlation to determine the actual time taken by one particular message, transfer, etc.

Codecov Report

Merging #477 (54d38ca) into main (081f301) will decrease coverage by 0.30%.
The diff coverage is 31.34%.

:exclamation: Current head 54d38ca differs from pull request most recent head 7f46f1f. Consider uploading reports for the commit 7f46f1f to get more accurate results

@@            Coverage Diff             @@
##             main     #477      +/-   ##
==========================================
- Coverage   99.92%   99.62%   -0.31%
==========================================
  Files         266      266
  Lines       15134    15196      +62
==========================================
+ Hits        15123    15139      +16
- Misses         11       49      +38
- Partials        0        8       +8

Impacted Files
Coverage Δ

internal/broadcast/message.go
96.47% <0.00%> (-3.53%)
:arrow_down:

internal/events/operation_update.go
90.90% <0.00%> (-9.10%)
:arrow_down:

internal/privatemessaging/message.go
97.02% <0.00%> (-2.98%)
:arrow_down:

internal/events/tokens_transferred.go
85.71% <13.33%> (-14.29%)
:arrow_down:

internal/events/aggregator.go
95.60% <20.00%> (-4.40%)
:arrow_down:

internal/assets/token_transfer.go
94.91% <30.76%> (-5.09%)
:arrow_down:

internal/assets/manager.go
100.00% <100.00%> (ø)

internal/broadcast/manager.go
100.00% <100.00%> (ø)

internal/events/event_manager.go
100.00% <100.00%> (ø)

internal/privatemessaging/privatemessaging.go
100.00% <100.00%> (ø)

... and 8 more

Continue to review full report at Codecov.

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

Closing in favor of #503


.gitignore not created

I run amplify init but no .gitignore file is created nor does it append to an existing file if present.

@alexladerman
What Amplify CLI version are you using? and what is your dev box's operating system?
Did you allow the amplify init command to execute to its completion?

@UnleashedMind 4.11

@alexladerman Which OS are you on?

MacOS 10.15.1

Did you allow the amplify init command to execute to its completion?
We are not able to reproduce the issue.

Closing this issue due to lack of requested information. Please respond to this issue if you're still stuck.


UX: "Deck not selected" error message loads below the active viewport, very easy to miss

While it's difficult to reach a state where a player tries to start a game without a deck selected, in the rare event that it happens, it's very difficult to notice the error message, as it loads "underneath" the game screen. Essentially, the only way to see that a new element has loaded is noticing that the scroll bar has rescaled itself.

This is no longer possible, closing


Build cache does not track JVM version for all tasks

The classloader hasher currently tracks the full version number, including patches. This makes it very unlikely that people will actually get cache hits from a remote cache node unless the environment they work in is highly regulated. We should consider whether this is the right trade-off between performance and correctness.
The code linked above also contains an odd duplication, hashing the vendor twice.

Isn't that tracking only the VM vendor and not the version at all?

    String javaVmVersion = String.format("%s|%s|%s", System.getProperty("java.vm.name"), System.getProperty("java.vm.vendor"), System.getProperty("java.vm.vendor"));

java.vm.name = OpenJDK 64-Bit Server VM
java.vm.vendor = Oracle Corporation
java.vm.vendor is repeated twice.

Indeed, I thought vm.name contained the full version too. Then we might not be tracking the version correctly at all.

I’m pretty sure the second vm.vendor was supposed to be vm.version. But I would be surprised if this was how we tracked Java versions everywhere. Let me check this out next week.

It seems unused, is that part referenced by a third part (or reflection maybe)?

Not sure what you mean by unused. It's definitely used, it's the hasher for all classpaths in Gradle.
@lptr we track the jvm version for JavaCompile and Test tasks explicitly (because it can be different from the build VM). I'm afraid those are also the only tasks we tested this for.

OK, here's how I understand what's happening. So this is definitely a bug. The main question is: what is its effect, and what would be the right behavior instead.
The classloader hierarchy hashes we are working with here are used in Gradle to determine the fingerprint of objects of types that are unknown to Gradle. These are:

work action types (e.g. task types, additional doFirst()/doLast() task actions, artifact transform types, work item actions etc.)
simple property values (@Input MyObject getMyObject();)
complex property values (@Nested MyObject getMyObject();)

In each of these cases the fingerprint of the value contains the hash of the classloader hierarchy that was used to load the type itself, so if something in that hierarchy changes (=some dependency is modified), then we recognize the difference.
The hash of a classloader is calculated by combining the hashes of each classloader among the ancestry, starting from the concrete classloader, walking toward the parent, until we reach a known root classloader.
The hash of a classloader is defined differently for different classloader types. Script classloaders (that only load a Groovy script, say) use the hash of the source code of the script for example. Classloaders created by Gradle are assigned a hash based on the hash of the files on the classpath. And there are so called "known root classloaders" that have a custom hash assigned to them.
Here's an example of how we could calculate the hash of an object whose type was defined in a Groovy build script:
ClassLoaders$BootClassLoader
 ^
 |
ClassLoaders$PlatformClassLoader [KNOWN ROOT]
 ^
 |
ClassLoaders$AppClassLoader [KNOWN ROOT]
 ^
 |
MixInLegacyTypesClassLoader
 ^
 |
FilteringClassLoader
 ^
 |
CachingClassLoader (the Gradle API classloader) [KNOWN ROOT]
 ^
 |
ScriptClassLoader (the Groovy script's classloader)

We start by calculating the ScriptClassLoader which is the hash of the build script's source code. We then combine it with the parent's hash.
The parent is a known root classloader (=the Gradle API classloader) that has a hash assigned based on the Gradle version itself.
The idea with known root classloaders like this is that we can stop traversing upwards already, because that hash already contains everything we wanted to track about the higher part of the classloader hierarchy itself.
So (at least in this case) we never get to the hash of the AppClassLoader or the PlatformClassLoader (or its parent).
Practically this means that we treat the Gradle API as completely independent of the Java VM it is running on. Is this a good decision? It does provide a lot of flexibility in any case, and nobody reported a problem, yet.
OK, so when do we use the system classloaders, and what happens when we do? Can we ever bump into them at all, given that most classes are loaded via Gradle's own classloaders that usually have a known root before reaching the system classloaders?
When you have a property of a type from Java like File used as an @Input, then we serialize it and use its classloader hash. So yeah, built-in Java types can end up using affected by this issue.
What this means in practice is that a task with an @Input File getFile() property would be treated the same across different versions of an Oracle JVM, but would be treated as different if ran on an Oracle vs IBM JVM, because we only track the name and vendor, but no version information. This clearly doesn't make much sense.
As to whether any user code can be affected, that's not so clear to me. Should user code be loaded with a custom classloader (i.e. one created by non-Gradle code), then the result would be an invalid classloader hash. So that's not an issue.
Can user code be loaded via a Gradle-managed classloader that is not also rooted in a known classloader like "Gradle API"? I don't know. Maybe we do something like this when running worker API items in CLASSPATH or PROCESS isolation mode—but we don't fingerprint anything there, so again the problem doesn't arise.
(And while we are talking about system classloaders, is there a point in that we track both ClassLoaders$AppClassLoader and ClassLoaders$PlatformClassLoader (but not ClassLoaders$BootClassLoader)? Probably not, as we should only ever see ClassLoaders$AppClassLoader in any case.)
OK, so what should we do about this? I think there are the following questions to answer:

when comparing two executions of the "same" work item (e.g. task, transform etc.), how should we take the Java VM's version used into account?

vendor: we can ignore it or take either the specification vendor (java.vm.specification.vendor = Oracle Corporation) or the VM vendor (java.vm.vendor = AdoptOpenJDK) into account
version: we can ignore it, or take either the specification version (java.vm.specification.version = 11), the VM version (java.vm.version = 11.0.3+7) or the full Java version (java.version = 11.0.3) into account
we can also take the VM name (java.vm.name = OpenJDK 64-Bit Server VM) into account or ignore it

(On a related note, we should also figure out how to treat the version of the Java compiler used for (and the VM used to run) JavaCompile.)

After some thoughts I think we should track the following things:

for any type (Gradle-related or not) we should take into account the VM specification:

java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 11

for the Java compiler's version we should take into account the Java specification:

java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 11

Doing so means the following:

the name is essentially ignored, as java.specification.name and java.vm.specification.name are more or less fixed strings
the vendor is taken into account, because we've seen major differences between vendors' implementations of both the compiler and the VM (like how IBM JDK6 builds used to fail when all tests on Oracle Java 6 VMs passed)
we'd only track the major version number; while complete correctness would require tracking the full version (11.0.3 for the compiler and 11.0.3+7 for the VM), because we've seen bugfixes in patch releases of the Oracle VM in the past that had an effect on compiled classes or execution order. However, doing so would mean that everyone would have to use exactly the same version, which sounds unnecessarily restrictive in a real-world environment involving actual developers with their self-managed JDKs etc.

As to the current situation: I think it's a good idea to remove the duplicate vm.vendor, and we should mostly be fine. We definitely shouldn't change things until 6.0 to avoid breaking existing builds in a minor version.

The classloader hierarchy hashes we are working with here are used in Gradle to determine the fingerprint of objects of types that are unknown to Gradle.

I don't understand, why are they only used for "unknown" types? Aren't they used for task implementations too?

Practically this means that we treat the Gradle API as completely independent of the Java VM it is running on. Is this a good decision? It does provide a lot of flexibility in any case, and nobody reported a problem, yet.

This seems wrong, we shouldn't just stop hashing when we encounter the Gradle API. The version of the JVM can definitely have an impact, as can a different bootstrap classpath (e.g. on JDKs with additional APIs).
I agree with your proposed behavior.

@adammurdoch can you please take a look at the plan to address this?

I think @lptr's proposed change strikes a good balance between reliability and effectiveness of caching.
The current state in ignoring the Java version/vendor for tasks in general completely is also not too bad IMO: The expectation for me is that the same Java bytecode would have the same effect on all JVMs, no matter the version. It only won't if there is a bug. If there is a bug, then the task will probably fail anyway, so we won't cache the result. So the only thing which would possibly happen is that a task passes locally when coming from the cache but fails when actually executed. That seems to be good enough for me.
Taking the Java vendor/version into account for e.g. people using Gradle for native development would mean that all of them would need to use the same Java version for running Gradle in order to have cache hits. While this is not a bad practice, the native developers would maybe surprised by this requirement, given that they only work with the native code.

So should we, or shouldn't we track the JVM version/vendor for classloaders?

I agree that for native development, the JVM version should be irrelevant. Some task bridging the native with JVM may require this like JNI but we don't have such task yet.

I have reopened this because for most types that we track, they are loaded via one of our classloaders, and thus we never hit the system classloader. We only use the JVM version when tracking a task or transform or nested type that was loaded directly through the system classloader.


Clean all manifests and build scripts.

As per subject.
See the commit comment for more details on what was removed/cleaned up.

Thanks @henrik7264 :+1:


Add forwarder option

In case we need multiple master for very large tests, we must be able to spawn a "forwarder" that can receive external publications of any HQ and group them by channels
see http://learning-0mq-with-pyzmq.readthedocs.io/en/latest/pyzmq/devices/forwarder.html

This must be also a good element if we need to start multiples HQ for different tests and aggregate all real-time messages to one interface

It could also be nice to connect the HQ to this forwarder with a simple command line argument to the run command, for example :
oct run --external-forwarder ip:port


Support Numpy-like arrays

Several libraries exist that support a broad subset of the Numpy API,
but with different underlying data structures:

CuPy for GPU arrays
Sparse arrays
Dask array for parallel and distributed arrays

With the __array_ufunc__ protocol these can support numpy functions
like np.sin directly.
Previously these would not work with autograd because their types and
functions were not registered.
However, to the extent that they support the numpy API directly (which
is increasingly becoming the case) we can just hijack the existing
function mappings for Numpy functions.
This commit replaces two explicit type checks with more flexible tests
that check for "array-like" behavior.  If so then they return the
corresponding numpy function.
There are several things wrong with this commit as it stands:

introduces dask as a testing dependency
is far from a comprehensive test
introduces a function name typeof which can probably be improved

My initial goal here is just to start conversation and see if this is of interest.

Boxes and VSpaces are designed to be extensible via their .register method. For example, the Box mapping for ndarray is registered here. Can't we just use this system to register the extra array-like types?
I will try to code up an example of how this might work for Dask arrays.

I wrote up my thoughts on this topic in this blogpost:
http://matthewrocklin.com/blog/work/2018/05/27/beyond-numpy
On Fri, Jun 1, 2018 at 12:04 PM, Jamie Townsend<EMAIL_ADDRESS>wrote:

Boxes and VSpaces are designed to be extensible via their .register
method. For example, the Box mapping for ndarray is registered here
https://github.com/HIPS/autograd/blob/master/autograd/numpy/numpy_boxes.py#L50.
Can't we just use this system to register the extra array-like types?
I will try to code up an example of how this might work for Dask arrays.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/HIPS/autograd/pull/397#issuecomment-393927328, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AASszM8lYydqtR43NJ7qAGn8TO0V5YFkks5t4WYmgaJpZM4T43lj
.

There is now a NEP and an associated mailing list discussion.  Engagement from this community on that mailing list would be quite welcome: http://numpy-discussion.10968.n7.nabble.com/NEP-Dispatch-Mechanism-for-NumPy-s-high-level-API-td45638.html


[FLINK-20783][table-planner-blink] Separate implementation of ExecNode and PhysicalNode in batch join

What is the purpose of the change
Separate implementation of HashJoin/NestedLoopJoin/SortMergeJoin in batch
Brief change log

Introduce BatchPhysicalHashJoin, and make BatchExecHashJoin only extended from ExecNode
Introduce BatchPhysicalNestedLoopJoin, and make BatchExecNestedLoopJoin only extended from ExecNode
Introduce BatchPhysicalSortMergeJoin, and make BatchExecSortMergeJoin only extended from ExecNode

Verifying this change
This change is already covered by existing tests
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)

Thanks for the update. LGTM overall, one minor comment: we could also use SortSpec in ComparatorCodeGenerator, and please fix the compile error

Thanks for the update. LGTM overall, one minor comment: we could also use SortSpec in ComparatorCodeGenerator, and please fix the compile error

Thanks for the contribution, I will merge this pr

Thanks for the contribution, I will merge this pr


Why 1 - batch_norm_momentum ?

Thanks for the repo! I was just checking a bit the code and I'm wondering why
https://github.com/lukemelas/EfficientNet-PyTorch/blob/a558041c0663cc6dc1a8d32bcebf57609ccc0ab3/efficientnet_pytorch/model.py#L31
which seems to be different from the original implementation.

PyTorch and TensorFlow use different conventions for batch norm momentum. See the note in the official docs: https://pytorch.org/docs/master/nn.html#torch.nn.BatchNorm2d


[QUESTION] rippled without fully sync

Hi, can i somehow install rippled for creating transactions and detect deposits for certain addresses and not download all 8.5 TB of blockchain?

Yes, you can have a node up and running on the network very quickly. You need minimal ledger history to sync.
Check out https://developers.ripple.com/manage-the-rippled-server.html for more.

sorry, maybe i somesing missed but related to the topic i found only node_size at config page but if i right understand it is related to RAM memory which will be used. in config file of ripple i found discribed of ledger_history and it says that default is 256. it is big or small?

https://developers.ripple.com/capacity-planning.html#configuration-settings

Historical Data
The amount of historical data that a rippled server keeps online is a major contributor to required storage space. At the time of writing (2018-10-29), a rippled server stores about 12GB of data per day and requires 8.4TB to store the full history of the XRP Ledger. You can expect this amount to grow as transaction volume increases across the XRP Ledger network. You can control how much data you keep with the online_delete and advisory_delete fields.
Online deletion enables pruning of rippled ledgers from databases without any disruption of service. It only removes records that are not part of the current ledgers. Without online deletion, those databases grow without bounds. Freeing disk space requires stopping the process and manually removing database files.

oh yes, i really missed it, thanks. so i need just set up online delete and  last question, how big the minimal ledger history?


Cleanup install utility

Based on this comment from @kitt1987, the install utility should be removed.
Steps

[ ] Remove the install Go code
[ ] Remove the install utility related scripts

[ ] Makefile
[ ] Dockerfile

[ ] Update documentation README.md

@kitt1987 @mugdha-adhav Any guidance on this?

@kitt1987 @mugdha-adhav Any guidance on this?

I think the issue is already well defined/described. If haven't done already, then we could just verify if there are any other references for the install utility using GitHub or code search. Otherwise you may proceed with the implementation.

@kitt1987 @mugdha-adhav Any guidance on this?

I think the issue is already well defined/described.

I was trying to confirm the first part of it. That the install utility should be removed. Based on your comment, it seems like you agree. I'll try to raise a PR soon ish .


Statically update ring progress

I’d love to have the ability to update a ring’s progress without any animation. When displaying multiple rings in a single view controller, if you animate rings as they appear, you have to watch the animation multiple times as you scroll and that gets tiring, and if you try to instead animate them all at once, this can cause a drop in framerate. So being able to selecting statically update rings would be nice.

Hello @HarshilShah
As the control is based on CALayer, you can adjust the animations like this:
CATransaction.begin()
CATransaction.setAnimationDuration(0.0)
ringProgressView.progress = 1.0
CATransaction.commit()

The code above should update the progress immediately without animation.

That does the trick, thanks! Any suggestions on improving performance, btw? Added two rings to a view controller in viewDidLoad, and it adds a good 1–2 seconds of delay to the push animation.

Indeed, generating the gradient image can take some time, especially if the control is large. More on performance here: https://github.com/maxkonovalov/MKGradientView#performance
To speed the things up, in the line
_gradientImage = MKGradientGenerator.gradientImage(type: .conical, size: CGSize(width: r, height: r), colors: [endColor, endColor, startColor, startColor], locations: [0.0, s, (1.0 - s), 1.0], endPoint: CGPoint(x: 0.5 - CGFloat(2 * s), y: 1.0), scale: 1)

try changing scale: 1 to some lower value that gives nice performance/quality ratio for you.

Oh wow, setting the scale to 0.5 is exactly what I wanted. No lag, and it still looks just as good to my eyes. Thanks a lot! 🙌🏽

@HarshilShah you're welcome :)
I think I'll add a possibility to change the scale property in one of the future updates.


cannot connect to marketplace

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:1.58.0 | 2d23c42a936db1c7b3b06f918cde29561cc47cd6 | x64
OS Version: 5.10.49-1-MANJARO

Receiving error message: We cannot connect to the Extension Marketplace at this time, please try again later!

duplicate of #128583

/duplicate as @tamuratak says


Apply changes from IS-12 PR around message schemas

for a command message the field is commands
for a command response message the field is responses
for a notification message the field is notifications

and fix some broken links

Reviewed on the call on the 31st January 2023.


Missing iteration in convergence plots

monitor.py doesn't plot the last increment, example:
https://github.com/mkraska/CalculiX-Examples/tree/master/Contact/Shell1

Not reproducible with ccx 2.15 any more.


ntr  spindle pole body anchor

I want to annotate that cut11 is a "spindle pole body anchor
I'm using
GO:0043495 | protein membrane anchor
do I need a term "spindle pole body anchor"
or can I do this:
cut11 | GO:0043495 | protein membrane anchor | IDA  | has_input mitotic spindle pole body

has_input is a relation between a continuant and an occurent.


Mock fs in tests

got an error in ci: Error: ENOENT: no such file or directory, open 'temporaryFolder/kompose.exe'
suggests some fs operation was run in the test -> mock the fs

Codecov Report

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

@@             Coverage Diff             @@
##           master     #677       +/-   ##
===========================================
+ Coverage   52.99%   96.35%   +43.35%
===========================================
  Files          29       29
  Lines        2470     2605      +135
  Branches      208      208
===========================================
+ Hits         1309     2510     +1201
+ Misses       1161       95     -1066

Impacted Files
Coverage Δ

browser/directives/pathValidator.js
100% <0%> (ø)
:arrow_up:

browser/main.js
100% <0%> (ø)
:arrow_up:

browser/model/devstudio.js
100% <0%> (ø)
:arrow_up:

browser/model/cygwin.js
100% <0%> (ø)
:arrow_up:

browser/model/hyperv.js
100% <0%> (ø)
:arrow_up:

browser/model/cdk.js
99% <0%> (+0.06%)
:arrow_up:

browser/model/jdk-install.js
97.48% <0%> (+0.06%)
:arrow_up:

browser/directives/breadcrumb.js
80% <0%> (+2.22%)
:arrow_up:

browser/model/installable-item.js
100% <0%> (+5%)
:arrow_up:

browser/services/componentLoader.js
100% <0%> (+13.75%)
:arrow_up:

... and 16 more

Continue to review full report at Codecov.

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


[NEW FEATURE] Rename controlled motor to controller motor

As the name Controlled motor has less meaning than Controller motor, I suggest to rename it.
Priority: low
An issue will be linked to update documentation as well.

Fix with PR /Luos-io/Examples/pull/30


A function to return segmented image

Segmented image can be displayed with vis_semantic_segmentation function. It can be saved as a result. What I suggest is a separate function that can return the segmented image directly. This image can be saved by users directly. This way, users can better use chainercv. thank you.

thank you for the feature request.
you want a function to save evaluation visualization image.
i think it is a good function for headless environment such as cluster server.

Thank you knorth55.


Provide option to run out of cluster

The changes here will give users the ability to install Portieris in an "out-of-cluster" configuration.  It uses the KUBECONFIG env var to specify the kubeconfig for the cluster Portieris needs to manage.  The in-cluster configuration that exists today will still function like normal when there is no KUBECONFIG env var set.
If choosing to run Portieris in an out-of-cluster configuration, these are the required changes/steps you would need to take:

ensure KUBECONFIG env var is defined in Portieris runtime and it points to a valid kubeconfig file location
ensure the tls certs are available at /etc/certs in new runtime location
expose Portieris such that it is reachable from the kubernetes apiserver
change the MutatingWebhookConfiguration to point to your new Portieris URL

Resolves https://github.com/IBM/portieris/issues/180

I have requested one change on this. But think it probably needs a review by @molepigeon or @sjhx too.
Presumably the KUBECONFIG environment variable would be passed through to the Portieris deployment via a configmap in some customized yaml?

@jhart1685 Correct.  For example, I have it defined in the deployment yaml as an ENV var to the container in my out-of-cluster prototype.  I also volume mounted the kubeconfig file itself to the corresponding file location specified in KUBECONFIG.


Brew install failing due to sha256 mismatch

Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the library and it is still present.

zscaler-terraformer version
1.3.4
Expected outcome
Expected zscaler-terraformer to be installed properly
Actual outcome
brew install --cask zscaler/tap/zscaler-terraformer
==> Downloading https://github.com/zscaler/zscaler-terraformer/releases/download/v1.3.4/zscaler-terraformer_1.3.4_darwin_arm64.zip
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/523216490/7a7a8dff-a842-488c-a668-a52d2bfdfca7?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduct
############################################################################################################################################################################################################### 100.0%
Error: SHA256 mismatch
Expected: 2f11be860c69bf1648f9acf377aa076c702ff9a764aae975df6c61eb3ef0238d
Actual: d5e00bd420f355b6da108748623a0f7a43f0f4b4782bd5d0dfb3bb7a8d44dba3
File: /Users/bdhuria/Library/Caches/Homebrew/downloads/fe603c1e338237793808675cd71892464ec734fe8ea46d850f2fb346f39dea7d--zscaler-terraformer_1.3.4_darwin_arm64.zip
To retry an incomplete download, remove the file above.
Steps to reproduce
Just try and install the package
My system :
Chip: Apple M3 pro
OS: Sonoma 14.7
References
No response

This issue got resolved by updating my brew version (Homebrew 4.4.6-13-gfa8af7c)
zscaler terraformer version installed is 1.3.4 and terraform version is 1.9.8
I didn't do anything else differently, just that brew got updated which fixed this issue

this same issue appears to be reintroduced in homebrew 4.4.12


[BUG] - expected str instance, NoneType found

Describe the bug
When uploading larger files sometimes this error TypeError: sequence item 67: expected str instance, NoneType found
To Reproduce
Steps to reproduce the behavior:

select large file
Click on upload
wait
See error

Expected behavior
File should be uploaded without issues
Screenshots

Hosting (please complete the following information):

OS: MacOS OSX
Version 13.6.2

Desktop (please complete the following information):

OS: MacOS OSX
Version 13.6.2
Browser Chrome

Additional context
When this error occurs the chunk files and uploaded files are not deleted and can cause further issues if not deleted manually.

After conducting a thorough investigation, it has been determined that the issue arises when a user uploads a large file (exceeding the size of one chunk) and then, without refreshing the page, immediately selects another large file for upload. The application encounters an error and displays an issue message upon completion of this second upload.

A temporary solution to this problem is to refresh the page after uploading or downloading any file. A permanent fix will be implemented and released shortly.

update: fixed on windows branch - will be moved to main soon

fixed now with v1.0.2 -> https://github.com/hendrikbgr/discord-cloud-storage/releases/tag/v1.0.2


[IC3 ACS PSTN ] API Review

New API Review meeting has been requested.
Service Name: IC3 ACS PSTN
Review Created By: Jiri Burant
Review Date: 09/04/2024 09:00 AM PT
Release Plan:
PR: https://github.com/Azure/azure-rest-api-specs/pull/30381
Hero Scenarios Link: Not Provided
Core Concepts Doc Link: Not Provided
Description: I am not linking a product, as our team doesn't own a service or specific product, this functionality is currently envisioned only as API for private preview and specific SDK will be determined.
Detailed meeting information and documents provided can be accessed here
For more information that will help prepare you for this review, the requirements, and office hours, visit the documentation here

Meeting updated by Jiri Burant
Service Name: IC3 ACS PSTN
Review Created By: Jiri Burant
Review Date: 09/04/2024 09:00 AM PT
Release Plan:
PR: https://github.com/Azure/azure-rest-api-specs/pull/30381
Hero Scenarios Link: Not Provided
Core Concepts Doc Link: Not Provided
Description: New API for ACS calling, enabling the user to set up persistent Call Settings per ACS resource or Participant of the call.
The feature is currently planned for PrivatePreview only as API. SDK functionality and location is to be decided with PMs.
Detailed meeting information and documents provided can be accessed here
For more information that will help prepare you for this review, the requirements, and office hours, visit the documentation here


az webapp deployment source config-zip fails with 403 errors in GitHub Action

Describe the bug
The "az webapp deployment source config-zip" command, trying to deploy a zip file to an App Service from a GitHub Actions workflow, results in 403 errors. The command works fine when run from my local workstation using the same service principal and AZ CLI version.
To Reproduce
App service (Node) with WEBSITE_RUN_FROM_PACKAGE=1.
Service principal has Contributor role on the service, its group, and the subscription.
These steps are in the GitHub workflow:
    - name: Azure Login
      run: |
        az login --service-principal --tenant $AZURE_TENANT_ID -u $AZURE_DEPLOY_USER -p ${{ secrets.AZURE_DEPLOY_PWD }}

    # Either of the following two steps will fail with the same 403 errors:

    - name: Deploy to App Service
      run: |
        az account show -o tsv --query user  # this confirms correct login
        az webapp deployment source config-zip --subscription $AZURE_SUBSCRIPTION_ID -g $AZURE_GROUP_NAME -n $AZURE_APP_NAME --src app.zip

    - name: Azure CLI
      uses: azure/CLI@v1
      with:
        inlineScript: |
          az account show -o tsv --query user  # this confirms correct login
          az webapp deployment source config-zip --subscription $AZURE_SUBSCRIPTION_ID -g $AZURE_GROUP_NAME -n $AZURE_APP_NAME --src app.zip

The values are mostly environment variables, set earlier in the job. AZURE_DEPLOY_PWD is a repository secret.
When I add the --debug option to the deployment command, the log file contains this sequence (I've replaced the app service host name with "appservice"):
2021-08-04T14:14:37.8638706Z WARNING: cli.azure.cli.command_modules.appservice.custom: Starting zip deployment. This operation can take a while to complete ...
2021-08-04T14:14:37.8652362Z DEBUG: urllib3.connectionpool: Starting new HTTPS connection (1): appservice.scm.azurewebsites.net:443
2021-08-04T14:14:37.9573513Z DEBUG: urllib3.connectionpool: https://appservice.scm.azurewebsites.net:443 "POST /api/zipdeploy?isAsync=true HTTP/1.1" 403 1895
2021-08-04T14:14:37.9586479Z WARNING: cli.azure.cli.command_modules.appservice.custom: Deployment endpoint responded with status code 403
2021-08-04T14:14:39.9646180Z DEBUG: urllib3.connectionpool: Starting new HTTPS connection (1): appservice.scm.azurewebsites.net:443
2021-08-04T14:14:40.0238622Z DEBUG: urllib3.connectionpool: https://appservice.scm.azurewebsites.net:443 "GET /api/deployments/latest HTTP/1.1" 403 1895
2021-08-04T14:14:40.0253618Z WARNING: cli.azure.cli.command_modules.appservice.custom: Deployment status endpoint https://appservice.scm.azurewebsites.net/api/deployments/latest returns malformed data. Retrying...
2021-08-04T14:14:42.0304963Z DEBUG: urllib3.connectionpool: Starting new HTTPS connection (1): appservice.scm.azurewebsites.net:443

The first POST fails, then subsequent GETs to monitor the deployment fail, all with 403 responses. I have no idea if there is anything in the response body.
I can run other commands, like listing app services, without any problems. It's only this deployment command that fails.
Expected behavior
I would expect this to work exactly like it does on my local computer. Obviously there are differences in the environment between my computer and the GitHub hosted runners, but I don't know what else to look for.
Environment
I'm running this workflow on a GitHub-hosted Ubuntu runner.
It works on my machine... Windows 10, Azure CLI versions 2.18 and 2.27.

route to service team

Sigh… never mind. I had an old IP restriction on the app service. The command works fine. Sorry for the trouble.


Best way to convert Value to String

I’m fairly new to Rust and am using this project. I’d like to convert the executed Value into a String so I can serialize it to JSON.
Does Value need to implement From for this to work?

I think we just need to implement Serialize for Value in order for this to work. I'll take a look at this this weekend. I apologize for the delay -- been a crazy week.

Would another approach be to implement Display for Value ?

@jplock you certainly could, though as a library, it would require you to assume that your users always want to serialize to a specific format (whatever format we serialize to in the Display trait implementation). That is probably not a safe assumption. The better approach would be to implement serde::Serialize for Value, that way you can use any serde-compatible serializer. In your case, you would use serde_json to serialize Value to a JSON string.
I've gone ahead and done this in the serialize-value branch. Please point your cargo dependency to this repo and branch. Something like this should work
[dependencies]
cel-interpreter = { git = "https://github.com/clarkmcc/cel-rust", branch = "serialize-value", path = "interpreter" }

This is working, thank you! I'm using serde_json::to_value(value)

Latest release 0.7.0 contains support for serializing values


fix: follow-up on the devfile schema version incompatibility issue

Description
Follow-up on the update done in https://github.com/redhat-appstudio-qe/sample-multi-component/commit/0d1835404efb8ab7bb1ab5b5b82cda1ebfda4b25
More details in KFLUXBUGS-1219 and related slack discussions
Issue ticket number and link
KFLUXBUGS-1219
Type of change

[X] Bug fix(non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
ginkgo -p -v --label-filter='build' ./cmd/

Checklist:

[X] I have performed a self-review of my code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added meaningful description with JIRA/GitHub issue key(if applicable), for example HASSuiteDescribe("STONE-123456789 devfile source")
[ ] I have updated labels (if needed)

/lgtm
/approve


Update MAX31855.cpp

Add RawData to get raw from the board and check no board status.
Refer to Issue #1

I see no relevant changes under files changed, please check if you committed all the changes.
e.g. .h file should have the function prototype + the new variable raw

@RobTillaart sorry but i'm newbie on programming.
I'm trying to refresh mi C knowledge but i'm totally new on libraries editing...
I don't know where to start at the moment :(

@Banfotech
No problem, check out this free course material - https://guides.github.com/introduction/git-handbook/

No problem, check out this free course material - https://guides.github.com/introduction/git-handbook/
Thanks @RobTillaart, i've got a look to the link you have sent to me, that is really usefull!

But  my ptoblem is coding, i have very little experience on it.
I don't know how to modify the file, that's why i've proposed that improvements to you, that are a lot more skilled than me!

Then it will take a few days until I have some time.


fix: [pfe-badge] adds dark variant

Related issues
[fix] pfe-badge | adds dark variant #1772

(#100) Description of issue

PFE-badge variants are barely visible against the background of the RHEC Search pages.
Preview

Link(s) to demo page(s) where this element can be viewed:

Local: pfe-badge demo page
Netlify: pfe-badge demo page

What has changed and why

added a "dark" variant to the pfe-badge files

Testing instructions

[ ] Test case #1

Go here
Do this

[ ] Test case #2

Go here
Do this

Browser requirements
Your component should work in all of the following environments:

[ ] Latest 2 versions of Edge
[ ] Internet Explorer 11 (should be useable, not pixel perfect)
[ ] Latest 2 versions of Firefox (one on Mac OS, one of Windows OS)
[ ] Firefox 78 (or latest version for Red Hat Enterprise Linux distribution)
[ ] Latest 2 versions of Chrome (one on Mac OS, one of Windows OS)
[ ] Latest 2 versions of Safari
[ ] Android mobile device (such as the Galaxy S9)
[ ] Apple mobile device (such as the iPhone X)
[ ] Apple tablet device (such as the iPhone Pro)

Ready-for-merge Checklist

[x] Expected files: all files in this pull request are related to one request or issue (no stragglers or scope-creep).
[ ] Tests have been updated to cover these changes.
[x] Browser testing passed.
[ ] Changelog updated.
[x] Documentation (README.md, WHY.md, etc.) updated or added.
[ ] Link to the demo recording:
[ ] Approved by designer.

Merging
Please squash when merging and ensure your commit message uses conventional commit formatting.
Be sure to share your updates with the<EMAIL_ADDRESS>mailing list!

@rmscampos - Thanks for sending this in. I think we want to take a different approach with this issue. Instead of adding another state, like dark, I think we need to take advantage of the context system we have with PatternFly Elements.
https://patternflyelements.org/theming/colors/#contextually-aware-content
I think what we'll end up doing is to make pfe-badge "contextually aware" so the default state of the badge can change its colors based on the context. We have two Sass mixins, pfe-contexts and pfe-surfaces, that helps us accomplish this without too much work.
https://github.com/patternfly/patternfly-elements/blob/master/elements/pfe-sass/mixins/_custom-properties.scss#L181
https://github.com/patternfly/patternfly-elements/blob/master/elements/pfe-sass/mixins/_custom-properties.scss#L142
We're going to get some help from the design team on some background and text colors. I've been chatting with them this morning. Once we get the colors, I can work with you to implement the context aware piece for pfe-badge.

@kylebuch8 Does this still need to be reviewed? @rmscampos Can you provide a preview link? I don't think I saw one.

@kylebuch8 Does this still need to be reviewed? @rmscampos Can you provide a preview link? I don't think I saw one.

@coreyvickery Since we're going to be working on an alternative solution, I don't think this needs to be reviewed anymore. Thanks!

Closing based on https://github.com/patternfly/patternfly-elements/pull/1783#issuecomment-931471147
Let's open a new PR against the 2.0 main branch if this is still relevant


File open feature

This is a redo of the previous pull request. Used flake8, should pass tests this time.

I fixed most of the typing issues, but there are some I do not know how to resolve. We'll talk about this later

yay

Ok the remaining CI failure seems to be a real issue


test: [M3-8725] - Add cypress tests for creating LKE clusters with ACL (LKE ACL integration part 3)

Description 📝
Adds tests for updating an LKE cluster's ACL from the summary/details page
Part 1: #10968
Part 2: #11131
Part 3: #11132
Changes  🔄

tests added:

Confirming ACL doesn't exist without the corresponding account capability
Confirming creating LKE cluster with ACL disabled
Confirming creating LKE cluster with ACL enabled
Confirming error/validation handling

add related mock intercepts
add relevant factories (some files will cause merge conflicts with part 2, #11131 - will fix as needed)

Target release date 🗓
10/28
How to test 🧪
yarn cy:run -s "cypress/e2e/core/kubernetes/lke-create.spec.ts"

As an Author I have considered 🤔
Check all that apply

[ ] 👀 Doing a self review
[ ] ❔ Our contribution guidelines
[ ] 🤏 Splitting feature into small PRs
[x] ➕ Adding a changeset
[x] 🧪 Providing/Improving test coverage
[ ] 🔐 Removing all sensitive information from the code and PR description
[ ] 🚩 Using a feature flag to protect the release
[ ] 👣 Providing comprehensive reproduction steps
[ ] 📑 Providing or updating our documentation
[ ] 🕛 Scheduling a pair reviewing session
[ ] 📱 Providing mobile support
[ ] ♿  Providing accessibility support

note - the copies are adding clutter to this test. I've created M3-8776 to clean that up and write unit tests for that instead, might combine that ticket with this one tbh! (just want to get to M3-8674 first)

going to be merging this as is, and will work on M3-8776 hopefully soon 🙏
@mjac0bs will bring up your copy question to the LKE ACL team!


PlexWeb: 302 redirection pending

There is an issue on Google Chrome (and Chromium based browsers), during the redirect, the browser don't call the redirected route and stay stuck on pending state, this bug happens when some extensions are installed, it's a bug in Chrome engine, not related to this project.
More info here: https://github.com/Tampermonkey/tampermonkey/issues/661

We are working on a fix for this issue ;)

Normaly, this bug will be fixed soon with the next 3.0 release, you can try it using the "alpha" branches on transcoder and load balance


Add the example to the README

sup

I'll try to get to this. Another good example might be an "add only" example where new elements get appended as a user scrolls, but the lower bound is always 0.


Get all Onboarding Engineers access to send test messages through the UP from SimpleReport

Problem statement
When migrating/onboarding receivers to the UP, engineers need to send test messages through the pipeline to the receiver to ensure connection and accuracy of data. Currently, only Victor has access to send test messages from SimpleReport through the UP. To augment our onboarding capability and remove Victor as a single point of failure, we need to get all onboarding engineers permissions to do this.
Acceptance criteria

[x] James has ability to send test messages from SR through the UP
[x] Angela has ability to send test messages from SR through the UP
[x] Ott has ability to send test messages from SR through the UP
[ ] Process for how to send messages through the UP is documented in Github and linked in this ticket

@GilmoreA6 Please confirm that you have access to send test messages through UP from SR. Thanks!

@LaFreda1 yes

@victor-chaparro can we plan to get this documented soon and close this ticket?

@victor-chaparro any updates on this?

Link to doc: https://github.com/CDCgov/prime-reportstream/blob/master/prime-router/docs/onboarding-users/migrating-receivers.md#3-send-test-message-from-simplereport-to-stlt


add readme  for Gnina #462

Link to the ChatGPT conversation used to create this pull request:
https://chat.openai.com/share/2c4b0dba-429c-4c33-8e21-07f2ff837f54
Instructions for Python are still pending - a separate issue.

stale


On Story open it just refresh the page

Simple Laravel app running on localhost..everything set up correctly no error in console when i click on story to open it it just refresh the page thats it. any solution

Sorry, I can't help you with it. It may has something wrong about your implementation, not related to the script itself.


Uprade actions/checkout and actions/setup-python

Upgrade all actions/* to the latest stable release.### Motivation

At least one action is using a deprecated nodejs runtime. See #22  fore more.
Change description

Upgrade all actions to the latest stable version.

Additional Notes

Closes #22

Reviewer checklist

[x] PR address a single concern.
[x] PR title and description are appropriately filled.
[x] Changes will be merged in main.
[ ] Changes are covered by tests.
[ ] Logging is meaningful in case of troubleshooting.
[ ] Docs are updated (at least the README.md, if needed).
[x] History is clean, commit messages are meaningful (see CONTRIBUTING.md) and are well-formatted.

No more deprecation messages:


PowerApps requird service for 21 Vianet China cloud

[Enter feedback here]
Client from 21Vianet hope to know the PowerApps required service for China Cloud. Please help to collect the ChinaCloud version of the requried service domain

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

ID: 6fdf0872-929b-e44a-dedd-eb6a759915f2
Version Independent ID: 0b65b025-62f8-fc2a-0026-3cb96b7b4554
Content: Power Apps system requirements and limits - Power Apps
Content Source: powerapps-docs/limits-and-config.md
Service: powerapps
Sub-service: canvas-maker
GitHub Login: @lancedMicrosoft
Microsoft Alias: gregli

Thanks for your comment, @xuehzhu. This issue has been assigned to the doc author for review.

Thank you @bishalgoswami
Hi @lancedMicrosoft @tapanm-MSFT, just a quick check any update on this

@xuehzhu  thank you for reaching out. This is under review, and may take a moment to respond. In the meantime, if you have an issue that you'd like to get fixed, please reach out to support teams using a support ticket for help with the investigation.


alternate schema with different columns for different datatypes

Consider a variant of the schema where there are columns for different sqlite datatypes

integer_value : only populated for relevant xsd types
real_value : only populated for relevant xsd types
text_value : only populated for relevant xsd types
value : always populated, uses TEXT

This would facilitate faster querying and indexing when the client knows the datatype, allows for e.g. ordering of numeric fields
Feel free to close this with minimal comment if this doesn't coherent with the design patterns / philosophy for rdftab.rs

A variant proposal is separate tables for the 3 broad literal types, and a view to present a unified table as is done now

I don't want to do this, but it's good to try and articulate why not:
I'm using this for Gizmos, which currently supports extract, export, search, and (HTML) tree. I don't care about numeric support for any of these operations. Do you have a use case where it matters?
This version of RDFTab is focused on SQLite, but we will eventually target Postgres, which has a much richer type system. At that point I don't see a clear line to draw between which types get their own columns: Boolean, Date, XML?
The bigger reason is: RDF is good for data integration, but tables are better for most other things. There's lots of good ways to model your data in SQL, including types. From your SQL you can generate an RDFTab view, as you suggest. You can also extract from RDFTab into typed SQL easily enough. But when you're working with RDF, I think literal values should all be strings.

We generally don't have many data properties in our ontologies at the moment. However, this may change, and I believe that to do proper justice to areas like chemistry we will need more numeric values, ranges, and the like in our TBoxes.
And I can see myself using combined TBox + ABox OWL files which are likely to have more individual-level numeric data
But I think your answer is good. Model the data how it's best to model data in SQL, and then have transforms (views, materialized or otherwise) to RDFTab. Let RDFTab do what it's good at and use other structures where necessary. It's been so long since I have done much SQL I forget the nice simplicity of views. No need to force everything into one bucket.