no U2F device found

I'm on Debian Buster and installed SoftU2F like told in the README. Anything seems to work, but the virtual device isn't detected from the normal u2f tools.
systemd says:
softu2f.service - Software-only U2F Emulation Service
   Loaded: loaded (/lib/systemd/system/softu2f.service; static; vendor preset: enabled)
   Active: active (running) since Sat 2020-01-04 21:30:15 UTC; 9min ago
 Main PID: 711 (system-daemon)
    Tasks: 4 (limit: 4915)
   Memory: 2.0M
   CGroup: /system.slice/softu2f.service
           └─711 /usr/libexec/softu2f/system-daemon

Jan 04 21:30:15 velix systemd[1]: Started Software-only U2F Emulation Service.
Jan 04 21:30:15 velix system-daemon[711]: Jan 04 21:30:15.086 INFO starting SoftU2F system daemon, version: 0.4.0
Jan 04 21:30:15 velix system-daemon[711]: Jan 04 21:30:15.087 INFO Creating virtual U2F device, name: SoftU2F Linux (tobwen@velix), device_id: fRD~LdtgowvUcZBelpIXk

dmesg says:
hid-generic 0003:FFFF:FFFF.0001: hidraw0: USB HID v0.00 Device [SoftU2F Linux (tobwen@velix)] on

But when trying u2f-host and other tools, I'm getting this:
u2f-host -aregister -o https://velix/u2f_local < foo
error: u2fh_devs_discover (-5): cannot find U2F device

DBUS doesn't list the device. I tried with:
dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

Anyone with an idea?

