Vector2.random and Vector3.random constructors

I (and probably many other users) use random vectors in nearly every game I make. Making a random vector is currently pretty tedious, so here is my suggestion:
Vector2.random(float minX, float minY, float maxX, float maxY)
Vector2.random(Vector2 min, Vector2 max)
Vector2.random(float maxX, float maxY)

And the same for Vector3.

I don't think this is done often enough to warrant new functions. Also, what about other types such as Color?
Currently, this can be achieved with an one-liner:
Vector2(rand_range(min_x, max_x), rand_range(min_y, max_y))

Please see my proposal https://github.com/godotengine/godot/issues/28269 , I have this functionality and several similar ones with random.

Closing as @Calinou pointed out that it can be written in one line.

Closing as @Calinou pointed out that it can be written in one line.

These kind of explanations are just so abolutely frustrating ridiculous ... please guys read Clean Code by Robert C Martin or any other book about modern software engeneering!
Everything that makes code easier to read even if it does not really shorten the code is great. I can write pretty much everything in one line using some languages, that just doesn't mean anything at all. Its about maintainabillity and the abbility to spot bugs, every little thing that helps me to understand the code faster helps there.
Vector.from_rand()
or maybe even better rand_vector() is just cleaner.
I admit this thread might not be the most striking point, but you respond with such answeres pretty much everywhere, where people ask or try to make things easier for everyone, had to say this at some point

@DamKoVosh We have a page about the engine development philosophy here: https://docs.godotengine.org/en/latest/community/contributing/best_practices_for_engine_contributors.html

more flexible than a new built-in function

With an applied impulse on RigidBody2D it's a tiny bit complicated, my example which I really use: apply_impulse(Vector2(rand_range(-($Sprite.texture.get_size().x) / 2, $Sprite.texture.get_size().x / 2), rand_range(-($Sprite.texture.get_size().y) / 2, $Sprite.texture.get_size().y / 2)), Vector2(rand_range(-5000, 5000), rand_range(-5000, 5000))).
Remember "one-liner".

This issue doesn't seem to describe concrete use cases, but they do exist.
For those stumbling upon this, Goost provides a Random2D class which allows to generate unit vector directions and rotation. Just like MaaaxiKing describes, this could be used for impulse computation:
apply_central_impulse(Random2D.direction * power)

I don't think this is done often enough to warrant new functions. Also, what about other types such as Color?

Similarly, with Random.color (HSV values are used). I've find it mostly useful for visualization/debugging purposes.

@Jummit There now exists a proposal system for feature requests and improvement suggestions. If you are still interested in this topic, maybe you can find a proposal there you can connect to?

@Jummit There now exists a proposal system for feature requests and improvement suggestions. If you are still interested in this topic, maybe you can find a proposal there you can connect to?

For now a few helper methods suffice, but I would actually like to see more utility functions for randomness since it's surprisingly hard to get right (for vectors at least).

+1 - Was just looking into this as I wanted to spread out debris...

Do not bump issues without adding more information, especially not ones closed because the proposals have been moved, open a proposal if you want this instead of resurrecting a years old issue

@AThousandShips I did provide more information, I provided a use-case/scenario where I was looking for this that hadn't been mentioned in the thread prior. I didn't realize there was already another open proposal already, as no one came back here and linked to say one was opened there. Thank you for providing that context on this issue here now.


Divinity: Original Sin 2 - Definitive Edition  (Steam AppID 435150)

Dramatically drop FPS (7-11fps) after QuickSaveGame or SaveGame. After that only game restart helps (Alt+Tab sometimes)
Software information
Divinity: Original Sin 2 - Definitive Edition  (Steam AppID 435150)
System information

GPU:GTX950M or INTEL HD530
Driver:nvidia 418. 56 / Mesa 19.0.1
Wine version: 4.6 Stagging
DXVK version: 1.0.2

Apitrace file(s)
SupportTool.trace.zip
Log files

d3d11.log:
SupportTool_d3d11.log

dxgi.log: SupportTool_dxgi.log

steam-435150.log

Does this problem also occur with wined3d?
Also, your apitrace is basically empty. What's SupportTool.exe anyway? Doesn't sound like a game executable.

No. Only DXVK.
With parameters PROTON_USE_WINED3D=1 works fine, but performance is poor.

About Your question:
mv bin bin.bak
ln -s DefEd\bin bin
cd bin
mv SupportTool.exe SupportTool.bak
ln -s EoCApp.exe SupportTool.exe
without this manipulation, the game does not start

Looking at ProtonDB entries for this game, it seems that this issue is specific to your setup. Not really sure what to m
Anyway, can't debug that right now until I get my hands on that game, but chances are very high that I won't be able to reproduce this at all.

I'm not the only one with a problem:
https://www.reddit.com/r/SteamPlay/comments/a1ytqd/divinity_original_sin_2_audio_issues_fps_drops/
I prepared the dxvk.conf file and put it in the folder with the game file. I set suggested parameters. Problem still occure.
Thx.

The person on Reddit wasn't using DXVK, which indicates that this isn't really my bug. No idea what is causing it though.

I see.
Anyway, thank you for trying to help.

From my observation that the problem may have something to do with rendering shadows. As suggested by one of the players, lowering the quality of shadows reduces the number of fps drops

That a) doesn't really help since I don't know how the game renders shadows, and b) doesn't really explain why it only happens after a save.
What does DXVK_HUD=memory show? There's a chance you're running out of VRAM.

FYI

How much VRAM does your 950m have?

According to the DXGI log it's 2GB, which.... is a bit questionable, since neither DXVK nor the Nvidia driver have great memory management and background apps (browser, compositor etc.) eat some of that as well. I wonder if lowering texture and shadow quality fixes things for you.

Yes, I have 2048/5Ghz,  and yes, lowering the texture quality helps for a while.

Thanks guys. Conclusion - replacement of equipment, or playing on low settings.


Add methods on TrackBuilder to add built effects

Fixes #83.
Adds methods to add effects that have already been built outside of the TrackBuilder instance.

looks good, thank you!


Add enforcement versioning to rego enforcer

Adds versioning to the framework (and policies) to enable backwards compatibility and fine-tuned behavioral logic based upon version comparisons. Every enforcement point will now be explicitly linked to a minimum version and given a default behavior (allow/not allow) which should be applied automatically below that version. The logic looks like this:
func (policy *regoEnforcer) allowed(enforcementPoint string, input map[string]interface{}) (bool, error) {
	results, err := policy.Query(enforcementPoint, input)
	if err != nil {
		// Rego execution error
		return false, err
	}

	if len(results) == 0 {
		// rule was undefined
		available, err := policy.enforcementPoints.isAvailableByVersion(enforcementPoint, policy.versionInfo)
		if err != nil {
			// unknown rule
			return false, err
		}

		if available {
			// policy should define this rule but it is missing
			return false, fmt.Errorf("rule for %s is missing from policy", enforcementPoint)
		} else {
			// rule added after policy was authored
			return policy.enforcementPoints.getDefaultBehavior(enforcementPoint)
		}
	}

	return results.Allowed(), nil
}

A Rego query for a rule that doesn't exist returns an empty result set. If we receive no results, we first check to see if the rule should be there by checking whether it was introduced after the policy was authored. If the enforcement point should be defined (i.e. it was added before the policy was authored), we raise an error. If it is new, then we use the default behavior. If there are results, then the rule was present and we proceed as normal.
This logic allows us to add new enforcement points without breaking older policies.

ping @dcantah @anmaxvl

Can we get a bit more context to why this needs to be done in Go and cannot be handled by Rego framework? Maybe some examples will help here.
I may be misunderstanding something, but are we adding this to future proof when we'll be accepting user-defined policies? Can't rego have a default fallback behavior for rules it cannot find in the user provided policy? like it'd try to evaluate user policy first and if a rule isn't present, because it's an older version of policy, we fallback to evaluating the particular rule in the framework?

Can we get a bit more context to why this needs to be done in Go and cannot be handled by Rego framework? Maybe some examples will help here.

A user writes a policy today which we'll call user_policy_1 which provides rules in Rego for mount_device, mount_overlay, and create_container. This policy is stored and made available via ORAS.
We want to add a new enforcement point called exec_in_container, which allows processes to be started in a container which have been explicitly allowed. user_policy_1 has no rule called exec_in_container and querying their policy will return an undefined result. What should we do in this case? When the user wrote user_policy_1 there was no way they could know we would want to query something with this specific name, and thus no way to provide a default behavior. We've addressed this scenario in this PR by providing logic that does the following:
Is this enforcement point defined in the user's policy?

Yes -> return the result of querying the policy
No -> was the user policy authored after the enforcement point was added?

Yes -> error: user needs to define this rule
No -> return a default behavior which mimics the past behavior

I may be misunderstanding something, but are we adding this to future proof when we'll be accepting user-defined policies? Can't rego have a default fallback behavior for rules it cannot find in the user provided policy? like it'd try to evaluate user policy first and if a rule isn't present, because it's an older version of policy, we fallback to evaluating the particular rule in the framework?

This PR hardens (in particular) against custom user policies which do not use the framework and are missing newly added enforcement points.  For example, the user can provide a rule in their policy which essentially indicates their desired default behavior for rules they don't define (e.g. "deny", "allow", "framework"). That does not remove the need for this PR, however, as custom user policies will not be able to use the framework as a fallback in this way.

That does not remove the need for this PR, however, as custom user policies will not be able to use the framework as a fallback in this way.

Can the fallback to framework be implemented in Go then? i.e., try query user policy, if the result is undefined, then try querying framework and in framework we can add handling for version checking and default behavior?

Can't rego have a default fallback behavior for rules it cannot find in the user provided policy?

Only if it is part of the framework and that makes it pretty meaningless. It only covers a subset. This needs to be applied to all policies and knowing what to do if new enforcement points are added.

As discussed, I've moved the version/defaults logic out of the Go code and into Rego.

Another good to have is that moving forward, if we introduce code that's used only under rego build tags (e.g. some test code in securitypolicy_test.gocan we also put the code in the files withrego` build tag? This will save us some trouble from linters: https://github.com/microsoft/hcsshim/pull/1501


Fix mtls Destinationrules

