doesn't work in macos

Describe the bug
Getting this error trying to run the example player:
Win32Exception: Cannot find the specified file
System.Diagnostics.Process.StartWithShellExecuteEx (System.Diagnostics.ProcessStartInfo startInfo) (at <c9226b2f33b7421e85bb391f94075e49>:0)
System.Diagnostics.Process.Start () (at <c9226b2f33b7421e85bb391f94075e49>:0)
(wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) (at <c9226b2f33b7421e85bb391f94075e49>:0)
SpotifyAPI.Web.Auth.AuthUtil.OpenBrowser (System.String url) (at D:/Development/SpotifyAPI-NET/SpotifyAPI.Web.Auth/AuthUtil.cs:30)
SpotifyAPI.Web.Auth.SpotifyAuthServer`1[T].OpenBrowser () (at D:/Development/SpotifyAPI-NET/SpotifyAPI.Web.Auth/SpotifyAuthServer.cs:79)
Spotify4Unity.SpotifyService.ConnectSpotifyWebHelper (SpotifyAPI.Web.Auth.AuthorizationCodeAuth auth, System.Int32 port) (at D:/Development/Spotify4Unity/Spotify4Unity/Spotify4Unity/SpotifyService.cs:129)
Spotify4Unity.SpotifyService.Connect () (at D:/Development/Spotify4Unity/Spotify4Unity/Spotify4Unity/SpotifyService.cs:115)
Spotify4Unity.SpotifyServiceBase.Start () (at D:/Development/Spotify4Unity/Spotify4Unity/Spotify4Unity/SpotifyServiceBase.cs:237)
Spotify4Unity.SpotifyService.Start () (at D:/Development/Spotify4Unity/Spotify4Unity/Spotify4Unity/SpotifyService.cs:70)

To Reproduce:
Just run the example all_controls scene
Expected behavior
I expect not receive that error I mentioned above and see your example controls instead. probably being redirected to Spotify login or something.
Platform:
MacOS
Unity Version:
2019.1.7f1

Hi,
Turns out this is an issue inside of SpotifyAPI.NET. I've done a quick fix for this (for now) and pushed an update to the store. I'll update the releases when it's live 😉

Thanks, I can confirm that now it works. but I ran into another issue which is now it connected and shows the current track info but it can't show my user info and saved tracks and also controller doesn't work. I have to say of course I had to take out UserReadBirthdate scope out in order to make it work, I was getting illegal scope error running the example scene.

Hum, that sound strange. I know if you don't have premium you can only do all of the read-only operations. Is there any more messages or info? You can enable the logs and change the log level to All

Ah, I see. Sorry, So I upgraded my I account and now controls work but still not able to load user profile data:
Spotify4Unity - Can't load Private Profile information of authorized user - System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
  at System.Collections.Generic.Dictionary`2+Enumerator[TKey,TValue].MoveNext () [0x00016] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Net.Http.Headers.HttpHeaders+<GetEnumerator>d__19.MoveNext () [0x000ac] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.Headers.HttpRequestHeaders.AddHeaders (System.Net.Http.Headers.HttpRequestHeaders headers) [0x00025] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.HttpClient.SendAsync (System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) [0x000be] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.HttpClient.SendAsync (System.Net.Http.HttpRequestMessage request) [0x00008] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.HttpClient.GetAsync (System.String requestUri) [0x0000c] in <960ab25595cb4b1cb8c4959d26375323>:0
  at SpotifyAPI.Web.SpotifyWebClient+<DownloadRawAsync>d__11.MoveNext () [0x0002c] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at SpotifyAPI.Web.SpotifyWebClient+<DownloadAsync>d__9.MoveNext () [0x0007e] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at SpotifyAPI.Web.SpotifyWebClient+<DownloadJsonAsync>d__13`1[T].MoveNext () [0x0007e] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at SpotifyAPI.Web.SpotifyWebAPI+<DownloadDataAsync>d__227`1[T].MoveNext () [0x00129] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at Spotify4Unity.SpotifyServiceBase+<LoadUserInformationAsync>d__81.MoveNext () [0x00078] in <fac514e7b7304f03b00d12145ddc0d3f>:0