libu2f-host and the newer libfido2 seem to only discover USB-type devices, the "virtual" devices this tool creates are HID devices but not true USB devices so they are not discovered. (They also will not be listed in D-Bus, that's an entirely different technology)
Possibly this could be solved by switching to a different emulation approach such as a USB gadget driver. I think that would be neat but I'm not sure when I'd have the time to try it.
I will say I tried the newer libfido2 library and it allows passing explicit devices paths, if I passed the appropriate path it did work. Ex. fido2-cred -M -u -i cred_param /dev/hidraw0 | fido2-cred -V -o cred

libu2f-host and the newer libfido2 seem to only discover USB-type devices, the "virtual" devices this tool creates are HID devices but not true USB devices so they are not discovered. (They also will not be listed in D-Bus, that's an entirely different technology)

My normal FIDO U2F key also is detected as HID, but works. So it seems like libu2f-host is using D-Bus?

I will say I tried the newer libfido2 library and it allows passing explicit devices paths, if I passed the appropriate path it did work. Ex. fido2-cred -M -u -i cred_param /dev/hidraw0 | fido2-cred -V -o cred

Oh, this seems to be a FIDO2-tool, I thought you're doing FIDO1 only. Let me play with it.

Make sure /dev/hidraw0 is actually the U2F device, usually for me it ends up as hidraw2 or 3.
Generally logs from the user daemon are more useful: journalctl --user -u softu2f.service
libu2f-host uses hidapi which only supports USB and bluetooth devices.
libfido2 uses the better udev enumeration APIs, but has a few lines that depend on USB. Attached a diff that removes those lines, then even fido2-token -L seems to work.
diff --git a/src/hid_linux.c b/src/hid_linux.c
index d0c143f..4b76a23 100644
--- a/src/hid_linux.c
+++ b/src/hid_linux.c
@@ -185,11 +185,8 @@ copy_info(fido_dev_info_t *di, struct udev *udev,
 {
 	const char		*name;
 	const char		*path;
-	const char		*manufacturer;
-	const char		*product;
 	struct udev_device	*dev = NULL;
 	struct udev_device	*hid_parent;
-	struct udev_device	*usb_parent;
 	int			 ok = -1;

 	memset(di, 0, sizeof(*di));
@@ -204,20 +201,12 @@ copy_info(fido_dev_info_t *di, struct udev *udev,
 	    "hid", NULL)) == NULL)
 		goto fail;

-	if ((usb_parent = udev_device_get_parent_with_subsystem_devtype(dev,
-	    "usb", "usb_device")) == NULL)
-		goto fail;
-
-	if (parse_uevent(hid_parent, &di->vendor_id, &di->product_id) < 0 ||
-	    (manufacturer = udev_device_get_sysattr_value(usb_parent,
-	    "manufacturer")) == NULL ||
-	    (product = udev_device_get_sysattr_value(usb_parent,
-	    "product")) == NULL)
+	if (parse_uevent(hid_parent, &di->vendor_id, &di->product_id))
 		goto fail;

 	di->path = strdup(path);
-	di->manufacturer = strdup(manufacturer);
-	di->product = strdup(product);
+	di->manufacturer = strdup("test");
+	di->product = strdup("test");

 	if (di->path == NULL ||
 	    di->manufacturer == NULL ||

Hmmm...
journalctl --user -u softu2f.service
No journal files were found.
-- No entries --

dmesg | grep hidraw
[    2.524763] hidraw: raw HID events driver (C) Jiri Kosina
[    2.529438] hid-generic 0003:FFFF:FFFF.0001: hidraw0: USB HID v0.00 Device [SoftU2F Linux (tobwen@velix)] on
[    7.527632] hid-generic 0003:FFFF:FFFF.0002: hidraw1: USB HID v0.00 Device [SoftU2F Linux (root@velix)] on

Very strange. Both that journalctl gave nothing and that you seem to have devices created both under your tobwen account and root
$ dmesg | grep hidraw
[81697.179342] hid-generic 0003:FFFF:FFFF.0007: hidraw2: USB HID v0.00 Device [SoftU2F Linux (dan@xps)] on

$ systemctl --user status softu2f.service
● softu2f.service - Software-only U2F Emulation Service
   Loaded: loaded (/usr/lib/systemd/user/softu2f.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-01-08 20:25:00 PST; 16s ago
 Main PID: 238209 (user-daemon)
    Tasks: 3 (limit: 18595)
   Memory: 3.2M
      CPU: 39ms
   CGroup<EMAIL_ADDRESS>           └─238209 /usr/libexec/softu2f/user-daemon

Jan 08 20:25:00 xps systemd[1168]: Started Software-only U2F Emulation Service.
Jan 08 20:25:00 xps user-daemon[238209]: Jan 08 20:25:00.890 INFO Starting software Universal 2nd Factor device user >
Jan 08 20:25:00 xps user-daemon[238209]: Jan 08 20:25:00.911 INFO Loaded configuration file, path: /home/dan/.config/>
Jan 08 20:25:00 xps user-daemon[238209]: Jan 08 20:25:00.911 INFO Storing secrets in your keychain using the D-Bus Se>
Jan 08 20:25:00 xps user-daemon[238209]: Jan 08 20:25:00.954 INFO Virtual U2F device created, device_id: vh3EU13VjQVh>

Ah, look. This one creates an output!
# systemctl --user status softu2f.service
● softu2f.service - Software-only U2F Emulation Service
     Loaded: loaded (/usr/lib/systemd/user/softu2f.service; enabled; vendor preset: enabled)
     Active: failed (Result: signal) since Thu 2020-01-09 04:41:02 UTC; 1min 34s ago
    Process: 736 ExecStart=/usr/libexec/softu2f/user-daemon (code=killed, signal=ABRT)
   Main PID: 736 (code=killed, signal=ABRT)
        CPU: 5ms

Jan 07 00:33:36 velix systemd[725]: Started Software-only U2F Emulation Service.
Jan 07 00:33:36 velix user-daemon[736]: Jan 07 00:33:36.749 INFO Starting software Universal 2nd Factor device user daemon, version: 0.4.0
Jan 07 00:33:36 velix user-daemon[736]: Jan 07 00:33:36.757 INFO Loaded configuration file, path: /root/.config/rustu2f/config.json
Jan 07 00:33:36 velix user-daemon[736]: Jan 07 00:33:36.757 WARN Storing secrets in an unencrypted file, dir: /root/.local/share/rustu2f
Jan 07 00:33:36 velix user-daemon[736]: Jan 07 00:33:36.757 INFO Virtual U2F device created, device_id: oMWTJW45bmvmq1U~RpmGI
Jan 09 04:41:02 velix user-daemon[736]: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: Dbus(D-Bus error: The name org.freedesktop.Notifications was not provided by any .service files (org.freedesktop.DBus.Error.ServiceUnknown)) }', src/libcore/result.rs:999:5
Jan 09 04:41:02 velix user-daemon[736]: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
Jan 09 04:41:02 velix systemd[725]: softu2f.service: Main process exited, code=killed, status=6/ABRT
Jan 09 04:41:02 velix systemd[725]: softu2f.service: Failed with result 'signal'.

I'm on Debian Buster and did you use DEB installer. Building from source didn't work... also Dockerfile.debian seems to be outdated or incomplete :-(

Interesting, are you using the default window manager? If I have a minute I'll spin up a debian instance. The Dockerfile should work, it's what I use to do cross-distro builds for debian/ubuntu (I use Fedora personally)

I just tried on a fresh Debian 10 install and it seemed to work fine under Gnome. I'm guessing you are using a different window manager, if so you'll have to figure out how to get some kind of notification service running under it, currently that's a requirement in order to be able to approve/deny registration requests.

I'm not using a window manager. For the last 12 years, I haven't used one. I'm working on CLI only. That's why I'm interesting in the FIDO tools. Actually, I'm working to get GnuPG working with U2F devices based on this idea: https://duo.com/labs/tech-notes/u2f-key-support-in-openssh
Your tool might be really useful for debugging, since I cannot remote tunnel my USB device :-)

I've built it from source, but it still crashes. So softu2f really needs a windows manager?

CLI only? That's neat!
But yes, currently the code assumes there is a notification daemon running that it can talk too. I would definitely accept a PR to add support for a CLI only mode though!


(MODULES-3640) Update modulesync 30fc4ab

See MODULES-3640 for more context. tldr; json_pure as of 2.0.2 requires ruby 2 - because Puppet tests against many different versions of ruby, including 1.9.3, we need to ensure we can still get json_pure. The original json_pure dependency is expressed by puppetlabs/puppet (unversioned).

+1 for merge after Appv and Travis.


optional match not returning results

This is what I get using neo4j webbrowser:

This is what I get using seraph:

Shouldn't this work?

This doesn't seem related to seraph. It's not working, even when I use plain neo4j rest-api or other npm modules like neo4j-node.
I added a post here:
http://stackoverflow.com/questions/32678074/optional-match-not-returning-result

Just out of interest, have you tried {recId: parseInt(recId)}? It's possible that the REST API isn't very forgiving with types in that comparison there.

Yes! That's it. Thanks, I was going nuts here.
If you're on stackoverflow, you might want to answer my post, so I can mark it as a correct answer.

I'll do that :) glad I could help.


mime/multipart: quoted printable decoding fails with invalid empty body

I use the mime/multipart decoder on a production server and stumbled over a problem with
empty bodies.

Take for example this  multipart/alternative part:

    --===============9099738862860321038==
    MIME-Version: 1.0
    Content-Type: multipart/alternative; charset="utf-8";
     boundary="===============3362771883058111967=="
    Content-Transfer-Encoding: quoted-printable

   --===============3362771883058111967==

Obviously it is not correct because the alternative part is not quoted-printable encoded,
but it's child parts - however - the parser fails here with this error:

    "multipart: NextPart: multipart: invalid quoted-printable hex byte 0x3d"

It's probably because the parser tries to parse the next boundary line as
quoted-printable encoded text.

Github seems to have mangled whitespace in the original examples. I have I think reproduced this here:
https://play.golang.org/p/Kbw25pNXt_
but the code in mime/multipart has changed in the last few years, it seems the error message has changed to ErrUnexpectedEOF and is now on line 179 in Read.
The original suggestion was to add a flag to allow disabling transparent decoding of quoted printable encoding in parts which sounds reasonable. I'll put up a change for review adding a boolean flag to Reader.

@ianlancetaylor re CL 74191, I should probably have checked here first what needs fix and help wanted means - I took it to mean that mime/multipart should allow disabling the automatic decoding of parts.
The initial issue here is about an invalid message, but it also points out that there is no way to disable automatic decoding of quoted-printable within a mime multipart. This means if a service receives mime messages which may be malformed like the ones above, but which they'd like to be able to decode, they'd have to munge them first to fix them up, or parse them without the standard library. Hence the suggestion above of adding a flag that lets the user set whether mime/multipart which seems a more general fix than handling this specific malformed mime with a special case when parsing, but I see why you might not want to expand the API surface.
But there are two possible solutions offered above and perhaps there are other fixes possible. Happy to look at a different fix - I've posted this here for context.

There are lots of different ways for messages to be invalid.  If you know ahead of time that the input is formatted incorrectly in a particular way, you can apply a correction to it as it arrives.  If you don't know ahead of time, then a new API knob won't help, because you won't know that you need to set it.  I don't know what the right answer is here, but I would need to be convinced that a new API knob is the right approach.

I spent a while digging into this issue and I don't understand why it is even an open issue.
As far as I can see, the multipart parser correctly rejects an invalid multipart message. What is the argument for not rejecting an invalid multipart message? The usual argument would be that some popular piece of software generates these inputs, so we must be able to deal with them. But I don't see that argument being made: I see nothing about how this might arise in practice. Short of a compelling reason to accept invalid input, we should probably continue to reject invalid input.
The full message in the example (with one annotation from me) is:
MIME-Version: 1.0
Content-Type: multipart/related; charset="utf-8";
 boundary="===============9099738862860321038=="
Content-Transfer-Encoding: quoted-printable                                    <<<< THIS LINE IS WRONG!

This is a multi-part message in MIME format.
--===============9099738862860321038==
MIME-Version: 1.0
Content-Type: multipart/alternative; charset="utf-8";
 boundary="===============3362771883058111967=="
Content-Transfer-Encoding: quoted-printable                                    <<<< THIS LINE IS WRONG!

--===============3362771883058111967==
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

Hello

   =20
--===============3362771883058111967==--
--===============9099738862860321038==--

The problem with this message is not an "invalid empty body" but the fact that both the lines line I marked are present. RFC 2046 says:
   As stated in the definition of the Content-Transfer-Encoding field
   [RFC 2045], no encoding other than "7bit", "8bit", or "binary" is
   permitted for entities of type "multipart".  The "multipart" boundary
   delimiters and header fields are always represented as 7bit US-ASCII
   in any case (though the header fields may encode non-US-ASCII header
   text as per RFC 2047) and data within the body parts can be encoded
   on a part-by-part basis, with Content-Transfer-Encoding fields for
   each appropriate body part.

Content-Transfer-Encoding: quoted-printable is not allowed in multipart/ headers. It's arguably a bug that the processing even reaches the second, when the first is wrong too.
Maybe we should put in an error check like this:
@@ -136,6 +138,16 @@ func newPart(mr *Reader) (*Part, error) {
 	bp.r = partReader{bp}
 	const cte = "Content-Transfer-Encoding"
 	if bp.Header.Get(cte) == "quoted-printable" {
+		if strings.HasPrefix(bp.Header.Get("Content-Type"), "multipart/") {
+			// RFC 2046 requires that a Content-Type: multipart/*
+			// must use Content-Transfer-Encoding: 7bit, 8bit, or binary,
+			// and that the farming is "always represented as 7bit US-ASCII
+			// in any case".
+			// Returning an error here avoids confusion trying to apply
+			// quoted-printable decoding to the body.
+			// See golang.org/issue/6507.
+			return nil, errors.New("mime: transfer encoding for multipart content type")
+		}
 		bp.Header.Del(cte)
 		bp.r = quotedprintable.NewReader(bp.r)
 	}

but I think that will catch the first line, which we're currently allowing. The right answer here depends on why anyone cares about this case, which we need more information about.
Moving to Go 1.11.

Closing per previous comment.


Created PGP key, but it says that I need to create PGP key

https://docs.subutai.io/Products/Bazaar/27_E2E_plugin.html
Looks like after all steps I have to click on my profile button -> CDN and then

this thing pops up, but it is not explained in docs.
After that for some reason my PGP Key fingerprint reset, don't know why. I had to set it again, and then it worked normally. Overall process is pretty confusing.

not a documentation issue, it seems.


App crashes when I changed tabBar repeatedly and rapidly [tid:com.facebook.react.RCTExceptionsManagerQueue] -0.25.1

when i change my tabbar  repeatedly and rapidly , it crashes with the exception:
2016-07-14 11:19:24.916 [error][tid:com.facebook.react.JavaScript] undefined is not an object (evaluating 'spring.systemShouldAdvance') 2016-07-14 11:19:24.984 [fatal][tid:com.facebook.react.RCTExceptionsManagerQueue] Unhandled JS Exception: undefined is not an object (evaluating 'spring.systemShouldAdvance')

Got the some issue with similar symptoms.
@iniestano8 aren't you using react-native-simple-router (https://github.com/react-native-simple-router-community/react-native-simple-router/) for navigation?

@kompot no, and i have no idea why it happend  -_-!

I'm having the same issue. It seems to be related to https://github.com/facebook/rebound-js. For me it happens randomly when triggering an infinite scroll.

I have same issue.

Has someone figured out what's wrong?

I think @maxcodes is right.  RN itself has no mention of systemShouldAdvance but it does show up in rebound, which is used by Navigator.  This would explain why some of us see issues when switching quickly between tabs in our apps.
http://facebook.github.io/rebound/javadocs/com/facebook/rebound/Spring.html#systemShouldAdvance()
react-native/Libraries/CustomComponents/Navigator/Navigator.js
this.springSystem = new rebound.SpringSystem();

Seems like improvements in use of Animated in 0.37 and 0.38 might help?

Can you reproduce this on rnplay.org? Please provide a link.

Closing this issue because it has been inactive for a while. If you think it should still be opened let us know why.


[#1837563] Support trigger functions in app service library

Add trigger and get function key interfaces in app service library
Remove function name from trigger name (functionName/triggerName -> triggerName)

AB#1837563


[New game]: GET_BACK_UP 👾

🎮 Game Request
Game logic and basic description

Your egg is on the floor you need to place it in top the tree
You can only do it by charging your power by holding and releasing so that the egg can be lifted on the top

Point down the features
Game points
Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @0xabdulkhalid !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

/assign

Hey @0xabdulkhalid ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


Create Dos and Donts components for doc website

for the do’s and donts in documentation

using images


Slow LIST performance with mountpoint

Tell us more about this new feature.
Background
Testing with latest version v1.7.2, I've noticed the performance of LISTs is significantly slower than other methods.
Test Setup
Test setup is recursively listing a prefix hierarchy with ~16,000 objects total
Mountpoint command: sudo mount-s3 --read-only --allow-other --max-cache-size 50000 --cache /tmp/mtpt_cache --metadata-ttl 300 $BUCKET /tmp/mtpt_test
goofys command: sudo /usr/local/bin/goofys --type-cache-ttl 60s --stat-cache-ttl 60s --file-mode 0555 --dir-mode 0555 -o ro -o allow_other $BUCKET /tmp/goofys_test

awscli

time aws s3 ls --recursive s3://$BUCKET/$PREFIX
real	0m4.577s
user	0m3.085s
sys	0m0.128s

mountpoint (caching is enabled, but it seems like LIST responses aren't cached so subsequent lists are still slow)

time find /tmp/mtpt_test/$PREFIX -type f
real    0m38.283s
user    0m0.011s
sys 0m0.079s

goofys

time find /tmp/goofys_test/$PREFIX -type f
real    0m2.333s
user    0m0.006s
sys 0m0.053s

Hey, I can confirm that Mountpoint doesn't cache any LIST responses today, so every readdir operation would go directly to S3. The metadata cache is mainly used for lookup operation. I didn't expect the result to be this much worse though, because we may need to do readdir only once for each directory while traversing through them.
It would be really helpful to understand access pattern of the find command so we will need debug logs from your test. Also, I would like to understand more about the structure of your bucket, like how many levels of subdirectory are under the test prefix. Could you share more information about that?

so we will need debug logs from your test

I would not be comfortable sharing the debug logs as they will contain details about the bucket names/path which may contain sensitive data. But the command is just using the bash find utility to report all files recursively underneath a prefix

Also, I would like to understand more about the structure of your bucket, like how many levels of subdirectory are under the test prefix. Could you share more information about that?

In this case, the content of the root prefix we're recursively listing looks like:
   ├── prefix1
    │   ├── a
    │   ├── b
    │   └── prefix1.1
    │       ├── a
    │       ├── b
    │       ├── c
    │       ├── d
    │       ├── e
    │       ├── f
    │       └── g
   ├── prefix2
   ...

Where there are ~100 prefixes and each prefix contains ~145 objects spread across the subdirs. In this test there were a total of 1900 prefixes traversed in total

Thanks for sharing the structure. Seems like the problem will show up only when there is a lot of prefixes to traverse since I didn't face the same issue when trying to reproduce it with a few subdirectories. I will bring it back to the team and find out how we can test this and make directory listing more performant.


Remove logic that turns error.id="" into 400 exception

Undo PR https://github.com/Azure/azure-sdk-for-net/pull/11906 once the service starts returning status 400

We can do this now as service is now returning:
{"error":{"code":"InvalidRequest","message":"Invalid document in request.","innererror":{"code":"InvalidDocumentBatch","message":"Batch request contains too many records. Max 5 records are permitted."}}}


services/horizon: Improve testing of verify.go

PR Checklist
PR Structure

[ ] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
[ ] This PR avoids mixing refactoring changes with feature changes (split into two PRs
otherwise).
[ ] This PR's title starts with name of package that is most changed in the PR, ex.
services/friendbot, or all or doc if the changes are broad or impact many
packages.

Thoroughness

[ ] This PR adds tests for the most critical parts of the new functionality or fixes.
[ ] I've updated any docs (developer docs, .md
files, etc... affected by this change). Take a look in the docs folder for a given service,
like this one.

Release planning

[ ] I've updated the relevant CHANGELOG (here for Horizon) if
needed with deprecations, added features, breaking changes, and DB schema changes.
[ ] I've decided if this PR requires a new major/minor version according to
semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.

Addresses part of #2264
There isn't full coverage yet (I left a TODO), but accounts and offers are now tested.
This increases the coverage of verify.go increases to 60% from 9% .

As a sidenote, I found using testify/mock pretty unpleasant (maybe I don't know how to use it properly?) because:

It's too fine grained. Mirroring exact calls is tedious, fragile (it encourages mirroring the exact behavior of the implementation in the tests) and too low level (you almost end up replicating the implementation in the tests).
Using strings to refer to calls is a nightmare. Your IDE assistance and the compile-time type-checking is gone, dramatically increasing the number and length of the edit-compile-test cycles. On top of that, it complicates maintenance and exacerbates the bitrot of tests, since the compiler won't complain if a mocked funcion/method is removed or renamed.

</ end_of_rant>


Azure Storage Explorer is not working on WVD

The authentication library used by storage explorer is failed to start properly.
Windows 10 operating system
The version of Azure storage Explorer is 1.19.1
The .Net framework version is 4.8

2022-08-10_223543_main.log
2022-08-10_223543_renderer.log

@itsme-sk can you please try using the latest version of Storage Explorer (1.25)? If that still doesn't work, then please get us the authentication logs after reproducing with 1.25.

Closing due to lack of response. If you are still encountering this problem, we recommend opening a support ticket via the Azure portal alternatively you can open a new issue here.


MATCH and fetch plan performance issue

OrientDB Version, operating system, or hardware.
v2.2.10, MacOSX
Expected behavior and actual behavior
It looks like my fetch plans have no effect with MATCH requests.
If I understand correctly the documentation (http://orientdb.com/docs/master/Fetching-Strategies.html), the standalone DB should fetch the linked nodes (including their content) and sends them back to the client, such as the client doesn't have to communicate with the DB while browsing the result set.
If I simply access the id field (OrientVertex#getId), it's fast. However, when accessing properties, the time is significantly increased.
OrientVertex root = graph.addVertex("class:TypeA");
graph.commit();

for (int i = 0; i < 2; i++) {
	OrientVertex v = graph.addVertex("class:TypeB");
	root.addEdge("AtoB", v);
}
for (int i = 0; i < 2; i++) {
	OrientVertex v = graph.addVertex("class:TypeC");
	root.addEdge("AtoC", v);
}
graph.commit();

int nbRuns = 5000;
long time, delta;

String query = "SELECT FROM (MATCH {class: TypeA, as: _root, where: (@rid = '" + root.getId() + "')}.out('AtoB') {as: _root_AtoB}, {as: _root}.out('AtoC') {as: _root_AtoC} RETURN $paths) FETCHPLAN *:-1";

time = System.nanoTime();
for (int i = 0; i < nbRuns; i++) {
	Iterable<OrientVertex> rows = graph.command(new OCommandSQL(query)).execute();
	for (OrientVertex row : rows) {
		row.getId(); // only fetch the id, which is included in the record
	}
}
delta = System.nanoTime() - time;
System.out.println((double) delta /<PHONE_NUMBER>d);
// average time on my machine: 5 seconds (+/- 1)

time = System.nanoTime();
for (int i = 0; i < nbRuns; i++) {
	Iterable<OrientVertex> rows = graph.command(new OCommandSQL(query)).execute();
	for (OrientVertex row : rows) {
		row.getProperty("_root"); // fetch the _root property, which
	}
}
delta = System.nanoTime() - time;
System.out.println((double) delta /<PHONE_NUMBER>d);
// average time on my machine: 30 seconds (+/- 3)

I tried several configuration for the fetch plan (originally *:1, but it gives the same results than *:-1). I also tried to use OCommandSQL#setFetchPlan.
If I run the request in Studio and display the raw results, I can see that the fetching is done correctly: all the linked data is included. Maybe the problem is from client side?
In addition, it looks like the time is not linear to the number of loops (you can set the nbRuns variable in the test code provided above):

1000 runs: 2 seconds
2000 runs: 6 seconds
3000 runs: 12 seconds
4000 runs: 19 seconds
5000 runs: 30 seconds
10000 runs: 150 seconds

PS: I'm sorry for posting so much issues since yesterday, but I'm actively working with the database.

Hi @benjaminbillet
Are you running in remote or plocal?
The fact that the query time is non linear is quite strange, we'll investigate it
Thanks
Luigi

Hi,
I am running in remote. Feel free to run my test code to be sure my problem is reproducible. I will test with other types of request.
Thanks

BTW, I forgot to mention that the results I obtained are the same with and without the fetch plan clause.

After some testing, regular requests does not have the problem, e.g.:
SELECT FROM TypeA FETCHPLAN *:-1
SELECT $a LET $a = (SELECT FROM TypeA), $b = (SELECT FROM TypeB), $c = UNIONALL($a, $b) FETCHPLAN *:-1
Maybe it's related to MATCH requests?

Thank you for the detailed information. Yes, it could be someway related to the MATCH statement, I'll investigate it
Thanks
Luigi


Refactored site arch, md, and generative methods.

Huge MR. Opening against the temp branch right now so that changes are as minimal as possible for "easy" reviewing. Will change to main as soon as we are merged.

Refactored MD structure to now match much more closely to the site arch.
Page MD files live in pages, partials live in partials. (Only like 1 or 2 are used on multiple pages, but hey let's be flexible)
Solutions/Products dynamic fetching stuff has been refactored to use new MD structure instead of trying to match strings across files (@andershopkins this coud be easily co-opted to auto-gen the "Solutions" part of the navigation if we get there as part of v2)
Updated MD typing, added typing for transformed pageInfo (more on that later), updated all MD files prettyName -> title
Added getPageInfo, getPartials and getPartialsAsArray methods to simplify/unify how we get data for pages.
Added start of getPageInfo 3rd party integrations pattern, will use this for YouTube and Twitter integrations going forward
Scrapped old twitter feed, as we'll be rebuilding it. If we run out of time, copy-pasta to the half-working one is ez pz.
There were a couple of MD files that don't appear to be used, I didn't delete them, we can move them when we find out what they're supposed to be. (They don't have any headmatter)

To expand upon the "extra" content issue. There are several files in data/markdown/product that do not have any headmatter and do not appear to be used on the site in it's current state. I wasn't quite sure where this content should go so I left it in it's current location.
We can move it to the appropriate location in either pages or partials when we want to display it on the site.
Another thing I had noticed is that all of the partials within devops were tagged with each product within devops but they all only showed up on one page. I wasn't sure if this was an error or if each partial was supposed to show on each devops subpage. I opted to match the existing site so they only appear on pages they were appearing on previously.

@jst-cyr @thomas-desmond
This PR is huge, but most of it is just reorganizing md files. The idea was to restructure the md files to more closely mimic the site architecture. This will hopefully make the content a little easier to navigate/predicatable in the data directory. The second part of the reorganization was to split apart all pages and partial content. Partials for dynamic pages are now called directly from within the markdown rather than relying on the tagging system to help attempt to reduce points of failure.
The idea was to do this once, and never have another large PR like this.
The actual files where changes have been made functionality-wise are:

scripts/page-info (A slight refactor of lib/getMarkdownData that focuses on consolidating data)
scripts/static-paths (Another slight refactor of lib/getMarkdownData to utilize the new md structure)
All of the pages/*.tsx files have been updated to use the new getPageInfo and getPartials methods.

The contents that get output from the files are not styled at this point, so they look quite ugly. This PR begins to address that, and a further 2 PRs, one focused on layout templates in general and one focused on markdown content styling, should have this content looking good in the near future.
The Twitter Feed also had it's functionality removed as I am currently in progress refactoring that to utilize the actual Twitter API in order to accomodate creating feeds from hashtags and/or multiple parameters. If the desire ends up being to re-add what was there previously I can re-implement that in a later MR.
If you want to chat through any of this let me know I understand it's a big one to bite off.


Add custom color for Picker's Nav Bar Background

If setting your app's color scheme in AppDelegate, this picker will not conform to a chosen pickerStyle. This proposed change would allow you to set a custom color when presenting the picker.

Thank you for this PR !
I will make soon more configurations settings, like I did with this library for exemple : https://github.com/terflogag/OpenSourceController#customisation
This will be available for the next version, probably this weekend.

No problem @terflogag ! Thank you for creating this. I want to try to add square cropping at some point as well if you're open to it! 😀

Why not ! But I think there are other library which are doing crop better and with lot of possibility, like : https://github.com/TimOliver/TOCropViewController
Feel free to make pull request, and don't forget to add possibility to disable it in config struct 👍


Kivy app not responding well or too slow to respond

Versions

Python: v3.7.4
OS: Windows 10
Kivy: v1.11.1
Kivy installation method: pip install

Description
I'm trying to run a simple kivy app (from ping pong tutorial), but after it open a window it seems to not respond to any event or more like it's too slow to respond. It takes more than 10s for it to even get the minimize button get hovered. Sometimes, it can't even move the window at all.

At first I thought it's because I open many applications that it become slow, but it seems that's not the case, it's normal for other application.
Code and Logs
from kivy.app import App
from kivy.uix.widget import Widget

class PongGame(Widget):
    pass

class PongApp(App):
    def build(self):
        return PongGame()

if __name__ == '__main__':
    PongApp().run()

[WARNING] [Config      ] Older configuration version detected (0 instead of 21)
[WARNING] [Config      ] Upgrading configuration in progress.
[INFO   ] [Logger      ] Record log in C:\Users\Amatarazatas\.kivy\logs\kivy_19-12-04_0.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.1.12
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.1.22
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "C:\Users\Amatarazatas\AppData\Local\pypoetry\Cache\virtualenvs\kivy-test-project-py3.7\lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "C:\Users\Amatarazatas\AppData\Local\pypoetry\Cache\virtualenvs\kivy-test-project-py3.7\Scripts\python.exe" [INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.0.0 - Build <IP_ADDRESS>58'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) HD Graphics'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 0
[INFO   ] [GL          ] Shading version <b'4.00 - Build <IP_ADDRESS>58'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop

Hello my friend. I have a same problem. maybe you could solve this problem? I would be grateful for your answer

That's really weird, i would recommend first to check the graphic drivers are up to date, especially for intel, it's not uncommon that old versions are installed by default that severly limit kivy features and performances.

I have the same issue. I am trying to run the app in a computer lab. All the computers have the same graphics (Intel 2500). It only works fast in one of them, the rest are very slow. Those with lower performance produce 2 configurations warning shown above. Any update on this?

I have figured out why this issue happens for my case. I was using pyinstaller to deploy my app for Windows. It seems to me that some of the packages required for kivy to work smoothly were not installed properly. I tried to run my app using my environment (without installing with Pyinstaller) and it worked perfectly in all computers.  If someone else is having the same issue with this warning in log (Older configuration version detected (0 instead of 21), that is probably because of missing dependencies.

I figured out that if the problem persists, you can set KIVY_NO_CONFIG=1 in environment variables, which will prevent setting incompatible default parameters for configuration.
Note: this will only work if you are running your app for the first time. If you have run it without setting KIVY_NO_CONFIG=1, then kivy will set default parameters and you will be stuck with these parameters from there on. I tried deleting %userprofile%.kivy/config.ini file, but this did not help. I haven't yet figured out what else is changed in local files due to this process:
[WARNING] [Config      ] Older configuration version detected (0 instead of 21)
[WARNING] [Config      ] Upgrading configuration in progress.
Since I was using lab computers, simple restart rolled back all the changes and I could run the app smoothly with KIVY_NO_CONFIG

Have the same issue with the latest Windows and Python versions. Previously, in the middle of February, my apps had been working flawlessly. But now they're painfully slow at the same laptop. Don't know what had caused it - Windows, Python, or both.

Hello,
I had this problem a few months ago when I first tested Kivy.
The solution was to update the graphics driver.
Today - and a few Windows Updates later - I decided to come back to studying Kivy. Kivy was super slow again. I've opened Windows Device Manager and updated the graphics driver again. Problem solved.
But how this happened? As I hinted above, maybe it is related  with Windows Updates. I did not manually changed the graphics driver since I first tested Kivy.
Windows 10 Home. Version 1903
My laptop have two video adapters:
NVIDIA GeForce GT 650M
and Intel HD Graphics 4000

After rebooting my laptop the problem returned.
Kivy was not working but... besides programming I use this computer for 3d CAD and flight simulation, both very heavy real-time 3D applications.
A bit frustrated I created another venv, skipped the installation instructions that recommends the stable release Kivy 1.11.1 and tried the wheels way of installing. I've installed:

Kivy-2.0.0rc1.20200419.108a9151e-cp37-cp37m-win_amd64.whl
kivy_deps.angle-0.2.0-cp37-cp37m-win_amd64.whl
kivy_deps.glew-0.2.0-cp37-cp37m-win_amd64.whl
kivy_deps.sdl2-0.2.0-cp37-cp37m-win_amd64.whl

And it worked! I rebooted the computer again and everything is still fine.

Another test made here with good results.
I followed the instructions to install the stable version but avoided using the pinned versions of the libraries and It worked very well.
python -m venv venv
.\venv\Scripts\activate
python -m pip install --upgrade pip virtualenv
python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2 kivy_deps.glew
python -m pip install kivy

The problem must be in kivy_deps.sdl2==0.1.* or kivy_deps.glew==0.1.*. The current versions of both is 0.2.0. My laptop have two graphics cards and maybe it's related too.
This doc should be corrected https://kivy.org/doc/stable/installation/installation-windows.html#installing-the-kivy-stable-release
I looked for the source of the page but could not find it.

Hi, I have simillar problem. Yesterday everything worked very well but today I have to wait ~5 seconds after clicking any button before function binded to button will be called. (I've added print() for every button.)
Until today everything worked well, I have no idea what's wrong. Everything is up-to-date, including graphics card driver.
I'm using Kivy 1.11.1 and Python 3.7.7. Could anybody help me?

if you have two graphic drivers, it's probably running on the wrong one, on linux, this can be fixed by using optirun, on windows, i'm not sure what can be done to force using the more powerful adapter, seems it can be done both by user configuration and from code, so maybe we should look into automating it https://community.khronos.org/t/how-to-use-nvidia-for-opengl/70182/2

Hi @AnonymousX86

I'm using Kivy 1.11.1 and Python 3.7.7. Could anybody help me?

Read my post above and try to create a new virtualenv with current kivy_deps.sdl2 and kivy_deps.glew:
python -m venv venv
.\venv\Scripts\activate
python -m pip install --upgrade pip virtualenv
python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2 kivy_deps.glew
python -m pip install kivy

As an alternative try Kivy2.0.0rc, but I believe with just the updated kivy_deps it will work fine.

@tshirtman with the updated kivy_deps even the less powerful graphics card of my laptop is powerful enough for Kivy

Hi @AnonymousX86

I'm using Kivy 1.11.1 and Python 3.7.7. Could anybody help me?

Read my post above and try to create a new virtualenv with current kivy_deps.sdl2 and kivy_deps.glew:
python -m venv venv
.\venv\Scripts\activate
python -m pip install --upgrade pip virtualenv
python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2 kivy_deps.glew
python -m pip install kivy

As an alternative try Kivy2.0.0rc, but I believe with just the updated kivy_deps it will work fine.

After some time, now it's working okay. For no such reason it slowed down and got back to normal performance. That's creepy...

I had this same problem.  I uninstalled Python 3.8 on my computer and now Kivy works much faster.  If you're not using Python 3.8 specifically consider trying this.

I 've also had troubles for a year, couldn't switch from obsolete Pygame to other Windows10 backends (I tried glew, angle, direct sdl2... for opengl, without success).
Updating to the versions below solved the unresponsive app problem, now Sdl2+Glew is used and it seems fine  B-)
Kivy==2.0.0rc3
kivy-deps.glew==0.2.0
kivy-deps.sdl2==0.2.0
Kivy-Garden==0.1.4
kivymd==0.104.1

This Issue has become the dumping ground for random support issues. Closing


The BNinception model

I trained with the bninception model. But I still face this problem when I trained on my datasets.
0 Epoch, 2900 Iter,Time :0.189,Data:0.012 Loss: 2.6701, Acc: 0.0469
0 Epoch, 3000 Iter,Time :0.189,Data:0.012 Loss: 2.6671, Acc: 0.0625
0 Epoch, 3100 Iter,Time :0.189,Data:0.012 Loss: 2.6090, Acc: 0.0469
0 Epoch, 3200 Iter,Time :0.189,Data:0.012 Loss: 2.5923, Acc: 0.0781
0 Epoch, 3300 Iter,Time :0.189,Data:0.012 Loss: 2.6018, Acc: 0.0781
0 Epoch, 3400 Iter,Time :0.188,Data:0.012 Loss: 2.5977, Acc: 0.0938
We can see the loss is not reduced and the acc is not to improve. If I change the lr, I also face the nan problem. I also find the example about the file of voc2007_extract.py. This model can be extracted the feature. But when I use this model to train with the public dataset, it is still facing the loss is not descend or nan problem.  I use other models, such as xception is not face these problems.

Should be fixed: https://github.com/Cadene/pretrained-models.pytorch/commit/87e97515ec4480844e188d82e87e06376337a3af


Tests reset "enumerations"-fields to "emumerations"

I don't know why this is happening but it might be the reason for why my PR #47 was necessary in the first place.
Whenever I run grunt or grunt test all occasions of enumerations are set to emumerations.
Steps to reproduce:

git clone https://github.com/bpmn-io/bpmn-moddle.git
npm install
grunt test
git diff => See and wonder

Did you try to search the existing code bases for it to see if you can fix this?

I tried to search this repository on master branch for the word emumerations but wasn't able to find something.

What about this.
So the previous fix was actually just a temporary one :cake: :smiley:.

https://github.com/bpmn-io/cmof-parser/pull/1

Closed via bpmn-io/cmof-parser#1.


Test embulk.gem's version check

It tests "embulk.gem's version check" mechanism introduced in #1370 in embulk-ruby's Ruby test code.

Thanks!

Thanks!


Fixed #19323 -- Added a is_active field to Redirect model.

https://code.djangoproject.com/ticket/19323

Hi Berker, I'm curious if you have a use case in mind for this feature. As noted in the ticket, since the default redirect is 301 ("Moved Permanently"), I think it could be somewhat misleading to suggest that redirects can be "disabled". At least more documentation about this should be added, I think.

My use case is similar to the OP. The only difference is that we don't use the original middleware and return 302 instead of 301(I forgot to check before sending this PR). I agree that this is not useful for the default middleware.


change hamburger nav

Current coverage is 27.02% (diff: 0.00%)

Merging #28 into master will decrease coverage by 0.29%

@@             master        #28   diff @@
==========================================
  Files            18         18
  Lines           183        185     +2
  Methods          70         70
  Messages          0          0
  Branches         52         54     +2
==========================================
  Hits             50         50
- Misses          133        135     +2
  Partials          0          0

Powered by Codecov. Last update 64d5c62...a728bc1


DefaultAzureCredential failed to retrieve a token from the included credentials

Package Name: @azure/identity

Package Version:  1.3.0

Operating system: macOS Big Sur 11.1

[x] nodejs

version: 14.16.0

[ ] browser

name/version:

[ ] typescript

version:

Is the bug related to documentation in

[x] README.md
[ ] source code documentation
[x] SDK API docs on https://docs.microsoft.com

Describe the bug
I'm trying to retrieve credentials from my vscode extension. I'm logged in and can see all my subscriptions.
In the README documentation it says that It should be enough to just be logged in, in docs online it's unclear if I actually need to provide environment variables for it to work.
I run the following code:
const credentials = new DefaultAzureCredential()
console.log(credentials)

And it returns:
{
   "UnavailableMessage": "DefaultAzureCredential => failed to retrieve a token from the included credentials",
   "_sources": [
     {},
     {
       "isEndpointUnavailable": null,
       "identityClient": {
         "_withCredentials": false,
         "_httpClient": {
           "proxyAgents": {},
           "keepAliveAgents": {},
           "cookieJar": {
             "version"<EMAIL_ADDRESS>             "storeType": "MemoryCookieStore",
             "rejectPublicSuffixes": false,
             "cookies": []
           }
         },
         "_requestPolicyOptions": {},
         "_requestPolicyFactories": [
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {}
         ],
         "authorityHost": "https://login.microsoftonline.com",
         "baseUri": "https://login.microsoftonline.com"
       }
     },
     {},
     {
       "cloudName": "AzureCloud",
       "identityClient": {
         "_withCredentials": false,
         "_httpClient": {
           "proxyAgents": {},
           "keepAliveAgents": {},
           "cookieJar": {
             "version"<EMAIL_ADDRESS>             "storeType": "MemoryCookieStore",
             "rejectPublicSuffixes": false,
             "cookies": []
           }
         },
         "_requestPolicyOptions": {},
         "_requestPolicyFactories": [
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {},
           {}
         ],
         "authorityHost": "https://login.microsoftonline.com",
         "baseUri": "https://login.microsoftonline.com"
       },
       "tenantId": "common"
     }
   ]
 }

To Reproduce
Steps to reproduce the behavior:

Login on Azure Account extension
Install<EMAIL_ADDRESS>Login to your azure account
new DefaultAzureCredential()

Expected behavior
I expect to receive a credential since I'm logged into the extension.
Screenshots
Just "Proof" that I'm logged into the extension:

Additional context
I'm also logged into the CLI.
I have access to several subscriptions.
I have not configured ANY environment variables (not needed?)
When running VisualStudioCodeCredential() directly I get this back:
{
   "cloudName": "AzureCloud",
   "identityClient": {
     "_withCredentials": false,
     "_httpClient": {
       "proxyAgents": {},
       "keepAliveAgents": {},
       "cookieJar": {
         "version"<EMAIL_ADDRESS>         "storeType": "MemoryCookieStore",
         "rejectPublicSuffixes": false,
         "cookies": []
       }
     },
     "_requestPolicyOptions": {},
     "_requestPolicyFactories": [
       {},
       {},
       {},
       {},
       {},
       {},
       {},
       {},
       {},
       {},
       {}
     ],
     "authorityHost": "https://login.microsoftonline.com",
     "baseUri": "https://login.microsoftonline.com"
   },
   "tenantId": "common"
 }

@Crafoord, hello, I’m Daniel! I’ll be doing my best to help you.
Before I give you a more concrete answer, please help me by answering the following questions:

It wasn’t clear for me, does VisualStudioCodeCredential work for you if you use it directly?
What version of Visual Studio Code are you using?

With that information, please give us about a day more for us to prepare a good response for you.

Thanks @sadasant !
VSC version:
Version: 1.56.2
Commit: 054a9295330880ed74ceaedda236253b4f39a335
Date: 2021-05-12T17:44:30.902Z (2 wks ago)
Electron: 12.0.4
Chrome: 89.0.4389.114
Node.js: 14.16.0
V8: <IP_ADDRESS>-electron.0
OS: Darwin x64 20.2.0

Regarding the VisualStudioCodeCredential it looks like it's getting a credential back but when trying to get an app-config/key vault secret I get this error:
      RestError
          at new RestError (/Users/xxxxxx/dev/xxxxxx/server/node_modules/@azure/core-http/dist/index.js:2362:28)
          at handleErrorResponse (/Users/xxxxxx/dev/xxxxxx/server/node_modules/@azure/core-http/dist/index.js:3246:17)
          at /Users/xxxxxx/dev/xxxxxx/server/node_modules/@azure/core-http/dist/index.js:3182:18
          at processTicksAndRejections (node:internal/process/task_queues:93:5)
        name: "RestError"
        statusCode: 403

Also the "credential" I'm getting back:
VisualStudioCodeCredential {
  cloudName: 'AzureCloud',
  identityClient: IdentityClient {
    _withCredentials: false,
    _httpClient: NodeFetchHttpClient {
      proxyAgents: {},
      keepAliveAgents: {},
      cookieJar: [CookieJar]
    },
    _requestPolicyOptions: RequestPolicyOptions { _logger: undefined },
    _requestPolicyFactories: [
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object]
    ],
    authorityHost: 'https://login.microsoftonline.com',
    baseUri: 'https://login.microsoftonline.com'
  },
  tenantId: 'common'
}

I only got it working if I put in the environment variables for an SPM.

@Crafoord Hello! I have an update.
Keep in mind that we will use this issue later to improve our documentation. In the mean time, my focus will be to make sure that you’re able to get the VisualStudioCodeCredential to work.
I’m sorry if these steps are obvious. Please make sure to follow them. Please let us know if anything unexpected happens.
Steps:

Make sure to have the Azure Account extension installed on your VSCode.
Make sure to sign in to your Azure Account through the VSCode extension (for example, with CMD+Shift+P, then Azure: Sign In).
Go to your Azure account on the Azure portal.
Go to Active Directory through the portal.
Create an App Registration (Enterprise app). If you already have an App Registration, you can use that one.
Go to the App Registration on the Azure portal’s Active Directory.  Ensure that the App Registration only has “Mobile and desktop applications” with three values (these should have been assigned by default, as part of any newly created application). This step shouldn’t be necessary, but it will help us simplify the problem if anything unexpected happens.
Go to the “Overview” page of your App Registration, copy the Directory (tenant) ID.
Open the settings of the Azure Account plugin on VSCode, look for the input labeled Azure: Tenant.  Paste the Directory (tenant) ID of your App Registration in the input. Click away, effectively giving a bit of time for VSCode to update this setting on the underlying JSON file.
Open a project where you have @azure/identity 1.3.0 installed. Or create a new folder, then run npm init, then npm install --save @azure/identity.
Open the VSCode terminal in the folder of that project. In this folder there should be a node_modules folder present.
Run node.
In Node, enter:

var identity = require(“@azure/identity”)
var credential = new identity.VisualStudioCodeCredential()
credential.getToken(“https://graph.microsoft.com/.default”).then(console.log).catch(console.log)

Your OSX’s Keychain should pop up a window asking for your password to allow node to access the information stored in VS Code Azure. Enter your password, click Allow.
A second prompt will appear from your Keychain asking you for the same password (We know of this issue and we’re working on a solution, let’s try to make this work first, I’ll make sure to follow up with detailed improvements).
After you’ve allowed node to authenticate twice, an object with the structure { token: ‘XYZXYZ’, expiresOnTimestamp: 123123123 } should appear in the terminal of your VSCode. That token means the authentication has succeeded.

Please let me know if this works.
If this works, I know I have to:

Improve the documentation of this credential to ensure we ask users to provide a tenant on the Azure Account extension settings.
Fix this credential to avoid having to provide the Keychain password twice (we’re already working on this).

If this doesn’t work, once you let us know, please give us about a day to follow up with our next response.

Thanks @sadasant
Before I did not get the popup (maybe because I did not do the getToken call?).
I did everything in your steps and got popup+token
I removed the tenant (step 5-8) and got popup+token
I replaced VisualStudioCodeCredential with DefaultAzureCredential and got a popup+token
But when I try to use my credential with app-config like below (I actually get the popup now):
credential = new VisualStudioCodeCredential()
const configClient = new AppConfigurationClient(appConfigUrl, credential)
configClient.getConfigurationSetting({ key: 'SOME_KEY' }).then(console.log).catch(console.log)

I get this back, not very helpful, when logged into the portal I have the Contributor + Owner role for this resource (app config):
RestError:
 {
  "name": "RestError",
  "statusCode": 403,
  "request": {
    "streamResponseStatusCodes": {},
    "url": "https://xxxxxxxxxx.azconfig.io/kv/HTTP_BASE_URL?api-version=1.0",
    "method": "GET",
    "headers": {
      "_headersMap": {
        "accept": "application/vnd.microsoft.appconfig.kv+json, application/json, application/problem+json",
        "user-agent": "azsdk-js-app-configuration/1.1.1 core-http/1.2.4 Node/v15.5.1 OS/(x64-Darwin-20.2.0)",
        "x-ms-client-request-id": "my-request-id",
        "authorization": "REDACTED",
        "cookie": "REDACTED"
      }
    },
    "withCredentials": false,
    "timeout": 0,
    "requestId": "my-request-id"
  },
  "details": {},
  "message": ""
}

Also, just so I can understand, creating the app registration was just for debugging purposes? It kind of eliminates the simplicity of using the VisualStudioCodeCredential if you need to setup and manage a registration IMO.
I realise now that the UnavailableMessage I thought was a problem is a just a class property:
* The message to use when the chained token fails to get a token
So when logging credentials after creation will always show :
UnavailableMessage: "DefaultAzureCredential => failed to retrieve a token from the included credentials";

@Crafoord thank you for your detailed response!
Give us some time to come up with a good response. Thank you for your patience!

@Crafoord Hello hello,
I’ve tried creating an App Configuration instance to replicate the scenario you’ve shared. I’ve only been able to get a 403 after applying the permissions to my user while the permissions get propagated (after that, things worked well). So, right after you’ve added a user as an owner (though App Configuration Data Owner should be sufficient), the permissions may take some time to be effective.
There are some action items that you could do to help us debug this further:

Let’s try again! I wonder if it would work now that some time has passed.
Let’s try giving your user App Configuration Data Owner permissions besides “Owner.” Also, please try several times over an hour, just in case. (This might not be it, but while the issue is undetermined, I wonder if it helps).
Debug your token to ensure the information matches your user. For that, I’ll write something below.

To debug the token:
Right after you instantiate your credential, please add some code similar to the following:
const getTokenResult = await credential.getToken("https://graph.microsoft.com/.default");
console.log({ getTokenResult });

Inside of getTokenResult there should be a token property with a long value. Copy that value and paste it in https://jwt.ms or https://jwt.io (these sites are safe). Do not paste it here! - go through your token properties and investigate if the values of the following properties make sense to you: For example, the upn property should include your email, the one related to the account you’re using to authenticate, which should be the one that has ownership permissions over your App Registration.
If the values of the token make sense, this means that the token should be valid.
Generally speaking, 403s mean that the user does not have permission to see the resource, so it seems to us that this is about ensuring the right account has the right permissions. It could be something else, of course. We’ll continue investigating after your response.

Thanks for the new directives @sadasant,

There are some action items that you could do to help us debug this further:

Let’s try again! I wonder if it would work now that some time has passed.
Let’s try giving your user App Configuration Data Owner permissions besides “Owner.” Also, please try several times over an hour, just in case. (This might not be it, but while the issue is undetermined, I wonder if it helps).
Debug your token to ensure the information matches your user. For that, I’ll write something below.

Did not work 👎
Did work! 👍
My token looks good 👍

More information about .2:
It also worked if I gave myself the "Owner" permission. To be clear, I'm part of a group that has Owner, maybe that's not really working out in this case? Something for you to investigate?
My testing flow (I waited 5-10 minutes between each test after changing role assignments):

Be "Owner" through ad group -> does not work 👎
Be "App Configuration Data Owner" directly on my user -> works 👍
Be "Owner" directly on my user -> works 👍
Be "Owner" through ad group -> does not work 👎

Regards

@Crafoord Thank you for answering back!
This seems to be a service-level bug, since the group permissions should be honored. I’ll route this issue to the service team today.

/cc @pakrym

@Crafoord just to confirm,
When you said:

My testing flow (I waited 5-10 minutes between each test after changing role assignments):

Be "Owner" through ad group -> does not work 👎
Be "App Configuration Data Owner" directly on my user -> works 👍
Be "Owner" directly on my user -> works 👍
Be "Owner" through ad group -> does not work 👎

Did you try setting "App Configuration Data Owner" directly on the AD group? The list doesn’t include that.

For the data access, you'd need the "App Configuration Data Owner" role.
https://docs.microsoft.com/en-us/azure/azure-app-configuration/concept-enable-rbac#azure-built-in-roles-for-azure-app-configuration
Do you have anything to add about the differences with "Owner" role w.r.t AD group vs a user, @zhenlan?

Adding "Owner" directly on user -> works.

If all you have is the "Owner" role on App Config, it should NOT work. You can actually go to Azure Portal Configuration explorer and switch to using Azure AD authentication to test out easily.

Do you have anything to add about the differences with "Owner" role w.r.t AD group vs a user, @zhenlan?

Similar to the "Contributor" role, the "Owner" role allows you to manage the App Configuration resource. While the App Configuration data can be accessed using access keys, this role does not grant direct access to the data using Azure AD.

Thanks for the docs update, @zhenlan.
Do you have any follow-up questions, @Crafoord?

Thanks all for the help!
The only "question" (maybe more feedback?) is this:
If I can see the keys of an app-config in the portal when logged in as myself, I would expect my credentials to be able to do the same thing when being logged in from my dev environment.
Does that make sense?
Regards


Tests for Mongo Identity Lookup.

Description
Designed to try to provoke any possible race conditions on init. Checks that order and messages are maintained.
The tests still fail on Partition based Lookup.. Probably bad config.
Purpose
This pull request is a:

[ ] Bugfix (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)

Checklist

[x] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.magne.helleborg seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Update mockito-scala to 1.16.42

Updates org.mockito:mockito-scala from 1.16.29 to 1.16.42.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.mockito", artifactId = "mockito-scala" } ]

labels: test-library-update, semver-patch

Superseded by #159.


Always render in custom area

Added feature to always render
Added default lang settings
Red dot hover blink bugfix

Looks good, Cool!, I will test more.


Error when trying to bootstrap vcpkg after new install

I tried to reinstall vcpkg just now.  When I tried to run the bootstrap .bat file, I got the following error:

PS C:\Windows\System32\vcpkg> .\bootstrap-vcpkg.bat
Microsoft (R) Build Engine version <IP_ADDRESS>001 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
MSBUILD : error MSB1009: Project file does not exist.
Switch: dirs.proj
Copy-Item : Cannot find path 'C:\Windows\System32\vcpkg\toolsrc\Release\vcpkg.exe' because it does not exist.
At C:\Windows\System32\vcpkg\scripts\bootstrap.ps1:49 char:5

Copy-Item $vcpkgSourcesPath\Release\vcpkg.exe $vcpkgRootDir\vcpkg ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (C:\Windows\Syst...lease\vcpkg.exe:String) [Copy-Item], ItemNotFoundExce
ption
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

Copy-Item : Cannot find path 'C:\Windows\System32\vcpkg\toolsrc\Release\vcpkgmetricsuploader.exe' because it does not
exist.
At C:\Windows\System32\vcpkg\scripts\bootstrap.ps1:50 char:5

Copy-Item $vcpkgSourcesPath\Release\vcpkgmetricsuploader.exe $vcp ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (C:\Windows\Syst...icsuploader.exe:String) [Copy-Item], ItemNotFoundExce
ption
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

Would someone please help me out?  Thanks in advance.

Hi @DragonOsman, thanks for reporting this issue!
It looks like the clone process was incomplete; this error log indicates that toolsrc\dirs.proj doesn't exist.
Could you remove C:\Windows\System32\vcpkg and re-clone it into a directory like C:\src\vcpkg, then try again?

The issue is resolved for me as well.  It was a while ago, though, and I don't remember what I did exactly.  I'm sorry about that.

We've also been steadily improving bootstrap in the meantime, so it's quite possible we fixed your issue accidentally :)


include_in_import for map-column-java is not affected

If a columns is disabled by putting 0 in include_in_import and at the same time, the column is mapped to another datatype for Sqoop, that column is still included in the map-column-java and results in a "column not found" error.

The map-column-java type is now saved in a variable and only added to the list if include_in_import = 1


Remove manual installation of Istio 1.5

#92 introduced manual installation of Istio 1.5 so that Istio authorization policies could be used. Once CRfA comes bundled with Istio 1.5 we can remove the manual installation step from cloudbuild-provision-cluster.yaml.
On a related note mutual TLS was disabled in infrastructure-tpl.yaml due to incompatibilities with the default version of Istio bundled with CRfA. That could probably be revisited.

This issue is blocked on a future release of CRfA


log an entry when parcel layer isn't indexed

Hello dotMorten,
I am trying to figure out a way to know if the parcel layer is indexed or not. Using the ESRI ArcGIS Runtime for .NET, is it possible to determine in code what attribute indexes exist for a FeatureTable?  We are working on UWP.
Regards,
Reema

@RP2606 I recommend posting this type of question in the community forum.

done.
https://community.esri.com/message/873136-log-an-entry-when-parcel-layer-isnt-indexed


Feature request: Preserve filesystem labels

It is possible to change the filesystem label of the root partition (or maybe all ext partitions, that's what the docs suggest), but otherwise all partition are created without a filesystem label.
Wouldn't it make more sense to copy the existing filesystem labels? Given the goal is to create a clone?

Seconded. Just had an issue with Manjaro ARM where if the labels are not propagated the copy will not boot.
Not a big issue, but nonetheless annoying!

I had the same issue with a copy of Ubuntu Server on a raspberry pi 3 not booting from the cloned disk. Fixed this by manually setting the filesystem labels on the destination card.
This however does introduce a new problem: with both the source and the destination card sharing the same labels the system would boot from either, which is not what I want. I want the system to always boot from the main (source) card sitting in the internal slot and not from the backup (destination) card sitting in a USB card reader. So copying the labels accross is not as good as an idea as it seems.
I ended up converting my fstab and cmdline.txt to 'good old' device names, which is certainly not a great idea but at least guarantees that the system boots from whatever card is sitting in the internal card reader. I might try using the --convert-fstab-to-partuuid option next to convert to PARTUUID instead but will first thoroughly check I have a working backup scenario now.
IMO it would be really nice if rpi-clone would:

Detect fstab using labels or uuids and issue a warning about rpi-clone only supporting device names and partuuids.
Add support for converting labels or uuids to partuuids using the convert-fstab-to-partuuid option.

+1 for this

I ended up converting my fstab and cmdline.txt to 'good old' device names, which is certainly not a great idea but at least guarantees that the system boots from whatever card is sitting in the internal card reader. I might try using the --convert-fstab-to-partuuid option next to convert to PARTUUID instead but will first thoroughly check I have a working backup scenario now.

Could you explain this a bit further, what did you have to rename in fstab and cmdline.txt? Were you able to test the  --convert-fstab-to-partuuid command? I have the exact same problem as you. I used @matthijskooijman code to successfully clone my Ubuntu server however now my pi always seems to pick /dev/sda to boot from as opposed to /dev/mmcblk01 which is not what I want.
The end goal is to have an sd card attached to usb which is an updated clone of the original so when the original dies (again) I can simply swap the cards. In  this scenario I always need to boot from the original card attached directly to the pi.

In reality, the missing part is only rename the partitions.
I.e., when I had the PI, I "solved" with another PC with LInux.
sudo lsblk -o name,mountpoint,fstype,label,size,uuid
Print all info about your disks / sd.
sudo fatlabel /dev/sda1 system-boot && sudo e2label /dev/sda2 writable
With last command, you rename the partitions name. Simply, change (if need) dev/sdX

I had the same issue with a copy of Ubuntu Server on a raspberry pi 3 not booting from the cloned disk. Fixed this by manually setting the filesystem labels on the destination card.

This however does introduce a new problem: with both the source and the destination card sharing the same labels the system would boot from either, which is not what I want. I want the system to always boot from the main (source) card sitting in the internal slot and not from the backup (destination) card sitting in a USB card reader. So copying the labels accross is not as good as an idea as it seems.

Hm, this seems a bit weird: I would expect that the labels are irrelevant for selecting the boot device, but the (PART)UUID would be used. However, reading what you wrote, you really do seem to mean labels. Does Ubuntu maybe use labels instead of UUIDs, then?
@ioogithub, could you maybe paste the /etc/fstab from your original Ubuntu installation here?

@matthijskooijman I think you're quoting my comments but asking @ioogithub for input. Is that what you meant to do?
To explain what I did I think you have to understand that to some this is counterproductive. In the 'good old' days your fstab would always be pointing to devices (/dev/sdaX, etc). A lot of work has gone over the years into supporting persistent block device naming which has a different goal than what I was trying to achieve: to mount a unique piece of hardware in a given place. If you don't want this (and I didn't want that) you can always revert to an old style fstab. The result is getting the old (sometimes quirky) behaviour as well.
So why did I want this 'old' behaviour? Because I am mounting a backup memory card in a USB reader which should be identical to the main memory card and I should be able to swap them around at any time. I don't actually want the system to uniquely track one or the other card. Instead I want it to identify in which place (onboard or USB card reader) the card is and the easiest way to do that is by looking at the device name.
Original contents of my fstab:
#LABEL=writable /    ext4   defaults    0 0
#LABEL=system-boot       /boot/firmware  vfat    defaults        0       1

New contents:
/dev/mmcblk0p2  /       ext4    defaults    0 0
/dev/mmcblk0p1  /boot/firmware  vfat    defaults    0 1

The main card sits in /dev/mmcblk0, the backup card in /dev/sda. Similarly I needed to change cmdline.txt to indicate the correct root device (instead of label) to use.
@matthijskooijman So yes my experience is that Ubuntu uses labels.

@matthijskooijman I think you're quoting my comments but asking @ioogithub for input. Is that what you meant to do?

Yeah, because you changed your fstab I had assumed you no longer had the original contents, but well, assumptions are...
But interesting that they use labels, that seems quite fragile. What I would suggest to fix this, rather than using fixed device names, is to use PARTUUID (or UUID if you apply #140) and just rely on the rpi-clone code to ensure the PARTUUID is changed during the clone, and fstab and cmdline.txt is updated, since that's how this is designed to work (this probably also applies to @ioogithub's case).
I guess rpi-clone could be made to detect that labels are used for mounting and then ensure that labels are unique and updated in fstab/cmdline.txt, but I'm not sure if that's worth the extra complexity, really (I won't be implementing it in any case).

@ioogithub, could you maybe paste the /etc/fstab from your original Ubuntu installation here?

I can confirm that my original fstab matches what @mvdklip posted above. This is using the latest official Ubuntu image (arm64) for a Raspberry Pi 4.
@mvdklip, thank you for that description. This clarifies a lot. I have been experimenting with this over the past day and it appears that as long as /boot/firmware/cmdline.txt 'root=' matches the label for '/' is /etc/fstab my Pi will boot. This is probably obvious to everyone but I am just learning it now. So I have decided to take @matthijskooijman advice and use PARTUUID= for these two values but this is only a partial solution.
The rpi-clone switch --convert-fstab-to-partuuid does not work for me, either with the default value or any modified UUID values, I always get the error message:
Converting /etc/fstab from device names to PARTUUID
Could not find any mmcblk0 partition names in /etc/fstab, nothing changed.

So I manually changed my fstab to use PARTUUID like this:
PARTUUID=abcd1ab-02    /        ext4   discard,errors=remount-ro       0 1
PARTUUID=abcd1ab-01    /boot/firmware  vfat    defaults        0       1

and /boot/firmware/cmdline.txt:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=abcd1ab-02 rootfstype=ext4 elevator=deadline rootwait fixrtc quiet splash

The problem I have now is that I do not have a way to use rpi-clone to keep this scheme. When I do an rpi-clone, the script will successfully update the fstab file with the new PARTUUID labels however it does not update cmdline.txt with PARTUUID of the / partition. As such it will not boot unless I manually update cmdline.txt manually after every clone. Interestingly, the original script will successfully copy the new PARTUUID to the cloned fstab as will #140 but neither will update cmdline.txt
@mvdklip, do you have an automated way to automatically update cmdline.txt after a clone because I suspect that for ubuntu since it was moved from /boot/cmdline.txt to /boot/firmware/cmdline.txt, rpi-clone just thinks it is a regular file and clones it as it is thus wiping out the change every time an incremental update happens and rendering the clone unbootable.

But interesting that they use labels, that seems quite fragile. What I would suggest to fix this, rather than using fixed device names, is to use PARTUUID (or UUID if you apply #140) and just rely on the rpi-clone code to ensure the PARTUUID is changed during the clone, and fstab and cmdline.txt is updated, since that's how this is designed to work (this probably also applies to @ioogithub's case).

From my reading of #140, this pull request will not fix my issue either because my cmdline.txt is in /boot/firmware/cmdline.txt while your PR updated /boot/armbianEnv.txt. Is this correct? Would it be possible to update #140 so that you update /boot/firmeware/cmdline.txt for Ubuntu as well? I would guess that you can probably use the same or similar code, isn't the file the same as the original but in a different location?

@matthijskooijman I don't think you need to change your PR. I was easily able to fix the problem by changing line 1733
from:
cmdline_txt=${clone}/boot/cmdline.txt
to
cmdline_txt=${clone}/boot/firmware/cmdline.txt
The result is that rpi-clone successfully makes the change. Here is the end of operation status report:
Editing /mnt/clone/boot/firmware/cmdline.txt PARTUUID to use abcdef12
Editing /mnt/clone/etc/fstab PARTUUID to use abcdef12
===============================
Done with clone to /dev/sdb

I have tested several times and the clone boots when inserted into the primary slot, does not boot when attached to the pi as a USB device and is able to update incrementally without any further intervention.
I suspect this will work for Debian and Ubuntu users.
Thank you @mvdklip and @matthijskooijman for taking the time to explain your earlier posts.

The rpi-clone switch --convert-fstab-to-partuuid does not work for me, either with the default value or any modified UUID values, I always get the error message:

I assume this is because rpi-clone does not know about labels, so it only supports converting hardcoded device names to partuuid, not labels.

@matthijskooijman I don't think you need to change your PR. I was easily able to fix the problem by changing line 1733

Right, that seems to be completely unrelated to this PR, though. It might be better done in #140, because even though it is not entirely related to that PR either, it is similar to supporting armbian using a different filename (and the refactoring in there makes it easier). I'll push a commit to there in a minute, would be great if you could test it.

I think this still leaves my original comments:

Detect fstab using labels or uuids and issue a warning about rpi-clone only supporting device names and partuuids.
Add support for converting labels or uuids to partuuids using the convert-fstab-to-partuuid option.

It's not obvious that rpi-clone doesn't support labels and it would help if it would point that out by issuing a warning (point 1 above) and/or offer support for labels in the conversion script. But I guess I will have to make that myself if I'd really want that...

It's not obvious that rpi-clone doesn't support labels nor uuids and it would help if it would point that out by issuing a warning (point 1 above) and/or offer support for labels and/or uuids in the conversion script. But I guess I will have to make that myself if I'd really want that...

Yup. Maybe it's good to create a separate issue for that, at least?

Right, that seems to be completely unrelated to this PR, though. It might be better done in #140, because even though it is not entirely related to that PR either, it is similar to supporting armbian using a different filename (and the refactoring in there makes it easier). I'll push a commit to there in a minute, would be great if you could test it.
Edit: I complete misread "don't" in there, I thought you suggested to change this PR. Oh well, seems good to change the code to support this out of the box in any case, though I'm doubtful these PRs will ever be merged

Well I said don't because I was able to completely fix my issue by simple adding a few characters "/firmware/" to the code. I do not know (yet) how to share my fix with others who may benefit from it via PR other than discussing it here. I see that you added the change to #140. I will test it and let you know the results.
I agree that the changes may not get merged right away however the idea of having a warm swappable sd card clone ready is really interesting. SD Cards die often, even the high quality ones and perhaps even more so in a mini computer application which is constantly writing logs such as a pi or Orange Pi. rpi-clone is a really worthy project and elegant solution. If someone actively takes it over then the work we did will be worthwhile.


Installed check operators do not check against the same input to satisfy multiple conditions

Installed check operators do not check against the same input to satisfy multiple conditions.
For example, give the following code snippet:
<installedcheckoperator type="And" description="Installed Check Operator">
    <installedcheck
        path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
        type="check_directory"
        comparison="version_ge"
        version="6.0.0"
        description="Install check if ASP.NET Core version 6.0.0 or later IS installed" />
    <installedcheck
        path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
        type="check_directory"
        comparison="version_lt"
        version="7.0.0"
        description="Install check if ASP.NET Core less than version 7.0.0 IS installed" />
</installedcheckoperator>

The installed check operator returns true if ASP.NET Core v3.1 and ASP.NET Core v8.0 are installed, even if ASP.NET Core v6.x is not installed.
I expected the installed check operator to return false, since ASP.NET Core v6.x isn't installed.
dni checks each installedcheck condition individually/separately.
In other words, the first condition will be evaluated as true because it will compare against 8.0.0, and the second condition will be evaluated as true because it will compare against 3.1.32.
8.0.0 (the input) is not checked in both installedcheck conditions to determine the result of the parent installedcheckoperator.
Likewise, 3.1.32 (the input) is not checked in both installedcheck conditions to determine the result of the parent installedcheckoperator.

I am confused where 8.0.0 and 3.1.32 comes from. What is in%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App? Copy paste the log from these checks?

Here are the contents of %PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App:

In this case, the existence of these folders indicate that the ASP.NET Core 3.1.32 and ASP.NET Core 8.0.0 runtimes are installed.
Reference: https://learn.microsoft.com/en-us/dotnet/core/install/how-to-detect-installed-versions?pivots=os-windows#check-runtime-versions
I created a dotnetInstaller built pre-requisite installer which is configured to automatically download and install ASP.NET Core 6.0.25 if any ASP.NET Core 6.x runtime isn't detected as already being installed.
However, when ASP.NET Core 6 is not installed, the pre-requisite installer thinks it is.
%TEMP%\dotNetInstallerLog.txt:
2023-12-12 13:41:53	-------------------------------------------------------------------
2023-12-12 13:41:53	dotNetInstaller (DNI) started, version 3.2.2496.0
2023-12-12 13:41:53	Copyright (c) DevAge, Vestris Inc. & Contributors
2023-12-12 13:41:53	Operating system: Windows Server 2022 (x64)
2023-12-12 13:41:53	-------------------------------------------------------------------
2023-12-12 13:41:53	Sequence: install
2023-12-12 13:41:53	Loaded configuration from embedded resource 'RES_CONFIGURATION'
2023-12-12 13:41:53	Loaded schema: version=3.2.2496.0, generator=dotNetInstaller InstallerEditor
<snip>
2023-12-12 13:41:53	Loaded 'download' dialog component 'Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle', source=http://download.visualstudio.microsoft.com/download/pr/1fd87564-6bdb-4123-90dd-26488ec868c9/6c68988c310805bdcbb07b704fbe3e9d/dotnet-hosting-6.0.25-win.exe
2023-12-12 13:41:53	Loaded 'download' configuration 'Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle - Download Components' with 1 file(s)
2023-12-12 13:41:53	Loaded 'directory' installed check 'C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App'
2023-12-12 13:41:53	Loaded 'directory' installed check 'C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App'
2023-12-12 13:41:53	Loaded 'And' installed check operator
2023-12-12 13:41:53	Loaded Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle, display_name='Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle'
<snip>
2023-12-12 13:41:53	-- Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle (display_name='Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle', os_filter_lcid=, os_filter=, os_filter_min=, os_filter_max=, os_type_filter=, processor_architecture_filter=): LOADED
<snip>
2023-12-12 13:41:53	Check value '6.0.25' version no greater or equal match to '3.1.32'
2023-12-12 13:41:53	Check value '6.0.25' version greater or equal match to '8.0.0'
2023-12-12 13:41:53	Check value '7.0.0' version lesser match with '3.1.32'
2023-12-12 13:41:53	-- Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle (Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle): INSTALLED
<snip>

The dotNetInstaller.xml configuration looks similar to this (removed irrelevant attributes):
    <component id="Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle"
                    display_name="Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle">
        <downloaddialog>
            <download componentname="Microsoft ASP.NET Core 6.0.25 - Windows Hosting Bundle" />
        </downloaddialog>
        <installedcheckoperator type="And" description="Installed Check Operator">
            <installedcheck
                path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
                type="check_directory"
                comparison="version_ge"
                version="6.0.25"
                description="Install check if ASP.NET Core - Windows Hosting Bundle version 6.0.0 or later IS installed" />
            <installedcheck
                path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
                type="check_directory"
                comparison="version_lt"
                version="7.0.0"
                description="Install check if ASP.NET Core - Windows Hosting Bundle less than version 7.0.0 IS installed" />
        </installedcheckoperator>
    </component>

Is it missing `Check value '7.0.0' version lesser match with '8.0.0' above? I would check first whether this is by design or some side effect.
Next, it seems to me that you're looking for the inverse comparison, i.e. (3.1.32 >= 6.0.25 && 8.0.0 >= 6.0.25) (false) and (3.1.32 <= 7.0.0 && 8.0.0 <= 7.0.0) (false). Either the check is implemented incorrectly and we need to flip these, or it's implemented correctly and we need another version of it?

Is it missing `Check value '7.0.0' version lesser match with '8.0.0' above?

I don't think having this check matters, because it doesn't seem like there would be a way to use it which would change the expected results.

I would check first whether this is by design or some side effect.

I think this is by design, and so I had previously added the feature request label to this issue.

Next, it seems to me that you're looking for the inverse comparison, i.e. (3.1.32 >= 6.0.25 && 8.0.0 >= 6.0.25) (false) and (3.1.32 <= 7.0.0 && 8.0.0 <= 7.0.0) (false). Either the check is implemented incorrectly and we need to flip these, or it's implemented correctly and we need another version of it?

The issue is that the installed checks aren't evaluated like the && operators as you indicated.
The left side and right side of the operators are evaluated independently.
For example, given the following configuration:
        <installedcheckoperator type="And" description="Installed Check Operator">
            <installedcheck
                path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
                type="check_directory"
                comparison="version_ge"
                version="6.0.25"
                description="Install check if ASP.NET Core - Windows Hosting Bundle version 6.0.0 or later IS installed" />
            <installedcheck
                path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
                type="check_directory"
                comparison="version_lt"
                version="7.0.0"
                description="Install check if ASP.NET Core - Windows Hosting Bundle less than version 7.0.0 IS installed" />
        </installedcheckoperator>

and only the following folders exist in %PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App
3.1.32
8.0.0

then the configuration is evaluated like this
// first installed check:
// enumerate directories in "%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
//     found 3.1.32
//         compare 3.1.32 >= 6.0.25 (false)
//         LOG: Check value '6.0.25' version no greater or equal match to '3.1.32'
//     find next directory
//     found 8.0.0
//         compare 8.0.0 >= 6.0.25 (true)
//         LOG: Check value '6.0.25' version greater or equal match to '8.0.0'
//         return true

// second installed check:
// enumerate directories in "%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
//     found 3.1.32
//         compare 3.1.32 < 7.0.0 (true)
//         LOG: Check value '7.0.0' version lesser match with '3.1.32'
//         return true

// installed check operator
// return true

As you can see, the directories are enumerated twice, independently for each installed check.

Ok, that's correct, there's a version greater than 6.0 (8.0) and there's a version less than 7 (3.1). But we want one version to be greater than 6, and less than 7.
This shows a lot of limitations in the way these checks were designed. I think the cleanest and most generic way to solve this is to add a semver comparison (maybe semver_all and semver_any to allow for multiple combinations?). Thus, we could collapse these checks into one.
<installedcheck
                path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
                type="check_directory"
                comparison="semver_and"
                version=">= 6.0.0, < 7"
                description="Install check if ASP.NET Core - Windows Hosting Bundle version 6.x" />

There's semantic version range syntax like ^6.0.0 used in popular package managers to permit versions from 6.0.0 all the way up to, but not including, the next major version, 7.0.0.
However, the C++ semver parser and comparison code being used doesn't currently support this syntax.
A possible replacement (or addition) could be adapted from the code in https://github.com/easz/cpp-semver which seems to support advanced range syntax using the caret and tilde symbols.
I'm thinking this is a better approach than adding support for semver_and, and the additional parsing of comparison operators.
Instead, maybe we can add support for a comparison type of semver_range.
For example:
<installedcheck
                path="%PROGRAMFILES%\dotnet\shared\Microsoft.AspNetCore.App"
                type="check_directory"
                comparison="semver_range"
                version="^6.0.0"
                description="Install check if ASP.NET Core - Windows Hosting Bundle version 6.x is installed" />

What do you think?

Ah yes, 100%, I forgot about ^, we should support all of the operators like ~, !, etc.


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/42627

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/42881

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/42988

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/43507

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/74994

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/76124

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/76168

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/77581


Added support to addChildren

Added support to add multiple children

Thanks @Joebayld, this is now merged in version 4.2.0 and I've also added unit test for this feature.


Preliquibase with kubernetes

How can I apply preliquibase on kubernetes? I see that script "CREATE SCHEMA IF NOT EXISTS ${spring.liquibase.default-schema};" doesn't executed.

That has nothing to do with kubernetes and everything with your properties and/or environment variables.

Closing this as it is out of scope for this project.


Eden Ring GuideBook displays garbled

This bug occurs in Eden Ring but should be fixed in BCLib ( their author are the same. )
I will create a pull request to fix it later and explain about it.

The Bug Explanation :
The Class BCLib/src/main/java/ru/bclib/util/JsonFactory's method
public static JsonObject getJsonObject(ResourceLocation location)

calls
public InputStreamReader(InputStream in)

which decodes InputStream in by computer system's default charset.
It means potential decoding bugs in some systems, like Chinese-environment Windows( which default charset is cp936 )
Besides, in Eden Ring mod, GuideBook' content depends on resources/assets/edenring/lang/book/en_us.json which includes lines like
            "§8● §lWorld of Eden",

and both § and ● will become garbled.
So the solution is use
public InputStreamReader(InputStream in, Charset cs)

instead of the original.

I have created a pull request. I will be glad to see it merged.

Thank you for your PR

Should work fine since 1.4


x/build: add a Windows ARM64 builder

A builder should be added in support of the Windows/arm64 port #36439
Note: this is independent of #38607 which adds a Windows arm builder.
@golang/release

I have a ARM64 builder now, with a preinstalled gcc for each architecture supported on the machine:

CC @aclements @alexbrainman @jstarks

As mentioned in cl/322655, we occasionally hit a CLOCK_WATCHDOG_TIMEOUT or failure to boot the vm with -smp set higher than 4. I'm still investigating a fix to this.
With -smp 4, it takes us about 33 minutes from VM creation to completion to run a build, which is longer than I'd like. Also, I'd like to use all the resources we're paying for on the a1.metal instances.

Looks like you guys have this sorted now for arm64. My arm builder is running the same 64-bit OS, but simply building for GOARCH=arm GOARM=7 GOOS=windows and testing that. You guys should be able to do the same with better resources than my raspi. So, I'll be decommissioning that shortly, and you can build a new one on AWS as you've done for 64-bit.

@zx2c4 Sounds good. Thanks so much for your assistance! Your help was very useful in getting this set up, and thanks for providing builders in the interim.

Filed #47018 and #47017 to cover some of the remaining work on this buildlet. I'll leave this open until the existing configuration is checked in.


Fix street field in Pickens, SC

The STREET field is a fully qualified street name with thoroughfare type and direction.

D'oh!  Good catch, and with no name-only field for street, that's some strange data needs they have.


Feature: Lazily loading themes to improve startup time

Enable dynamic PGO
Postpone loading other themes to the time user open the theme settings

Validation
How did you test these changes?

[x] Built and ran the app
[ ] Tested the changes for accessibility

Screenshots (optional)
Add screenshots here.

Enable dynamic PGO

Are there any benefits from this change?

This seems to break custom themes, I think we need to load the current selected theme at startup.

Enable dynamic PGO

Are there any benefits from this change?

It can instrument methods and optimize them using profile data at the runtime.

@hez2010 can you see if changing the custom theme adds the selected theme to the end of the list for you?

@hez2010 can you see if changing the custom theme adds a duplicate theme?

Weird. I think I have guarded them here:
https://github.com/files-community/Files/pull/10329/files#diff-d43965edb43d80794b663802fa2b2a4feb4f039c29d8107c2ed2ef42ca5caa4dR97

Need debug to investigate.

Resolved.


Support gitlab!

Hi @ruanyl , we use gitlab now
I add some changes that support gitlab url, basically like Github's url scheme.

Done!

Thanks, it looks great to me 👍


add inlang

The inlang dashboard uses SvelteKit.

Whoops, I think I crashed the CI pipeline by making a subsequent commit while the CI pipeline was modifying some files.

Thanks! How do you actually view the dashboard? Does it require signing in? Linking to the landing page doesn't make much sense if that's written in Next? Are you planning to move the landing page to SvelteKit?

I was about to ask that.
Should I link to the dashboard instead of the landing page since the dashboard requires a login?
The dashboards URL is https://app.inlang.dev.
The git path https://github.com/inlang/inlang/tree/main/apps/dashboard

Then let's add a siteSrc field of https://github.com/inlang/inlang/tree/main/apps/dashboard. Using the dashboard's URL https://app.inlang.dev would be more accurate but the site screenshot wouldn't look nearly as catchy of course. 😄