Update to Catch2 v2.13.7

Description
Update to the latest release of Catch2, version 2.13.7. Downloaded from here. The previous version was Catch v1.12.2 from May 2018 so this is a fairly big leap into the present.
This PR is related to the issue #1897
Tasks

[ ] Tested on Linux
[ ] Tested on Windows
[x] Tested on macOS
[ ] Tested on iOS
[ ] Tested on Android

How to test this PR?
Build tests before and after with macOS to observe the compilation error being fixed.

SFMLBuildMaster: Build this please.

C:\WINDOWS\TEMP\cciREjgJ.s: Fatal error: can't write 233 bytes to section .text of CMakeFiles\test-sfml-system.dir\src\CatchMain.cpp.obj: 'File too big'

This new Catch.h file has about 6000 more lines of code. It appears that one of the jobs is choking on this. One way to reduce file size is to replace the single header version of Catch2 with the project itself so we can use its Catch2::Catch2 target which does not use this single consolidated single header version of Catch2. If we upgrade from CMake 3.8 to 3.14, we can use the following 5 lines to clone and build Catch2 as part of this project. It will live behind a CMake conditional that means it doesn't get cloned or built unless tests are enabled.
include(FetchContent)
FetchContent_Declare(Catch2
    GIT_REPOSITORY "https://github.com/catchorg/Catch2.git"
    GIT_TAG v2.13.7)
FetchContent_MakeAvailable(Catch2)

'File too big'

There's also the option to add -bigobj (or /bigobj for MSVC)

Incidentally, have you measured compile times before and after the Catch2 update?

Here's some build time data from my M1 MacBook Pro. I'm using Makefiles as the build system. Only debug builds since I don't want optimizer speed being factored in. All build products are wiped between runs. Timing done with time command. I'm reporting the real component. Because the master branch does not compile in macOS, the compilation time data is the time until the build system fails and exits so these comparisons are not entirely equivalent. The order in which targets get compiled could effect how quickly it reaches failure.
As of these tests, my branch is commit 0ae124f26c8a68968ed008faafa5c01807691a40 and the master branch is at commit db38696c48605e46e61c6698fe9873c056bb7ddf.
I'm configuring the project with:
cmake .. -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_TEST_SUITE=ON

Type
Time (seconds)

master (make)
31.850s

master (make -j10)
4.822s

update-catch2 (make)
43.627s (including 1.34s to run tests)

update-catch2 (make -j10)
10.862s (including 1.08s to run tests)

I just had the idea to bisect this problem and found that the problem begins with d0ebdc8607d1ce870d037e9f356a72f0e225bb45 which happens to affect how CMake handles macOS architectures. I agree that Pawel's commit is the correct thing to do. I suppose it had a knock-on effect of breaking how we build that old version of Catch2. I still thinking updating Catch2 is the right course of action.

I just had the idea to bisect this problem and found that the problem begins with d0ebdc8 which happens to affect how CMake handles macOS architectures.

I'm not 100% certain, but the "effect" is that before you might have been building for x64 and now are building for arm64 or even both architectures. What if you explicitly set the OSX architecture for the master branch as well?
Either way, the potential discussion that comes from these comparisons are only helpful in a limited way, because slightly longer build times should not be the deciding factor of whether to upgrade the testing framework or not... 😉

Counter-proposal: maybe we should consider doctest instead, it seems to be extremely lightweight on compilation times. Catch2 seems overkill for our testing needs.

@ChrisThrasher Thanks a lot! 🙂
@eXpl0it3r:

Either way, the potential discussion that comes from these comparisons are only helpful in a limited way, because slightly longer build times should not be the deciding factor of whether to upgrade the testing framework or not... 😉

The difference is not slight, but huge (build time increased by 40% and 125%).
But let's ask ourselves this way: what does this new version offer for us? I don't want to be always the skeptic, but upgrading with such a considerable disadvantage should be double-checked. It will also affect CI negatively. Maybe it's possible to disable features we don't need or something?

What if you explicitly set the OSX architecture in both cases to the same architecture?

@eXpl0it3r I tried the following configuration but the build still failed on master for the same reason as before. I also tried aarch64 as the architecture but that failed to even configure, let alone compile.
cmake .. -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_TEST_SUITE=ON -DCMAKE_OSX_ARCHITECTURES=arm64

The difference is not slight, but huge (build time increased by 40% and 125%).

@Bromeon we don't yet know that. Because the master branch fails to compile on M1 Macs with tests enabled, its build necessarily returns sooner than if all targets got built. I'm sure compilation time has increased, but we have no reliable metrics for by how much. Besides, we're talking about tests, not the core library's compilation time increasing.

I would be happy to merge this PR to restore testing on M1 macs, and then create a PR to replace Catch2 with doctest for much faster compilation times

and then create a PR to replace Catch2 with doctest for much faster compilation times

Catch2 version 3 is around the corner which changes their header-only library model into a more conventional library with many .cpp files. This drastically reduces compile times by allowing much of Catch2 to be compiled in parallel and also not have to be recompiled when your test code changes since the new headers will be much smaller. v3 has been in the works for a few years so I'm hopeful it lands in early 2022 so we can take advantage of it soon.

SFMLBuildMaster: Build this please.

and then create a PR to replace Catch2 with doctest for much faster compilation times

Catch2 version 3 is around the corner which changes their header-only library model into a more conventional library with many .cpp files. This drastically reduces compile times by allowing much of Catch2 to be compiled in parallel and also not have to be recompiled when your test code changes since the new headers will be much smaller. v3 has been in the works for a few years so I'm hopeful it lands in early 2022 so we can take advantage of it soon.

...or we could take advantage of doctest today :)

I can compile the master branch with tests if I crosscompile to x86_64 which I am now learning is a thing I can do. The unit tests will still run. I suppose Rosetta 2 is taking care of the translation for me but I digress. Here are updated compile time stats now with both builds actually completing and succeeding. This time I will subtract the time to run unit tests since I don't want those factoring in.
cmake .. -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_TEST_SUITE=ON -DCMAKE_OSX_ARCHITECTURES=x86_64

Type
Time

master (make)
37.6s

master (make -j10)
8.2s

update-catch2 (make)
40.5

update-catch2 (make -j10)
9.3

We're looking at ~10% compile time increases when tests are enabled. These marginal increases are not to be ignored, but I don't think this increase is big enough to warrant sticking to Catch 1.x.

FYI, I'm looking into the macOS x86_64 (Intel) build failure. Might just need some update...
For MinGW, we might consider adding -bigobj to the test build.

While outside the scope of this PR, I wanted to share one way we could entirely remove Catch2's sources from SFML.
https://github.com/ChrisThrasher/SFML/commit/167b2658de9357dd5f531db8d6ff2fce9f5c0948
I've had a lot of success using FetchContent to download CMake projects and add them to the build tree. FetchContent gives us access to a project's CMake target that we can link against instead of relying on their single-header distribution. This may alleviate our MSVC -bigobj issues in the CI pipeline currently. It also does not require users already have Catch2 installed, let alone the correct version.
Because Catch2 is a non-transitive dependency and because it's only downloaded when tests are explicitly enabled, it's safe to add this dependency on a network connection without breaking anyone's workflow. It won't even require we raise the minimum CMake requirement project-wide.

@eXpl0it3r Looks like the issue is with macOS 10.12 not yet supporting C++17's std::uncaught_exceptions. Catch2 has a switch to disable this.
https://github.com/catchorg/Catch2/blob/v2.13.7/docs/configuration.md#c17-toggles
Maybe we enable this for all builds to appease the macOS 10.12 build?

While outside the scope of this PR, I wanted to share one way we could entirely remove Catch2's sources from SFML.

I personally, I have nothing against FetchContent, especially if it's limited to the test only and would prevent us from adding additional compiler flags.
It might even be a viable option to manage our dependencies for Windows & macOS, so we can get rid of binary blobs.

Looks like the issue is with macOS 10.11 not yet supporting C++17's std::uncaught_exceptions. Catch2 has a switch to disable this.

Well, that's the fun about it. The Mac Mini is actually already running Big Sur...
Looking into updating to Monterey, but I have a feeling, that it's some toolchain mix up, somewhere...

SFMLBuildMaster: Build this please.

I think, I've figured out why macOS is failing, because we set the minimum SDK version to 10.11 in the Buildbot Script: https://github.com/SFML/SFML-Buildbot/blob/master/buildfactories.py#L57
Will check tomorrow to get this updated.

SFMLBuildMaster: Build this please.

SFMLBuildMaster: Build this please.

Yesterday I discovered another way to improve compile times. test/CatchMain.cpp is compiled four times, once for every test executable. If you only compile it once instead, we can get even more compile time improvements. Here's how I did it:
https://github.com/ChrisThrasher/SFML/commit/ae9801dd24881304e12367ff85d5bb41b5ee3f8e
Here's my config command that I ran in a clean build directory:
cmake .. -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_TEST_SUITE=ON

Here's some data (minus time to run tests):

Type
Time

update-catch2 (make)
38.6s

update-catch2 (make -j10)
8.2s

ae9801dd24881304e12367ff85d5bb41b5ee3f8e (make)
31.5s

ae9801dd24881304e12367ff85d5bb41b5ee3f8e (make -j10)
5.4s

This makes the build time even quicker than before updating Catch2! I'm happy to submit this later as a different PR but I wanted to mention it now in case y'all wanted to me to add this commit to the current PR. Thanks again for spending so much time reviewing this.

SFMLBuildMaster: Build this please.

Yesterday I discovered another way to improve compile times. test/CatchMain.cpp is compiled four times, once for every test executable. If you only compile it once instead, we can get even more compile time improvements. Here's how I did it:
ChrisThrasher@ae9801d
Here's my config command that I ran in a clean build directory:
cmake .. -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_TEST_SUITE=ON

Here's some data (minus time to run tests):
Type	Time
update-catch2 (make)	38.6s
update-catch2 (make -j10)	8.2s
ae9801d (make)	31.5s
ae9801d (make -j10)	5.4s
This makes the build time even quicker than before updating Catch2! I'm happy to submit this later as a different PR but I wanted to mention it now in case y'all wanted to me to add this commit to the current PR. Thanks again for spending so much time reviewing this.

That's a great discovery, thanks! I would personally not mind having this improvement as part of this PR, but up to you if you want to keep things separate.

Now that the macOS part is fixed by upping the minimum SDK version to 10.12, the only remaining issue with the current state of the PR is the failing build on the MinGW compiler.
I currently see the two options:

Add -bigobj when building the test suite
Switch to FetchContent

Are there any other options?
For me personally, both of them are acceptable, so I'd leave it up to you, which way you think makes more sense.

Yesterday I discovered another way to improve compile times. test/CatchMain.cpp is compiled four times, once for every test executable. If you only compile it once instead, we can get even more compile time improvements. Here's how I did it:
ChrisThrasher@ae9801d
Here's my config command that I ran in a clean build directory:
cmake .. -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_TEST_SUITE=ON