UnityEngine.Debug:LogError(Object)
Spotify4Unity.Analysis:LogError(String, LogLevel)
Spotify4Unity.<LoadUserInformationAsync>d__81:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:Start(<LoadUserInformationAsync>d__81&)
Spotify4Unity.SpotifyServiceBase:LoadUserInformationAsync()
Spotify4Unity.<LoadUserInfo>d__80:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<LoadUserInfo>d__80&)
Spotify4Unity.SpotifyServiceBase:LoadUserInfo()
Spotify4Unity.<<InitializeService>b__67_0>d:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<<InitializeService>b__67_0>d&)
Spotify4Unity.SpotifyServiceBase:<InitializeService>b__67_0()
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()
Spotify4Unity - Can't load Private Profile information of authorized user - System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
  at System.Collections.Generic.Dictionary`2+Enumerator[TKey,TValue].MoveNext () [0x00016] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Net.Http.Headers.HttpHeaders+<GetEnumerator>d__19.MoveNext () [0x000ac] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.Headers.HttpRequestHeaders.AddHeaders (System.Net.Http.Headers.HttpRequestHeaders headers) [0x00025] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.HttpClient.SendAsync (System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) [0x000be] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.HttpClient.SendAsync (System.Net.Http.HttpRequestMessage request) [0x00008] in <960ab25595cb4b1cb8c4959d26375323>:0
  at System.Net.Http.HttpClient.GetAsync (System.String requestUri) [0x0000c] in <960ab25595cb4b1cb8c4959d26375323>:0
  at SpotifyAPI.Web.SpotifyWebClient+<DownloadRawAsync>d__11.MoveNext () [0x0002c] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at SpotifyAPI.Web.SpotifyWebClient+<DownloadAsync>d__9.MoveNext () [0x0007e] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at SpotifyAPI.Web.SpotifyWebClient+<DownloadJsonAsync>d__13`1[T].MoveNext () [0x0007e] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at SpotifyAPI.Web.SpotifyWebAPI+<DownloadDataAsync>d__227`1[T].MoveNext () [0x00129] in <2e77cc7afb3c421fab8355f279b2031d>:0
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0
  at Spotify4Unity.SpotifyServiceBase+<LoadUserInformationAsync>d__81.MoveNext () [0x00078] in <fac514e7b7304f03b00d12145ddc0d3f>:0
UnityEngine.Debug:LogError(Object)
Spotify4Unity.Analysis:LogError(String, LogLevel)
Spotify4Unity.<LoadUserInformationAsync>d__81:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:Start(<LoadUserInformationAsync>d__81&)
Spotify4Unity.SpotifyServiceBase:LoadUserInformationAsync()
Spotify4Unity.<LoadUserInfo>d__80:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<LoadUserInfo>d__80&)
Spotify4Unity.SpotifyServiceBase:LoadUserInfo()
Spotify4Unity.<<InitializeService>b__67_0>d:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<<InitializeService>b__67_0>d&)
Spotify4Unity.SpotifyServiceBase:<InitializeService>b__67_0()
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

and what is that UserReadBirthdate I couldn't find it in https://developer.spotify.com/documentation/general/guides/scopes/

I know that error would happen on older versions but I changed how reusing the auth is done which had fixed that. Are you targeting Mobile or PC? If you're using the MobileSpotifyService, try unchecking "Reuse Auth Token". Apart from that, I'm not sure on fixing that 😬
Also afaik, the UserReadBirthday scope is an old scope got deprecated yet hasn't been removed from SpotifyAPI.NET. The scope that handles that now is "user-read-private"


fix requirements

The current requirements were not working, this one works.

For me neither work haha. Also too lazy to debug that now. I will just trust you random person on the internet to be a good actor. Thanks for contributing to my contribution lol


cln update to v23.11, dependency cleanup, clnrest

[ ] test on amd64
[ ] test on RPi (Debian12)
[ ] check clnrest - compare with c-lightning-REST

ah sorry I already made the cln version update before i saw this ... but please do all the testing and the clean ups, mine was just a quick commit.

ah sorry I already made the cln version update before i saw this ... but please do all the testing and the clean ups, mine was just a quick commit.

reverted it as the build was failing: https://github.com/raspiblitz/raspiblitz/discussions/4282#discussioncomment-770707
the signing key needs updating and
there is clnrest to be disabled at least

ok clnrest is disabled by default:
Configuration
If clnrest-port is not specified, the plugin will disable itself.

https://docs.corelightning.org/docs/rest#configuration

but it will be ready to be used.

Tested install ... ran thru good so far, just some No such file or directory errors at the end.
- OK the installation of Core Lightning vv23.11 is successful
# Make sure bitcoin is in the debian-tor group
# Add plugin-dir: /home/bitcoin/cl-plugins-enabled
# Add plugin-dir: /home/bitcoin/cl-plugins-available
# Store the lightning data in /mnt/hdd/app-data/.lightning
# Symlink to /home/bitcoin/
ls: cannot access '/home/bitcoin/.lightning/config': No such file or directory
# Create /home/bitcoin/.lightning/config
# lightningd configuration for bitcoin mainnet

network=bitcoin
log-file=cl.log
log-level=info
plugin-dir=/home/bitcoin/cl-plugins-enabled

# Tor settings
proxy=<IP_ADDRESS>:9050
bind-addr=<IP_ADDRESS>:9736
addr=statictor:<IP_ADDRESS>:9051/torport=9736
always-use-proxy=true

ls: cannot access '/home/bitcoin/.lightning/bitcoin/hsm_secret': No such file or directory

Tested all updates again. Ready to be merged.


(bugfix) Fixes deep change of property in requestBody is not detected #213

This PR fixes https://github.com/Tufin/oasdiff/issues/213
New warn output
warning	[request-property-removed] at revisionyaml
	in API POST /api/roleMappings
		removed the request property 'roleAssignments/role'

List of changes

Enable processDeletedPropertiesDiff to go through property items
Add unit test to the checker
Update breaking-changes.md file
Run tests script

Note: please let me know if there is any further tests I can run to validate my PR.

Codecov Report

Merging #214 (292ca71) into main (6ce0ee2) will decrease coverage by 0.02%.
The diff coverage is 57.14%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #214      +/-   ##
==========================================
- Coverage   74.44%   74.43%   -0.02%
==========================================
  Files         133      133
  Lines        7573     7580       +7
==========================================
+ Hits         5638     5642       +4
- Misses       1618     1620       +2
- Partials      317      318       +1

Flag
Coverage Δ

unittests
74.43% <57.14%> (-0.02%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

checker/checks-utils.go
74.66% <57.14%> (-0.86%)
:arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@blva it seems like the issue not about the diff which does report this change correctly, but about the -check-breaking mode which doesn't detect this as a breaking change.
I wanted to clarify this for the benefit of our users.


Link Check: localhost links not detected

Hello @axllent,
I was testing the LinkCheck feature, and noticed that localhost links (which I frequently use while developing) are not detected (http://<IP_ADDRESS> works).
php > mail('test@localhost','Test plain link','http://localhost');

I guess this could be fixed with a small adjustment to the Regex. e.g. appending |localhost at the end of the 2nd capturing group.
https://github.com/axllent/mailpit/blob/dc1a16ed5c065486b5edd24623489b935c7ed4d3/internal/linkcheck/main.go#L13
PS: many thanks for MailPit, it's awesome ❤

Sorry, forgot to mention this is with v1.18.3. I realize it's somewhat out of date, but I can't upgrade just now. I'll test again later with the latest version.

Same behavior confirmed with v1.20.3.

Hi @dregad - I can confirm your issue - the frontend JavaScript was far more relaxed in how it detected a "valid" URL vs: the "backend" for link checking. I have just pushed a fix and released it as part of v1.20.4. Please confirm this new release fixes the issue for you?

Thanks for responding so quickly. I think your guy should do the trick, will test and confirm later today!

Confirmed working OK in 1.20.4, thank you very much ! 🚀


💡 [REQUEST] - Delete Item class and use FoodItem class

Start Date
No response
Implementation PR
No response
Reference Issues
No response
Summary
Item class currently acts as a middleman between FoodItem and the shopping list (currently just a list view, ShoppingList model class needed #97).
Item references/is associated with a list view, however, this association should be one-way from the ShoppingList. i.e: the ShoppingList should be responsible for referencing the Item, not the other way around.
Basic Example

[ ] Rewrite Item class usages to FoodItem
[ ] Move relevant Item implementation to FoodItem (remove association to list views)
[ ] Delete Item class

Drawbacks
No response
Unresolved questions
No response

This will work great with the new shopping list class, a great opportunity to clean up code.


The workbench failed to connect to the server (Error: connection record disposed by ConnectionHub:

ADD ISSUE DESCRIPTION HERE
Version: 1.80.1
Commit: 74f6148eb9ea00507ec113ec51c489d6ffb4b771
User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
Embedder: codespaces

/gifplease

Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, .gif files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.
If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (Developer: Toggle Screencast Mode in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue.
Happy coding!

I am facing the same error on my repo's Codespace.
The workbench failed to connect to the server(Error: connection record disposed by ConnectionHub: {
"errorMessage": "Failed to connect to relay url Code: 1006 Reason: ",
"originalErrorType": "CreateConnectionFatalError",
"stack": "Error: Failed to connect to relay url Code: 1006 Reason: \n at
e.onclose ([CODESPACE_URL]"} $1 $1)

Hey @alexr00, this issue might need further attention.
@maghee, you can help us out by closing this issue if the problem no longer exists, or adding more information.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!

Same issue

Same here. So. Frustrating. Spent a very long time dev'ing in this and it's all gone.

I heard from the GitHub folks that this should be fixed now. I've let them know that this was still hit 2 days ago.


Problem with parsing validity times

I figured out a problem with the algorithm that checks the validity times of certificates. I got a certificate with the following UTCTime format:
1606010000Z
As you can see, the format is YYMMDDHHmmZ. This possibility seems not to be considered in x509.c mbedtls_x509_get_time() function, as it only checks, if the length of the timestamp is > 10 and then tries to parse it as seconds.
Same (but not tested) on GeneralizedTime Format.

ARM Internal Ref: IOTSSL-806

Hi Jan-Marten,
The RFC on X.509/CRLs (https://tools.ietf.org/html/rfc5280#section-<IP_ADDRESS>) explicitly demands the use of seconds (MUST) for certificates and CRLs.
So please let us know if you see another reason that makes you think the current implementation is wrong, we will consider this issue closed.
Relevant part
   For the purposes of this profile, UTCTime values MUST be expressed in
   Greenwich Mean Time (Zulu) and MUST include seconds (i.e., times are
   YYMMDDHHMMSSZ), even where the number of seconds is zero.  Conforming
   systems MUST interpret the year field (YY) as follows:

and
   For the purposes of this profile, GeneralizedTime values MUST be
   expressed in Greenwich Mean Time (Zulu) and MUST include seconds
   (i.e., times are YYYYMMDDHHMMSSZ), even where the number of seconds
   is zero.  GeneralizedTime values MUST NOT include fractional seconds.


Error when loading library on Apple Silicon arm processor

Describe the bug
The dynamic library won't load on Apple Silicon arm processor.
Error message:
E 0:00:00.326   open_dynamic_library: Can't open dynamic library: /Users/ayano/Documents/Work/ON Gaming/EaseOut/EaseOut/addons/godotsteam/osx/libgodotsteam.dylib, error: dlopen(/Users/ayano/Documents/Work/ON Gaming/EaseOut/EaseOut/addons/godotsteam/osx/libgodotsteam.dylib, 0x0002): tried: '/Users/ayano/Documents/Work/ON Gaming/EaseOut/EaseOut/addons/godotsteam/osx/libgodotsteam.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/ayano/Documents/Work/ON Gaming/EaseOut/EaseOut/addons/godotsteam/osx/libgodotsteam.dylib' (no such file), '/Users/ayano/Documents/Work/ON Gaming/EaseOut/EaseOut/addons/godotsteam/osx/libgodotsteam.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')).
  <C++ 错误>      Condition "!p_library_handle" is true. Returned: ERR_CANT_OPEN
  <C++ 源文件>     platform/osx/os_osx.mm:1956 @ open_dynamic_library()
  <栈追踪>         :0 @ Godot.Resource Godot.NativeCalls.godot_icall_3_1223(IntPtr , IntPtr , System.String , System.String , Boolean )()
                ResourceLoader.cs:57 @ Godot.Resource Godot.ResourceLoader.Load(System.String , System.String , Boolean )()
                ResourceLoaderExtensions.cs:27 @ Godot.NativeScript Godot.ResourceLoader.Load<Godot.NativeScript >(System.String , System.String , Boolean )()
                GD.cs:230 @ Godot.NativeScript Godot.GD.Load<Godot.NativeScript >(System.String )()
                ResourceManager.cs:63 @ Godot.NativeScript ResourceManager.GetResource<Godot.NativeScript >(System.String )()
                SteamManager.cs:206 @ void SteamManager.SteamInit()()
                SteamManager.cs:193 @ SteamManager..ctor()()

E 0:00:00.628   void SteamManager._Process(Single ): System.NullReferenceException: Object reference not set to an instance of an object.
  <C++ 错误>      Unhandled exception
  <C++ 源文件>     /Users/ayano/Documents/Work/ON Gaming/EaseOut/EaseOut/script/Managers/SteamManager.cs:578 @ void SteamManager._Process(Single )()
  <栈追踪>         SteamManager.cs:578 @ void SteamManager._Process(Single )()

To Reproduce
Steps to reproduce the behavior:

Install the plugin
manually add arm64 option for mac in .gdnlib
Load the .gdns library via GD.Load() in C#
run the game, it crashes when running callbacks

Expected behavior
Game launch with no error happen
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: Mac OS Ventura
Version 13.3.1 (a) (22E772610a)

Version of Godot:
v3.5.stable.mono.official [991bb6ac7]
Version of GodotSteam:
5.19.2
Additional context
The original gdnlib file didn't contain an arm64 entry for mac, so I added it.

Hey there!  I honestly don't know much about the OSX stuff so I can't really help much but I'll tag in @SapphireMH since he handles that operating system.  I kinda thought the ARM64 stuff was in but perhaps not?

I think this is the GDNative version that didn't have a proper universal .dylib yet. If I recall correctly a while back @polyrain was looking into combining the seperate .dylib's into a universal one.

AFAIK this was sorted, but I'll see what might be causing this tomorrow 👍

Oof, this is getting stale.  Any ideas gang, aka @SapphireMH and @polyrain?

Yeah, reading the error message it looks like the universal build hasn't worked:
(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')).
The Github action was building universal builds but it seems to have been deleted: https://github.com/CoaguCo-Industries/GodotSteam/commit/96329baa7629910100d898ce65a41ae19c3849f7
First thing we should try is bringing the workflow back and building the plugin again, and then incorporating @sudo-behappy 's change to the gdnlib file to see if it mounts properly in that case.

Github Actions wizardry?  That's a @SapphireMH deal.  Maybe this was a regression or oversight?  Not sure.  I know we had issues with the OSX builds because they suck up so many resources when being compiled; though I think part of that was resolved when we moved the project to CoaguCo's organizational account.  Hard to say as Sapphire has been handling all this.
I also know the Linux builds were moved to custom runners due to Github dropping 18.04.
I guess we can wait to hear from Sapphire about what changed and why.  I will be pushing major updates to all branches in about a week too so getting these changes added in before that would be good.

Oh, I see... nope, that was me.  Haha.  I may have deleted it assuming it was unneeded since we were changing things up for the GDExtension and GDNative versions that weren't be compiled by Github Actions yet.  So that deletion may be an error.

Ah, well in any case, if we bring this action back we can have universal dylibs be compiled again; and any issues that may have arisen since the workflows got added we can iron out. This should resolve the issue @sudo-behappy is having wherein the dylib only has x86 symbols.

Yeah, I don't remember how or where we were compiling the OSX ones... I only do the Windows and Linux versions.

We now have fixed this, and universal builds are once again building. @sudo-behappy, would you be able to test these latest dylibs and see if it fixes your issue?

I'll give this until next weekend then will close it as inactive.

We now have fixed this, and universal builds are once again building. @sudo-behappy, would you be able to test these latest dylibs and see if it fixes your issue?

This new universal build for OSX worked.

Very cool!  Thank you for confirming this for us.  Let me know if you find any other issues!


How do trained models are loaded for inference?

❓ Questions and Help
Hi
I trained my own model while using the pre-trained Imagenet model. Now, I have trouble understanding how my model is loaded for inference? Is first the model found in OUTPUT_DIR loaded and then the one from MODEL.WEIGHT ?
        save_dir = cfg.OUTPUT_DIR
        checkpointer = DetectronCheckpointer(cfg, self.model, save_dir=save_dir)
        _ = checkpointer.load(cfg.MODEL.WEIGHT)

Thanks in advance

If there is a last_checkpoint file in OUTPUT_DIR, it will take the file present there.
If there isn't any file named last_checkpoint in OUTPUT_DIR, it will load the weights from MODEL.WEIGHT.

If there is a last_checkpoint file in OUTPUT_DIR, it will take the file present there.
If there isn't any file named last_checkpoint in OUTPUT_DIR, it will load the weights from MODEL.WEIGHT.

if I just write,
save_dir = cfg.OUTPUT_DIR  checkpointer = DetectronCheckpointer(cfg, self.model, save_dir=save_dir)
If there isn't any file named last_checkpoint in OUTPUT_DIR, it will start from the scratch, right?


Sentence is missing the word “to”

On this page the following sentence is missing the word “to” where it says “relating flight reservations”.

As an example, consider a service built by an airline that provides information relating flight reservations, flight status, and so on.

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

ID: d4ede945-5cf8-5f30-4ac1-9036e471e406
Version Independent ID: 8fb01dd9-108d-91e0-9dc2-2c19017cca6b
Content: Custom caching in Azure API Management
Content Source: articles/api-management/api-management-sample-cache-by-key.md
Service: api-management
GitHub Login: @dlepow
Microsoft Alias: danlep

Thank you for the quick turnaround, happy to help out.


[BugFix] Fix BFD initialization error on aarch64

Why I'm doing:
BFD initialization error on aarch64:
[root@starrocks be]# uname -a
Linux starrocks 4.19.90-2<IP_ADDRESS>2.8.oe1.bclinux.aarch64 #1 SMP Tue Mar 21 09:23:05 CST 2023 aarch64 aarch64 aarch64 GNU/Linux
[root@starrocks be]# ./bin/start_be.sh --daemon
[root@starrocks be]# tail log/be.WARNING
E20241217 09:49:19.948438<PHONE_NUMBER>4448 bfd_parser.cpp:107] set default target to elf64-x86-64 failed.
[root@starrocks be]#

What I'm doing:
Fix BFD initialization error on aarch64.
What type of PR is this:

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

[ ] This is a backport pr

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.4
[x] 3.3
[ ] 3.2
[ ] 3.1
[ ] 3.0

@mergifyio backport branch-3.3 branch-3.4


Set the proper path for the Fishy Fishy thumb image

The "Fishy Fishy" game is in UnsignedArduino's repo. There is a thumb available there to use for the Mention links.
Fixes #3412
RE: https://github.com/UnsignedArduino/Fishy-Fishy-Cross-my-Ocean/commit/b786558b97ba4d2cad00e5e3db1b42ca31223443 and https://github.com/microsoft/pxt-arcade/commit/b4493cfbd1e56f975e0306b29ea27cef8259493c

ah! right, forgot that the gamejam page pulled from a totally separate markdown source for the thumbnails

You could add an award field to the JSON and just filter from that to build the winners page.


RAFT Reverted raft.py param names to dash-case

Fixes #414

@kaiwen129 fyi

@cedricvidal Should we keep things consistent and change chunk_size and openai_key in the args list to hyphen case as well?

Yes of course, I did this quickly and missed it
Cedric
On Sat, May 11, 2024 at 4:59 AM Kai Wen @.***> wrote:

@cedricvidal https://github.com/cedricvidal Should we keep things
consistent and change chunk_size and openai_key in the args list to
hyphen case as well?
—
Reply to this email directly, view it on GitHub
https://github.com/ShishirPatil/gorilla/pull/420#issuecomment-2105700719,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAIGUV37TXMMPVW72BCBJTZBYBZPAVCNFSM6AAAAABHPGSOU2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBVG4YDANZRHE
.
You are receiving this because you were mentioned.Message ID:
@.***>


remove "secure: always"

the "secure" directive it does nothing in Flexible and it's presence can imply support for this feature.

trying to close in favor of another


Add 3 issues for staticcheck, golint and unused (to then be reverted)

GopherCI needs some example analysis o be used in URL monitoring as well
as general examples. Using a third party repo (such as the one in the
integration tests repo) risks the reports failing when the diffs are
no longer available.
For this reason, I thought it might just be best for this repo to
have the examples, as this should always exist (GopherCI handles
repositories being renamed) and there won't be any force pushes.
This commit will then be reverted.

Coverage increased (+0.2%) to 56.703% when pulling b42ec84dfe2d4f074c9493e54a161f0ee48f81e4 on reference-failures into 11520b03d4fcb47fbfa2155cd10c19887cdb1b7e on master.

Of course I didn't need to merge (and I wont), so ignore those comments.


allow lasso selection of points to get unrelated (or whichever) samples

the selection will update the table

see: https://plot.ly/javascript/lasso-selection/


Support running in browser extension

https://github.com/niieani/puppeteer-intercept-and-modify-requests/blob/2dc2c26954678d12af765ffa1980873ec4e82ab9/src/main.ts#L70-L74
Take a CDPSession as client may not be so universal (It seems that we can't get a CDPSession from page.createCDPSession() in browser context), as we only need on, off, and send method. I see ExtensionTransport is implemented in extension context, but how to connect it to client of RequestInterceptionManager , any advice or I miss something already availiable?

Assuming you're using https://github.com/gajananpp/puppeteer-extension-transport#usage, you should still be able to create a CDPSession:
const extensionTransport = await ExtensionDebuggerTransport.create(tabId)
const browser = await puppeteer.connect({
    transport: extensionTransport,
    defaultViewport: null,
})

const client = await browser.target().createCDPSession()
const interceptManager = new RequestInterceptionManager(client)

I am following Running Puppeteer in Chrome extensions, note they provide offical support for running Puppeteer in Chrome extensions, though it is currently experimental. page.createCDPSession() will finally get an error after it takes a long time, I'll try to debug the function for more information, or maybe fire a issue on Puppeteer.

What's the error you get on createCDPSession?
Looks like ExtensionTransport has a send method, but it only accepts stringified messages. It might be impossible to get this working without some additional implementation work to create an abstraction layer for a fake CDPSession in Chrome Extensions.

When const target = await page.createCDPSession(); runs, it fails and fires the log below.
// error log for `const target = await page.createCDPSession();`
puppeteer:protocol:SEND ►: {"method":"Target.attachToTarget","params":{"targetId":"pageTargetId","flatten":true},"id":5}
puppeteer:protocol:RECV ◀: {"id":5,"sessionId":"pageTargetSessionId","method":"Target.attachToTarget","error":{"message":"{\"code\":-32000,\"message\":\"Not allowed\"}"}}

The debug ability for extension is provided by chrome.debugger api, it's attached by tabId like chrome.debugger.attach({tabId}, '1.3'), it's diffirent from normal CDP connection(a Browser context can have multiple pages). Can we get a new session for a pageTarget? What's the restriction for Chrome?
I file an issue on Puppeteer. Technically we can get or make a fake CDPSession, even from same session as puppeteer.

I know Puppeteer used to have a property .target() that you could call on Page (page.target()), but I think it's been deprecated. Not sure if it still works though, feel free to try it. You could then possibly pass that target to this library instead of the CDP session.


Worker getting removed

I'm running some SPC with the qcportal suite and I'm using the SlurmExecutor to scale up the number of computation on slurm. The issue is that not all the workers requested from the config gets allocated (could be that my cluster is at capacity) but after a while, the workers correctly allocated get CANCELLED. Looking at the interchange.log I can see the Managers have compatible Parsl version and Python version but at some point I get:
Interchange-Command _command_server [INFO] Received HOLD_WORKER
MainThread expire_bad_managers [WARNING] Too many heartbeats missed for manager

The workers/managers get removed from the SLURM queue and new one get allocated (in less numbers).
Some addictional info, i'm using a qcfractal manager config with update_frequency: 10, while the server config has the heartbeat_frequency:10 too. I tried to increase both the update_frequency and the heartbeat_frequency with no avail.
Edit: after a while workers are not doing any task and I had to manually kill the jobs
qcportal.client_base.PortalRequestError: Request failed: Manager slurm_manager-slclogin1-5bb9853a-0fbd-43e2-9c2a-f8840ff78b64 is not active (HTTP status 400)

or
qcportal.client_base.PortalRequestError: Request failed: Cannot update resource stats for manager slurm_manager-slclogin1-5f3b9eb4-a2e6-4822-a8ec-d3dc0f1d622f - is not active (HTTP status 400)

On further investigation I noticed that the first batch of workers/managers are killed because their Idle time is more than the max_idletime for the slurm executor in Parsl even when they are running.
parsl.jobs.strategy: Idle time has reached 120.0s for executor slurm_executor; scaling in

Are you submitting the managers themselves as jobs, or running a manager on the head node which delegates out to the SLURM queue? If it's the former, there may be a misconfiguration somewhere.
The first error here (Interchange-Command... comes from Parsl error, which means that Parsl itself is having issues spinning up workers.
Either way, is there anything in the logs for the QCFractal instance? That will usually have a little bit more info, although I'm guessing it's just managers not reporting back.

Hi @bennybp , The configuration that I setup is Server on the Head Node + Manager on the Head Node that delegates out the SLURM queues with the workers. I'll restart the server with DEBUG mode for the logging as I didn't see any useful logs from the info.

The first error here (Interchange-Command... comes from Parsl error, which means that Parsl itself is having issues spinning up workers.

Yep, for some reason it spins up correctly the workers (slurm allocate the jobs) but they get put on hold because for some reason their idletime always surpass the max_idletime from parsl.
About the config, I used the same config on another slurm cluster and it was pretty much working correctly (I also suspect that I have some I/O latency or some other issues as the SPC seems rather slow, any advice on how can I benchmark the retrieval of the jobs and the queue?)
I posted the config that I'm currently using:
cluster: slurm_manager
loglevel: DEBUG
logfile: qcfractal-manager.log
update_frequency: 180.0 # I updated this

server:
  fractal_uri: xxxxx
  username: xxxxx
  password: xxxxx
  verify: False

executors:
  slurm_executor:
    type: slurm
    scratch_directory: ${HOME}/project/qcfractal
    walltime: "72:00:00"
    exclusive: false
    partition: compute
    account: null
    workers_per_node: 20
    max_nodes: 30
    cores_per_worker: 8
    memory_per_worker: 8
    queue_tags:
      - '*'
    environments:
      use_manager_environment: False
      conda:
        - qcfractal-worker
    worker_init:
      - source worker-init.sh  # abs path for the init for the worker

with a pretty standard worker-init.sh:
#!/bin/bash

source ~/.bashrc
conda init

ulimit -s unlimited
mkdir -p "${HOME}/project/qcfractal"
cd "${HOME}/project/qcfractal"
source ${HOME}/conda/bin/activate qcfractal_manager

I know that parsl would require full exclusivity of the node, could it be a big issue currently that I'm not enabling it?

Ok I've been thinking about this a bit more. There could be a couple issues, although it's not entirely clear. Below is some semi-random thoughts.
One part is that the slurm jobs might be getting killed out from under parsl. One thing to check is the raw outputs from slurm. Parsl keeps these in the parsl_run_dir (this is configurable in the manager config, but the default is parsl_run_dir, and I believe typically exists in the same directory as the manager config). This should hopefully give hints as to why the slurm jobs are being killed.
The more mysterious part is that the qcfractal server is determining your manager is dead, when it is very much alive still. An update frequency of 10 is a little low, but not so bad (especially if your tasks are small). A heartbeat frequency (on the server config) of 10 is probably a bit low - 60-180 seconds is typically what I run with, with a heartbeat_max_missed of 5. This would allow for networking issues or other random errors lasting 5-10 minutes.
Side note: I realized the docs are a bit wrong. The update frequency is only the time between a qcfractal manager requesting new tasks. It is not related to the heartbeat mechanism at all, which is handled automatically and not configurable on the manager side.

I also suspect that I have some I/O latency or some other issues as the SPC seems rather slow

You can look at the qcfractal server log - with log level DEBUG it will print response times for the accesses as they come in. It's possible some request takes so long that the manager chokes on it (although the heartbeat mechanism and the job fetching mechanism run in different threads).
Two other random ideas:

Are you running your database with its data directory on network storage? I've seen problems with this, although typically only under load. The postgres log may have some complaints
Unlikely, but do you have a multiple job runner processes or servers behind a load balancer or proxy? I made mistake once and had separate job runners with different heartbeat times, so one was always marking managers dead when they weren't.

If you feel comfortable with sharing any logs (either here or by email), I could have a look.

Ehy @bennybp , first of all, thank you for all the help that you are giving me.

One thing to check is the raw outputs from slurm.

Yes, I checked the output from both the worker (no issues in the worker logs or manager nor interchange) and the slurm files. The slurm shell file for the compute allocation is correct and (for the worker that get cancelled) the stdout  just presents the usual
No action taken.
Found cores : xxx
Launching worker: 1

While the stderr has a slurmstepd: error: *** job id timestamp ***
Interchange has the request of the scancel of the jobid and sacct agrees that the job was cancelled by my user.

60-180 seconds is typically what I run with, with a heartbeat_max_missed of 5. This would allow for networking issues or other random errors lasting 5-10 minutes.

I'll change them to better values but even increasing the server config heartbeat to around 180 seconds didn't change much (and also the update_frequency of the manager)

You can look at the qcfractal server log - with log level DEBUG it will print response times for the accesses as they come in. It's possible some request takes so long that the manager chokes on it (although the heartbeat mechanism and the job fetching mechanism run in different threads).

On my attempt on checking the DEBUG logs of the manager, I didn't see any response times logged beside the idletime from parsl but maybe I'm looking at the wrong things. I can share partial of the DEBUG logs (or even the full of it but it is 1Gb right now, better if by email).

database with its data directory on network storage?

Database is on the cloud and after some debugging and benchmarking, I found that retrieving task and making post request is basically the bulk of the time and the bottleneck (in comparison of the SPC calculation that is rather fast for now) from the ManagerClient (for a low amount of workers a single post request in return_finished is 3.5k ms for a body of 52 bytes... I will experiment with the data directory on the network in the meantime to remove this issue while I find some way to improve this)

do you have a multiple job runner processes or servers behind a load balancer or proxy?

Nope
One last question, because I'm doing some massive data generation and for the type of data that I'm handling (1 molecule is basically always 1 new entry), I fear that the querying will start to become a bottleneck as the size of the database and the tables will actually grow a lot. Do you think that is something I need to take in account?

Interchange has the request of the scancel of the jobid and sacct agrees that the job was cancelled by my user.

I didn't see any response times logged beside the idletime from parsl but maybe I'm looking at the wrong things

I meant the fractal server logs (not the manager log). There's so many log files :)
The server logs should contain something like this, with the response time at the end
[2024-10-12 00:11:58 UTC] (MainProcess     )    DEBUG: fractal_flask_app: GET api: 0 -> 1871780 [605.3ms]
[2024-10-12 00:12:00 UTC] (MainProcess     )    DEBUG: fractal_flask_app: GET api: 0 -> 60 [1.3ms]
[2024-10-12 00:12:00 UTC] (MainProcess     )    DEBUG: fractal_flask_app: POST api: 98 -> 76 [2.2ms]
[2024-10-12 00:12:00 UTC] (MainProcess     )    DEBUG: fractal_flask_app: POST api: 69 -> 23076 [6.5ms]

is 3.5k ms for a body of 52 bytes

That's definitely seems excessive, although 3.5s shouldn't really cause things to break (that tends to happen around 60 seconds). I guess the question is how much slower it is for a 'real' payload. I know there can be a bit of slowness when returning tasks to a busy server, which is something I need to look into.

I can share partial of the DEBUG logs

Whatever you are willing to send. They typically compress nicely, too :)

One last question, because I'm doing some massive data generation and for the type of data that I'm handling

Depends on how massive. We have >100M records and 4-5TB of data in one server, and it works well. There are certain operations that I need to improve (mostly dataset operations related to modifying existing records), so you might hit some rough edges there. We typically keep individual datasets to around 100k entries for that reason.

I meant the fractal server logs (not the manager log). There's so many log files :)

Strange thing, my current log of the server in DEBUG don't have that kind of logging.
I'll send the logs but usually it is something like this (didn't find any API response times):
[2024-10-09 12:37:58 MDT] (MainProcess     )     INFO: alembic.runtime.migration: Context impl PostgresqlImpl.
[2024-10-09 12:37:58 MDT] (MainProcess     )     INFO: alembic.runtime.migration: Will assume transactional DDL.
[2024-10-09 12:37:58 MDT] (MainProcess     )    DEBUG: qcfractal.components.internal_jobs.socket: Job with name iterate_services already found. Not adding
[2024-10-09 12:37:59 MDT] (MainProcess     )    DEBUG: qcfractal.components.internal_jobs.socket: Job with name check_manager_heartbeats already found. Not adding
[2024-10-09 12:37:59 MDT] (Process-2       )    DEBUG: internal_job_runner:46576ba0-b718-4d06-ac13-4d506e78f6d9: checking for jobs
[2024-10-09 12:37:59 MDT] (Process-2       )    DEBUG: internal_job_runner:46576ba0-b718-4d06-ac13-4d506e78f6d9: checking for jobs before date 2024-10-09 18:37:59.394858+00:00
[2024-10-09 12:37:59 MDT] (Process-2       )     INFO: internal_job_runner:46576ba0-b718-4d06-ac13-4d506e78f6d9: running job iterate_services id=4112999 scheduled_date=2024-10-09 18:37:58.078250+00:00
...
[2024-10-10 07:16:04 MDT] (Process-2       )    DEBUG: internal_job_runner:ba5317c4-f867-4c5e-a0fb-4cb3c3c1a8dd: checking for jobs
[2024-10-10 07:16:04 MDT] (Process-2       )    DEBUG: internal_job_runner:ba5317c4-f867-4c5e-a0fb-4cb3c3c1a8dd: checking for jobs before date 2024-10-10 13:16:04.824062+00:00
[2024-10-10 07:16:04 MDT] (Process-2       )    DEBUG: internal_job_runner:ba5317c4-f867-4c5e-a0fb-4cb3c3c1a8dd: no jobs found
[2024-10-10 07:16:04 MDT] (Process-2       )    DEBUG: internal_job_runner:ba5317c4-f867-4c5e-a0fb-4cb3c3c1a8dd: found future job scheduled for 2024-10-10 13:17:04.770762+00:00, waiting up to 59.80 seconds
[2024-10-10 07:16:05 MDT] (Process-1       )     INFO: qcfractal.components.tasks.socket: Processed 10 returned tasks (0 successful, 10 failed, 0 rejected).
[2024-10-10 07:16:05 MDT] (Process-1       )     INFO: qcfractal.components.tasks.socket: Received completed tasks from slurm_manager-slclogin1-6d40cf08-3cea-40fa-af2d-938c1550d389.
[2024-10-10 07:16:05 MDT] (Process-1       )     INFO: qcfractal.components.tasks.socket:     Task ids:<PHONE_NUMBER>41<PHONE_NUMBER>43<PHONE_NUMBER>53<PHONE_NUMBER>55<PHONE_NUMBER>57
[2024-10-10 07:16:07 MDT] (Process-1       )     INFO: qcfractal.components.tasks.socket: Processed 10 returned tasks (0 successful, 10 failed, 0 rejected).

Depends on how massive. We have >100M records and 4-5TB of data in one server, and it works well.

I'm currently splitting my datasets into multiple 75k-ish records datasets but the scaling will go around 1B of entries

Thanks for the logs. I have a bit of a hypothesis now.
The manager code is fairly serial. Updates (returning finished tasks and claiming new tasks) happen on a regular schedule (controlled by update frequency). If these updates take too long, the manager may actually miss sending its heartbeat and the server will assume it is dead.
Here's what I see: For some reason, the time it takes to claim or return tasks is a bit long (which is something I need to look into more).

[2024-10-14 08:19:41 MDT] (Process-1       )    DEBUG: fractal_flask_app: POST compute: 130562 -> 156 [3711.1ms]

That's 3.7 seconds to return 10 tasks. The size of the data sent to the server is 130,562 bytes. This is pretty long for so little data.
So putting it together, it looks like you have lots and lots of small, fast jobs. You are limited to claiming 200 tasks in a single request to the server, and returning 10 in a single request (these are configurable - see manager_tasks_claim and manager_tasks_return)). These limits are per-request, and the manager will automatically make multiple requests (see here) serially until everything is returned. But this blocks the heartbeat from being sent!
Returning tasks or claiming tasks did not count as a heartbeat, but I have a PR #851 that does that. So that should help. But there's still an underlying issue of returning & claiming being kind of slow.
This is still somewhat a hypothesis, but seems logical from what I am seeing in the logs. Or it could be something completely different :)

I agree with everything you pointed out (and yes, in this logs I'm calculating some xtb semi empirical values so it is indeed quite fast).

You are limited to claiming 200 tasks in a single request to the server, and returning 10 in a single request (these are configurable - see manager_tasks_claim and manager_tasks_return)).

I already tried beforehand to modify the manager claim and return and I noticed that the API request increase quite a bit. As now, I m claiming 400 taks and returning 20, I'll update soon in the issue the time increase.

Returning tasks or claiming tasks did not count as a heartbeat, but I have a PR https://github.com/MolSSI/QCFractal/pull/851 that does that. So that should help. But there's still an underlying issue of returning & claiming being kind of slow.

Thank you for pointing this out. I'm now using this branch and update with the results on this.
I'm also testing things out on the parsl side and switching type of launchers and modifying the DataFlowKernel a bit. I'll soon update here with some extra infos and results.
Side note, I should probably start helping a bit with this project 😅

I overrided min_blocks in the executor config and switched to a Srun launcher and for now this seems to have a positive impact (no worker getting randomly removed).

Sounds like that might help with the Parsl issues. Let me know how it goes!
I've started looking at the task claiming/returning code to see if I can speed it up. I definitely see a way to reduce the time to claim tasks (hopefully by an order of magnitude or more), but that requires a database change. Task returning code might be more difficult, but should also be doable.

Sounds like that might help with the Parsl issues. Let me know how it goes!
So far it is looking good

I've started looking at the task claiming/returning code to see if I can speed it up. I definitely see a way to reduce the time to claim tasks (hopefully by an order of magnitude or more), but that requires a database change. Task returning code might be more difficult, but should also be doable.

Is there any way I can help with it? I am also wondering if trying AlloyDB is worth it instead of a normal PostGresQL.
Also these problems are not really a blocker for real and expensive DFT calculations where the single point wall time > query retrival or submission I guess

Any sort of benchmarking would be helpful. I made a quick attempt at getting parts of the server to run with cProfile, but it doesn't run well since waitress seems to cause it to swallow the profiling info. I didn't look too much at it
Attempt here: https://github.com/MolSSI/QCFractal/commits/bench/
For claiming, the issue is that the query is just not optimal (mostly due to the filtering by waiting on the base record table). But I have a fix in mind, which won't take long. Would be nice if you could test it  when it's ready (by Monday or so).

Also these problems are not really a blocker for real and expensive DFT calculations where the single point wall time > query retrival or submission I guess

Yes exactly, although it's always nice to see people push the boundaries so that it can be improved!

AlloyDB is worth it instead of a normal PostGresQL

I don't have any experience with that. My guess is that it might not help (because it's the query that's just inefficient) but would be nice to see if QCFractal works on that. It's fairly restricted to things compatible with Postgresql, so AlloyDB might work.

For claiming, the issue is that the query is just not optimal (mostly due to the filtering by waiting on the base record table). But I have a fix in mind, which won't take long. Would be nice if you could test it when it's ready (by Monday or so).

Yes that will be done instantly. I'm already running the qcfractal PR for the hearthbeat with some slight modifications.

Any sort of benchmarking would be helpful. I made a quick attempt at getting parts of the server to run with cProfile, but it doesn't run well since waitress seems to cause it to swallow the profiling info. I didn't look too much at it
Attempt here: https://github.com/MolSSI/QCFractal/commits/bench/

In my profiling I used py-spy and it worked ok-ish. I am still trying to have a complete profile and will keep you updated.
Complete as profiling both the qcfractal operations, the qcfractalcompute and all the other more important operations.

Yes exactly, although it's always nice to see people push the boundaries so that it can be improved!

With some time i will also push the number of entries to >1B

I've improved the claim behavior in #852 if you would like to try it out and see how much it improves that side!
Next is improving when managers return tasks, which is going to be even a bit difficult. But judging from the times above, also pretty important.

Thank you a lot @bennybp ! I will migrate the db and start some testing + profiling with the new branch

With the new branch I'm getting timed out while submitting new calculations:
File "/mnt/ps/home/CORP/cristian.gabellini/conda/envs/qmodd/lib/python3.11/site-packages/qcportal/client_base.py", line 339, in _request
    r = self._req_session.send(prep_req, verify=self._verify, timeout=self.timeout)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/ps/home/CORP/cristian.gabellini/conda/envs/qmodd/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/ps/home/CORP/cristian.gabellini/conda/envs/qmodd/lib/python3.11/site-packages/requests/adapters.py", line 713, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='xxxx', port=7777): Read timed out. (read timeout=300)

I'll downgrade the db to check that it is not related to the branch but from some small tests there is a def a speedup in the claiming of the tasks. I'll follow up with proper benchmarking to report the time gain.

Are you still getting those timeouts? It's almost certainly unrelated to my recent changes.
I have added some internal batching before, but maybe I missed somewhere that could use it


fix(docker): optimize docker hardware image size by cleaning up apt cache

This PR optimizes the -hardware Docker image size by including commands to clean up the APT cache after package installation. This change reduces the overall image size by removing unnecessary files and directories that are not needed in the final image, leading to faster download and deployment times.

Thanks!


Async setupGlobal is throwing errors

Issue:
When trying to put an async function into setupGlobal - getting a lot of strange errors.
Expected behavior:
No errors runtime.
Debug log:

log file content
# content of ts-jest.log :
{"context":{"diagnosticCodes":[2683,2683,7006,7006,7006,7006,7006,7006,7006,7006,7006,7006,7041],"diagnosticText":"\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m2\u001b[0m:\u001b[93m18\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS2683: \u001b[0m'this' implicitly has type 'any' because it does not have a type annotation.\n\n\u001b[7m2\u001b[0m var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n\u001b[7m \u001b[0m \u001b[91m                 ~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m2\u001b[0m:\u001b[93m26\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS2683: \u001b[0m'this' implicitly has type 'any' because it does not have a type annotation.\n\n\u001b[7m2\u001b[0m var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n\u001b[7m \u001b[0m \u001b[91m                         ~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m2\u001b[0m:\u001b[93m55\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'thisArg' implicitly has an 'any' type.\n\n\u001b[7m2\u001b[0m var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n\u001b[7m \u001b[0m \u001b[91m                                                      ~~~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m2\u001b[0m:\u001b[93m64\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter '_arguments' implicitly has an 'any' type.\n\n\u001b[7m2\u001b[0m var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n\u001b[7m \u001b[0m \u001b[91m                                                               ~~~~~~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m2\u001b[0m:\u001b[93m76\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'P' implicitly has an 'any' type.\n\n\u001b[7m2\u001b[0m var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n\u001b[7m \u001b[0m \u001b[91m                                                                           ~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m2\u001b[0m:\u001b[93m79\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'generator' implicitly has an 'any' type.\n\n\u001b[7m2\u001b[0m var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n\u001b[7m \u001b[0m \u001b[91m                                                                              ~~~~~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m3\u001b[0m:\u001b[93m47\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'resolve' implicitly has an 'any' type.\n\n\u001b[7m3\u001b[0m     return new (P || (P = Promise))(function (resolve, reject) {\n\u001b[7m \u001b[0m \u001b[91m                                              ~~~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m3\u001b[0m:\u001b[93m56\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'reject' implicitly has an 'any' type.\n\n\u001b[7m3\u001b[0m     return new (P || (P = Promise))(function (resolve, reject) {\n\u001b[7m \u001b[0m \u001b[91m                                                       ~~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m4\u001b[0m:\u001b[93m28\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'value' implicitly has an 'any' type.\n\n\u001b[7m4\u001b[0m         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\u001b[7m \u001b[0m \u001b[91m                           ~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m5\u001b[0m:\u001b[93m27\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'value' implicitly has an 'any' type.\n\n\u001b[7m5\u001b[0m         function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\u001b[7m \u001b[0m \u001b[91m                          ~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m6\u001b[0m:\u001b[93m23\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'result' implicitly has an 'any' type.\n\n\u001b[7m6\u001b[0m         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n\u001b[7m \u001b[0m \u001b[91m                      ~~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m6\u001b[0m:\u001b[93m87\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7006: \u001b[0mParameter 'resolve' implicitly has an 'any' type.\n\n\u001b[7m6\u001b[0m         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n\u001b[7m \u001b[0m \u001b[91m                                                                                ~~~~~~~\u001b[0m\n\u001b[96msrc/tests/setup/GlobalSetup.ts\u001b[0m:\u001b[93m13\u001b[0m:\u001b[93m34\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS7041: \u001b[0mThe containing arrow function captures the global value of 'this' which implicitly has type 'any'.\n\n\u001b[7m13\u001b[0m module.exports = () => __awaiter(this, void 0, void 0, function* () {\n\u001b[7m  \u001b[0m \u001b[91m                                 ~~~~\u001b[0m\n","logLevel":20,"namespace":"TSError","package":"ts-jest","version":"24.0.2"},"message":"created new TSError","sequence":6711,"time":"2019-04-11T16:05:06.303Z"}

Minimal repo:
Unfortunately, can't do it. But I can provide globalSetup:

import { DBConnectionManager } from './DBConnectionManager'

module.exports = async () => {
  await DBConnectionManager.awaitConnection()
}

That DBConnectionManager is basically a little wrapper around getManager() in TypeORM.
Would be very thankful for any help 🙏

I see from debug log that it said
'this' implicitly has type 'any' because it does not have a type annotation
does it give you any hints ?

Should I define this? And why, if I don't use that? This "hint" doesn't appear, when using a synchronous  function, instead of async one

I never encounter this case before. Did you put async into jest.config.js or where exactly did you put that  setupGlobal ?

That function is a separated file and path to it is defined in jest.config.js

hmm I think maybe the jest guys can answer this question. To be honest I never try to put async function into jest.config.js

Would appreciate it a lot. I Googled it and it seems that you can actually put an async function there (they use it as an example in their documentation - https://jestjs.io/docs/en/puppeteer). But with TS it causes a lot of problems :(

hmm if my global-setup.js including the async function is fine, but if I import function from a ts file then it can't run test. Do you have an example of how you config this with mix of js and ts ?

It is in the header of this issue. With ts-jest, I suppose, you can directly use TS functions

From the jest docs:

Note: While code transformation is applied to the linked setup-file, Jest will not transform any code in node_modules. This is due to the need to load the actual transformers (e.g. babel or typescript) to perform transformation.

This should clarify your issue.

Thanks @phikes for the suggestion. I will close this.


Add signMessage function to Bitkeep adapter

Add signMessage function to the Bitkeep adapter.
Works now in the latest Bitkeep Browser Extension ( v1.2.1) .
The Mobile Bitkeep Wallet will support UInt8Array soon.

Thanks @mauser-pmon!

WIP: Just found out that the BitKeep Chrome Addon uses strings instead of Uint8Array for input/output of signMessage. Need to refactor more.

Is this still true?

@jordansexton : Yes, just tried with the latest Version of the BitKeep Chrome Wallet. When I pass a Uint8Array to the SignMessage method of window.bitkeep.solana, I see an error in the Wallet 'failed TypeError: Expected String" when trying to sign the message.
I tried to make a work around by converting it to text before passing it in, but the result was now correct or the same as for the other wallets.

When I pass a Uint8Array to the SignMessage method of window.bitkeep.solana, I see an error in the Wallet 'failed TypeError: Expected String" when trying to sign the message.

I'm not sure I understand. It sounds like it may be required to detect this in Chrome somehow? Or get Bitkeep to make their implementation consistent? I don't think we should merge this if it's broken in Chrome, or works differently in different browsers.

I'm not sure I understand. It sounds like it may be required to detect this in Chrome somehow? Or get Bitkeep to make their implementation consistent? I don't think we should merge this if it's broken in Chrome, or works differently in different browsers.

I am trying to get in touch with the Bitkeep team to add/fix the Solana signMessage implementation for their Wallets (mobile/chrome extension) ... had no luck until now to get an answer.

Our uint8array type is changed to hex communication

SignMessage is supported in v1.2.0 . chrome extensionsThe latest version is v1.2.1. you can try it

Yes thanks, it seems to work now in the chrome extension. In the Mobile Bitkeep apps it is still only uses strings unfortunately.

@jordansexton : I have now the confirmation from the BitKeep team that also the Mobile Wallet should be fixed in the next days.
In my opinion you could merge this PR.

Please use version 7.1.2 for app mobile.

Please use version 7.1.2 for app mobile.

Cool thanks, will check it out as soon as its available in my Google Play store. (don't have the option to update from 7.1.1 for now)

@keepresolve : Finally got the update on my Android Phone .. .singMessage works like a charm!
@jordansexton: Would be great if we could merge this PR!

Published:

@solana/wallet-adapter-bitkeep => 0.3.5


FR: The InfluxDB measurement name for SNMP metric collections

The InfluxDB measurement name for SNMP metric collections can be constructed in the following way:

If the MIB name is empty string (this happens if the metric is scalar and defined without MIB key):

measurement name = “device”

If the MIB name starts with “/” - want to be able to normalize SNMP metadata and metrics to the structure similar to YANG models

Remove last “/” from MIB name (if exist) and first “/” from table name (if exist) and
measurement name = MIB + “/” + Table

If the MIB name does not start with “/” - this are "normal" SNMP OID names, which usually representation is "MIB::Table"

measurement name = MIB + “::” + Table

Think this one is handled now.


Failed to build on MSYS2 MINGW64

FAILED: CMakeFiles/c-ray.dir/src/c-ray.c.obj
C:\msys64\mingw64\bin\cc.exe -DCRAY_SDL_ENABLED -IC:/msys64/home/Administrator/c-ray/src -IC:/msys64/home/Administrator/c-ray/tests -IC:/msys64/mingw64/include/SDL2 -Wall -Wextra -Wno-missing-field-initializers -std=gnu99 -D_GNU_SOURCE -O2 -ftree-vectorize -g -flto=auto -fno-fat-lto-objects -MD -MT CMakeFiles/c-ray.dir/src/c-ray.c.obj -MF CMakeFiles\c-ray.dir\src\c-ray.c.obj.d -o CMakeFiles/c-ray.dir/src/c-ray.c.obj -c C:/msys64/home/Administrator/c-ray/src/c-ray.c
In file included from C:/msys64/home/Administrator/c-ray/src/c-ray.c:30:
C:/msys64/home/Administrator/c-ray/src/utils/protocol/server.h:12:10: fatal error: arpa/inet.h: No such file or directory
   12 | #include <arpa/inet.h>
      |          ^~~~~~~~~~~~~
compilation terminated.

Hey, thanks for reporting. Currently, the network protocol is not supported on Windows, as it assumes a Berkeley sockets style API.
I'm guarding the network code with a simple #ifndef WINDOWS. Reworking these guards is needed to get it building on MINGW environments.
I don't have a MINGW environment available, but the included instructions in the README on how to build natively on Windows should still work.

Hey, thanks for reporting. Currently, the network protocol is not supported on Windows, as it assumes a Berkeley sockets style API. I'm guarding the network code with a simple #ifndef WINDOWS. Reworking these guards is needed to get it building on MINGW environments. I don't have a MINGW environment available, but the included instructions in the README on how to build natively on Windows should still work.

Shouldn't it be #ifndef _WIN32? Your usage of #ifndef WINDOWS is wrong. This is the reason why <arpa/inet.h> is still included.

Oh I see, -DWINDOWS is added by you on your CMakeLists.txt. @vkoskiv What about replacing #ifndef WINDOWS in code with #ifndef _WIN32 so you will not need to define -DWINDOWS on CMakeLists.txt? Btw, please have a look at your CMakeLists.txt and add support for MinGW compiler. You could use if (MinGW) to check for MinGW on CMake. Currently you only check for MSVC so -DWINDOWS is not defined when building with MSYS2.

Btw, please have a look at your CMakeLists.txt and add support for MinGW compiler.

I personally don't have a need for MinGW support, nor a test environment to implement that support, but I'd be happy to merge in those changes if someone else works on it.


Changing Episodes While Sharing

Next episode on a shared session doesn't change everyone on the session
Using an arrow button to skip time it only happens locally, not for everyone that's watching
Shared session auto-plays
Using the scroll bar changes the volume, but the episode viewer may require scrolling, thus changing your volume

True .. This is something I am still figuring out. Basically I need to redesign the session-ID handling, because currently the session is connected to the one movie/Episode only. But Seeing as I want a bigger friendship thing (see https://github.com/dularion/streama/issues/304)

Ill extract the last bit of your description as a separate issue

thanks

actually it doesnt need to be closed


How can I configure SMB shares in Virtual DSM?

Accessing SMB shares within a Virtual DSM  running in a Docker container inside an unprivileged LXC container
Not a native English speaker, referenced other people’s code.
https://github.com/vdsm/virtual-dsm/issues/382
# ls -l /dev-104/*
crw-rw---- 1 100000 messagebus 10, 232 Mar 28 23:40 /dev-104/kvm
crw-rw---- 1 100000 messagebus 10, 238 Mar 28 23:40 /dev-104/vhost-net

/dev-104/dri:
total 0
crw-r--r-- 1<PHONE_NUMBER>00 226,   0 Mar 28 23:40 card0
crw-r--r-- 1<PHONE_NUMBER>00 226, 128 Mar 28 23:40 renderD128

/dev-104/net:
total 0
crw-rw-rw- 1<PHONE_NUMBER>00 10, 200 Mar 28 23:40 tun

my lxc.conf
# lxc.config
arch: amd64
cores: 4
features: fuse=1,mount=nfs;cifs,nesting=1
hostname: lxc-ubuntu
memory: 4096
mp0: /mnt/ssd1,mp=/mnt/ssd1
mp1: /mnt/ssd1/docker_runtime,mp=/var/lib/docker
net0: name=eth0,bridge=vmbr0,firewall=1,gw=<IP_ADDRESS>,hwaddr=xx:xx:xx:xx:xx:xx,ip=<IP_ADDRESS>/24,ip6=dhcp,type=veth
onboot: 1
ostype: ubuntu
rootfs: local:104/vm-104-disk-0.raw,mountoptions=lazytime,size=16G
startup: order=2
swap: 4096
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 10:232 rwm
lxc.cgroup2.devices.allow: c 10:238 rwm
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev-104/net/tun dev/net/tun none bind,create=file 0 0
lxc.mount.entry: /dev-104/kvm dev/kvm none bind,create=file 0 0
lxc.mount.entry: /dev-104/vhost-net dev/vhost-net none bind,create=file 0 0
lxc.mount.entry: /dev-104/dri/card0 dev/dri/card0 none bind,create=file 0 0
lxc.mount.entry: /dev-104/dri/renderD128 dev/dri/renderD128 none bind,create=file 0 0

my docker-compose.yml
version: "3.8"
networks:
  #vdsm:
  #  driver: macvlan
  #  driver_opts:
  #    parent: eth0.83
  #  ipam:
  #    config:
  #      - subnet: <IP_ADDRESS>/24
  #        gateway: <IP_ADDRESS>
  dsm:
    container_name: dsm
    image: vdsm/virtual-dsm
    environment:
      DISK1_SIZE: "16G"
      DISK2_SIZE: "64G"
    volumes:
      - ./dsm:/storage1
      - /mnt/ssd1/tmp:/storage2
    devices:
      - /dev/kvm
      - /dev/net/tun
      - /dev/vhost-net
      - /dev/dri
    device_cgroup_rules:
      - c *:* rwm
    cap_add:
      - NET_ADMIN
    ports:
      - 5000:5000
      - 445:445
    restart: unless-stopped
    stop_grace_period: 2m
    environment:
      DISK_FMT: "qcow2"
      RAM_SIZE: "4G"
      CPU_CORES: "4"
      GPU: "Y"
      ALLOCATE: "N"
      # DHCP: "Y"
    sysctls:
      - net.ipv4.ip_forward=1
    #networks:
    #  vdsm:
    #    ipv4_address: <IP_ADDRESS>

The current issue is that accessing the DSM’s shared folders via SMB is not possible. [How can this be configured? Additionally, how can the network be configured to assign the DSM its own IP within the <IP_ADDRESS>/24 subnet?
Thanks!

下面是给中文搜索引擎用的
The following is for Chinese search engines; English users can skip it
自己瞎弄得，但是很意外能运行起来，在lxc非特权容器中套娃了docker，再通过共享kvm再次套娃了群晖虚拟机，但是在设置共享文件出了问题，不知道怎么设置和访问
引流： PVE LXC DSM

Personally i never was able to do it and ended up with macvlan solution, which gave me quite some pain to setup with Traefik too, but after all i managed to do it and i have ddsn access to my vdsm as well as windows shares.


Feature/online links

:rocket: deployment of profiles-pr-126 in nhsuk-dev succeeded (http://profiles-pr-126.dev.beta.nhschoices.net)

:rocket: deployment of profiles-pr-126 in nhsuk-dev succeeded (http://profiles-pr-126.dev.beta.nhschoices.net)


XFF field breaks the cache status field

Version: GoAccess - 1.6.2.
Example log entries:
[21/Jul/2022:00:00:06 +0000] [72dfa78678dcb2e7-MAN] <IP_ADDRESS> <IP_ADDRESS> "GET /status HTTP/2.0" "200" 51 "www.example.com" "https://www.example.com/examplepath" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:99.0) Gecko/20100101 Firefox/99.0" "<IP_ADDRESS>" MISS "0.73" 0.066 1021 1541 HTTP/2.0
[21/Jul/2022:00:00:07 +0000] [72dfa78ee9ecb2e7-MAN] <IP_ADDRESS> <IP_ADDRESS> "POST /status HTTP/2.0" "200" 611 "www.example.com" "https://www.example.com/examplepath" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:99.0) Gecko/20100101 Firefox/99.0" "<IP_ADDRESS>" - "1.56" 0.384 1724 2238 HTTP/2.0
[21/Jul/2022:08:45:10 +0000] [72e2a8a94e348865-FRA] <IP_ADDRESS> <IP_ADDRESS> "GET /test.jpg HTTP/2.0" "200" 181 "www.example.com" "https://www.example.com/examplepath" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:99.0) Gecko/20100101 Firefox/99.0" "<IP_ADDRESS>" HIT "2.75" 0.047 1145 1286 HTTP/2.0

If I use this format string:
log-format [%d:%t] [%^] %^ %h "%r" "%s" %b "%v" "%R" "%u" "~h{, }" %C "%^" %T %^ %^ %^

I'll get an empty cache status panel.
If I use this instead:
log-format [%d:%t] [%^] %^ %h "%r" "%s" %b "%v" "%R" "%u" "%^" %C "%^" %T %^ %^ %^

Then the cache status panel will behave normally.

This should work, let me know how it goes:
goaccess access.log --log-format='[%x] %^ ~h{ } "%r" "%s" %b "%v" "%R" "%u" %^ %C "%T" %^' --datetime-format='%d/%b/%Y:%H:%M:%S %z'

BTW, I wasn't sure which one was %T, so feel free to change it.

Changing %T to the next field as you had it.
goaccess accesslog --log-format='[%x] %^ ~h{ } "%r" "%s" %b "%v" "%R" "%u" %^ %C %^ %T %^' --datetime-format='%d/%b/%Y:%H:%M:%S %z'

Eh no. I didn't have any issue with datetimes. I have
time-format %H:%M:%S %z
date-format %d/%b/%Y

set beforehand.
However the issue is that, when I attempt to handle the X-Forwarded-For field (the 7th field from right) I'll lose cache status. Ignoring it is fine.

Did you try what I posted? The format I posted works fine for me. e.g.,

The nginx log directive is:
log_format  cf  '[$time_local] [$cf_ray] $realip_remote_addr $remote_addr "$request" '
    '"$status" $body_bytes_sent "$http_host" "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for" $upstream_cache_status '
    '"$gzip_ratio" $request_time $bytes_sent $request_length $server_protocol';

Thus it makes no sense to put ~h{ } at the place of $remote_addr.

I have no huge issues with the original format strings anyway. However note these T. S. field (%T) after "~h{, }". They are gone.
The cache statuses are also gone:

If I replace the "~h{, }" to "%^" everything is back to normal:

So I suspect there is something broken in "~h{, }" that prevents fields after that being parsed.

I guess I'm not following, aren't <IP_ADDRESS> & <IP_ADDRESS>  the client ips? You can't use %h and ~h on the log-format. It has to be one or the other one.

<IP_ADDRESS> is ip of the proxy. <IP_ADDRESS> is the real ip extracted by nginx. And there is an additional raw XFF header value.
Yes when %h is eliminated this bug no longer appears as well. But I think the side effect caused by using %h and ~h altogether is still unexpected? That is, goaccess is not properly ignoring ~h  when %h is present.

Thanks for reporting this. The issue should be fixed upstream now. Please feel free to build from development and let me know if that solves the issue on your end.
Also please note that the parser will now attempt to process the XFF even when %h has already been set. So if you can get the host field from your log via %h, do that — for performance reasons, I'd avoid using %h and ~h together.


Distinguishing PUT and GET responses corresponding to the same URL

Hi
So I have a URL http://server/api/v1/users . This URL can be used to GET  a list of user names or it can be used to PUT a list of users (the users are specified in the request body). This is quite common in RESTful services. The response to the GET and PUT requests are naturally different. How do I use Overcoat to distinguish between the GET and PUT response corresponding to the same URL ? Right now, Overcoat tries to map the PUT response to the object that I've specified in modelClassesByResourcePath for the GET query. Help please!
thanks!

hello
Can you share how you solved it?

Hi,
have you solved?

I "solved" it by removing Overcoat... and manually parse the response with MTLJSONAdapter

@priyarajagopal How did you finally solve this?

Hi guys,
though this is an issue long ago, I'd like to support this in Overcoat. (I'm new maintainer since this summer.)
I have a purpose that the URLMatcher would be configured like:
+ (NSDictionary *)modelClassesByResourcePath {
    return @{
        @"model": [OVCTestModel class],
        @"path": [OVCURLMatcherNode nodeWithClassesByHTTPRequestMethods:@{
            @"*": [SomeModel class],
            @"GET": [SomeGetModel class],
            @"PUT": [SomePutModel class],
        }],
    };
}

So all requests to URL like http://api.example.com/model would still use OVCTestModel for the response.
And the URL Matcher would use SomeGetModel for GET requests to http://api.example.com/path, SomePutModel for PUT requests, and SomeModel for other methods like POST, DELETE, and etc.

What about distinguishing responses corresponding to the same URL and different query parameters.
/same/path/script.cgi, parameter: query=overview
/same/path/script.cgi, parameter: query=info

@0ldF0x: sure :+1:


Add profile cards in the team.md page

Hey @ScreamingHawk
I don't want to break things by adding random CSS where I shouldn't. I wanted to have proper profile cards on the website.
Nothing crazy, the basic one from the w3schools website is good: https://www.w3schools.com/howto/howto_css_cards.asp
And then make it a flip card for the blurb: https://www.w3schools.com/howto/howto_css_flip_card.asp
These are the profile pictures but let me know if I need to make them square and re-upload them
assets/img/Kate-website.png
assets/img/Serena-website.png
Possible? If so, ETA?

Maybe today if I get a chance. Shouldn't be too difficult.
Could you post the text you want and I can test that works too?

Kate Standen
Founder and Salesforce Consultant
@misskatles will have to give you her blurb 😺
Serena Cappellini
Salesforce Specialist
Serena comes from 15+ years of customer experience across many different sectors, including SaaS and web agencies. Here at Ao Collaboration, she is invested in helping improving processes and operation, as well as offering client solution to their specific needs. When not at work, Serena can be found initiating novices to the fine art of playing Dungeons and Dragons, cooking food and pairing it with tine, and lecturing people on what ingredients do and do not go on pizza.

Done the cards. Having trouble with the flipping because the blurb content side is bigger than the image side. Will look at this again later.
Worth considering a non flipping design too, as mobile doesn't have hover effects.

Moved it here https://aocollab.tech/team/
What should we do instead of flipping design? (it sounds like we are trying not to swear)
Hover over? Click to expand?
Also, how painful would it be to add the following icons:

email
linkedin

Something like this?

Any kind of hover effect for more info will be undiscovered on mobile. Click is best for usability.

I'm not convinced the card is good for long format text

What about the contact card and then the blurb below? Or a pop out with more info like https://www.atlassian.com/company/people ?

Pop out like on the Atlassian page wins - I like the clean look of the cards but you're right, too much text makes it hideous!

Added the contact card modals @MoyaSparklefarts . Kate still needs a blurb

'Kate is an enigma' XD
Looking good!


driver: sensor: m41t62 Added support

Added driver support for the M41T62 RTC
Signed-off-by: Ivona Loncar<EMAIL_ADDRESS>

Thank you for the contribution!
Why did you implement this as a sensor driver? I think it's better suited as a counter driver instead.

Thank you for your answer! I have refactored this pull request into a counter driver, so please take a look

I did an initial pass, requested a few changes. I see a sensor driver and then a counter... Can this be clarified?

@gmarull the sensor driver was a commit left from the previous version. Now I have removed that commit and there is only the counter driver left as discussed with @MaureenHelm. Please take a look

Thank you for the contribution!
Why did you implement this as a sensor driver? I think it's better suited as a counter driver instead.

@MaureenHelm  thank you for your answer! I have refactored this pull request into a counter driver, so please take a look


Reset scroll to top when switching tabs

Currently I've got a few tabs, each overflowing. If I'm scrolled midway through one tab, and switch to another, I end up scrolled midway through it too. I believe the expected behaviour would be to always jump to the top of the tab?

see #54


Update module blang/semver to v3.8.0

This PR contains the following updates:

Package
Type
Update
Change

github.com/blang/semver
require
minor
v3.5.1+incompatible -> v3.8.0

Release Notes

blang/semver
v3.8.0
Compare Source
v3.7.0
Compare Source
v3.6.1
Compare Source
v3.6.0
Compare Source

Renovate configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you check the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: go.sum
Command failed: go get -d ./...
go<EMAIL_ADDRESS>verifying module<EMAIL_ADDRESS>reading<EMAIL_ADDRESS>410 Gone
	server response: not found<EMAIL_ADDRESS>invalid version: +incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you check the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: go.sum
Command failed: go get -d ./...
go<EMAIL_ADDRESS>verifying module<EMAIL_ADDRESS>reading<EMAIL_ADDRESS>410 Gone
	server response: not found<EMAIL_ADDRESS>invalid version: +incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required


Admin scan false positives correction

Checklist

[x] I have followed the Contributor Guidelines.
[x] The code has been thoroughly tested in my local development environment with flake8 and pylint.
[x] The code is both Python 2 and Python 3 compatible.
[x] The code follows the PEP8 styling guidelines with 4 spaces indentation.
[x] This Pull Request relates to only one issue or only one feature
[x] I have referenced the corresponding issue number in my commit message
[ ] I have added the relevant documentation.
[x] My branch is up-to-date with the Upstream master branch.

Changes proposed in this pull request
Bug #371 solved
Your development environment

OS: Linux
OS Version: Ubuntu 20.04
Python Version: 3.8.5

Hey Ali,
Is there any problem with my pull request that you closed it without
merging my code?
On Thu, Sep 9, 2021 at 4:41 PM Ali Razmjoo @.***> wrote:

Closed #428 https://github.com/OWASP/Nettacker/pull/428.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/OWASP/Nettacker/pull/428#event-5280915317, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ARQW5LLQPUOXJIU6TX47KJDUBELYLANCNFSM46PZIR2A
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Hello @Rohan-Salwan , Nettacker was actually been changed and we have completely removed python2 compatibility. Also we are now supporting YAML.
Feel free to create new PR again as now you can see the main branch code is changed :)


Release {admiral} hotfix v0.7.1

Thank you for your Pull Request! We have developed this task checklist from the Development Process Guide to help with the final steps of the process. Completing the below tasks helps to ensure our reviewers can maximize their time on your code as well as making sure the admiral codebase remains robust and consistent.
Please check off each taskbox as an acknowledgment that you completed the task or check off that it is not relevant to your Pull Request. This checklist is part of the Github Action workflows and the Pull Request will not be merged into the devel branch until you have checked off each task.

[ ] Place Closes #<insert_issue_number> into the beginning of your Pull Request Title (Use Edit button in top-right if you need to update)
[ ] Code is formatted according to the tidyverse style guide
[ ] Updated relevant unit tests or have written new unit tests - See Unit Test Guide
[ ] If you removed/replaced any function and/or function parameters, did you fully follow the deprecation guidance?
[ ] Update to all relevant roxygen headers and examples
[ ] Run devtools::document() so all .Rd files in the man folder and the NAMESPACE file in the project root are updated appropriately
[ ] Address any updates needed for vignettes and/or templates
[ ] Update NEWS.md if the changes pertain to a user-facing function (i.e. it has an @export tag) or documentation aimed at users (rather than developers)
[ ] Build admiral site pkgdown::build_site() and check that all affected examples are displayed correctly and that all new functions occur on the "Reference" page.
[ ] Address or fix all lintr warnings and errors - lintr::lint_package()
[ ] Run R CMD check locally and address all errors and warnings - devtools::check()
[ ] Link the issue in the Development Section on the right hand side.
[ ] Address all merge conflicts and resolve appropriately
[ ] Pat yourself on the back for a job well done! Much love to your accomplishment!

@bms63 Once #1311 is merged this should be good to go 🙂

Do we want to make an announcement once the other PR is merged in?

For sure but lets wait until this actually lands on CRAN.

@bundfussr I think we have everything but would you mind taking a last look?


Use filter fn

Follow-up on https://github.com/mozilla/neqo/pull/1903#discussion_r1617011637

Ah, will also implement the double rev peekable. Give me one sec.


Cannot remove card on dashboard

Hello,
Thank you for such a great add-on! Unfortunately, I had to go the ESPHome route because of distance issue with bluetooth. However, even after removing the add-on, there is a persistent card on my dashboard that I cannot remove. Is it possible to remove the auto generated card?
Thanks,
Dee

I figured it out! I had to remove the device manually!


METRON-1463: Adjust the groupings and shuffles in enrichment to be more efficient

Contributor Comments
Currently there are some deficiencies in our grouping approach in the enrichment topology:

We have field grouping by key in places where we need LOCAL_OR_SHUFFLE groupings
We have shuffle groupings in places where we need LOCAL_OR_SHUFFLE groupings
We have field groupings by key in places where we need field grouping by message (specifically in the connections from the splitter to the enrichments).

Field grouping by key, as we had before, ensured that we had fewer cache hits as opposed to field grouping by message.

To test this, just run things up in full-dev and ensure that data continues to flow.
Pull Request Checklist
Thank you for submitting a contribution to Apache Metron.
Please refer to our Development Guidelines for the complete guide to follow for contributions.
Please refer also to our Build Verification Guidelines for complete smoke testing guides.
In order to streamline the review of the contribution we ask you follow these guidelines and ask you to double check the following:
For all changes:

[x] Is there a JIRA ticket associated with this PR? If not one needs to be created at Metron Jira.
[x] Does your PR title start with METRON-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
[x] Has your PR been rebased against the latest commit within the target branch (typically master)?

For code changes:

[x] Have you included steps to reproduce the behavior or problem that is being changed or addressed?

[x] Have you included steps or a guide to how the change may be verified and tested manually?

[x] Have you ensured that the full suite of tests and checks have been executed in the root metron folder via:
mvn -q clean integration-test install && dev-utilities/build-utils/verify_licenses.sh

[x] Have you written or updated unit tests and or integration tests to verify your changes?

[x] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

[x] Have you verified the basic functionality of the build by building and running locally with Vagrant full-dev environment or the equivalent?

For documentation related changes:

[x] Have you ensured that format looks appropriate for the output in which it is rendered by building and verifying the site-book? If not then run the following commands and the verify changes via site-book/target/site/index.html:
cd site-book
mvn site

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.
It is also recommended that travis-ci is set up for your personal repository such that your branches are built there before submitting a pull request.

+1 These corrections should greatly improve performance.

I ran this up with vagrant and ensured:

Normal stellar works still in field transformations as well as enrichments
swapped in and out new enrichments live
swapped in and out new threat intel live


Small variable name fix

Edited the variable name to match the previous example in order to avoid confusion

#1051 went in the opposite direction earlier this week, so I don't think we want this.
Thanks.


Infer user agent from Electron's online version list

Fixes #166. See discussion there for further details!

This looks really good, thank you so much for this. It's a really good idea because so far the user agent used is outdated.
Could you just write a few tests for this in ./test, I'm trying to include tests for any new functionalities.

I must have messed up the merge because my commits don't appear here, but I've added in the test myself and contained the error catching within inferUserAgent.js entirely. Thank you so much!

Great, glad I was able to help! I'm sorry I wasn't able to find time this week to write tests myself.


Update build tooling to target modern environments

I'd like to see if we can start applying the principles from "ship modern JS" at https://web.dev/publish-modern-javascript/ .  In particular, https://web.dev/publish-modern-javascript/#modern-with-legacy-fallback-and-esm-bundler-optimizations looks like the combo of settings we would want to use .
This is something we ought to try to get into 4.1 if possible.

It looks like defining an exports field is considered a breaking change due to messing up Node usage.  So, we should hold off on that.
I would like to see if I can at least move all of our build artifacts into dist.  In theory that shouldn't be breaking because they should all be getting looked up via the appropriate package.json fields.  The main thing would be to keep the dist/redux.min.js filename the same, because I see uses of that publicly via Unpkg:
https://stackoverflow.com/questions/60731097/use-redux-without-npm

Oh hey this is finally done as of the 5.0 alphas!


Only set CanColorStdout / CanColorStderr to true if the stdout/stderr is a terminal

When running gitea as a systemd unit with logging set to console, the output should not be colorized,
otherwise it spams the journal / syslog with escape sequences like #033[0m#033[32mcmd/web.go:102:#033[32m
This PR adds IsTerminal checks for non-WIndows platforms. For Windows, it was already done correctly in console_window.go
Close #19469

#19469

:rocket:


Optimize nested 'xor' predicates

Might be less trivial than nested and/or predicates.
For example: p ^ q ^ r ^ ~p has to be optimised to q & r

Closed, since this should be part of a generic optimisation strategy that reshuffles the childeren


add cu7 for 2019

CU7 for 2019 is out

not sure why the one on sqlcollaborative was reverted back ....

It is being reverted because of the automation processing we have in place that pulls the file from this repo into the assets folder of the docs repo.
Please only update this repo with the changes to the build file.

Ref: https://github.com/sqlcollaborative/dbatools/wiki/Asset-Update-Process

whoppsie, okie so this should be merged before the bot passes at 4:00.

http://gph.is/2pr38pF