These are not being applied properly, so cannot access telemetry
components when mtls is enabled

@howardjohn: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

noauth_installer
97e6ee68b5f89317e4acd4840a41cd02117ae448
link
/test noauth_installer

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test noauth_installer

/cherrypick release-1.4


Demo documentation has a broken link to an 'elements page'.

The documentation here has the following text in the 'New Components' section:

For more details regarding the components, go to our elements page.

The link points to: http://demos.creative-tim.com/light-bootstrap-dashboard/documentation/elements.html
However, this page doesn't exist.

hi

Hello @gkopff,
Thank you for using our products and for letting us know about this issue, we'll fix it in the next update. The link should be: https://demos.creative-tim.com/light-bootstrap-dashboard/examples/dashboard.html
Best,
Stefan


Add book.toml file

Metadata taken from https://github.com/rust-embedded/discovery/blob/master/README.md

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @ryankurte (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

Fixes #209


Prater Testnet Support

Adds support for the new Prater Testnet.

I was thinking of leaving those options in so as to allow people to recover thier old keys should they ever want to. That said, I can't think of a genuine reason why anyone would want to do so and they can always go back in the  release/tag/commit history.
I will remove the dead testnets, but I will also make sure it is noted in the release notes.


Adding dependabot support

Dependabot is a native tool in github that automatically checks the dependencies of the project and creates pull requests for outdated or insecure dependencies. See how it works from here.
Currently it will analyze only the dependencies defined in pom.xml in SINGA because other dependencies are hard coded in configuration or shell scripts which are not supported by this tool. In future commits, the dependencies will be moved to standard files such as python requirements.txt so that they become available to dependabot and similar tools.

shall we move all CI functions from travis to github to avoid the duplicated testing?

shall we move all CI functions from travis to github to avoid the duplicated testing?

Yes, I will create another PR for the work in progress on replacing travis with github actions.

Both java and python dependencies are enabled now. Dependabot will check python daily and java monthly. It will create a PR for upgrade insecure or outdated dependencies in SINGA like this java PR and this python PR.
notes:

Dependabot works only on the master branch. It will be enabled after merging with master.
The proposed requirements.txt for python is not complete. Later we need to add all the requirements for all the configurations.

let's consider this PR in the next version.
Now we support both conda and pip.
One potential issue is that protocol buffer (PB) is not backward compatible.
If there is a new version of PB, we may have to update many dependent libs to remove the warnings from the dependent bot.

let's consider this PR in the next version.

Ok. Although we can at least enable the dependabot support and badge, even though we don't resolve the problems that dependabot report. Just like we enabled lgtm but we don't have to fix all its errors, and we enabled codecov but we don't have to test with 100% coverage.

One potential issue is that protocol buffer (PB) is not backward compatible.
If there is a new version of PB, we may have to update many dependent libs to remove the warnings from the dependent bot.

We don't have to update immediately all the dependencies that dependabot found obsolete or insecure. At least we can have the results of the dependency analysis and the singa team can decide the work priorities. The PB team are working now on a release candidate for version 4 and planning to upgrade singa PB to at least version 3 can be useful.

Now we support both conda and pip.

We don't support machine readable requirements that can be found by Github tools. The instructions to installing singa dependencies with pip is only human readable in the web site documentation, or in the conda scripts. We need to extract these dependencies into something like requirements.txt so that Github (and other tools) can find them.


Trouble building on Ubuntu 14.04

Hi I am having trouble on Ubuntu 14.04.
At first the requirements.txt kept preventing me from moving forward until I changed it to pysteam>=1.0.0-b1 - after getting that to happen I was able begin running "python ice/"
When I this however I am getting the following error:
futurepr0n@futureMedia:~/Ice$ python ice/
/usr/lib/python2.7/dist-packages/pkg_resources.py:1031: UserWarning: /home/futurepr0n/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
warnings.warn(msg, UserWarning)
=========== Starting Ice ===========
Detected Emulator: Dolphin
Detected Console: Nintendo Gamecube => Dolphin
=========== User: 2267067 ===========
[ERROR] An exception occurred while running Ice
Traceback (most recent call last):
File "ice/runners/ice_engine.py", line 154, in run
self.main(dry_run=dry_run)
File "ice/runners/ice_engine.py", line 134, in main
self.run_for_user(user_context, dry_run=dry_run)
File "ice/runners/ice_engine.py", line 146, in run_for_user
self._create_backup(user, dry_run=dry_run)
File "ice/runners/ice_engine.py", line 164, in _create_backup
shortcuts.write_shortcuts(backup_path, shortcuts.get_shortcuts(user))
File "/usr/local/lib/python2.7/dist-packages/pysteam-1.0.0_beta2-py2.7.egg/pysteam/shortcuts.py", line 31, in write_shortcuts
with open(path, "w") as f:
IOError: [Errno 2] No such file or directory: '/home/futurepr0n/.config/ice/Backups/2267067/config/shortcuts.20151228205645.vdf'
Close the window, or hit enter to exit...
I used to have the same error except it was slightly different path, because I was using pysteam-1.0.0-beta1 and then I decided I would install pysteam from the same repo and try with that.

I had to:
mkdir -p /home/futurepr0n/.config/ice/Backups/2267067/config

I just fixed this issue with c05dd6c77f84d31f78b3a2ebaeb316df899b8167

:+1:


Add serializer instructions to README

So what do I do with this?

Am I supposed to add the serializer instructions, or did you add them an want me to review them?
Ok I think I see if I expand the thing, you have written the instructions.
Do I merge the pull request or is there someway I say “ok by me”

Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10

From: Mark Wallace<EMAIL_ADDRESS>Sent: Tuesday, June 18, 2019 10:50:08 AM
To: semanticarts/gist
Cc: Dave McComb; Review requested
Subject: Re: [semanticarts/gist] Add serializer instructions to README (#65)
@marksemhttps://github.com/marksem requested your review on: #65https://github.com/semanticarts/gist/pull/65 Add serializer instructions to README.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHubhttps://github.com/semanticarts/gist/pull/65?email_source=notifications&email_token=AAAGJPXEVN7MHBKTPFL2LMTP3EG4BA5CNFSM4HZB7KKKYY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOSBLDP6Q#event-2421569530, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAAGJPSGDRJ5MFAO33PFLGLP3EG4BANCNFSM4HZB7KKA.

To Dave:
Mark added instructions, and invited you to review them.
See what others say in their review and when ready to merge you can do so.   I'm no expert on this, but I think if you click on the green button saying to review, it gives options, one is "Approve". IF you select that I think it does the merge.  Boris or MarkW are better able to explain this.

Clicked the green button, didn’t see any approve or comment options, seems like it just took it.
Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10

From: Michael Uschold<EMAIL_ADDRESS>Sent: Tuesday, June 18, 2019 11:55:27 AM
To: semanticarts/gist
Cc: Dave McComb; Review requested
Subject: Re: [semanticarts/gist] Add serializer instructions to README (#65)
To Dave:
Mark added instructions, and invited you to review them.
See what others say in their review and when ready to merge you can do so. I'm no expert on this, but I think if you click on the green button saying to review, it gives options, one is "Approve". IF you select that I think it does the merge. Boris or MarkW are better able to explain this.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHubhttps://github.com/semanticarts/gist/pull/65?email_source=notifications&email_token=AAAGJPSMENHS6GNEWIIWMZ3P3EOQ7A5CNFSM4HZB7KKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODX7OKGQ#issuecomment-503244058, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAAGJPSWHIXETWXNKRORRXDP3EOQ7ANCNFSM4HZB7KKA.

More than one way to skin a cat…
From: mkumba<EMAIL_ADDRESS>Sent: Tuesday, June 18, 2019 12:12 PM
To: semanticarts/gist<EMAIL_ADDRESS>Cc: Michael Uschold<EMAIL_ADDRESS>Review requested<EMAIL_ADDRESS>Subject: Re: [semanticarts/gist] Add serializer instructions to README (#65)
Clicked the green button, didn’t see any approve or comment options, seems like it just took it.
Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10

From: Michael Uschold<EMAIL_ADDRESS>Sent: Tuesday, June 18, 2019 11:55:27 AM
To: semanticarts/gist
Cc: Dave McComb; Review requested
Subject: Re: [semanticarts/gist] Add serializer instructions to README (#65)
To Dave:
Mark added instructions, and invited you to review them.
See what others say in their review and when ready to merge you can do so. I'm no expert on this, but I think if you click on the green button saying to review, it gives options, one is "Approve". IF you select that I think it does the merge. Boris or MarkW are better able to explain this.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHubhttps://github.com/semanticarts/gist/pull/65?email_source=notifications&email_token=AAAGJPSMENHS6GNEWIIWMZ3P3EOQ7A5CNFSM4HZB7KKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODX7OKGQ#issuecomment-503244058, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAAGJPSWHIXETWXNKRORRXDP3EOQ7ANCNFSM4HZB7KKA.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHubhttps://github.com/semanticarts/gist/pull/65?email_source=notifications&email_token=ACSHHSMOQJZO3Z6ASZLNQEDP3EXOXA5CNFSM4HZB7KKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODX7VFYA#issuecomment-503272160, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ACSHHSNTBG7ZGIW6LP7BEGDP3EXOXANCNFSM4HZB7KKA.

There are buttons both to approve buttons and to do the merge.  When you get a notification like this, the idea is to comment on it and/or approve of the changes.  You can also OPTIONALLY click some button/link to do the merge.  You both commented.  I think Michael approved.   And Dave, you obviously succumbed to the greenness of a button and clicked it, and thus approved it.  :) Since you've already done it, IDK what the button says, but it may say "Merge" or "Accept".
I can tell you did by this message in the log of actions above:
mkumba merged commit 008a7d4 into master 20 hours ago


Add option to parse raw query output as json

To get version of contract, you need to do a raw query, trim it and parse through base64.
$ tgrade query wasm contract-state raw CONTRACT_ADDRESS 636F6E74726163745F696E666F | cut -c7- | base64 -d
{"contract":"crates.io:tgrade_contract_name","version":"0.x.x"}

I think it's fair to suggest, that base64 conversion (and possibly cut) could be automated through some -o json parameter.

(magic hex explained)
$ echo -n "contract_info" | od -A n -t x1
 63 6f 6e 74 72 61 63 74 5f 69 6e 66 6f

I understand your point and I'd even prefer that, but...
the choice we now face - add extra query to all existing contracts or add option to decode raw data in one place, which is already present everywhere.
But if it is as you say - it wouldn't be available for actually all contracts - then I don't see any other choice rather then extra query.


Fix Typo in Learning Path description

This is actually my first pull request of that sort ever, let me know if this sort of corrections are appreciated or not.


A11y Fail: Date Picker - Need different keyboard command for Help

CENG_1509
https://react-magma.cengage.com/version/4.5.0/api/date-pickers/
Issue:
The Calendar Help modal dialog provides instructions for using various key commands (such as arrows, Enter, Page Down, etc.). One of the key commands is a question mark (?), which can be used to open the Calendar Help modal. This is considered a single printable character key shortcut which can create problems for speech input users and for keyboard users who are prone to accidentally hit keys.
Acceptance Criteria

Help panel keyboard shortcut has been removed, so ? should no longer trigger it
The shortcut description is removed from the help panel list
i18n variables and unit tests are cleaned up

Suggestion:
~Change keyboard shortcut for the keyboard instructions to ctrl+shift+?, and update how and where we teach users this shortcut.~
~Edit list of keyboard instructions:~

~Add to Tooltip on button:~

Ensure that we do sufficient cross browser testing when implementing this

Browsers

Browsers:
Safari 18
Chrome 129
Firefox 131
Help panel keyboard shortcut has been removed, so ? should no longer trigger it ✅
The shortcut description is removed from the help panel list ✅
i18n variables and unit tests are cleaned up ✅


Azure key vault lookup key

Adds a new lookup key function for retrieving values from Azure key vault

This looks great on a first glance but I'm currently on vacation. Will review in detail on Thursday.


use :vendor placeholder

to make the package more useful for general use, replace references to
thephpleague and league with :vendor.

@thephpleague/skeleton I'm :+1: on this one. Any other opinions?

:+1:

fixes #53


.NET Framework 3 install not working (NAV2013R2)

I try to create a container for NAV2013R2 by using the steps described here https://freddysblog.com/2017/11/29/can-i-run-nav-2015-and-earlier-on-docker/

I placed the .cab for the .net framework in the prerequisite compontens

The process fails with an error about
NAV Server Instance is not ready to serve requests

Further Investigation showed that the .net framework 3 was not installed:
C:\Run> get-itemproperty "Registry::HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup"
Cannot find path 'HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup' because it does not exist.
    + CategoryInfo          : ObjectNotFound: (HKLM\Software\M...\NDP\v3.0\Setup:String) [Get-ItemProperty], ItemNotFo
   undException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand

I tried to install it manually to see what happens:
C:\Run> Dism /online /enable-feature /all /featurename:NetFX3 /Source:"C:\NAVDVD\Prerequisite Components"

Deployment Image Servicing and Management tool
Version: 10.0.17763.1

Image Version: 10.0.17763.437

Enabling feature(s)

[=                          3.0%                           ]

[===                        5.9%                           ]

[===                        5.9%                           ]

[==========================100.0%==========================]

Error: 1058

The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

The DISM log file can be found at C:\Windows\Logs\DISM\dism.log

The installation in the navinstall.ps1 does not account an error in the dism command as we have here, this should be fixed.
From what i understand, this is an online update and therefore windowsupdate service must be running to install the .net framework component, right?
Looking at the services:
C:\Run> get-service wuauserv

Status   Name               DisplayName
------   ----               -----------
Stopped  wuauserv           Windows Update

Starting does not work:
 C:\Run> start-service wuauserv
Service 'Windows Update (wuauserv)' cannot be started due to the following error: Cannot start service wuauserv on
computer '.'.

Here my full command to create the container with navcontainerhelper:
New-NavContainer -auth Windows -accept_eula -accept_outdated -containerName $containerName -navDvdPath $localDVDPath -navDvdCountry CH -doNotExportObjectsToText -includeCSide -memoryLimit 8G -isolation process -updateHosts

Maybe you need specifically use a ltsc2016 generic image - I don't think Server 2019 works with .net framework 3 and the stuff mentioned in that blog post.

Ok i will test that, so then only hyper-v isolation will work on a windows server 2019 host i guess?

Yes - it is very tricky with these very old unsupported versions...

I tried with windows server 2016 image but that failed with:
Service Tier doesn't exist / is not installed

Then i got the .cab files from windows server 2019 iso and put them in to prerequisite componenents instead of the files from windows server 2016.

And now its working!

Thanks for pointing me to the right direction!


[Feature Request] Support for timeouts

At least on Linux, the notification spec supports specifying the timeout for every notification. It would be great if this option is exposed to the top-level API as timeout: int = -1 (-1 means OS default).
Bonus
For other OSes, maybe this can be implemented by spawning an async Timer task that will clear the notif after expiration.
PS: Thanks for making this project. It is extremely useful to have a singular and full-featured interface for cross-platform notifications! :)

I like the idea, though missing native support on macOS (and possibly Windows) will certainly result in less elegant implementations there. Though as you can see from other features, they needn't be supported by all backends to be exposed in the API.
If you'd like to contribute this, I'd gladly review a PR :)

Realized that the approach in bonus section doesn't work if the timeout value is greater than the OS default; we can't make the OS show the notif for an extended amount of time, can we?
The linked PR therefore only implements this for Linux.

Not exactly sure how, but this repo manages to implement custom timeouts for windows notifications. It seems to be using win32gui.CreateWindow to do so, which is probably different from the Windows API that this package uses. But would be nice if we could also do something similar. Will leave as future work.

From a brief look, that project uses the Shell_NotifyIconA API which is an C win32 instead of Win RT API. It has been around for much longer and seems to require manually closing the notification, but it does not support features such as buttons and response boxes AFAIK.
On macOS, iOS and Windows, the concept seems to be that notifications are shown for a fixed duration determined by the OS and user settings outside of the control of the app. However, they do remain in the "Notification Center" afterwards to scroll through and closing them through OS APIs would remove them from there as well.
I would even argue that we should be good citizens of the platforms and respect their UX choices, so I'm completely fine with supporting timeouts on Linux only :)

Windows does seem to have native support for timeouts via winrt as implemented in https://github.com/DatGuy1/Windows-Toasts
Leaving it here in case anyone is interested in implementing this.


Error: direct DDL is disabled. Shadow Databases not helping, Development Branches not helping

I made very slight changes to my prisma.schema which begins with the following information...
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

datasource db {
  provider          = "mysql"
  url               = env("DATABASE_URL")
  shadowDatabaseUrl = env("SHADOW_URL")
  relationMode      = "prisma"
}

This db was made in 2021, using ONLY prisma generate and prisma migrate. However, both of those options are now failing as well, with the following error message
Error: P3014

Prisma Migrate could not create the shadow database. Please make sure the database user has permission to create databases. Read more about the shadow database (and workarounds) at https://pris.ly/d/migrate-shadow

So I went back to PlanetScale and Prisma documentation. Both of which were really no help at all. The best I got was this off PlanetScales Prisma documentation...
"Tip
You'll see a ERROR 1105 (HY000): direct DDL is disabled message if you attempt to make schema changes in a production branch with safe migrations enabled. Instead, create a development branch, and make your changes there."
Expect that does me absolutely no good because I created a development branch and I'm still getting the exact same errors. So whenever I run prisma db push I get this...
Error: direct DDL is disabled
   0: sql_schema_connector::apply_migration::migration_step
           with step=AlterTable(AlterTable { table_ids: MigrationPair { previous: TableId(6), next: TableId(12) }, changes: [AddColumn { column_id: TableColumnId(113), has_virtual_default: false }] })
             at schema-engine/connectors/sql-schema-connector/src/apply_migration.rs:21
   1: sql_schema_connector::apply_migration::apply_migration
             at schema-engine/connectors/sql-schema-connector/src/apply_migration.rs:10
   2: schema_core::state::SchemaPush
             at schema-engine/core/src/state.rs:436

I am at my wits end trying to solve this, please assist!

Hi @NLanese,
Could you double check that the DATABASE_URL is pointing towards your new development branch?
The reason I ask:
Error: direct DDL is disabled
Should only be returned by a production branch. Makes me think Prisma here isn't connected to the correct branch.
You could also go to the main branch page in the UI and disable safe migrations for your production branch.
If neither of these work, please let me know your org + database name and I'll take a look.

Note the parallel discussion about this problem in the Prisma repo: https://github.com/prisma/prisma/discussions/22588

@mscoutermarsh I believe that was it! I did not realize different branches had different DATABSE_URLs! Now, I have pscale auth login to my account which has access to the Org which holds the database and its production and development branches. I am now getting an 'incorrect credentials' error when I run prisma db push
How do I switch to be the user displayed in the 'Connect' section of this database, with username lkte0xromomngn1cab9l?

prisma always uses whatever is set to DATABASE_URL in your environment. Are you updating your environment variable to match the correct connection string for the branch you want?
The pscale CLI does not do this for you. Unless you do something like this, pscale connect mydb mybranch --execute "prisma db push".
This command pscale connect, establishes a connection to the branch then exposes sets a DATABASE_URL. Once it is set, the --execute flag runs the prisma command.


Compare agains System.Text.Json

Could you include a comparison agains the MS Serializer?

There is one in the CodeProject article.

I saw now. But most of the tests not.


Add query method returning unprocessed result from flightsql client

Use Case
Give the user option to process the result as deems best without any processing by the package itself. Such option exists in other client libs.
Expected behavior
Return "raw" query result.
Actual behavior
Only iterator over array(s) created by the implementation from flightsql reader is returned.
Additional info
No response

There seem to be<EMAIL_ADDRESS>now

@redbaron you are right, thanks!


Link via ServiceBindingRequest

Description
As a developer, I would like to be able to easily inject my source component with the config/secrets/envvars needed to invoke a backing application, so I can focus on may application code instead of configuring application connections.
Acceptance criteria

User can issue link command and then push changes, when pushed it will be determined that the components are compatible for ServiceRequestBinding and perform the function.
User can list linked components
User can unlink, or remove link.

User Stories

[x] Support linking devfile component and operator service (https://github.com/openshift/odo/issues/2920)
[ ] odo link should store link information in devfile #4208
[ ] Support unlinking devfile component and operator service (https://github.com/openshift/odo/issues/3563)
[ ] Suport linking devfile component with another component (https://github.com/openshift/odo/issues/3423)

Good to have

[ ] Disallow self linking of a component (https://github.com/openshift/odo/issues/1052)
[ ] Add linked component/service information in odo describe for devfile component and operator services (https://github.com/openshift/odo/issues/3734)

@sspeiche as per discussion in this issue https://github.com/openshift/odo/issues/2463 . ServiceRequestBinding requires the service binding operator to be installed on the cluster and we can do the binding without using the ServiceRequestBinding CRD as well.

@girishramnani yep, should be smart enough if installed and if annotations/olm-manifests

Why should we check if it installed?

Why should we check if it is installed?

It would be a bad experience to attempt to do the binding and it never works, we should give feedback that binding is not enabled and give a pointer to how to enable

It would be a bad experience to attempt to do the binding and it never works, we should give feedback that binding is not enabled and give a pointer to how to enable

Chiming in since I'm working on #2920. If I understand correctly, you're suggesting what's summarized in https://github.com/openshift/odo/issues/2920#issuecomment-627885404:

the discussed workflow was

to check if service binding operator is present on the cluster, if so use the ServiceBindingRequest as that allows the dev-console visualisation capabilities of that link.

if the operator is not present then we use the logic present in the operator ( I discussed with service binding team and they mentioned that linking can happen without the operator too ).

but preference has to be given to operator and custom logic needs to only be used as a fall back.

@sspeiche At the moment, we're working as per above workflow. Prioritizing on using Service Binding Operator to connect a component with an operator backed service.

@dharmit sounds like #2930 is the implementation of this Epic, how best to link/associate them together?

to check if service binding operator is present on the cluster, if so use the ServiceBindingRequest as that allows the dev-console visualisation capabilities of that link.

To be clear ServiceBindingRequest isn't used just for visualization in console, it actually performs the bind and then the console displays it. The console will display based on an annotation-only app.openshift.io/connects-to, see label/annotation conventions

@dharmit sounds like #2930 is the implementation of this Epic,

Yes, it's pretty much the implementation of this Epic. ATM, it's focussing only on linking using the operator. Other items mentioned in this epic aren't a part of it. Of course, we will cover the remaining items later.

how best to link/associate them together?

Do you mean to link this Epic with that issue? I can modify the user story there to include this Epic as a "Related Issue" or a "Feature Request".

to check if service binding operator is present on the cluster, if so use the ServiceBindingRequest as that allows the dev-console visualisation capabilities of that link.

To be clear ServiceBindingRequest isn't used just for visualization in console, it actually performs the bind and then the console displays it. The console will display based on an annotation-only app.openshift.io/connects-to, see label/annotation conventions

Sure, thanks for pointing that out. I wasn't aware of the console using the annotation but my understanding of an SBR was just as you've mentioned - "it actually performs the binding and console then displays it".

/lifecycle frozen


How should inner joins work for continuous queries?

From this thread; https://groups.google.com/forum/#!topic/influxdb/6PKsLc4RZJo
If you have multiple series that you want to use to compute another series. Like one value divided by another or something. Then output that continuously to the resulting series. How can this be handled?

No current plan for JOINs between measurements.


Feat: support to register virtual method

Support the definition of new virtual functions and the invocation of overridden virtual functions in GDScript.
The following operations are not supported:

Calling virtual functions defined in Nim from GDScript without overriding them in itself

Usage:
Register the base method with Godot by marking the method with the {.gdsync, base.} pragma.
Default behavior can be set for virtual functions.
https://github.com/godot-nim/gdext-nim/blob/15331967c3fabd410e7d2f2c86df716b56cac24b/testproject/runtime/nim/src/classes/gdvirtualnode01.nim#L1-L7
Override as well as engine built-in methods such as ready.
https://github.com/godot-nim/gdext-nim/blob/15331967c3fabd410e7d2f2c86df716b56cac24b/testproject/runtime/nim/src/classes/gdvirtualnode02.nim#L1-L9
The name you define will be published in the GDScript as is. A way to alias this has not yet been implemented.
https://github.com/godot-nim/gdext-nim/blob/15331967c3fabd410e7d2f2c86df716b56cac24b/testproject/runtime/inherited_node01.gd#L1-L4
https://github.com/godot-nim/gdext-nim/blob/15331967c3fabd410e7d2f2c86df716b56cac24b/testproject/runtime/inherited_node01.gd#L1-L4
Virtual function calls can be made in the same way as in the Nim standard.
If overridden, the process is executed; otherwise, the default process is executed.
https://github.com/godot-nim/gdext-nim/blob/15331967c3fabd410e7d2f2c86df716b56cac24b/testproject/runtime/nim/src/classes/gdextnode/typedef.nim#L145-L155

close #1


feat(pubsub): add in-memory pub/sub

Description
Added an adapter for a hand-picked in-memory service bus implementation to support integration testing. In this example, I use RabbitMQ as the underlying message broker but that makes it hard(er) to run integration tests in CI since you need to first spin it up from the pipeline.
Next thing I'll probably create is a C# wrapper to start and stop the self hosted sidecar from the integration test (and call it Dapr.Wrapr 🤟🏻 ).
Issue reference
We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.
Please reference the issue this PR will close: #[issue number]
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[x] Created/updated tests
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

That's a very good addition that might help lots of folks to get started locally without the Redis docker container.

Thanks for this contribution, it looks good!

Thanks!

Could you also open an issue in dapr/docs for tracking documentation of this component, per the PR template?

✅

Also, while it's not an alpha component requirement, I generally encourage folks to add new components to the conformance tests. It should be really easy in this case since there's no backing service to configure, and you can try it locally by updating the tests/conformance/common.go and tests/config/pubsub/tests.yml files to include this, and add the trivial tests/config/pubsub/in-memory/pubsub.yml config for it.

✅

Thanks for adding the component to conformance tests as well, the changes LGTM.
Automation is catching linter errors though, could you address them? The linter errors will show up inline under the Files changed tab in this PR.

Great! I accidentally removed the maintaoners from the reviewers 🙈 How will it now be closed?

@artursouza do we want to add this to 1.4?

Yes, this should be on 1.4.


Use private constant to test broken libxml version

What problem is this PR intended to solve?
Unnecessary memory usage.
The issue
While profiling a project for optimizing memory usage, I was pointed to the following line:
allocated memory by location
-----------------------------------
  14.61 MB  nokogiri-1.10.3/lib/nokogiri/xml/node.rb:852

which is:
https://github.com/sparklemotion/nokogiri/blob/c45658aa86da6cf238216d2cf8bf153dada27f64/lib/nokogiri/xml/node.rb#L852
If the above code is frequently called, then for every call:

A new array is allocated via %w[2 6]
An interim array is generated via LIBXML_VERSION.split('.')
And yet another array is generated via Array#[]<range>

The Solution
The solution is to avoid generating objects and directly check the version string against a substring.
But since its wasteful to repeatedly test a CONSTANT string, stash the entire evaluation in a private constant and then read its value as required.
Have you included adequate test coverage?
This doesn't change behavior nor introduce a new behavior.
Does this change affect the C or the Java implementations?
No, it doesn't.

Thanks for pointing out that we could be more efficient with memory here. It looks like this PR is failing on JRuby, I'll take a look this weekend and may end up editing this patchset to make it all work.

@flavorjones Thank you for informing me about the failed check.
I've pushed a commit to check if LIBXML_VERSION is defined beforehand.
Note: I didn't use Nokogiri.uses_libxml? to avoid invoking a VersionInfo instance.

Merged manually! Thank you again for this contribution.


Raise ValueError for non-finite distance to buffer/parallel_offset (maint-1.8)

Fixes #1483 and #1515 for the shapely 1.8.x maintenance branch.
I'll apply a similar approach for the main branch soon (sometime after #1514 is merged).

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

5 of 5 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 85.865%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
3019

Relevant Lines:
3516

💛  - Coveralls

Thanks!

I'll apply a similar approach for the main branch soon (sometime after https://github.com/shapely/shapely/pull/1514 is merged).

See also https://github.com/shapely/shapely/issues/1483#issuecomment-1217510186, it might be that we only need to add tests on the main branch


Docker it

Create a simple docker file the runs this server. I can do it too. Just build in on top of nodejs and throw in your config. Make sure the database is also running on a mountable volume.
Vagrant boxes are so 2012.
See https://docs.docker.com/examples/nodejs_web_app/

"I can do it too" <-- please do :)

This is certainly planned, we are still beta testing this project in our production environment. I'll update the issue once it is dockerized

This has been done by now!

:+1:  good job! Thank you!

There is a prefabricated build available on https://registry.hub.docker.com/u/rogierslag/live-image-resize/


Fix double rendering issue

The problem we're currently having is that in some cases, st2 attempts to render templates for a single action twice: first time it does that in context of actionchain\rule engine and the second time happens in context of action container. So if the first render resulting in parameter having a new template (either by string concatenation or by results of previous action containing a template as a string inside of it), it tries and usually fails to evaluate this new template during the second attempt.
The solution for this problem is to make sure every string only rendered once. One of the ways to achieve that is to make sure we only rendering user input ad not already processed data.
Currently, there's 5 places in st2 where jinja rendering is happening and 5 artifacts that are getting rendered there: action chain runner transform templates from action chain workflow definitions, reactor transform templates from rule definitions, notifier transforms notifications from action definitions, chatops pack transforms formats from aliases and action container handles user input on manual action invocation, mistral calls (which are at the moment basically the same thing) and, due to some previous oversight, the results of the previous four transformations.
In case problem is not obvious to you, here is an example of an action chain that throws an error which from the looks of it, it should not:
---
chain:
    -
        name: "do"
        ref: "core.local"
        params:
            cmd: "echo -n {; echo -n { missing_variable }}"
        on-success: "fail"
    -
        name: "fail"
        ref: "core.local"
        params:
            cmd: "echo {{ do.stdout }}"

After the first action has been executed, it's stdout now contains a string {{ missing_variable }} which should be treated by the system as any other source of random data, simply as a string. Action chain transformer resolves {{ do.stdout }} in cmd parameter during an execution of a second task and sends the resulting echo {{ missing_variable }} to action container which also treats it as a template instead of a simple string and returns missing dependency error because clearly, there's no such variable in action context. Or in case the variable is here, it passes correctly and then does something very different from what author initially planned.
So, to make sure every template only rendered once I'm proposing to split action container renderer into two independent functions and wire the system in such a way, that calls coming from mistral or user input are handled with both functions when the one coming from action chain or reactor only processed by the second one. First function should only transform parameters user have entered during this particular execution (aka liveaction.parameters). Second one would be handling parameters that user haven't provided, but are still required for action to execute (defaults from runner and action parameters). We should treat parameters coming from rule engine and action chain as already transformed and only use them as values for rendering default ones.
Since this change would require us to almost completely rewrite action container renderer, I've also decided to implement a new one using networkx graph library to determine the dependency graph instead of iterating over parameters until they are all rendered or failed enough times.

This is some really impressive work. Trying to catch up.

Overall the switch to networkx seems to make sense.
Will watch for changes that fix the double rendering issues.

https://stackstorm.slack.com/archives/stackstorm/p1450157328013421

https://stackstorm.slack.com/archives/stackstorm/p1450157578013438

I tried out this branch to get a clear grip on the behavior -
setup a key
$ st2 key set timeout 60
+----------+---------+
| Property | Value   |
+----------+---------+
| name     | timeout |
| value    | 60      |
+----------+---------+

Now the execution
$ st2 run core.local cmd="echo {{system.timeout}}"

What is save in the DB.
$ st2 execution get 56709e9932ed35726cd0791d -dj
{
    "action": {
        "ref": "core.local"
    },
    "context": {
        "user": "stanley"
    },
    "end_timestamp": "2015-12-15T23:13:29.575703Z",
    "id": "56709e9932ed35726cd0791d",
    "liveaction": {
        "action": "core.local",
        "callback": {},
        "id": "56709e9932ed35726cd0791c",
        "parameters": {
            "cmd": "echo 60"
        },
        "runner_info": {
            "hostname": "st2dev",
            "pid": 29298
        }
    },
    "parameters": {
        "cmd": "echo {{system.timeout}}"
    },
    "result": {
        "failed": false,
        "return_code": 0,
        "stderr": "",
        "stdout": 60,
        "succeeded": true
    },
    "start_timestamp": "2015-12-15T23:13:29.466055Z",
    "status": "succeeded"
}

I see liveaction.parameters is as per your offline description i.e resolved and parameters is unresolved. Ideally, would've preferred for liveaction.parameters to be unresolved but this is perfectly acceptable. It is just worth noting for future reference that these values will differ.
Now, what happen if we change timeout
$ st2 key set timeout 65
+----------+---------+
| Property | Value   |
+----------+---------+
| name     | timeout |
| value    | 65      |
+----------+---------+

and on a re-run
$ st2 execution re-run 56709e9932ed35726cd0791d
.
id: 56709eca32ed35726cd07920
status: succeeded
parameters:
  cmd: echo {{system.timeout}}
result:
  failed: false
  return_code: 0
  stderr: ''
  stdout: 65
  succeeded: true

This behavior is reasonable :)
:+1:

:metal: then I just need to test that it's still reasonable in the other cases (chains, mistral, rules, notifications and stuff) and split the tests so they would start test functions individually instead of their cumulative effect.
Any idea how we can ensure I didn't introduce any regressions? All I can think of is to test a lot of stuff and make sure it behaves the same on both an old and a new version or throws kind of similar errors.

Any idea how we can ensure I didn't introduce any regressions?

Hopefully our units are sufficient. If not the integrations should capture some basic stuff. Apart from that our only real option is to watch for regression in the field.

Agreed with @manasdk comment.

On a related note - I also encounter this issue while working on Github weekly activity report email.
I will test it with this branch and see if it works.

I've confirmed that my workflow works with your change - nice work :+1:

I've confirmed that my workflow works with your change - nice work :+1:

Ok, since local dev env is giving me a hard time today, I'm going to merge that, test on staging and fix the problems as they appear. Apologies if it will trigger a rebase for you.

:clap:

I've deployed this one on st2stage201 and from what I can tell, it works just fine. If you guys can kick some tires for a little bit to help us gain confidence in the change, I would really appreciate that. May be we should go as far as deploy it to ops or build. I tried running st2cd actions on stage, but I'm afraid I'll spend just too much time trying to make them work due to amount of stuff happening behind the scene.

Yeah, I think it's a good idea to deploy it to st2build.
In case thing breaks we will need to revert to an older version, but that's not a problem since the packages are already built (there will be a little back and forth if things break, but nothing too bad - we will need to revert to an older version, fix issue, build packages for fixed version, deploy fixed versions).

Caused a regression -
$ st2 run fixtures.streamwriter-script-local stream=stdout
.
id: 56734ed932ed356478d5bcde
status: failed
parameters:
  stream: stdout
result:
  error: 'unsupported operand type(s) for +: ''NoneType'' and ''unicode'''
  traceback: "  File "/mnt/st2repos/st2/st2actions/st2actions/container/base.py", line 116, in _do_run
    (status, result, context) = runner.run(action_params)
  File "/mnt/st2repos/st2/st2actions/st2actions/runners/localrunner.py", line 101, in run
    named_args = self._transform_named_args(named_args)
  File "/mnt/st2repos/st2/st2actions/st2actions/runners/__init__.py", line 163, in _transform_named_args
    return {self._kwarg_op + k: v for (k, v) in six.iteritems(named_args)}
  File "/mnt/st2repos/st2/st2actions/st2actions/runners/__init__.py", line 163, in <dictcomp>
    return {self._kwarg_op + k: v for (k, v) in six.iteritems(named_args)}
"

Seen in the CI environment.


feature request: clear request credits

I know this is complicated but want to put it out there for thought.  Is there any nice way to support a clear outstanding request(n) operation.
The awkward thing is timing, as client may clear and then receive a valid response on a stream that the client now believes has 0 credits.  I was thinking of something like a CLEAR_REQUEST frame with optional stream id (single or all streams).  There would probably need to be some some ACK frame in response, so that clients know that server and client are in sync.  Before the ACK is received, the old request credits are assumed to be in place.
The reason for it, is to support situations where flow control changes based on things like mobile connection strength AKA "Pause".  A client may have 200 subscriptions open with generous (>1) requests outstanding on Wifi and want to restrict things when conditions change without cancelling and resubmitting requests.

If we pursue something like this, it means we are straying from the Reactive Streams spec. But that's likely okay as network requirements are different. If the application using Reactive Socket is fully Reactive Streams compliant, then it would just never use this behavior.
By the way, a big reason why this was not done with Reactive Streams is because of the inherent race condition. If the producer is granted 100 credits from the consumer, then the producer is free to deliver them. If the consumer then changes it to 0 while the producer is concurrently preparing and/or emitting the 100, they can't be stopped.
I don't think that's a reason to not do this, but it does mean that the guarantees from the consumer would instead be "the max the producer can send is the ceiling of whatever has been requested" and then it is a best-effort async race for when the producer updates to whatever the lower value is the client sent.
Over the network boundaries though, I support pursuing this.

Here's another use case where it would be helpful on a network. Imaging a bi-directional channel:

consumer requests a "live list" of items with request-n == 100
producer delivers 50 "item adds"
producer deliver a "done initializing list" metadata message
consumer now knows it has the initial 50 items for the list and everything going forward are incremental updates
the consumer at this point may want to reduce it's "request-n" credits to 4 so that the producer pushes incremental updates down slower than the initial burst so that background incremental updates don't overwhelm anything going on in the foreground

This is quite similar to what would be achievable if something like the HTTP/2 WINDOW_UPDATE semantics (at the byte stream level) were exposed to the application APIs and made message oriented (except request-n is cumulative and needs to be reset, whereas WINDOW_UPDATE is explicitly set each time).

I believe consensus is that this complicates the protocol, and makes many things awkward.  We can handle this at the application level.

@yschimke update on the wrong issue? I am not really opposed to the idea but may be we need to think about the semantics more.

If we pursue something like this, it means we are straying from the Reactive Streams spec.

Correct

If the application using Reactive Socket is fully Reactive Streams compliant, then it would just never use this behavior.

@benjchristensen is the thought here that an application can dodge ReactiveStreams in this case and maybe send a special signal (-1 requestN) to signal reset?
I was thinking about a slightly different idea of introducing suspend and resume on a stream. The following being a typical interaction:
RQ->RS requestN 100
RS->RQ onNext ... 20
RQ->RS suspend
RS->RQ onNext .... 1 (overflow due to race)
RQ->RS resume
RS->RQ onNext 79

The above interaction would ofcourse have buffering on the responder but it will save network data transfer. The responder can then decide to drop and send error if the buffer is too large to handle.


Not releasing notification observer

As per Apple docs, you should release observers on deinit, in JLToastCenter.swift:
deinit{

        NSNotificationCenter.defaultCenter().removeObserver(self)

    }

@JuanPabloBoero, JLToastCenter is designed to be a singleton object. The instance should not be deinitialized.


entries: Add support for revoke/reinstate of registry-entries

This PR,

Support for revoke, resinstateing of registry-entries.
Demo script updates.

@amarts
With this can we make a release?


Time for HDF creation step

Hello,
I am currently running the HDF dataset creation step and am curious how long I should expect this to take. Apologies this is the first time I am working with this file type.
I have run the code to create the train and test datasets on a cluster through slurm. I allocated ~5 days of run time for both runs and 120GB of ram and they don't seem to complete the step, the files slowly keep growing as the script runs but there doesn't seem to be a clear completion of the step. For example, when I look at the output of the validation step while it is running, each line of output has a number that occasionally increases. Currently, it is reading "11775" and has been running for over 5 days.
In my batch file, I am loading these modules then activating the bee4exp environment that contains all of the dependencies that are listed in the bee4exp.yml file.
module load intel-python3
module load gnu/6.3.0 cuda-11.4
module load hdf5/gnu-9.3.0
conda activate bee4exp

Does anyone have any comments on how long this process takes? Or any idea if any of these modules I am loading are blocking required programs from the bee4exp.yml? There seems to be an issue as I am allocating far more resources than I would expect to be needed, as mentioned in issue #4.
Thank you!

HI, same issue
@vladan-stojnic


Integration with web frameworks

It should already be possible to integrate in a straightforward way using the Unvalidated type, the only part that's missing is converting the validation errors into some output, but that should be application-specific:
#[derive(Validate)]
struct NewPost {
  #[garde(required)]
  title: String,
  #[garde(required, length(max=5000))]
  content: String,
}

struct CreatedPost {
  // ...
}

// you probably don't want to use `anyhow` for this
#[post("/post")]
async fn create_post(
  State(db): State<Database>,
  Form(post): Form<Unvalidated<NewPost>>,
) -> Result<CreatedPost, anyhow::Error>> {
  let post = post.validate(&())?;
  // persist post, which returns `CreatedPost`
  let post = db.create_post(post).await?;
  Ok(post)
}

// With https://github.com/jprochazk/garde/issues/3 implemented:
// The UI would fetch this on load and use it to attach client-side
// validation onto the form. It would also be possible to use this
// to generate the form server-side if you don't have a single-page
// app.
#[get("/contraints/post")]
async fn get_create_post_form_constraints() -> Json<Constraints> {
  Json(<NewPost as Validate>::constraints())
}

I created an integration for axum. Still working on tests, docs and CI. But the base source should working, if you want to try it out :)
https://github.com/Altair-Bueno/axum-garde

Looks good! I have a few questions:
Would you be willing to merge it into this repo, so that it can be kept up-to-date more easily?
Why is the 2nd type parameter necessary here? Do you think adding an associated type to Unwrapable (which would contain the inner type) would allow you to remove it?
Do you think it would make sense to create a Config type which would be stored in the app state, and could contain any user-defined Context types? Those could then be extracted inside the FromRequestParts/FromRequest parts and passed into validate.

Would you be willing to merge it into this repo, so that it can be kept up-to-date more easily?

Yes, that would be easier. Let me finish it first

Why is the 2nd type parameter necessary here? Do you think adding an associated type to Unwrapable (which would contain the inner type) would allow you to remove it?

Becase we target the final deserialized value (eg Foo), but we require the type information provided by the extractor (eg Json). It's the same API that WithRejection has.
I will sleep over the idea tho, maybe there is some way to flip the trait so we can have both the type information and the final target.

Do you think it would make sense to create a Config type which would be stored in the app state, and could contain any user-defined Context types? Those could then be extracted inside the FromRequestParts/FromRequest parts and passed into validate.

It can be done, i just didn't bother (yet). Adding it rn

I will sleep over the idea tho, maybe there is some way to flip the trait so we can have both the type information and the final target.

I found another API design that is both simpler and easier to use, but of course there is a catch. Instead of creating a new trait for unwrapping tuple structs, we leverage the Deref trait to obtain a reference to some type T. The catch is that we cannot obtain an instance of Valid, as we are deserializing into T and not Valid<T>
One alternative would be to impl Serialize/Deserialize on garde and perform validation in situ, but that wouldn't allow usage of Validate::Context and i don't know if that's even possible
Source for this idea is available at the ref/ditch_valid_typestate branch: https://github.com/Altair-Bueno/axum-garde/tree/ref/ditch_valid_typestate

I think Valid could have an unsafe unchecked constructor which could be used in extractors like this. The invariant would be that Valid::new_unchecked(v) is safe if T::validate(&v).is_ok() == true. It seems to me like it's well in line with other "parsing" or "validation" APIs in Rust (e.g. constructing str from [u8]).
What do you think?

That would allow end users to construct Valid<T>, but we wouldn't be able to do it from within the axum extractor. We still need more information: the target value T, the extractor (eg Json<T>) and a trait to unwrap T to construct Valid<T>. Otherwise, we could only construct Valid<Json<T>>, which couples axum extractors with the business logic

Could you please take a look at the axum-garde? Implementation should be ready. It includes a couple of examples, docs and a lot of integrations with multiple axum extractors
@jprochazk

LGTM! I think the default features should include json, form, and query to be closer to axum's default features. That should make it easier to just cargo add garde axum-garde and start using it.

Keeping this open for an integration with actix-web.

So I've never used this library, but I have used validator. I had an idea around integrating validation into serde and did some googling to see if anyone has done it, and ended up here. I'm wondering if this might transparently solve your web framework integration. Essentially, garde could provide its own derive macro for Deserialize. The generated Deserialize implementation would do normal deserialization (which would be delegated to an identical struct), then apply validation on top.
use garde::{Deserialize, Validate, Valid};

#[derive(Deserialize, Validate)]
struct User<'a> {
    #[garde(ascii, length(min=3, max=25))]
    username: &'a str,
    #[garde(length(min=15))]
    password: &'a str,
}

// This would fail because of validation errors
let user = serde_json::from_str("{\"username\": \"no\", \"password\": \"bad\"}").unwrap();

The garde version of the Deserialize derive would generate something like:
use serde::Deserialize;

#[derive(Deserialize, Validate)]
struct _User<'a> {
    #[garde(ascii, length(min=3, max=25))]
    username: &'a str,
    #[garde(length(min=15))]
    password: &'a str,
}

impl<'de> Deserialize<'de> for User {
    fn deserialize<D>(deserializer: D) -> Result<User, D::Error>
    where
        D: Deserializer<'de>,
    {
        let value = _User::deserialize(deserializer);
        value.validate()  // We'd need to figure out how to map this error
    }
}

The two main issues I see here are:

How to generate the inner _User struct. We'd need to make sure to maintain support for all of serde's attributes, so those have to get forwarded to the inner Deserialize derive. I haven't worked with derive macros before so I'm not sure if that's possible.
How do we convert validation errors into serde errors in a way that's useful?

The major downside here of course is there's no simple way to deserialize your type without validating. Personally I've never wanted to do that but someone might at some point. It also means you end up duplicating every struct in the generated code, which may or may not slow down compilation.
I'm happy to work on answering these questions and implementing this, but I wanted to check that my idea makes sense and is something you'd want in garde before doing so. Let me know if I'm crazy or something.

Unlike in validator, garde requires a context passed to validate calls. This context is acquired from the framework equivalent of "app state", which will always require framework-specific code.

Of course! That makes sense

We've now got two "proper" integrations:

axum_garde
garde-actix-web

It should be straightforward to use Unvalidated in any other framework that supports some kind of "extractor" via Deserialize.


v2: plugin-ideal-image doesn't work with .gif format

🐛 Bug Report
Plugin itsel supports .gif (on webpack configuration) but this plugin doesn't work with gif https://github.com/endiliey/responsive-loader (i guess)
Have you read the Contributing Guidelines on issues?
Yes
To Reproduce
<Image
  img={require("../../static/img/real-code.gif")}
/>

Expected behavior
To work correctly.
Actual Behavior
./static/img/real-code.gif
Error: No mime type for file with extension gifsupported
 @ ./src/pages/index.tsx 1:9091-9132
 @ ./.docusaurus/registry.js
<EMAIL_ADDRESS> @ ./.docusaurus/routes.js
<EMAIL_ADDRESS> @ multi ./node_modules/react-dev-utils/webpackHotDevClient.js<EMAIL_ADDRESS>
Your Environment

Docusaurus version used: alpha@70

hmmm that's right, I didn't expect this to work.
Temporarily we could remove it from the Webpack config.
It seems the latest sharp package can handle gifs: https://github.com/lovell/sharp/pull/2012
But it requires a custom libvips install: https://sharp.pixelplumbing.com/install#custom-libvips
I'd rather document that we don't support gif resizes in that plugin, and let the user build his own plugin if he wants to

hmmm that's right, I didn't expect this to work.
Temporarily we could remove it from the Webpack config.
It seems the latest sharp package can handle gifs: https://github.com/lovell/sharp/pull/2012
But it requires a custom libvips install: https://sharp.pixelplumbing.com/install#custom-libvips
I'd rather document that we don't support gif resizes in that plugin, and let the user build his own plugin if he wants to

It actually cannot use .gif images in general :(
I tried:
//docs/file.mdx
import LazyLoad from 'react-lazyload';
import additionSoustraction from "../../static/img/transactions/additions-soustractions.gif"
//...
<LazyLoad height={381}>

</LazyLoad>

None of these will show the .gif image.


How to create a container based on image downloaded into a specific repo?

Hello!
There is a project that was inserted into a repository from its university and I need to test this project. Basically, this project involves some technologies, and LXC/LXD is one of them. There is an image called "MQTT_Publisher.img" which is an application responsible for generate random values of temperature and send them to a MQTT Gateway. This MQTT_Publisher.img is the image used in a LXC/LXD container. Now, for testing this project, I downloaded this image and I need to create a container based on it.
How can I create a container based on an image that I've downloaded? I've searched about it, but I had obtained results about images like Ubuntu, Debian, and other ones that are available in default LXC/LXD repositories. But my image is an ready application that I need to use to create the container. So, do I need to put this MQTT_Publisher.img in some specific repository in order to use it to create a container? Or there is another way to access this image donwloaded in my computer to create the container? What are the commands needed for doing it?
Thank you.

Support questions should go to https://discuss.linuxcontainers.org


All service failure causes infinite loop

Original report
We encountered this when the first two services failed because of too many requests and we reached requesting maxmind. We got the error "Users of MaxMind Javascript services must register their domains at ..."
However, this reliably crashed chrome browsers for many of our users. to replicate, simply use only the maxmind service and make this change to the maxmind function:
-                done({
-                  code: location.country.iso_code
-                });
+                done(toError(location));

which replicates how it responds to an error response.
I haven't fully dug into it, but the maxmind callback code seems pretty different than the other code -- it has no try/catch, and always calls the done object instead of returning a json object, but there is a comment that this is intentional because of a second ajax call.
edit: I complete misunderstood the source of this bug. The problem is when all of the services are exhausted, the code enters an infinite loop:
      do {
        service = this.getServiceByIdx(++this.currentServiceIndex);
      } while (!service);

if there is never another service, it keeps going...

Thanks for the report, we'll get it fixed on Monday!

A PR has been made for this issue: https://github.com/insites/cookieconsent/pull/175


[ci] Test on Azure Pipeline Timeouts on Linux

Description
Today we found that, ci test on azure pipeline timeouts on Linux machines. See e.g.
https://dev.azure.com/lightgbm-ci/lightgbm-ci/_build/results?buildId=11448&view=logs&j=c28dceab-947a-5848-c21f-eef3695e5f11&t=fa158246-17e2-53d4-5936-86070edbaacf

The same is true and for CUDA (Linux as well) builds on GitHub Actions self-hosted machine. For example, https://github.com/microsoft/LightGBM/runs/4101143551?check_suite_focus=true.

According to the logs with enabled timestamps, the reason is in one of the Dask tests. Need to figure out in which one...
2021-11-04T02:53:15.6285993Z ../tests/python_package_test/test_dask.py .............................. [ 14%]
2021-11-04T02:54:14.9709387Z ........................................................................ [ 26%]
2021-11-04T02:55:34.2062214Z ........................................................................ [ 37%]
2021-11-04T02:56:58.5557598Z ......s...............s...............s...............s................. [ 48%]
2021-11-04T03:48:21.2453087Z ...........................
2021-11-04T03:48:21.2583275Z ##[error]The operation was canceled.

or
Thu, 04 Nov 2021 06:31:06 GMT
../tests/python_package_test/test_dask.py .............................. [ 14%]
Thu, 04 Nov 2021 06:31:53 GMT
........................................................................ [ 26%]
Thu, 04 Nov 2021 06:32:55 GMT
........................................................................ [ 37%]
Thu, 04 Nov 2021 06:34:18 GMT
......s...............s...............s...............s................. [ 48%]
Thu, 04 Nov 2021 07:26:37 GMT
Error: The operation was canceled.

Made pytest more verbose and output one test result per line so that we will be able to see timings separately for each test:
https://dev.azure.com/lightgbm-ci/lightgbm-ci/_build/results?buildId=11455&view=logs&j=c28dceab-947a-5848-c21f-eef3695e5f11&t=fa158246-17e2-53d4-5936-86070edbaacf

OK, seems that the test causing CI jobs to timeout is the one after test_dask.py::test_errors. According to the
pytest ./tests -vv --collect-only

command (I used it because lightgbm-dask is not working on my local Windows machine),
it should be
<Function test_training_succeeds_even_if_some_workers_do_not_have_any_data[array-binary-classification]>

cc @jameslamb @jmoralez

I'm really confused.
Looking at the logs from the job @shiyu1994 linked, I see dask and distributed 2021.10.0 getting installed.
    dask-2021.10.0             |     pyhd3eb1b0_0          19 KB
    dask-core-2021.10.0        |     pyhd3eb1b0_0         718 KB
    dbus-1.13.18               |       hb2f20db_0         504 KB
    distributed-2021.10.0      |   py39h06a4308_0         994 KB

That job was 11 hours ago...but according to Anaconda's website, dask-core and distributed 2021.10.0 were only uploaded around 40 minutes ago.

v2021.10.0 - 40 minutes ago
v2021.9.1 - 14 days ago

https://anaconda.org/anaconda/dask-core/files

https://anaconda.org/anaconda/distributed/files

@jameslamb

but according to Anaconda's website, dask-core and distributed 2021.10.0 were only uploaded around 40 minutes ago.

Maybe resubmission with critical bug fixes?

I would be really unhappy to learn that Anaconda's approach to pushing out bug fixes was to overwrite a previously-published package instead of releasing it with a new version. But I guess that is possible.
The discussion in https://github.com/dask/community/issues/160 and https://github.com/ContinuumIO/anaconda-issues/issues/12447 did hint at Anaconda maybe treating dask / distributed specially.

For what it's worth, none of the repos at https://github.com/anaconda or https://github.com/ContinuumIO have received a commit in the last 18 hours, so I guess if Anaconda is making changes they aren't on GitHub, or they're in some other place I don't know about.

I was able to reproduce this locally. Documented the issue at #4771.


add C4GH_PASSPHRASE  as an option

bump version to 1.9.0
add C4GH_PASSPHRASE  as an option
update docs

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (2a587c8) 69.03% compared to head (a59d9bd) 69.03%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##           master     #119   +/-   ##
=======================================
  Coverage   69.03%   69.03%
=======================================
  Files           6        6
  Lines         872      872
=======================================
  Hits          602      602
  Misses        149      149
  Partials      121      121

Flag
Coverage Δ

unittests
69.03% <ø> (ø)

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

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

closes #118


Support changing CDC related configs dynamically

Feature Request
Is your feature request related to a problem? Please describe:
Support changing CDC configs dynamically via SQL. https://docs.pingcap.com/tidb/stable/dynamic-config
Example:
https://github.com/tikv/tikv/blob/3f0c72a389b4987c27b3dc42d8931a7ecaff9638/components/server/src/server.rs#L759-L762
TiCDC also need a config manager to update its config.

PTAL @hi-rustin

/assign
I will take a look.

/difficulty medium


Inconsistent Docker build architecture

Describe the bug
The available Docker images seem to have inconsistent architectures. This may be caused by https://github.com/convos-chat/convos/issues/464
Most explicit version tags have the amd64 architecture, except v6.30 which is arm64.
Both stable and arm64 are arm64
To Reproduce
Steps to reproduce the behavior:

Go to https://hub.docker.com/r/convos/convos/tags?page=1&ordering=last_updated
See the tags and their OS/Arch fields

Expected behavior
It is possible to share the same tag over multiple images with different architectures.
All users would be able to use the stable tag, regardless of architecture.
See Nginx tags for a comparison: https://hub.docker.com/_/nginx?tab=tags
Screenshots

Additional context
A mismatch between the host architecture and the container architecture could produce the following error:
exec user process caused: exec format error

Encountered while running stable (which turned out to be arm64) on an amd64 host.

I would very much like this to be fixed, but I don't want to wait 40+ minutes for the arm build to complete to get the amd64 docker image. See #618 for more details.
v6.30 was a bug, which got fixed (0f6d8ffdc48a664771ce1667820b9d9e69d7065a) by completely splitting up the docker tags: The amd64 builds will have the version number as tag, while the arm64 tag will simply be called "arm64".

To fix the "exec format error" issue, then simply use v6.31 which is the latest.


Expose an some TfLiteInterpreterOptions to choose IREE-specific settings

[ ] TfLiteInterpreterOptionsSetHALDriverName: like the --driver= flag.
[ ] TfLiteInterpreterOptionsSetHALDevice: reuse an existing device (share pools/etc) - also needs a query to get the device handle from existing interpreters.

Meh.


Networkx requirement: bump and loosen

oh didn't know that was why. qiskit is just a contrib requirement though (?). It's kindof weird that a qiskit issue is constraining our dependencies especially on a popular, well-behaved (w.r.t. versioning) scientific python package

When we pin things, we should add a note to the requirements file explaining why

We should also bump the version of qiskit; the one we're using is quite old
Agree on the documentation of why pinning


[GOBBLIN-1934] Monitor High Level Consumer queue size

Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[X] My PR addresses the following Gobblin JIRA issues and references them in the PR title. For example, "[GOBBLIN-XXX] My Gobblin PR"

https://issues.apache.org/jira/browse/GOBBLIN-1934

Description

[X] Here are some details about my PR, including screenshots (if applicable):
We suspect that the HighLevelConsumer class may be dropping Kafka messages if the thread for a particular consumption queue is interrupted or stalled. Before changing how these queues are handled, we want to verify that blocked or dropped queues is the reason for missed messages by emitting metrics about each queue's size.

Tests

[X] My PR adds the following unit tests OR does not need testing for this extremely good reason:
Metrics added to be verified by monitoring

Commits

[X] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Codecov Report

Merging #3805 (2963aa6) into master (2e3102f) will decrease coverage by 1.38%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #3805      +/-   ##
============================================
- Coverage     47.36%   45.99%   -1.38%
+ Complexity    10989     2177    -8812
============================================
  Files          2155      416    -1739
  Lines         85228    17967   -67261
  Branches       9478     2191    -7287
============================================
- Hits          40372     8264   -32108
+ Misses        41195     8819   -32376
+ Partials       3661      884    -2777

see 1745 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Add a trim option to remove memory address from the flamegraph

We have a use-case to take the flamegraph_lines output and convert it to a pprof.  In order to do this for large heap dumps, we need to reduce the cardinality and have a condensed representation. To that end, I have added a trim option which changes the string representation of Object based on this flag.
As an example with test/heap.json:

Please let me know if there is a better/idiomatic Rust way of doing things here.

Thanks you so much for the feedback.

In particular, if the goal is to reduce cardinality, I'm surprised the existing test heaps seem to produce graphs with the same number of nodes.

The number of nodes would remain the same in the graph (since we are not pruning nodes) -- it will be collapsed/merged in the output (flamegraph).
Let me try to explain this via an example:

The two flamegraphs are for the same heap -- the top one is with my changes. We can see ActiveRecord::ConnectionAdapters::PoolConfig are merged together. If we look at the raw output of flamegraph_lines (folded stacks):
cat test/trimmed.txt | grep root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache" | head -n 10
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Hash 928
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Hash 928
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Hash 928
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Hash 928
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Array 160
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Array 160
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Array 40
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Array 160
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Array 160
root;ActiveRecord::ConnectionAdapters::PoolConfig;ActiveRecord::ConnectionAdapters::SchemaCache;Hash;Array 80

Although the number of nodes in source would be the same, the absence of memory addresses/string contents etc allows us (in this case inferno) to merge these folded stacks. I think my use of "reducing cardinality" maybe confusing -- I was thinking in terms of the actual output.

Ok, right, that makes sense - and thanks for the screenshot, really helps clarify the use case. Happy to merge with a test or two and the option name change.

If you could look into https://github.com/djudd/reap/pull/3/commits/c0db447e494696215b2f193e8779224a323bdce1. Happy to squash the commits too once you are okay with the changes.
Thanks a lot, David 🙏 .

Thank you!


Upgrade to Quarkus 3

Is there any plan to upgrade extension to Quarkus 3?

Yes. I'll see if I can start the work in the next few weeks.

Here is a branch with the Jakarta work: https://github.com/quarkiverse/quarkus-jberet/tree/jakarta
Everything seems to be working except the TCK, which requires some adjustments.

@radcortez do you think could be interesting to integrate the Jpa based Job Repository ?
https://github.com/jberet/jberet-jpa-repository
Based on JPA it supports more dbs, caches and solves some issue related to JobExecutions removal.
I am asking here because it requires JBeret 2.0 (and so jakarta EE packages).
If you are interested I could try to integrate it myself (since I would use it for my projects) and make a pull request on the jakarta branch.

Sure, feel free to propose something. I guess it should be a separate extension (like the rest one).

Maybe I could extend the factory and register the extended one as default ...

How about a CDI producer and look up the bean the same way we do with the TransactionManager?

That's exactly what I thought too

Or just add the JobRepository as a parameter, so you can lookup the bean in the Recorder method.


Changes to the Rails updated_at column don't appear in version changesets

If I update some Rails model attribute then Rails will perform the update I requested and also update the updated_at field for that model.
However, the PaperTrail version changeset for the change doesn't contain a hash key updated_at: [<pre_value>, <post_value>].
PaperTrail does correctly record both :created_at and :updated_at when a record is initially created.  The bug only appears with subsequent attribute updates.
I'm using Rails 3.2.16 with Ruby 1.9.3p429.
And yes, I do know I can reconstruct the approximate updated_at from the created_at field on the Version.  Still, it would be nice if the changeset record recorded the change.

v4.0.0 will now use after_ callbacks for all version generation, so that should address the issue you see here. Feel free to give v4.0.0.beta2 a whirl and that should fix your issue.  (See #375 and #374 for more details)


Finish writing README.md, i.e. remove TODO

The README.md needs to describe how to use TerseTS from Python and C/C++.


Best Practice For Waiting On Async Actions In Sagas

If I have an action as follows:
export function someAsyncStuff() {
  return {
    types: [
      STUFF_PENDING,
      STUFF_FULFILLED,
      STUFF_REJECTED,
    ],
    payload: {
      promise: /* Some REST API call */,
    },
  };
}

Using yield put(someAsyncStuff) works OK. The action gets dispatched, etc. Most of the time I just continue and do other things. But sometimes there is an action that I need to wait to finish. Looking at the saga doc, I noticed that call() will block until a promise resolves and in the above case, put() returns a Promise. So I implement something like this so that the promise is given to call:
function *waitOnAction(action) {
  yield call((promise)=>promise, yield put(action()));
}

function* backgroundTask() {
  while (true) {
    try {
      /* do stuff */
      yield waitOnAction(someAsyncStuff);
      /* do other stuff */
    } catch (error) {
      // wait on error?
     yield call(delay, 5000);
    }
  }
}

This "doing async in a declarative/synchronous" looks nicely familiar to me from similarities in other areas. For example, yielding on a Future in python's Tornado framework. But I couldn't find any recommendations or examples in the Saga tutorials and docs on best practice for this kind of problem.
The closest I can think of is to use select() on a state attribute or take() on a known event/action after calling the put. But I have some concerns:

To be honest, I'm new to React and saga and I can't seem to get select to wait on an attribute.
In theory, if the action completes quickly, select or take could miss the relevant event?
Similarly, if the reducer doesn't update the associated attribute on Promise.reject, select could block forever?
I have to know something about the action (i.e., what are its actions, what its reducer will update)

As I said, the combination of put and call for waiting on async actions seems pretty straightforward. But I wanted to ask if there are recommended or better ways to solve this?

Looking through the saga code, it looks like you can force put to wait on a Promise if you call put.sync instead. But I don't know how official this is:
https://github.com/yelouafi/redux-saga/blob/master/src/internal/io.js
put.sync = (...args) => {
  const eff = put(...args)
  eff[PUT].sync = true
  return eff
}

Although docs are not update yet, put.sync is a public API https://github.com/yelouafi/redux-saga/releases/tag/v0.10.5.

Great.

For completeness, if you are waiting on a Promise returned by an action that has been dispatch (like my someAsyncStuff example) and the Promise fails, you will get back a redux-action like what a reducer sees with its error property set. So if you are waiting to catch a rejected Promise, it won't happen. You need something like:
function* waitOnAction(action, ...args) {
  const result = yield put.sync(action(...args));
  // if it is from a redux-action, we get an object with error set not a thrown error
  if (result !== undefined) {
    const { error } = result;
    if (error) {
      throw result;
    }
  }
  return result;
}

https://redux-saga.github.io/redux-saga/docs/advanced/RacingEffects.html Read it carefully and in 10 hours you will have clear concepts. In your example you are missing Take and fork to handle it elegantly

Thanks for the link. I'm well-aware of these options. I use race and take in other places. They do not apply here. For one thing, take cannot be used with a Promise. Forking a saga means you still need some mechanism within that saga to wait until that Promise is done.
The simplest way is to use put.sync as mentioned (and possibly the await operator).


Q-learning

Question ❓
Dear @AlejandroCN7,
Is it also possible to perform Q-learning with sinergym. I want to compare these results with DRL.
Checklist

[ ] I have read the documentation (required)
[ ] I have checked that there is no similar issue in the repo (required)

:pencil: Please, don't forget to include more labels besides question if it is necessary.

Hi @MichielKempkens,
Of course, If you implement/find code that is compatible with OpenAI gym environments, you can integrate it with Sinergym in the same way as DQN is done in Stable Baselines, for example.

thanks


Test suite refactoring

Overview
This pull request refactors the test suite to make it cleaner and to use the standard testing library better. The assert(), equals(), and ok() functions have been removed and some test names have been changed for clarity.
No functionality has been changed. These changes have been made in preparation for a more extensive, long running black box test suite.

/cc @gyuho

+1. Thanks!


Update Flatpak Application ID

To be merged when the EOL rebase occurs.

Please merge this in a day or two

@ungoogled-software/core This can be merged now.


MediaFusion stremio addon is down

MediaFusion stremio addon is down

see the pinned issue https://github.com/mhdzumair/MediaFusion/issues/150


 .github/release-drafter.yml not included in push workflow

This causes the release-drafter workflow to fail if the repo doesn't have the release-drafter.yml config associated with it already.
e.g. https://github.com/pycontribs/jira/runs/4345876044?check_suite_focus=true
Perhaps we can add a line to the build config that downloads this repo's one if not present:
jobs:
  update_release_draft:
    runs-on: ubuntu-20.04
    steps:
      - name: Verify template exists if not use our default
        run: test -f .github/release-drafter.yml || curl https://github.com/ansible-community/devtools/blob/main/.github/release-drafter.yml > .github/release-drafter.yml
      # Drafts your next Release notes as Pull Requests are merged into "main"
      - uses: release-drafter/release-drafter@v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Ah we may need to use the create-dirs option actually, as we don't checkout the current repo:
curl --create-dirs https://github.com/ansible-community/devtools/blob/main/.github/release-drafter.yml --output .github/release-drafter.yml


Add devices for privileged container

This is a "cherry-pick" of https://github.com/containerd/containerd/pull/5939
Signed-off-by: zhanglei<EMAIL_ADDRESS>

hi, any update to this?

ping, thanks

/test

politely ping

The containerd.io package of docker-ce repo is still using 1.4.x versions, so this bug can still affect a lot users. Anything we could help here to make some progress? @qiutongs

@mikebrow @crosbymichael could you please review this cherry-pick PR or give me some feedback, thanks.

Re @fengye87, just pinged in the containerd-dev slack. Hope this can be merged soon.

/retest

/retest

ping

Sorry for late reply. I checked that release plan about 1.4. It is in extended status which only received security patch.
@scuzhanglei
REF: https://github.com/containerd/containerd/blob/main/RELEASES.md#support-horizon


32 bit dlls used by python projects are shown with question mark

I built Pymol on a W7 system using mingw32 (msys2) where it worked OK.  Transferred it to a W10 64 bit system where it didn't work correctly (it is not drawing the molecule, everything else seems OK).  Tried to see if there were dlls missing with "dependencies" starting with __cmd.pyd and it shows all of those transferred with the package as missing, including libpython2.7.dll.  Demonstrated that that was not missing by starting the application with that renamed to hide_libpython2.7.dll, where it failed immediately, versus with the regular name, where it ran more or less normally.
Tried to run dependencies on the W7 32 bit system where it was built but the dependencies downloads were all 64 bit, so the binary wouldn't run.
Ran dependencies on python2.7.exe on the W10 system, which is used by __cmd.pyd, and that did find libpython2.7.dll and traced  into it.  (no question mark).
Ran dependencies on libpython2.7.dll on the W10 system, and that showed links to some of the other dll's not found originally (no question mark).
So, the issue seems to be that dependencies is missing or ignoring some path variable.  Tried adding a path to where these dll's live before starting dependencies:
set PATH=%PATH%C:\temp\blah\bin;
then starting dependencies, but it didn't help.
On the W10 system tried running dependencies on .../Numpy/core/_umath_tests.pyd and it was just like pymol - it couldn't find libpython2.7.dll.
It may be that the same thing would happen with 64 bit dlls built on the W10 system which were also referred to from *.pyd files.  That has not yet been tested.

Note - also tested some *pyd files from a PyMol "incentive" build (the package is open source but not public domain, the vendor also distributes binaries) and had the same problem as above - the linked dll's are not found by "dependencies" and show up with a question mark.  Since that incentive build works OK on the W10 64 bit system I believe it finds all of its dll's, so "dependencies" not doing so is a problem with "dependencies".

I don't know if it related to your issue, but I recently tracked a pretty freaky bug analyzing 64-bit binaries with a 32-bit build of Dependencies. Example with Python 64-bit :

python27.dll is not correctly recognized since wow64 applications wanting to access C:\Windows\system32 (where 64-bit system natives dlls are located) are redirected to C:\Windows\syswow64 (32-bit equivalents for natives dll), for retro-compatibility purposes. The issue here there is no python27.dll in the syswow64 folder.
The fix was to force direct access to the native filesystem. You can try it by downloading here https://ci.appveyor.com/project/lucasg/dependencies/build/1.7.200