Here's some data (minus time to run tests):
Type	Time
update-catch2 (make)	38.6s
update-catch2 (make -j10)	8.2s
ae9801d (make)	31.5s
ae9801d (make -j10)	5.4s
This makes the build time even quicker than before updating Catch2! I'm happy to submit this later as a different PR but I wanted to mention it now in case y'all wanted to me to add this commit to the current PR. Thanks again for spending so much time reviewing this.

That's a great discovery, thanks! I would personally not mind having this improvement as part of this PR, but up to you if you want to keep things separate.

I'm glad you liked those extra commits! I added those changes into this branch. Now, the first commit removes the extra compilations of CatchMain.cpp and the second adds FetchContent to grab Catch2 v2.13.7. I removed the diffs that modified catch.hpp so that there wouldn't be tens of thousands of extra lines changed in this PR just to get to the same result. Now that file simply gets removed instead of modified.

ose extra commits! I added those changes into this branch. Now, the first commit removes the extra compilations of CatchMain.cpp and the

As you wish. I could also just merge #1916 before this PR, then you can merge master into this PR. It would be nice to have smaller atomic changes rather than a big one :)

It would be nice to have smaller atomic changes rather than a big one :)

We do have small atomic changes in the form of two commits. I can't think of any sensible way to divide these 2 commits into more granular atomic changes. Putting both in one PR speeds things up by not making us wait so long for more pipelines to be approved and run. You're always welcome to cherry pick the first commit into the trunk branch though.

It would be nice to have smaller atomic changes rather than a big one :)

We do have small atomic changes in the form of two small, atomic commits. I can't think of any sensible way to divide these 2 commits into more granular atomic changes. Putting both in one PR speeds things up by not making us wait so long for more pipelines to be approved and run. You're always welcome to cherry pick the first commit into the trunk branch though.

If you re-open #1916 I'll be able to review and approve it -- our workflow doesn't really endorse merging directly into master without a PR.

If you re-open #1916 I'll be able to review and approve it

I reopened #1916 to maintain having one commit per pull request.

#1916 couldn't be reopened so #1918 was created. This MR depends on #1918 being merged first.

SFMLBuildMaster: Build this please.

C:/Dev/MinGW64-Win32SEH810r0/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles\sfml-test-main.dir\src\CatchMain.cpp.obj: too many sections (32837)
C:\WINDOWS\TEMP\cc7z9Kae.s: Assembler messages:
C:\WINDOWS\TEMP\cc7z9Kae.s: Fatal error: can't write 233 bytes to section .text of CMakeFiles\sfml-test-main.dir\src\CatchMain.cpp.obj: 'File too big'
C:/Dev/MinGW64-Win32SEH810r0/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles\sfml-test-main.dir\src\CatchMain.cpp.obj: too many sections (32837)
C:\WINDOWS\TEMP\cc7z9Kae.s: Fatal error: can't close CMakeFiles\sfml-test-main.dir\src\CatchMain.cpp.obj: File too big

Looks like we still need -bigobj even when not using the single header version of Catch2.

Can you try to add the linker (or compiler?) option -mbig-obj for MinGW builds in the CMake script for the test builds?

Can you try to add the linker (or compiler?) option -mbig-obj for MinGW builds in the CMake script for the test builds?

Are all CI config settings stored within the repo or are there some CI jobs whose configuration is not version controlled?

Are all CI config settings stored within the repo or are there some CI jobs whose configuration is not version controlled?

This wouldn't be a change to the CI config, because it would affect any/all MinGW installations, thus it would need to be in SFML's CMake for the test build.
Let's first see however, how the FetchContent part works out. 🙂

SFMLBuildMaster: Build this please.

SFMLBuildMaster: Build this please.

The MinGW builds succeeded! A Window job was failing on an OpenGL example. I saw Vittorio fixed that so I rebased this branch to include that commit. I expect the whole pipeline to pass after this.

SFMLBuildMaster: Build this please.

We finally have a successful CI pipeline!

Thanks for the continued effort in getting the CI to accept the change! 😄


Doesn't seem to work

I tried doing a test run with "python video_quality_enhancer.py" (after doing the video_quality_enhancer.conf change).  I see something wrong with the output then I force quit the python script.
2024-06-09 01:40:16 INFO     video_transcode. Starting transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:40:35 INFO     video_transcode. Finished transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:40:40 INFO     video_transcode. Starting transcoding (2/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:40:54 WARNING  video_transcode. Transcoding proccess for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:40:54 INFO     video_transcode. Starting Single-pass for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:41:09 WARNING  video_transcode. Failed Single-pass for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:41:28 INFO     video_transcode. Starting transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:41:43 INFO     video_transcode. Finished transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:41:48 INFO     video_transcode. Starting transcoding (2/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:42:02 WARNING  video_transcode. Transcoding proccess for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:42:02 INFO     video_transcode. Starting Single-pass for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:42:15 WARNING  video_transcode. Failed Single-pass for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_2163.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:42:15 INFO     check_if_videos_needs_transcoding. /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>needs to be transcoded
2024-06-09 01:42:15 INFO     check_if_videos_needs_transcoding. /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>needs to be transcoded
2024-06-09 01:42:29 INFO     video_transcode. Starting transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:42:44 INFO     video_transcode. Finished transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:42:49 INFO     video_transcode. Starting transcoding (2/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:43:04 WARNING  video_transcode. Transcoding proccess for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:43:04 INFO     video_transcode. Starting Single-pass for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:43:20 WARNING  video_transcode. Failed Single-pass for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:43:34 INFO     video_transcode. Starting transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:43:48 INFO     video_transcode. Finished transcoding (1/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:43:53 INFO     video_transcode. Starting transcoding (2/2) for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.
2024-06-09 01:44:07 WARNING  video_transcode. Transcoding proccess for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>2024-06-09 01:44:07 INFO     video_transcode. Starting Single-pass for: /volume1/photo/my_photo/00 - Miscellaneous/2016/IMG_3191.mp4 to /volume1/photo/my_photo/00 -<EMAIL_ADDRESS>^C^C^C^C^Cffmpeg: i965_encoder.c:1692: intel_enc_hw_context_init: Assertion `encoder_context->mfc_context' failed.

When I do an 'ls -la' afterwards I see 0 byte files (i.e. some of my transcoded videos are now corrupted):
root@DS220:/volume1/photo/my_photo/00 -<EMAIL_ADDRESS>ls -la
total 616
drwxrwxrwx+ 1 PhotoStation PhotoStation   2872 Jan 20 12:31 .
drwxrwxrwx+ 1 root         root          29400 Jan 20 14:05 ..
drwxrwxrwx+ 1 root         root           1040 Jan 20 12:09 @eaDir
-rwxrwxrwx+ 1 root         root            473 Jan 20 11:25 SYNOINDEX_MEDIA_INFO
-rwxrwxrwx+ 1 root         root             80 Jan 20 12:31 SYNOINDEX_VIDEO_METADATA
lrwxrwxrwx  1 root         root             18 Oct 13  2020 SYNOPHOTO_FILM_H264.mp4 -> ../../IMG_2163.mp4
-rwxrwxrwx  1 PhotoStation PhotoStation      0 Jun  9 01:42 SYNOPHOTO_FILM_H.mp4
-rwxrwxrwx  1 PhotoStation PhotoStation 158528 Oct 13  2020 SYNOPHOTO_FILM_L.mp4
-rwxrwxrwx  1 PhotoStation PhotoStation      0 Jun  9 01:41 SYNOPHOTO_FILM_M.mp4
-rwxrwxrwx  1 PhotoStation PhotoStation 144564 Oct 13  2020 SYNOPHOTO_FILM_MOBILE.mp4
-rwxrwxrwx  1 PhotoStation PhotoStation  24779 Oct 13  2020 SYNOPHOTO_THUMB_B.jpg
-rwxrwxrwx  1 PhotoStation PhotoStation  72019 Oct 13  2020 SYNOPHOTO_THUMB_L.jpg
-rwxrwxrwx  1 PhotoStation PhotoStation  20455 Oct 13  2020 SYNOPHOTO_THUMB_M.jpg
-rwxrwxrwx  1 PhotoStation PhotoStation   2214 Oct 13  2020 SYNOPHOTO_THUMB_S.jpg
-rw-r--r--  1 root         root          13380 Jan 20 12:31 SYNOPHOTO_THUMB_SM.jpg
-rwxrwxrwx  1 PhotoStation PhotoStation  72019 Oct 13  2020 SYNOPHOTO_THUMB_XL.jpg
root@DS220:/volume1/photo/my_photo/00 -<EMAIL_ADDRESS>
... Doesn't work for me.  Let me know please what info you need, if you would like to troubleshoot.

According to https://superuser.com/questions/1462402/ffmpeg-not-working-using-h264-vaapi, this could solve the problem:
apt install intel-media-va-driver-non-free i965-va-driver-shaders

I think it is worth a try, but I have no clue how to add this line to the temporarily created docker container before ffmpeg begins decoding / encoding.

I made this workaround image which seems to be working for me so far.  What I did was:

Created this dockerfile:

# Use the original image as the base image
FROM jrottenberg/ffmpeg:5-vaapi

# Update the package list and install the required packages
RUN apt-get update && apt-get install -y intel-media-va-driver-non-free i965-va-driver-shaders && apt-get clean

Run this command docker build -t sam/ffmpeg:5-vaapi .


shuffle the table splits capture order

Is your feature request related to a problem? Please describe.
In MySqlSnapshotSplitAssigner, the getNext will finish the remaining splits of the current table before split the next table,
this might limit the sink side speed if the stream job hope to keyby the table identifer.
Describe the solution you'd like
Add an option to enable shuffle the table splits capture order.
If we have 4 tables, each has 3 splits,
In normal case, the capture order is:
t1.1, t1.2, t1.3, t2.1, t2.2, t2.3, t3.1, t3.2, t3.3
after the shuffle enabled, the capture order will be:
t1.1, t2.1, t3.1, t1.2, t2.2, t3.2, t1.3, t2.3, t3.3

I'm very interested in this task. Can you assign it to me

@leonardBang pls help to assign this issue to @fuyun2024 , I can help to review when it's done.

Nice idea @fuyun2024 @zhjwpku , I also notice one issue that we should split the chunks asynchronously but we're splitting blocking now, would you like to improve this too?

Yes, I also noticed this problem. Next, I submitted two PR to solve these two problems. @leonardBang @zhjwpku I'm very glad that the two teachers can help me review the code.

Thanks @fuyun2024 for taking this, could you create an issue for the later issue and then open the PR?

OK, I created a new issue #915

Closing this issue because it was created before version 2.3.0 (2022-11-10). Please try the latest version of Flink CDC to see if the issue has been resolved. If the issue is still valid, kindly report it on Apache Jira under project Flink with component tag Flink CDC. Thank you!


Example application deployment

User Need
As a developer
I want a template to deploy an app to Cloud Platform including various frequently required tools
so that we as a team deploy apps in a standardised way
Value
Having an agreed standard way to deploy an app using various tools improves delivery times and security posture.
Functional Requirements:

Include set up for using standard tools: flask, auth0, etc

Non-Functional Requirements:

Acceptance Criteria:

Notes:

Duplicate


Write message data in ros2 conversion

Prior to this commit, the actual data portion of ros2 messages out of
sqlite bags was not written to converted mcap files, resulting in nearly
empty files that still had correct message counts.


AppServerService setting in SAP system field seems to be ignored.

Hi there,
I've tried following this page to configure a "Call SAP Function (V2)" step in a Power Automate Cloud Flow, but from what I can see the AppServerService setting in the JSON provided to "SAP System" doesn't seem to be listened to. I am trying to connect to a SAP Application Server running on port 3200, but the connection always defaults to 3300. I'm grasping at straws a bit, but any chance the setting name is incorrect?

Any help would be appreciated.
Christmas Cheers,
John

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

ID: 3ef4a976-e6e1-8ce4-d1bb-4069becb1b29
Version Independent ID: 3ef4a976-e6e1-8ce4-d1bb-4069becb1b29
Content: Create an environment variable with SAP connection parameters (preview) - Power Automate
Content Source: articles/sap-integration/env-variables-connection-refs.md
Service: power-automate
Sub-service: cloud-flow
GitHub Login: @EllenWehrle
Microsoft Alias: ellenwehrle

Quick update: I'm obviously a bit new at SAP, and have just realised that 32* ports are for the SAP GUI tool, while 33* ports are default for Gateway/RFC calls. So it makes sense to default to 3300. I figured this out after I used a port proxy to redirect 3300->3200 and SAP just choked on the JSON input.
Possibly update the document to state 33* is the expected ports for SAP RFC communication?

Hi John, your feedback is important to us! I will have the engineers on my team review, and we will make updates to the documentation accordingly. I will keep you updated. Thanks, and happy new year!

Quick update: I'm obviously a bit new at SAP, and have just realised that 32* ports are for the SAP GUI tool, while 33* ports are default for Gateway/RFC calls. So it makes sense to default to 3300. I figured this out after I used a port proxy to redirect 3300->3200 and SAP just choked on the JSON input. Possibly update the document to state 33* is the expected ports for SAP RFC communication?

@john-thompson2
You will see the information added soon. Thanks!


Audio Feature Suggestion

I like the extension, but sometimes I'm not looking at my computer when the timer runs out, and so I don't see the desktop notification. I would like to request a feature that would allow me to select an audible tone to match the desktop notification. If I could have anything I wanted, I'd like the option to tie the audible tone into the audio theme currently selected on my account.
Regardless, it's an awesome little extension, and I appreciate your work.

Hi! sound notifications were added in version 5.1 ! (TODAY) , there is only one sound, I might add more sound in the future


Using chained search or _filter in query with _sort and _count breaks expected sorting.

Hello again,
Background
I have been doing a lot of testing recently and came across this issue while learning chained search and _filter in the standard.
All testing here was done against a Synthea dataset.
I initially had a query with the following parameters.
   {
        subject: ref,
        _count: 20,
        category: 'BG,CG,CH,CP,GE,HM,IMM,LAB,MB,MCB,MYC,PAR,PAT,PF,SR,TX,VR,URN',
        status: 'final',
        _offset: 0,
        _sort: -date,
        _total: accurate
    }

This would yield a list of DiagnosticReport resources presorted by the date time in descending order.
I then tried filtering with a chained search like so
   {
        subject: ref,
        _count: 20,
        category: 'BG,CG,CH,CP,GE,HM,IMM,LAB,MB,MCB,MYC,PAR,PAT,PF,SR,TX,VR,URN',
        status: 'final',
        'result:Observation.category': 'http://terminology.hl7.org/CodeSystem/observation-category|laboratory',
        _offset: 0,
        _sort: -date,
        _total: accurate
    }

Now, each block of 20 resource instances are sorted by the date time in descending order (possibly because of a sorting function after the query), but the global sorting is no longer valid.
Meaning, if I set the _offset to 20, the next page of results does not appear to match the expected order.
No difference was spotted with the usage of _filter
   {
        subject: ref,
        _count: 20,
        category: 'BG,CG,CH,CP,GE,HM,IMM,LAB,MB,MCB,MYC,PAR,PAT,PF,SR,TX,VR,URN',
        status: 'final',
        _filter: 'result.category eq http://terminology.hl7.org/CodeSystem/observation-category|laboratory',
        _offset: 0,
        _sort: -date,
        _total: accurate
    }

In fact, the results and sorting are comparable.
Meaning,

Imaging you have a some list L [ R1(2008/10/11), R2(2006/10/11), R3(2007/10/11), R4(2008/10/11)]
It sorted like L1 [ R1(2008/10/11), R4(2008/10/11)] and L2 [R3(2007/10/11), R2(2006/10/11)]
With chained search or _filter, the new sorting is more like L1 [ R1(2008/10/11), R3(2007/10/11)] and L2 [R4(2008/10/11), R2(2006/10/11)] during pagination.

Raw FHIR Query
subject=Patient%2F4b7f03ae-6696-4e73-9ca7-ba6b3a201fce&_count=20&category=BG%2CCG%2CCH%2CCP%2CGE%2CHM%2CIMM%2CLAB%2CMB%2CMCB%2CMYC%2CPAR%2CPAT%2CPF%2CSR%2CTX%2CVR%2CURN&status=final&result%3AObservation.category%3Anot=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fobservation-category%7Claboratory&_offset=0&_sort=-date&_total=accurate

Sample Synthea case
Rozella39_Mertz280_ef167059-cef0-12c4-49db-993ca3a20c01.zip
Images
Without chained search

With chained search

I expected the survey entries to drop but the order to remain the same.
Possible Scenarios

Sorting is done after isolating n count of entries from unsorted match pool.
Sorting is applied globally but perhaps the chained search returns the final match pool unsorted.
Other?

I will need to find out the exact SQL query pushed to the database to get an idea of how the FHIR query is getting transformed. Maybe it is as simple as a subtle order of operations issue.
I will try to report back what I find later in the week, but reporting issue now in case someone with experience recognizes the issue right away.
Notes

I tried using _query and _has for the filtering. _has may be wrong for what I was trying to do, but both of these special parameters are not recognized by the server.

@luissantosHCIT I think I've at least figured out the immediate cause for this issue: it's looking like a tricky interaction between search queries with explicit JOINs.  Note that chained search does have these JOINs, but normal token search does not: despite using a lookup table, token queries use EXISTS() syntax — an implicit join.
Specifically, when the search query has explicit JOINs, we add e.g. DISTINCT ON ("DiagnosticReport"."id") to ensure that the search results can be correctly paginated in the presence of duplicate matches.  To illustrate this, consider a resource like this:
{
  "resourceType": "DiagnosticReport",
  "status": "final",
  "code": { "text": "Metabolic panel" },
  "result": [
    { "reference": "Observation/1" },
    { "reference": "Observation/2" }
  ]
}

If both linked Observation resources have status = 'final', then a chained search like DiagnosticReport?result.status=final would match the resource above twice through two different reference chains, resulting in two rows corresponding to the same DiagnosticReport search result from Postgres.  Without DISTINCT ON, the server would need to remove duplicates post hoc, resulting in potentially receiving fewer results than the specified _count.  With DISTINCT ON, the server can guarantee the page size, but Postgres requires the ORDER BY to begin with the same columns specified for DISTINCT ON.  This results in a SQL query like the following:
SELECT
  DISTINCT ON ("DiagnosticReport"."id") "DiagnosticReport"."id",
  "DiagnosticReport"."content"
FROM
  "DiagnosticReport"
  LEFT JOIN "DiagnosticReport_References" AS "T1" ON (
    "T1"."resourceId" = "DiagnosticReport"."id"
    AND "T1"."code" = 'result'
  )
  LEFT JOIN "Observation" AS "T2" ON "T2"."id" = "T1"."targetId"
WHERE
  (
    "DiagnosticReport"."deleted" = false
    AND (
      NOT (
        EXISTS(
          SELECT
            "Observation_Token"."resourceId"
          FROM
            "Observation_Token"
          WHERE
            (
              "T2"."id" = "Observation_Token"."resourceId"
              AND "Observation_Token"."code" = 'category'
              AND (
                "Observation_Token"."system" = 'http://terminology.hl7.org/CodeSystem/observation-category'
                AND "Observation_Token"."value" = 'laboratory'
              )
            )
        )
      )
      AND "DiagnosticReport"."status" = 'final'
    )
  )
ORDER BY
  "DiagnosticReport"."id",
  "DiagnosticReport"."date" DESC
LIMIT
  21;

This obviously results in the incorrect sort order you're seeing: the date sort is pushed behind id (which is an unsortable V4 UUID)

We did an initial evaluation of some possible alternatives, but unfortunately none are looking very promising yet:

Switching out DISTINCT ON ("DiagnosticReport"."id") for GROUP BY ("DiagnosticReport".id") makes the query ~300x slower
Trying to push the JOINs down into the EXISTS() subquery changes the semantics of the search, and matches many more resources than intended (i.e. "find me all reports that don't have a laboratory observation" rather than "find me reports that have an observation that isn't laboratory")

Good morning,
Thank you for your detail explanation and investigation.
Here is a few ideas:

Change the query structure from a single main query to a wrapping query where the requested sort is done. The wrapping query contains the main query inside. This should have a complexity of the original query + some time complexity for ordering the current cursor.

SELECT * FROM (
  SELECT
    DISTINCT ON ("DiagnosticReport"."id") "DiagnosticReport"."id",
    "DiagnosticReport"."content"
  FROM
    "DiagnosticReport"
    LEFT JOIN "DiagnosticReport_References" AS "T1" ON (
      "T1"."resourceId" = "DiagnosticReport"."id"
      AND "T1"."code" = 'result'
    )
    LEFT JOIN "Observation" AS "T2" ON "T2"."id" = "T1"."targetId"
  WHERE
    (
      "DiagnosticReport"."deleted" = false
      AND (
        NOT (
          EXISTS(
            SELECT
              "Observation_Token"."resourceId"
            FROM
              "Observation_Token"
            WHERE
              (
                "T2"."id" = "Observation_Token"."resourceId"
                AND "Observation_Token"."code" = 'category'
                AND (
                  "Observation_Token"."system" = 'http://terminology.hl7.org/CodeSystem/observation-category'
                  AND "Observation_Token"."value" = 'laboratory'
                )
              )
          )
        )
        AND "DiagnosticReport"."status" = 'final'
      )
    )
  ORDER BY
    "DiagnosticReport"."id"
  ) AS ds
ORDER BY
ds."date" DESC
LIMIT
  21;

Another possibility could be to break this down into a stored procedure in which we first query the main dataset, alias it as a table, and then do filtering of the data into a new cursor. Return the final cursor. The application (the server in this case) would only need to request the SQL engine process the named procedure on the given parameters. Although, this could be more easily said than done. The more I look at the FHIR standard the more complicated these queries could become. I don't remember if we would be limited to primitive types for parameters or if we could pass a JSON object. Does Postgres allow for stored procedures and complex parameter passing?

//Pseudo code here
sql.execute('sorted_search {param}...', param, ...);

Note: It's been a few years since I have had to do SQL queries and I am not familiar with the particular differences of the Postgres engine to other engines like Microsoft SQL or SQLite. My prior experience has been MS SQL, SQLite, Visual FoxPro/DB2.
I am assuming here that keeping these ordering operations on the SQL engine is going to be more performant than doing any filtering or ordering on the receiving program (JS in this case).
I won't be looking at the server codebase until tomorrow, but let me know if these are helpful. I will continue to think about other ways to address this.

@luissantosHCIT We did test out the SELECT(subquery) solution you mentioned later in the day: unfortunately its query plan was equivalent to the GROUP BY solution and too slow to be useful in general.  The stored procedure idea sounds interesting, and I'll do some reading in that direction, but I agree with your assessment that the complexity of FHIR search might make such a solution more difficult.  Thank you for the follow-up and excellent suggestions!  I'm also currently trying to evaluate if the EXISTS()+NOT EXISTS() idea might be a reasonable compromise between performance and correctness

Hi @mattwiller, I was running a few query tests and reviewing materials on SQL queries.
I have been reviewing your PR as well.
In that process, I arrived to an idea.
We want to have unique id rows for the left table which is the DiagnosticReport table in this case.
We also want to be able to order these rows by some combination of rows (date in this case).
Distinct collides with the order by because it requires that we order by the column specified in the distinct call.
Subquery increases the performance penalty because we want to drop off as many rows as possible before sorting.
What if we just get rid of the DISTINCT call altogether?
Since we have LEFT JOINS for the extra tables, shouldn't the DiagnosticReport.id be unique already?
The other tables need to match to our left table.
We shouldn't be getting nulls in the id field either which I suspect you would with a RIGHT JOIN.
Example query
SELECT
    "DiagnosticReport"."id",
    "DiagnosticReport"."content"
  FROM
    "DiagnosticReport"
    LEFT JOIN "DiagnosticReport_References" AS "T1" ON (
      "T1"."resourceId" = "DiagnosticReport"."id"
      AND "T1"."code" = 'result'
    )
    LEFT JOIN "Observation" AS "T2" ON "T2"."id" = "T1"."targetId"
  WHERE
    (
      "DiagnosticReport"."deleted" = false
      AND (
        NOT (
          EXISTS(
            SELECT
              "Observation_Token"."resourceId"
            FROM
              "Observation_Token"
            WHERE
              (
                "T2"."id" = "Observation_Token"."resourceId"
                AND "Observation_Token"."code" = 'category'
                AND (
                  "Observation_Token"."system" = 'http://terminology.hl7.org/CodeSystem/observation-category'
                  AND "Observation_Token"."value" = 'laboratory'
                )
              )
          )
        )
        AND "DiagnosticReport"."status" = 'final'
      )
    )
  ORDER BY
  "DiagnosticReport"."date" DESC
  LIMIT 21;

Planner:

Visual Inspection for Uniqueness for Synthetic Data:

The dates looked properly sorted too.
If time permits tomorrow, I will see if I can drop the distinct call from my local copy of the server and confirm that date appears sorted and unique on the UI I was designing.

@luissantosHCIT I believe the DISTINCT is necessary to prevent duplicates where the same resource in the left table has multiple matching chains to the right table.  For example, consider the simple chained search query Patient?link:Patient.name=Sam.  If a patient has multiple linked patient records, both named "Sam", the SQL you've proposed looks like it would return two different rows with the same leftmost resource ID but possibly different JOINed columns:
SELECT
    "Patient"."id",
    "Patient"."link",
    "T2"."id"
  FROM
    "Patient"
    LEFT JOIN "Patient_References" AS "T1" ON (
      "T1"."resourceId" = "Patient"."id"
      AND "T1"."code" = 'link'
    )
    LEFT JOIN "Patient" AS "T2" ON "T2"."id" = "T1"."targetId"
  WHERE
    (
      "Patient"."deleted" = false
      AND (
        EXISTS(
          SELECT
            1
          FROM
            "HumanName"
          WHERE
            (
              "T2"."id" = "HumanName"."resourceId"
              AND to_tsvector('simple', "HumanName"."given") @@ to_tsquery('simple', 'sam:*')
            )
        )
      )
    )
  ORDER BY
  "Patient"."birthdate" DESC
  LIMIT 21;

-[ RECORD 1 ]-------------------------------------------------------------------------------------
id   | 611a695b-3f34-4142-b8f9-9193be6618da
link | {Patient/e41c3c2e-8aa8-4c6f-a35c-20c0de6a0a37,Patient/5e82c2ed-6a7b-4f66-815c-fa69a534263a}
id   | e41c3c2e-8aa8-4c6f-a35c-20c0de6a0a37
-[ RECORD 2 ]-------------------------------------------------------------------------------------
id   | 611a695b-3f34-4142-b8f9-9193be6618da
link | {Patient/e41c3c2e-8aa8-4c6f-a35c-20c0de6a0a37,Patient/5e82c2ed-6a7b-4f66-815c-fa69a534263a}
id   | 5e82c2ed-6a7b-4f66-815c-fa69a534263a

These duplicates are what the DISTINCT was originally added to prevent, so I suspect it may be necessary in this case

Hmm, you are right. I did not think about searching for a patient like that.
I see what you mean with self referencing during search as opposed to very specific queries like my original query.
subject=Patient/4b7f03ae-6696-4e73-9ca7-ba6b3a201fce&_count=20&category=BG,CG,CH,CP,GE,HM,IMM,LAB,MB,MCB,MYC,PAR,PAT,PF,SR,TX,VR,URN&status=final&result:Observation.category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory&_offset=0&_sort=-date&_total=accurate
I am very annoyed with the need to order by on id and that somehow making all subsequent ordering criteria get ignored.
That or sacrifice performance characteristics or sacrifice simplicity.
Haha.
Do you have sample bundles that you could share showcasing the example query in your comment?
I'll keep thinking about this problem.

P.S.
Here's a modified version of the sample query you showed at the beginning.
SELECT
    DISTINCT ON ("DiagnosticReport"."date", "DiagnosticReport"."id")
    "DiagnosticReport"."id",
    "DiagnosticReport"."content"
  FROM
    "DiagnosticReport"
    LEFT JOIN "DiagnosticReport_References" AS "T1" ON (
      "T1"."resourceId" = "DiagnosticReport"."id"
      AND "T1"."code" = 'result'
    )
    LEFT JOIN "Observation" AS "T2" ON "T2"."id" = "T1"."targetId"
  WHERE
    (
      "DiagnosticReport"."deleted" = false
      AND (
        NOT (
          EXISTS(
            SELECT
              "Observation_Token"."resourceId"
            FROM
              "Observation_Token"
            WHERE
              (
                "T2"."id" = "Observation_Token"."resourceId"
                AND "Observation_Token"."code" = 'category'
                AND (
                  "Observation_Token"."system" = 'http://terminology.hl7.org/CodeSystem/observation-category'
                  AND "Observation_Token"."value" = 'laboratory'
                )
              )
          )
        )
        AND "DiagnosticReport"."status" = 'final'
      )
    )
  ORDER BY
  "DiagnosticReport"."date" DESC,
  "DiagnosticReport"."id"
  LIMIT 21;

It just came to me to try expanding the distinct set of keys to include the ordering criteria keys and changing their order.
Assumptions:

The LEFT JOIN will guarantee that either we have unique rows to begin with or duplicate the exact contents of the left table.
Switching the order in distinct does not require a change in order in the return columns.
Switching the order in distinct allows sorting by specified criteria before hitting the breaking id criteria.
Since duplicates on left table are the exact same, distinct on columns from that table should collapse rows to one row.
Sorting should be done on left table columns only.

These are the results with my limited test data:

What do you think?

@luissantosHCIT I already have a PR open with the EXISTS() fix as discussed previously (linked above); does that duplicate your work?

Let me review your PR again, but from what I recall, it should be a different approach meant to keep the complexity of the query low (as close to original as possible). The idea was to avoid adding more clause types and instead expand the fields passed to the distinct clause. The performance is comparable to the original query since all I do is add the sort fields to distinct before the id field. It expands on prior work I think you did to include the distinct clause with a small refactor. Per my testing, it is working flawlessly. The last query idea I posted reflects the end result of my changes.
If possible, review the commit autolinked to this post and see if you like what I cooked. Of course, I leave the final decision as to which approach to use to you.
https://github.com/luissantosHCIT/medplum/commit/da214a31df38926ccf96bb87c6bb88c47c927a9a

@luissantosHCIT Excellent, thanks for the clarification!  Would you mind creating a PR for your feature branch, so that I can give it a review?

I loaded my local machine with ~2,000 synthetic Patient resources, alongside their associated DiagnosticReport (150k) and Observation (550k) resources in order to test out these two approaches at some kind of scale and get a sense of how Postgres will perform.
For testing, I used the example query from my previous PR:
DiagosticReport?&_sort=-date&_count=1000&status=final&result:Observation.category:not=http://terminology.hl7.org/CodeSystem/observation-category|laboratory

The EXISTS() query produces a multiply-nested loop query plan with reasonable performance at this scale:
EXPLAIN (ANALYZE,BUFFERS)
SELECT
  "DiagnosticReport"."id",
  "DiagnosticReport"."content"
FROM "DiagnosticReport"
WHERE (
  "DiagnosticReport"."deleted" = false
  AND "DiagnosticReport"."status" = 'final'
  AND EXISTS(
    SELECT 1
    FROM "DiagnosticReport_References"
      LEFT JOIN "Observation" AS "T1" ON "T1"."id" = "DiagnosticReport_References"."targetId"
    WHERE (
      "DiagnosticReport_References"."resourceId" = "DiagnosticReport"."id"
      AND "DiagnosticReport_References"."code" = 'result'
      AND "T1"."id" IS NOT NULL
      AND NOT EXISTS(
        SELECT 1
        FROM "Observation_Token"
        WHERE (
          "T1"."id" = "Observation_Token"."resourceId"
          AND "Observation_Token"."code" = 'category'
          AND "Observation_Token"."system" = 'http://terminology.hl7.org/CodeSystem/observation-category'
          AND "Observation_Token"."value" = 'laboratory'
        )
      )
    )
  )
)
ORDER BY
  "DiagnosticReport"."date" DESC
LIMIT 1001;
--
Limit  (cost=1001.73..5771.67 rows=1001 width=401) (actual time=31.016..108.591 rows=1001 loops=1)
   Buffers: shared hit=77479 read=10327 written=13
   ->  Gather Merge  (cost=1001.73..524461.84 rows=109851 width=401) (actual time=31.014..108.508 rows=1001 loops=1)
         Workers Planned: 2
         Workers Launched: 2
         Buffers: shared hit=77479 read=10327 written=13
         ->  Nested Loop Semi Join  (cost=1.70..510782.28 rows=45771 width=401) (actual time=0.555..37.775 rows=353 loops=3)
               Buffers: shared hit=77479 read=10327 written=13
               ->  Parallel Index Scan Backward using "DiagnosticReport_date_idx" on "DiagnosticReport"  (cost=0.42..74896.35 rows=62428 width=401) (actual time=0.090..4.118 rows=1205 loops=3)
                     Filter: ((NOT deleted) AND (status = 'final'::text))
                     Buffers: shared hit=1302 read=1930 written=2
               ->  Nested Loop Anti Join  (cost=1.28..10.12 rows=3 width=16) (actual time=0.028..0.028 rows=0 loops=3614)
                     Buffers: shared hit=76177 read=8397 written=11
                     ->  Nested Loop  (cost=0.85..2.91 rows=3 width=32) (actual time=0.007..0.012 rows=3 loops=3614)
                           Buffers: shared hit=40445 read=3065 written=5
                           ->  Index Only Scan using "DiagnosticReport_References_pkey" on "DiagnosticReport_References"  (cost=0.42..0.79 rows=3 width=32) (actual time=0.006..0.006 rows=3 loops=3614)
                                 Index Cond: (("resourceId" = "DiagnosticReport".id) AND (code = 'result'::text))
                                 Heap Fetches: 917
                                 Buffers: shared hit=8435 read=2622 written=3
                           ->  Index Only Scan using "Observation_pkey" on "Observation" "T1"  (cost=0.42..0.71 rows=1 width=16) (actual time=0.002..0.002 rows=1 loops=10154)
                                 Index Cond: ((id = "DiagnosticReport_References"."targetId") AND (id IS NOT NULL))
                                 Heap Fetches: 1318
                                 Buffers: shared hit=32010 read=443 written=2
                     ->  Index Scan using "Observation_Token_resourceId_idx" on "Observation_Token"  (cost=0.43..1.91 rows=1 width=16) (actual time=0.005..0.005 rows=1 loops=10154)
                           Index Cond: ("resourceId" = "T1".id)
                           Filter: ((code = 'category'::text) AND (system = 'http://terminology.hl7.org/CodeSystem/observation-category'::text) AND (value = 'laboratory'::text))
                           Rows Removed by Filter: 3
                           Buffers: shared hit=35732 read=5332 written=6
 Planning:
   Buffers: shared hit=39 read=12
 Planning Time: 1.630 ms
 Execution Time: 108.705 ms

The DISTINCT ON with reordered columns produces a slightly more complex query plan with comparable performance:
EXPLAIN (ANALYZE,BUFFERS)
SELECT
  DISTINCT ON (
    "DiagnosticReport"."date", "DiagnosticReport"."id"
  )
  "DiagnosticReport"."id",
  "DiagnosticReport"."content"
FROM "DiagnosticReport"
  LEFT JOIN "DiagnosticReport_References" AS "T1" ON (
    "T1"."resourceId" = "DiagnosticReport"."id"
    AND "T1"."code" = 'result'
  )
  LEFT JOIN "Observation" AS "T2" ON "T2"."id" = "T1"."targetId"
WHERE (
  "DiagnosticReport"."deleted" = false
  AND "DiagnosticReport"."status" = 'final'
  AND "T2"."id" IS NOT NULL -- Added manually for correctness
  AND NOT EXISTS (
    SELECT
      "Observation_Token"."resourceId"
    FROM "Observation_Token"
    WHERE (
      "T2"."id" = "Observation_Token"."resourceId"
      AND "Observation_Token"."code" = 'category'
      AND "Observation_Token"."system" = 'http://terminology.hl7.org/CodeSystem/observation-category'
      AND "Observation_Token"."value" = 'laboratory'
    )
  )
)
ORDER BY
  "DiagnosticReport"."date" DESC,
  "DiagnosticReport"."id",
  "DiagnosticReport"."date" DESC
LIMIT 1001;
--
Limit  (cost=1006.23..4044.95 rows=1001 width=401) (actual time=35.187..115.008 rows=1001 loops=1)
   Buffers: shared hit=82553 read=11794 written=4
   ->  Unique  (cost=1006.23..455831.22 rows=149826 width=401) (actual time=35.184..114.930 rows=1001 loops=1)
         Buffers: shared hit=82553 read=11794 written=4
         ->  Gather Merge  (cost=1006.23..454239.61 rows=318323 width=401) (actual time=35.183..114.802 rows=1068 loops=1)
               Workers Planned: 2
               Workers Launched: 2
               Buffers: shared hit=82553 read=11794 written=4
               ->  Incremental Sort  (cost=6.20..416497.21 rows=132635 width=401) (actual time=11.734..46.346 rows=389 loops=3)
                     Sort Key: "DiagnosticReport".date DESC, "DiagnosticReport".id
                     Presorted Key: "DiagnosticReport".date
                     Full-sort Groups: 10  Sort Method: quicksort  Average Memory: 59kB  Peak Memory: 59kB
                     Buffers: shared hit=82553 read=11794 written=4
                     Worker 0:  Full-sort Groups: 14  Sort Method: quicksort  Average Memory: 59kB  Peak Memory: 59kB
                     Worker 1:  Full-sort Groups: 14  Sort Method: quicksort  Average Memory: 59kB  Peak Memory: 59kB
                     ->  Nested Loop Anti Join  (cost=1.71..411951.98 rows=132635 width=401) (actual time=0.515..46.134 rows=408 loops=3)
                           Buffers: shared hit=82463 read=11794 written=4
                           ->  Nested Loop  (cost=1.28..155013.84 rows=134557 width=417) (actual time=0.199..24.657 rows=3635 loops=3)
                                 Buffers: shared hit=44351 read=5801
                                 ->  Nested Loop  (cost=0.84..126018.30 rows=134557 width=417) (actual time=0.161..12.965 rows=3635 loops=3)
                                       Buffers: shared hit=10262 read=5040
                                       ->  Parallel Index Scan Backward using "DiagnosticReport_date_idx" on "DiagnosticReport"  (cost=0.42..74896.35 rows=62428 width=401) (actual time=0.057..4.598 rows=1290 loops=3)
                                             Filter: ((NOT deleted) AND (status = 'final'::text))
                                             Buffers: shared hit=1300 read=2168
                                       ->  Index Only Scan using "DiagnosticReport_References_pkey" on "DiagnosticReport_References" "T1"  (cost=0.42..0.79 rows=3 width=32) (actual time=0.006..0.006 rows=3 loops=3871)
                                             Index Cond: (("resourceId" = "DiagnosticReport".id) AND (code = 'result'::text))
                                             Heap Fetches: 957
                                             Buffers: shared hit=8962 read=2872
                                 ->  Memoize  (cost=0.43..0.72 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=10906)
                                       Cache Key: "T1"."targetId"
                                       Cache Mode: logical
                                       Hits: 0  Misses: 3454  Evictions: 0  Overflows: 0  Memory Usage: 432kB
                                       Buffers: shared hit=34089 read=761
                                       Worker 0:  Hits: 0  Misses: 3717  Evictions: 0  Overflows: 0  Memory Usage: 465kB
                                       Worker 1:  Hits: 0  Misses: 3735  Evictions: 0  Overflows: 0  Memory Usage: 467kB
                                       ->  Index Only Scan using "Observation_pkey" on "Observation" "T2"  (cost=0.42..0.71 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=10906)
                                             Index Cond: ((id = "T1"."targetId") AND (id IS NOT NULL))
                                             Heap Fetches: 1393
                                             Buffers: shared hit=34089 read=761
                           ->  Index Scan using "Observation_Token_resourceId_idx" on "Observation_Token"  (cost=0.43..1.91 rows=1 width=16) (actual time=0.006..0.006 rows=1 loops=10906)
                                 Index Cond: ("resourceId" = "T2".id)
                                 Filter: ((code = 'category'::text) AND (system = 'http://terminology.hl7.org/CodeSystem/observation-category'::text) AND (value = 'laboratory'::text))
                                 Rows Removed by Filter: 3
                                 Buffers: shared hit=38112 read=5993 written=4
 Planning:
   Buffers: shared hit=34 read=17
 Planning Time: 1.997 ms
 Execution Time: 115.192 ms

To my eye, the two query plans are very similar in terms of overall structure, but the DISTINCT ON plan has the disadvantage of its slight additional complexity, largely due to the need for an explicit sort on "DiagnosticReport"."id" even after taking advantage of the DiagnosticReport_date_idx.  Unless there's some perspective I'm missing, I'm inclined to prefer the EXISTS() subquery solution for now

@mattwiller Great find!
This is very interesting. I ran these queries too and had comparable results.
In the negation case we get
EXISTS()

DISTINCT()

In the regular case we get
EXISTS()

DISTINCT()

Conclusions
It looks to me like both look correct. I would go further that your approach is more performant and agree the query plan is simpler. I wonder if the early joins had something to do with the observed complexity in the DISTINCT() case.
At any rate, I agree. Feel free to dismiss my PR. I will clean my feature branch once your changes are officially merged in. That way, I can still continue with some other testing with the bug temporarily fixed until the permanent solution is available.


How can I fix the Size of Window?

@yawaramin @rauanmayemir @jc00ke @tcoopman @agarwal

OK, I have find it. Just use Window.setSize


doc: add etcd docker guide

Fixes #2253

@kelseyhightower The doc looks good to me. Shall we link into this doc somewhere from the existing docs?

probably this section along with goreman?
https://github.com/coreos/etcd#running-local-etcd-cluster

@xiang90 Sure. I don't think we need to wait for that link before we merge though.

lgtm


fix: Escape TenantIdGUID element

@nschonni : Thanks for your contribution! The author, @CelesteDG, has been notified to review your proposed change.

Verified editorial corrections. Thank you.


Pytorch image sha pointing to wrong image.

In release 2023a-v1.10.0, the pytorch image is pointing to the wrong sha.
https://github.com/opendatahub-io/notebooks/blob/354b57c6f0c99bd6ef6eb77327eb86a6719925d7/manifests/base/params.env#L5
Through this PR:
https://github.com/opendatahub-io/notebooks/pull/223
This causes a failure in the ODH fast and release channel.

This was a human error and was fixed with the above-linked PRs.
The team would rely more on the digest updater.
Closing this issue  as complete.


ly starts tty session

I'm on archlinux with x11 and openbox. Switched to ly from lightdm.
After logged in there are many things that don't work as plank:
[WARN 14:45:21.737388] [Environment:183] Neither of XDG_SESSION_DESKTOP, XDG_CURRENT_DESKTOP or DESKTOP_SESSION is set in this environment!
[CRITICAL 14:45:21.737524] [AbstractMain:255] Only X11 environments are supported.
I figured out that 'echo $XDG_SESSION_TYPE' return 'tty' at the first login. If I logout and back in 'echo $XDG_SESSION_TYPE' return 'x11'.
I tried to modify /etc/ly/xsetup.sh without success.

This is the same issue as #121, we must implement utmp so fix that (and some other utmp-related issues)


Is it a typo?

https://github.com/freenet/locutus/blob/40f248b13e567bb84b43b707fd5fa4402cbae4b7/docs/src/introduction.md?plain=1#L9
I'm not a native English speaker, not certain if installed installed  is a typo.
Feel free to close this issue.

yep is a typo, will get it fixed in next round of changes

Fixed


Consider Schema Changes

Consider relevant changes to the schema: https://github.com/ehn-dcc-development/ehn-dcc-schema/releases

Its basically only making the test facility nullable right ? Since the DOB is already in string and Can be empty

89a5ce35624562978b38172ee4899540278a3d53 partially addresses this by differentiating between version 1.3.0 and earlier versions.
However, it still needs improvement:

add all schema versions and handle the accordingly
handle unknown schema versions
add the ability to augment data parsing in order to handle structural changes for different schema versions
thoroughly test against 1.3.0


Reduce memory consumption

Try to help with https://github.com/arkworks-rs/snark/issues/324

Also cc @kobigurk this might help with reducing memory overhead during proving


Allow for both responsive and fixed form field lengths

By default our input and select fields switch to 100% width for small screen sizes. In some cases however we want them to remain at a fixed width. For example, very short fields designed to take a specific number of characters, like day, month, year and postcode.

Hey Tim, is this fixed with the width override classes?
https://govuk-design-system-production.cloudapps.digital/styles/layout/#width-override-classes

I don't think it is – the width overrides all revert to 100% width on mobile.
I think if we implemented character-width'ed inputs those could/should be the same width at all breakpoints?

I think for now we should work with the hypothesis that fixed-width fields should snap to 100% for mobile devices, because:

it makes them easier to hit
there's no risk they will be wider than the viewport

We may be proven wrong on this, but we can open another issue if that's the case.

I'd like to reopen this issue, because:
a) the current width-overrides are proportional - we also need fixed ones (for short fields like postcode and telephone number)
b) the working group recently reviewed the telephone number pattern and the feedback was that we need to apply a fixed width to telephone number fields
@dashouse has proposed the following solution using ex units

@timpaul I felt like I could turn this around in 20 mins...
I have made a PR on GOV.UK Frontend with a proposed solution using the ch unit.
You can see it in action at the bottom of this page on the preview URL - https://govuk-frontend-review-pr-626.herokuapp.com/examples/form-alignment
Things that would need to be tested

The ch unit browser compatibility - https://caniuse.com/#feat=ch-unit (At the moment it will go 100% width)
That it changes size when using a fallback font
That there's enough space on the right for the safari prefill icon

I have updated this to be a modifier of the input component, rather than an override after suggestions from @36degrees
I have also moved back to ex for better browser support
Can be previewed here - https://govuk-frontend-review-pr-626.herokuapp.com/components/input

Closed by https://github.com/alphagov/govuk-frontend/pull/626, thanks @dashouse


Add pfDataTiles directive, with ngDocs/Examples and Unit Tests

data-tiles-directive.js should be named data-tiles.directive.js as per the convention.

@waldenraines The convention is inconsistent. I see both -directive.js and .directive.js

LGTM

@waldenraines The convention is inconsistent. I see both -directive.js and .directive.js

Those are misses in reviews.  We started out with .directive.js because that came from our work on katello.  That being said, I'm definitely open to changing it.

I personally don't like using the two periods, ex 'foo-bar.directive.js', think we should change them all to 'foo-bar-directive.js', unless there is a reason -which their might be, think I remember karma needing that naming convention? @dtaylor

Karma shouldn't care what they are named, and if it does we should fix that.  I think the blah.directive.js is nice because it provides a "sub-type" and, to me, is more readable because it makes the sub-type distinct from the name of the component.  I believe the original naming convention came from this AngularJS style guide.  That being said, John Papa's style guide isn't authoritative nor is it the only style guide in existence.

@waldenraines I'll leave it be for now and if someone is concerned they can file an issue to address it across the board.

I will squash once I get another LGTM


It shows a steve skin instead of my account skin

My nickname is Duckuson and I am on java and it doesn't work.

@Duckusonnn Now you can no longer see Steve's skin but yours

As @Nicolino1706 said, works now


Update github-rs to 0.6.0

@crawford I've pushed the release and I'm putting in a PR here to update it for you as well! Thanks for the changes upstream. They're really neat. Feel free to ping me or send in PRs as you need more features. :D
Closes #14

@mgattozzi Thanks for the pull request. The tailor validation is failing both rules (the commit message needs a body and the title needs to have a scope) but it's failing to post the failure because it's more than 140 characters (https://github.com/coreos/tailor/issues/25).
Using a commit message like the following should work:
cargo: update github-rs to 0.6.0

github-rs now has all of the necessary changes upstream.

@crawford reworded the PR should be good to go!

@mgattozzi perfect. I'll let the CI finish up and then merge this. Thanks again for all of your help!

@crawford thanks for adding things. I haven't really had time to improve the library as much as I'd like so it's real helpful to have others add some great features and implement more endpoints.


Get test_grammar passing

Most fixes were merged in from ironpython2:
https://github.com/IronLanguages/ironpython2/pull/297
https://github.com/IronLanguages/ironpython2/pull/296
https://github.com/IronLanguages/ironpython2/pull/294

Can you also include the generator script for TokenKind.Generated?
Since this covers most of IronLanguages/ironpython2#294 I would also include the test.

Yes, I'll add that as well.


profileBuilder assumes GOPATH is set

At the moment the following function assumes that Azure SDK for Go is located relative to the GOPATH environment:
https://github.com/Azure/azure-sdk-for-go/blob/1e334c402ea1460704b0263e5d188f28ad946ce1/tools/profileBuilder/model/defaults.go#L26
There are a few problems with doing it that way.

It will be increasingly common to use Go with an implicit value of GOPATH. If it is not set we should probably figure out where Go itself is defaulting it to; I believe it is ~/go.
The machine in which profileBuilder is executing should ideally be tolerant of Go not really being setup on the machine. For instance, @lmazuel is looking to have profileBuilder running across user machines, where we have little to no control of whether or not we can place output in the traditional location.

Further problematic locations:
https://github.com/Azure/azure-sdk-for-go/blob/1e334c402ea1460704b0263e5d188f28ad946ce1/tools/profileBuilder/model/list.go#L48

After discussion with @lmazuel the POR is to have the swagger->sdk environment for Go be a well-defined Go build environment that defines GOPATH.

This is working now.


Add link to nvm-windows

It's great to see love for Windows users elsewhere in the docs, thought I'd add it here too.

Thanks!


Add better error message when AWS creds resolver fails

Is your feature request related to a problem? Please describe.
When I pass in missing credentials, e.g., specify a profile in aws.spc that doesn't exist in my AWS config or credentials file, the plugin returns an error:
Error: rpc error: code = DeadlineExceeded desc = operation error S3: ListBuckets, failed to sign request: failed to retrieve credentials: failed to refresh cached credentials, no EC2 IMDS role found, operation error ec2imds: GetMetadata, request canceled, context deadline exceeded (SQLSTATE HV000)

This is most likely due to the way AWS SDK Go v2 resolves creds, https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specifying-credentials, and doesn't error when a missing profile is provided to it when setting up the shared config.
Describe the solution you'd like
The plugin should provide a better error message to point me in the right direction that my creds are missing or not specified
Describe alternatives you've considered
n/A
Additional context
Add any other context or screenshots about the feature request here.

Reopening the issue to figure out the scope of the changes made in https://github.com/turbot/steampipe-plugin-aws/pull/1873


Adams integrator in Stan language

Summary:
Expose integrate_ode_adams to Stan language
Description:
Allow Math function integrate_ode_adams to be used in Stan language. The function signature and the signature of ODE high-order functions are identical to rk45 & bdf integrators.
corresponding function signature test and good/bad parser tests are added.
Reproducible Steps:
unit tests.
Current Output:
n/a
Expected Output:
Support of integrate_ode_adams
Current Version:
v2.17.1

As far as I recall, the integrate_ode_adams in stan-math is currently setup to use a netwon solver instead of a forward-integration technique. The newton solver is numerically expensive and by sundials recommended to be used for integration of stiff problems. The adams solver is recommended by sundials for non-stiff solvers when used with the forward integration.
In short, we are using a non-recommended combination and I would be interested for which applications the integrate_ode_adams is useful. Is it for non-stiff or stiff problems? Why are we using the netwon solver instead of the forward integration?
I think we should understand for which use-case this solver will be good for to avoid unnecessary maintenance burden.
BTW, in boost is by now an adaptive Adams Moulton implementation as part of odeint. Since boost is much more lightweight than CVODES, we should probably at least try theirs, no?

@wds15 , as I mentioned last time when you asked this question, I choose to use newton because of its higher-order accuracy and stability. That's my experience talking. Here's more explanation.

Why are we using the netwon solver instead of the forward integration?
I'm assuming by "forward integration" you mean the functional integration in CVODES.

The CV_FUNCTIONAL in CVODES is just the plain fixed-point iteration. It's of lower-order convergence rate than newton. This means even though newton requires more computation per each iteration, it generally requires less number of iterations to reach solution. So it boils down to how difficult to solve the linear system from ODE vs the number of the iterations, which is the premise of the manual's recommendation. So far I've not seen any Stan applications involving a really large ODE system. These systems tend be from a PDE solution but obviously we not doing that (we will, but not using CVODES).
Directly solvers shipped in sundials is really efficient for small-size systems. So it doesn't raise flag to me to use newton. The following are wall time results of the harmonic_oscillator test in Adams' unit test, compare using newton vs functional iteration. It shows newton is actually faster, under various tolerance settings.

BTW, in boost is by now an adaptive Adams Moulton implementation as part of odeint. Since boost is much more lightweight than CVODES, we should probably at least try theirs, no?

I don't see how this would be a tremendous advantage over sundials. Even it were, wouldn't be the BDF solver to be replaced by boost's rosenbrock first?

And what does the Adams-Moulton+Newton scheme buy us vs the BDF+Newton?
Differently: for which problems do you recommend the Adams-Moulton + Newton algorithm?
With the coupled_ode_system in stan-math we basically have the sensitivity thing for which the stiff case is particularly amenable to optimizations as I understood. This is why sundials CVODES is so good for stiff stuff. My intuition tells me that for non-stiff problems this is all not really needed and the far more lightweight boost odeint is great.
So (my intuition) would tell me that for non-stiff problems we really should prefer boost odeint as the extra-optimizations from sundials are not needed and boost integrates much better with Stan. So the Adams-Bashfort-Moulton in odeint is worthwhile to try if we want to extend the solvers.
BTW, what do you think about the BDF limit detection thing in CVODES? Is that useful? (Sorry, off topic)

And what does the Adams-Moulton+Newton scheme buy us vs the BDF+Newton?

As pointed out in https://github.com/stan-dev/math/issues/734, for higher-order accuracy.

With the coupled_ode_system in stan-math we basically have the sensitivity thing for which the stiff case is particularly amenable to optimizations as I understood.

I don't understand this comment.

So (my intuition) would tell me that for non-stiff problems we really should prefer boost odeint as the extra-optimizations from sundials are not needed and boost integrates much better with Stan. So the Adams-Bashfort-Moulton in odeint is worthwhile to try if we want to extend the solvers.

IIRC boost's Adams-Moulton doesn't support adaptive stepper, which means a user has to specify dt. Unless he knows the ODE system well enough, I'll say this would be a foot shooter.

BTW, what do you think about the BDF limit detection thing in CVODES? Is that useful? (Sorry, off topic)

I've seen problems in computational fluid dynamics where this feature is useful.

The adaptive Adams-Moultn in odeint is not well documented,but it's there:
https://github.com/headmyshoulder/odeint-v2/blob/master/include/boost/numeric/odeint/stepper/adaptive_adams_bashforth_moulton.hpp
this one is already in boost.
Still: Which stan problem is better solved with the solver you propose? Higher-order accuracy is great... but what is it good for at the end of the day for users?

Do we really want to choose an undocumented new feature vs a well-documented old one?

What got lost from the first issue and this one is the following:

CVODES provides BDF (current implicit ode solver implementation) and Adams-Moulton schemes. BDF has the advantage of being highly stable, but this only applies low-order cases(order<5). For achieve higher-order accuracy up to order 12, one needs the Adams scheme.

CVODES imposes same interface for the two schemes. The essential change in the implementation is to share the CVODES construction process and delegate the specific method to a non-type parameter template.

So it sounds to me like what we'll be recommending is:

Non-stiff?  Runge-Kutta 4th/5th order (_rk45)
Stiff:

order <= 4?  Bacward Differentiation Formula (_bdf)
order > 4? Adams-Moulton (_am)

What's the order measuring?
Seems like this'll be pretty easy to integrate on the Stan side.
Is everyone OK with that?
If so, we can focus on how to implement these things.  I don't have an opinion one way or the other on Boost vs. CVODES integrators as to reliability, etc.
The primary advantages to Boost were (a) we could autodiff through the templating, and (b) we already had the dependencies.  Now that we don't do (a) and we already have a dependency on Sundials, it's really just a matter of efficiency and flexiblity of code and ease of maintenance.

As I understand things, with larger order of the integrator you can do larger time-steps. At least this is the hope as this should lead to faster integration for smooth functions... but smooth functions are not stiff. This is why I don't get where the proposed scheme is good at (a harmonic oscillator is for me to textbook simple for my applications).
Moreover, the CVODES bdf integrator is already now terribly imprecise. Going with higher order will not make that better, I think.
All that said, if there is a killer application which we want in Stan where this integrator really shines ... then I am all in, but I have not yet seen one mentioned. In case this integrator works really well as judged by your experience, @yizhang-cae then also fine with me, but more clarity on when to use it would be good. We should give some guidance as to when to use what solver. I thought higher order scheme does not go well with stiff problems.
The Adams-Bashfort-Moulton in odeint should be fine to use. In the past the odeint author was amazingly quick to fix issues with the library in case there is one.
From my perspective we should try these

adams moulton from odeint for non-stiff problems should be at least tried vs this one
the bulrisch stoer algorithm from odeint is supposed to be very fast for the high precision (1E-12) you are getting from it. This should be beneficial to get better trajectories for NUTS.

@wds15:  Unless @yizhang-cae or @syclik think it's necessary, I would prefer to just go ahead with the plan @yizhang-cae has had to implement with Sundials.  I don't want to start sidetracking issues with things we might do in the future, especially after the development is nearly done.
This won't lock us into any particular implementation going forward.  So I think it would be helpful if you could break that last message into two issues:

stan-dev/math: evaluate Adams-Moulton from odeint as alternative to Sundials for integrate_ode_am
stan-dev/stan: evaluate Bulrisch-Stoer from odeint for HMC trajectories as alternative to leapfrog

Thanks!

Ok; will do.

Also, I just looked at Boost 1.67.0 and couldn't find either the src or the documentation for adaptive Adams integrator.

Resolved in #2543 .


Add floating point support

This is the initial steps of floating point support for mirth. I'm uploading it before it is completely done for feedback before I implement any further. This includes a partial implementation of a mandelbrot set renderer example.

Great work! The only note I have is that I'd like the name of the float type in mirth be:

Float64 for double-precision floats, and
Float32 for single-precision floats.

Once that is renamed, I think it would be ok to merge this PR, even without single-precision!

Great work! The only note I have is that I'd like the name of the float type in mirth be:
* `Float64` for double-precision floats, and

* `Float32` for single-precision floats.

Once that is renamed, I think it would be ok to merge this PR, even without single-precision!

Everything's renamed, and I made the internal value be a float instead of storing as a string. Still figuring out why the windows build suddenly can't find snprintf even though it could before.

Thanks @casuallyblue!


Add building:levels to building=construction

[moved from https://github.com/openstreetmap/iD/issues/10187]
Buildings under construction also have floors... And this field is not in this preset at all. To add floors, I have to first select another building type, add the number of floors, and then change to building=construction.

It is not clear whether building:levels refers to the number of levels already constructed on site or the total number of building levels once construction is finished. Hence, I would recommend to not add this tag to building=construction.

Refers to the number of levels already constructed. I often update number of levels for buildings in my area.

@maro-21 can you share a wiki docs link where this is documented? The field-description will not be helpful in this case, because it cannot have different info text based on other tags. But at least we should have some documentation on this somewhere…

building:levels is commonly used with building=construction:
https://taginfo.openstreetmap.org/tags/building%3Dconstruction#combinations

The field-description will not be helpful in this case, because it cannot have different info text based on other tags. But at least we should have some documentation on this somewhere…

What do you mean? Which field description?

It is not clear whether building:levels refers to the number of levels already constructed on site or the total number of building levels once construction is finished.

Good reasoning, but it refers to the number of levels already constructed because we don't map future [at least not in these tags] and a building may already have the target number of floors and still be under construction, sometimes for many months or years.

building:levels is commonly used with building=construction: https://taginfo.openstreetmap.org/tags/building%3Dconstruction#combinations

usage: 78.728 in kombination with building=construction.

The field-description will not be helpful in this case, because it cannot have different info text based on other tags. But at least we should have some documentation on this somewhere…

What do you mean? Which field description?

The part behind the info-i of the field:
It will show the same text in the construction case as it does now.

Good reasoning, but it refers to the number of levels already constructed…

I think once the wiki https://wiki.openstreetmap.org/wiki/Key:building:levels and https://wiki.openstreetmap.org/wiki/Tag:building=construction has a section on this so there is clear community documentation we can add this preset without any hesitation.


[SPLIT #221]  Test changes, waiting for redux-axios got merged to finish

Closing for now. Happy to keep the discussion going on the issue.


Need outline around text in DogProfileActivity

sometimes white text is hard to see if background of dog pic is also white

We decided to change from a background to an outline around the text


Project selector includes every project for everyone

On question creation:

Project selector shouldn't be available unless you're an admin or mod, but it's currently available for everyone.
If you're an admin or mod, you should only see the projects you're admin/mod on.

Might be resolved by https://github.com/Metaculus/metaculus/issues/526


[18.09] installation-device: set GC initial heap size to 1MB

Motivation for this change
100000 (100kB) is too aggressive (too low) and gets ignored by the GC after raising warnings
Fixes #43339
Backport of #49326
/cc @samueldr as release manager
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

I had the same warning as in #43339 on a demo VM.
After doing export GC_INITIAL_HEAP_SIZE=1M I could use nix-channel --update or nixos-rebuild switch without any GC warnings.

@GrahamcOfBorg test installer

Success on x86_64-linux
Attempted: tests.installer
No partial log is available.

Success on aarch64-linux
Attempted: tests.installer
No partial log is available.

cc @edolstra here too, for backporting and solving issue #43339 that users encounter with 18.09 install media


Fix addon upgrade breaking generated manifests

Why is this PR needed?
Fix broken generated addon manifests from skuba addon upgrade apply caused by invalid control plane value.
Fixes https://github.com/SUSE/avant-garde/issues/944
What does this PR do?
Use correct control plane value w/o port to generate correct addon manifests.
Anything else a reviewer needs to know?
N/A
Info for QA
Please just follow up the steps mentioned in https://github.com/SUSE/avant-garde/issues/944 to verify gangway addon upgrade w/ valid gangway configmap.
Related info
n/a
Status BEFORE applying the patch
Ref: https://github.com/SUSE/avant-garde/issues/944
Status AFTER applying the patch
After applying addon upgrade, all addons working well.
Docs
n/a
Merge restrictions
(Please do not edit this)
We are in v4-maintenance phase, so we will restrict what can be merged to prevent unexpected surprises:
What can be merged (merge criteria):
    2 approvals:
        1 developer: code is fine
        1 QA: QA is fine
    there is a PR for updating documentation (or a statement that this is not needed)

It’s not covers when user changes other manifest setting. The solution should involves https://github.com/kubernetes-sigs/kustomize.

Yes, that should be tackled by another implementation by the proposal RFC from Rafa first. This only fixes the incorrect control plane value.

Now it works correctly, thanks for the quick fix

I think this is hiding potentially important information for addons. IMO we should pass the raw control plane endpoint, but each addon should then choose if they will use the full URI or parse it and get the host only, or if they will use the control plane endpoint port as well for anything.

skuba cluster init render with control-plane flag
https://github.com/SUSE/skuba/blob/master/pkg/skuba/actions/cluster/init/init.go#L127
https://github.com/SUSE/skuba/blob/master/internal/pkg/skuba/addons/addons.go#L213
skuba node bootstrap and skuba addon upgrade apply render with control-plane-endpoint
https://github.com/SUSE/skuba/blob/master/internal/pkg/skuba/addons/addons.go#L123
https://github.com/SUSE/skuba/blob/master/internal/pkg/skuba/addons/addons.go#L236
So, this means we need an extra field to records the control-plane-endpoint. Good?

Created https://github.com/SUSE/skuba/pull/781 as an alternative, I'm going to validate if it works as expected and remove the WIP flag.

Sorry for the late reply. Let Rafa continues the fixing, closing this.


Dracula doesn't show up in Application Colors on Ubuntu

copied the .soc file into "~/.config/libreoffice/*/user/config/" on ubuntu 20.04 LTS but the theme just won't show up in libreoffice > options > application colors. any fixes?

same in Manjaro with libreoffice-fresh.

ah, this theme is actually just a color palette for making documents with, so it won't appear there. I'll take a look into adding some application colors.

Application colors have now been added :grin:. I haven't been able to test the script on macOS, but I think it should work (please let me know either way!)

Thank you for your prompt reply and changes, I appreciate it! First time I ran it I got head: illegal line count -- -1 which seems random because I ran it multiple times after (with no changes made) and I only got Settings file doesn't match expected format, aborting... every time.

Manually copying the contents of dracula.xcu into registrymodifications.xcu (after the 2nd line) worked. This is an easy workaround for the timebeing.

Ah I see, macOS has a different version of head which doesn't support what the script was originally doing. I've fixed that bit now in 802d0d4, can you give it a try?


is there a CRD that can set ec2_sd_config?

No, there is no such CRD. It's possible to define it with inline raw configuration at the VMAgent section:
kind: VMAgent
spec:
  inlineScrapeConfig: |
   - job_name: ec2-monitoring
     ec2_sd_configs:
     - region: eu-west-1
       port: 9100

Hm, maybe it's possible to create some generic CRD for all other service discovery types. Need to think about it.

@lacer-utkarsh
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-PrometheusEC2.html

The IAM role for the EC2 instance where the CloudWatch agent runs must include the ec2:DescribeInstance permission. For example, you could attach the managed policy AmazonEC2ReadOnlyAccess to the instance running the CloudWatch agent.

make sure, that all k8s nodes have IAM role with ec2:DescribeInstance policy allowed

Scrape EC2s, which are tagged with prometheus.io/scrape=true
  inlineScrapeConfig: |
   - job_name: ec2
      honor_labels: true
      ec2_sd_configs:
        - region: us-west-1
          filters:
          - name: tag:prometheus.io/scrape
            values:
              - "true"
      relabel_configs:
        - source_labels: [__meta_ec2_tag_prometheus_io_path]
          target_label: __metrics_path__
        - source_labels: [__address__, __meta_ec2_tag_prometheus_io_port]
          action: replace
          regex: ([^:]+)(?::\d+)?;(\d+)
          replacement: $1:$2
          target_label: __address__
        - source_labels: [__meta_ec2_tag_prometheus_io_job]
          target_label: job
        - regex: __meta_ec2_(instance_id|availability_zone|instance_type)
          action: labelmap
        - regex: __meta_ec2_tag_prometheus_io(.+)
          action: labeldrop
        - action: labelmap
          regex: __meta_ec2_tag_(.+)

No, there is no such CRD. It's possible to define it with inline raw configuration at the VMAgent section:
kind: VMAgent
spec:
  inlineScrapeConfig: |
   - job_name: ec2-monitoring
     ec2_sd_configs:
     - region: eu-west-1
       port: 9100

Hm, maybe it's possible to create some generic CRD for all other service discovery types. Need to think about it.

any thoughts on this?  I would very much like to move away from inlineScrapeConfig


reactor.core.publisher.FluxJust cannot be cast to com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent

I must confess that I am new to Spring Cloud Function. I am unable to figure out why my test program is running into "reactor.core.publisher.FluxJust cannot be cast to com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent" problem.
This handler configured for this AWS lambda is "org.springframework.cloud.function.adapter.aws.SpringBootApiGatewayRequestHandler". I even tried with one of my own Custom Handler but still it runs into the error.
You can take a look at my test application here -
https://github.com/gbhosal/my-user-backend.git

@gbhosal there were some recent enhancements done to adapters including AWS. We've also updated the user guide. All of it will be released as 3.0.1.RELEASE in the next few days, but here is the link to the updated documentation - https://cloud.spring.io/spring-cloud-function/reference/html/aws.html which contains Getting Started and pointer to the working example. After you go through this let us know if you still have any issues as a separate issue.


Add hlbc-python to the README

hlbc-python is a small, terrible little wrapper that I wrote to allow this crate to be used from Python, where my existing projects reside.

@HENRYMARTIN5 added an additional test file that fails on the nested cases as outlined in #5


Color picker not working in MS paint content area

Microsoft PowerToys version
0.75.1
Installation method
PowerToys auto-update
Running as admin
Yes
Area(s) with issue?
ColorPicker
Steps to reproduce
Open an image in MS paint.
Attempt to color pick the content of that image.
✔ Expected Behavior
Expect to see color values of pixels from the content.
❌ Actual Behavior
seeing rgba(0,0,0,0) within content. Color picker works for rest of application.
Other Software
No response

/bugreport


Can seqdata/readers.pybe deprecated?

Is seqdata/readers.py and older version of what is currently contained in the seqdata/readers directory and can it be removed?

I think you're referring to seqdata/_io/readers.py, which seems to overlap entirely with the seqdata/_io/readers module. I need to look at the git history to see why there are both, but it's definitely an accident as there should not be. I'm not even sure which one gets imported with the current structure 😱

I think that the classes in seqdata/_io/readers/ are the ones currently being used based on some testing (e.g. print statements in the files and available attributes).
https://github.com/ML4GLand/SeqData/blob/main/seqdata/_io/readers/__init__.py
But we should verify this as it does seem potentially ambiguous.


Contributing templates

Adding seperate, custom contributing templates helps streamline the open source contributions lile bug report, new issue suggestion.
Could you assign this issue to me under hacktoberfest - accepted and gssoc 24-extd. Thanks

Could you also assign the level label. Thanks.


Persist the scan first then install agents when running a scan using the API

Screencast from 2024-07-01 12-06-29.webm

The target is not showing in the video?

The target is not showing in the video?

The video wasnt updated after the fix. Please check again.


[CHALLENGE SUBMISSION]  - Day 11

Please provide the following information for your submission:
What is your name? (First, Last)
Samuele Cozzi
Where is your GitHub Repo ?(With your challenge solution)
https://github.com/samuele-cozzi/25-days-of-serverless-code/tree/master/day-11
What Challenge is this for? (Challenge number between 1 and 25)
11
(Optional) Anything else we should know? e.g., language used, location, blog post?

From all of us on the Cloud Advocacy team at Microsoft, thank you for creating this issue!
Have a Happy Holiday season!
Feel free to share your solution on Twitter with the tag #25DaysOfServerless

THANK YOU FOR YOUR #25DaysOfServerless SUBMISSION
We checked out your repository. We're thrilled to say your solution is now listed in our Hall of Fame
Thank you for your contributions!
This issue is now resolved! 🎉


Whitespace preserve does not work

Vue version
3.2.37
Link to minimal reproduction
https://stackblitz.com/edit/vitejs-vite-9bf2b5
Steps to reproduce
Check vite.config.ts, you will find that template.compilerOptions.whitespace: 'preserve' is set.
Then look at App.vue and the output.
What is expected?
I is my understanding that with whitespace: 'preserve' the output should be

or at least it should be easily possible to change the template so that it is.
What is actually happening?
The output is

and I have found no obvious way to get the desired output.
I have tried

adding a second <span> with a space in it
adding a <slot> </slot> with a space in it (found that on StackOverflow)
adding   after the span
adding a space inside the <span> (which wouldn't be the desired result anyway but it doesn't change the output at all)

System Info
StackBlitz

Any additional comments?
I believe the whitespace: 'preserve' functionality was added in https://github.com/vuejs/core/pull/1600.

It is inconsistent with vue2, see https://codesandbox.io/s/beautiful-tom-6zem3d?file=/src/App.vue

Is this the same issue? #7542
@edison1105


CoreFoundation: simplify Linux libdispatch handling

Rather than special case the Linux handling, use the more prevalent
codepath to enable libdispatch support.  NFCI

CC: @phausler

@swift-ci please test

Seems fine


Completely hide the title bar / tab row.

Hi, there was an option to completely remove the title bar before.

Now the title bar or tab row always show.

Best, Nikola!

I bind it to alt+t
    {
      "command": "toggleFocusMode",
      "keys": "alt+t"
    }

@237dmitry Thank You! Yup, this is FrontEndDelight on dark mode with the following settings:
{
    "background": "#1B1C1D",
    "black": "#242526",
    "blue": "#2C70B7",
    "brightBlack": "#5FAC6D",
    "brightBlue": "#3393CA",
    "brightCyan": "#4FBCE6",
    "brightGreen": "#74EC4C",
    "brightPurple": "#E75E4F",
    "brightRed": "#F74319",
    "brightWhite": "#8C735B",
    "brightYellow": "#FDC325",
    "cursorColor": "#CDCDCD",
    "cyan": "#3CA1A6",
    "foreground": "#ADADAD",
    "green": "#565747",
    "name": "FrontEndDelight",
    "purple": "#F02E4F",
    "red": "#F8511B",
    "selectionBackground": "#EA6154",
    "white": "#ADADAD",
    "yellow": "#FA771D"
}

Thanks!

Term go blurr


Bugs 1695622,1699129: bump buildah to v1.8.2, pin most dependencies

Update the version of buildah that we use to version 1.8.0, but downgrade the version of storage that we use to an older version.

It looks like we broke something for builds that use post-commit hooks.

/retest

Updated to be a bit newer than 1.8.0, closer to what I expect 1.8.1 to be, and pinning most other dependencies.

Bumped to the commit ID that will be 1.8.1.

/retest

/retest

Moved our buildah reference in glide.yaml to the v1.8.1 tag instead of the commit ID that it points to.  Pulled in some changes to the openshift branch of kubernetes.

/retest

Bumped to 1.8.2.

/test e2e-aws-image-ecosystem

/test e2e-aws-image-ecosystem

/lgtm
Unclear why image-ecosystem tests flaked twice on the perl/dancer image.

/test e2e-aws-image-ecosystem


[CSM-553] Create default address for each account during JSON wallet import

Before default address was created only together with default account, if no accounts were specified in JSON backup. This PR introduces logic of creating default addresses for accounts which were specified in backup, but don't have any addresses in Utxo or transaction history.

Thanks @flyingleafe, you rock! Will review tomorrow morning and get back to you asap ;)

@adinapoli-iohk good point, we actually can do it as long as we have mocks now. I'll try to sort it out today.

@flyingleafe Gentle reminder that if you provide some tests, we can get this PR out of the way and make the frontend folks happy 😉

@adinapoli-iohk
I believe that I won't be able to devote time for tests here in next couple of days (I'm afraid I need at least 2-3 hours for this, and it seems like until weekend I'm tightly packed with tasks on API v1).
As soon as this is a kind of blocker for frontend, I think that it's better to merge it now as is, and add tests in separate PR. I created another issue (https://iohk.myjetbrains.com/youtrack/issue/CSM-567) for that, so it will not be forgotten.


switch based transport selection

potentially a cleaner way to set the transport type option

I wonder how many of these you'll find where I shoulda used a switch but im so used to python :) LGTM, defo nicer!


Update 5.mdx

Fix typo

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.