remove year from copyright

Removed from few left over files

[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-telemetry-istiodremote_istio
1b531ae925576d4531444c6336602b860cee6419
link
true
/test integ-telemetry-istiodremote_istio

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 integ-telemetry-istiodremote_istio

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-multicluster_istio
1b531ae925576d4531444c6336602b860cee6419
link
true
/test integ-security-multicluster_istio

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 integ-security-multicluster_istio

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-multicluster_istio
1b531ae925576d4531444c6336602b860cee6419
link
true
/test integ-security-multicluster_istio

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 integ-security-multicluster_istio

/test integ-security-multicluster_istio

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-multicluster_istio
1b531ae925576d4531444c6336602b860cee6419
link
true
/test integ-security-multicluster_istio

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.

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-multicluster_istio
1b531ae925576d4531444c6336602b860cee6419
link
unknown
/test integ-security-multicluster_istio

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.

/retest

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security-multicluster_istio
1b531ae925576d4531444c6336602b860cee6419
link
true
/test integ-security-multicluster_istio

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 integ-security-multicluster_istio


ganglia not being disabled

I am using the line
extra_json = { "cfncluster" : { "cfn_scheduler_slots" : "cores", "ganglia_enabled" : "no" } }
when creating a new cfncluster with version 1.6.1
I still get this message in the creation, even though I've asked for ganglia to be disabled:
$ )cfncluster create test
Beginning cluster creation for cluster: test
Creating stack named: test
Status: test - CREATE_COMPLETE
ClusterUser: centos
MasterPrivateIP: <IP_ADDRESS>
GangliaPrivateURL: http://<IP_ADDRESS>/ganglia/

Seems to be a bug.

Thanks for reporting this.

Ganglia has been disabled by default in AWS ParallelCluster.


Fix Initial Focus

The initial/default focus didn't add the "focus" class to the element because $el of the FocusElement will be undefined in bind().

@bartsidee @twcapps ping

I don't remember anymore, the project where I used this has already been finished long ago.


Gitconfig for go private repos

[url "git@github.com:"]
insteadOf = https://github.com/

Fixed on 8a29a046


Spreads cannot spread generic extended from object

TypeScript Version: 2.5.0-dev.2017-07-27
Code
function foo<T extends object>(obj: T) {
    return {...obj};
}

Expected behavior:
No error
Actual behavior:
Error:(233, 13) TS2698:Spread types may only be created from object types.

#13557

Automatically closing this issue for housekeeping purposes. The issue labels indicate that it is unactionable at the moment or has already been addressed.


use 1Password for sensitive values and SSM for non-sensitive values

Would you mind also adding op.env to the .gitignore file?

This is my only blocking concern... the other comments are just questions or suggestions.

Would you mind also adding op.env to the .gitignore file?

This is my only blocking concern... the other comments are just questions or suggestions.

The .gitignore file has *.env. Did you specifically want op.env listed?

Would you mind also adding op.env to the .gitignore file?

This is my only blocking concern... the other comments are just questions or suggestions.

The .gitignore file has *.env. Did you specifically want op.env listed?

Oh, no. That's fine. I just wanted to make sure we were protected from accidentally commiting that op.env file. 👍


⚠ Bofrost.at has degraded performance

In c1ada90, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1952 ms

Resolved: Bofrost.at performance has improved in b7b1eb2.


Upgrade jest from 27 => 28

Related issue

#236

Features

[x] Upgrade to Jest 28
[x] Change code transform to use {code: ..} instead of string. Reference.
[x] Install jest-environment-jsdom since Jest 28 doesn't bundle it. Reference.
[x] Add a test:watch script

Full migration guide

https://jestjs.io/docs/upgrading-to-jest28

Great! Thank you so Much!


Refactoring of code with some Modifications

Describe briefly your feature.
Made a few refactoring changes in this final deliverable to make our code work better in terms of performance and added some modifications.

Good team effort to finish the job with required results.


Clean up image (stream) in external deploy test

When testing the external deploy, the image (stream) is not cleaned up after the test. This should be fixed. However it is not trivial to do so:

skopeo delete does not work (see https://github.com/containers/skopeo/issues/531)
Using oc assumes the test runs against OpenShift

This is a follow-up from #219.

Transferring as a consequence of https://github.com/opendevstack/ods-pipeline/pull/722.


Feature request: Add open buffer to oldfiles so that it behaves same as fzf.vim's History command

Info

Operating System: macOS 12.3.1
Shell: zsh 5.8
Terminal: iTerm2 3.5
nvim --version: NVIM v0.7.0
fzf --version: 0.30.0 (2093667)

Description
I used oldfiles command behaves differently from fzf.vim's History command. The difference is that oldfiles doesn't include currently opened buffers while History does. If it supports an option to include open buffers to simulate History command, I'd appreciate it.

It's already available as an option, just need to set that to true in your call to setup: https://github.com/ibhagwan/fzf-lua/blob/d4c050e1017ddccd372cce1dec4146558dbb7c1e/doc/fzf-lua.txt#L672


Call_constructor with initializer that takes arguments

If I try to use sol::call_constructor with an initializer that takes an argument I get “sol: no matching function call takes this number of arguments and the specified types".  There's a simple workaround that I used but I was just wondering whether that is supposed to work or not.

My bad: there was a slight bug in the implementation here. It's fixed now and we have a test for it. Re-pull the latest of get it from here again: https://github.com/ThePhD/sol2/releases/tag/v2.15.1


build(deps): bump react-native from 0.72.17 to 0.73.9 #WIP #DONOTMERGE

This PR resolves PHIRE-1181
Description
Bumps react-native version from 0.72.17 to 0.73.9
What changed:

Debugging improvements
Console Log history in Hermes
Updated debugging docs
Experimental New Debugger
Stable Symlink Support in Metro
Better Android 14 support
Java bump from 11 to 17
Gradle Bump from 7.4.x to 8.1.x

You can read more info on RN 73 official blogpost
Which Deps were bumped and why:

@braze/react-native-sdk: 5.2.0 ~> 8.4.0
@react-native-async-storage/async-storage: 1.19.3 ~> 1.19.8
@react-native-clipboard/clipboard: 1.7.0 ~> 1.14.1
react-native-code-push: 8.1.0 ~> 8.3.1
react-native-gesture-handler: 2.13.1 ~> 2.19.0
react-native-webview: 13.6.2 ~> 13.6.3

React Native 0.73 will depend on Android Gradle Plugin (AGP) 8.x. This will require all the libraries to specify a namespace in their build.gradle file. RN team added a compatibility layer for libraries that haven't specified a namespace, but please consider updating your libraries nonetheless.
Read more here
Patches:
Enhanced react native patch with .mock('../Libraries/Image/Image', () => mockComponent('../Libraries/Image/Image')) due to this issue.
DevExperience Before / After:
Metro is way faster when bundling the app (around ~2x faster)
Android builds have an insane boost that is mostly due to java 17 and gradle updates:
On emulator with cleared cache / deleted app:

Before
After

on emulator with cached build:

Before
After

Steps To Upgrade on your machine after this gets merged:
# Delete node modules and caches:
rm -rf node_modules && rm -rf .cache && rm -rf "$TMPDIR/metro*" && rm -rf "$TMPDIR/haste-map-*"

# install all the dependencies needed
yarn install:all

# you will most likely have to run also the following to bump hermes-engine:
cd ios && bundle exec pod update hermes-engine --no-repo-update & cd ..

Afterwards in order to bump JAVA:
For asdf users:
asdf install

For non-asdf users:
brew install --cask zulu@17

# Get path to where cask was installed to double-click installer
brew info --cask zulu@17

[!IMPORTANT]
For all (asdf/ non asdf users). After you install the JDK, update your JAVA_HOME environment variable in your .zshrc file. Afterwards run source ~/.zshrc to make it effective and restart your terminal.
If you used above steps, JDK will likely be at /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home.
You can try out in the terminal by typing $JAVA_HOME to make sure that it was updated properly.

PR Checklist

[ ] I have tested my changes on iOS and Android.
[x] I hid my changes behind a feature flag, or they don't need one.
[x] I have included screenshots or videos, or I have not changed the UI.
[x] I have added tests, or my changes don't require any.
[x] I added an app state migration, or my changes do not require one.
[ ] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

iOS user-facing changes

Android user-facing changes

Dev changes

bumps react-native to 0.73.9 - gkartalis

Need help with something? Have a look at our docs, or get in touch with us.

This PR contains the following changes:

Dev changes (bumps react-native to 0.73.9 - gkartalis)

  Generated by :no_entry_sign: dangerJS against 21b596ed069429947aa76b84d2d02a3e835a035c

Bumped braze to 8.4.0 in the end ~ moved the registration of the token to the JS side since I was getting build errors from a depracated method from setRegisteredPushToken tried some others and no luck thus I moved the token to the JS side.
Let me know if you have any concerns ~ but I Was thinking to open a separate PR for braze 🤷♂

FreshBetas:
android-8.51.0-1674645836
ios - 8.51.0 - 2<IP_ADDRESS>

Braze works! Received notifications in both android / ios betas above


fallback to Cargo.toml hisotry parsing when tag for a version doesn't exist

Closes #91

Looks like there are some tests that need to be fixed before we can merge this


Toast height changed after second in chorme

whenever i am using toast with this
iziToast.show({    title: 'Hey',    message: 'What would you like to add?'});
when toast open little large height
after second toast height normal as per showing website
please help
please below attachment screenshot
First toast open with little bit large size

after second toast goes normal size

Which browser, version, etc.
Have you tried the version of iziToast v1.1.3?

I tried ver 1.1.3  . still issue as it is
please help

Also tries ver 1.1.4 . still issue same

I need to know which version, which browser, etc ...
Because here it is normal and nobody complained about this problem.

I need to know which version, which browser, etc.
Because here it is normal and nobody reported this problem.

i did this after that it works well
.iziToast-capsule{
height:auto !important;
}


Text decoding being done too early.

https://github.com/tim-smart/multipasta/blob/451de6a06ee4b1d05b5b6903e84ce97b0a277a19/src/internal/headers.ts#L88
Text decoding should only be done when the whole buffer of key or value was available, so multi-byte character that being splitted into different chunks can be properly decoded.

Good catch, will take a look at your PR when I have some time.

Actually this is ok, as header names (not values) can only contain A-Z, a-z, 0–9, hyphen ( - ), or underscore ( _ )

Yeah, I didn't read the spec seriously, but for key decoding it has been ensured at the first time that each byte must be a 7bit ASCII at the first time. For only value decoding it should be done in this way.


Create a better UX for experimental charts in the Apps and Marketplace - opt-in to experimental charts

Currently, there are two UX issues when it comes to experimental charts:

if the latest version of a chart is marked as experimental there is no ability in the UI to filter out experimental chart versions to show the latest version that is not marked as experimental.

If a chart has an experimental version, once selecting the chart to install you no longer see the experimental tag

Solutions:
UX Issue #1
Adding this feature would allow us to create an opt-in experience for displaying experimental charts where the user has to check a box stating something along the lines of "Show experimental charts". All of the charts shown when this box is not checked would be considered as "stable" charts.
This also provides far more flexibility on the rancher/charts side of the house as we can publish an experimental chart and a customer who has not opted-in to experimental charts would not have their UX change.
An example use-case for this is the vsphere-csi charts. We are working to bring in the newly added upstream support for Windows in the csi node daemonset via a new experimental version of the vsphere-csi chart. We want to make this chart available to rke2 windows customers on 2.6.4 but if the changes were merged today, the experimental chart would show as the latest/default chart for all customers when 2.6.4 is released. This is not the overall customer experience that we want to deliver on the GA release.
With this feature, the rke2 windows customers in the use-case would be able to opt-in to the experimental charts and install the vsphere-csi chart when 2.6.4 is released.
UX Issue #2
If a chart has a mix of non-experimental and experimental versions or only has experimental versions, we should show experimental next to the version of the chart. This is the same concept as charts showing (linux-only) when selecting a chart version. The sriov chart only has experimental versions and as you can see below, the versions are not marked as experimental once you click the sriov chart card to install it.

@rosskirkpat Which charts are experimental? is vsphere-csi charts the only one?


EJoshuaS - Stand with Ukraine: Watch kenyt.ai

EJoshuaS - Stand with Ukraine requests the watch of the watch_keyword kenyt\.ai. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

kenyt\.ai has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Approved by Jeff Schaller in Charcoal HQ


Fails to start with error flag "client-secret-file" does not exist

After upgrading the docker image this morning my otherwise working instance fails to start with the error: flag "client-secret-file" does not exist
Seems this is related to #341 and #355
2020/02/15 16:00:33 ERROR: flag "client-secret-file" does not exist
panic: ERROR: flag "client-secret-file" does not exist

goroutine 1 [running]:
log.Panicf(0xb6d3da, 0x1d, 0xc000233cc8, 0x1, 0x1)
/usr/local/go/src/log/log.go:345 +0xc0
github.com/mreiferson/go-options.Resolve(0xa74860, 0xc0000d7600, 0xc0000a5200, 0xc0000f74d0)
/go/pkg/mod/github.com/mreiferson/go-options@v0.0.0-20190302064952-20ba7d382d05/options.go:73 +0xb7b
main.main()
/go/src/github.com/pusher/oauth2_proxy/main.go:159 +0x1e13

Expected Behavior
The lack of this config option shouldn't cause a complete failure to start.
Steps to Reproduce (for bugs)

Don't configure  the 'client-secret-file' flag.
Start oauth2
Fails to start

Your Environment
Docker image on unRaid OS.

Version used: latest docker image

This is a programming error, when #355 was implemented, it should have included a flag in the main file like this https://github.com/pusher/oauth2_proxy/blob/2033ce81c3a96e75eb73e92af648ea6ed5c02a6f/main.go#L72
@pasha-r or anyone else, do you have time to create a PR to fix this missing flag registration?

My Oauth2 proxy is not working now with the same error - Please help on this, what should we do now?

I was trying something else and restarted my oauth proxy and it stopped working with the same error - My application is stopped working now - Please suggest on this.
Can I use the prev image to deploy my oauth2 proxy?

@dmahisingh

I was trying something else and restarted my oauth proxy and it stopped working with the same error - My application is stopped working now - Please suggest on this.
Can I use the prev image to deploy my oauth2 proxy?

Just use the previous release:
quay.io/pusher/oauth2_proxy:v4.1.0 instead of latest

Please use the latest release v5.0.0 until this is resolved. There is an important security fix that was released with this version and using anything older will leave that vulnerability exposed


struct.error: ushort format requires 0 <= number <= (32767 *2 +1)

I'm seeing this error on wandb.init
(main) ÷19-06-28 09:14:41|ttys010|trippings-mbp-3|~/git0/mindscribe-question-ai\÷ python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import wandb
>>> wandb.init(project='moonscrub')
wandb: Started W&B process version 0.8.3 with PID 33316
wandb: Local directory: wandb/run-20190628_161454-0ti1q1zb
wandb: Syncing run easy-lion-3: https://app.wandb.ai/yaroslavvb/moonscrub/runs/0ti1q1zb
wandb: Run `wandb off` to turn off syncing.
Traceback (most recent call last):
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/internal_cli.py", line 105, in <module>
    main()
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/internal_cli.py", line 97, in main
    headless(args)
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/internal_cli.py", line 53, in headless
    util.sentry_reraise(e)
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/util.py", line 88, in sentry_reraise
    six.reraise(type(exc), exc, sys.exc_info()[2])
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/six.py", line 693, in reraise
    raise value
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/internal_cli.py", line 51, in headless
    user_process_pid, stdout_master_fd, stderr_master_fd)
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/run_manager.py", line 1053, in wrap_existing_process
    io_wrap.SIGWINCH_HANDLER.add_fd(stdout_read_fd)
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/io_wrap.py", line 118, in add_fd
    self._set_win_sizes()
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/io_wrap.py", line 138, in _set_win_sizes
    win_size = struct.pack("HHHH", rows, cols, xpix, ypix)
struct.error: ushort format requires 0 <= number <= (32767 *2 +1)

Here are offending values
> /Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/io_wrap.py(139)_set_win_sizes()
-> win_size = struct.pack("HHHH", rows, cols, xpix, ypix)
(Pdb) p rows
36
(Pdb) p cols
80
(Pdb) p xpix
-15360
(Pdb) p ypix
1542

This seems to be backend problem, I haven't upgraded any packages recently

Is this on Mac OS?  Is this in the stock terminal app?

This is on Mac Emacs, used through shell mode https://www.gnu.org/software/emacs/manual/html_node/emacs/Shell-Mode.html
I'm also filing this bug from Emacs (jk)

Hey @yaroslav #408 should fix the issue.  If you can try installing this branch and confirming that would be helpful.  We’ll cut a new release this week.

Hard to reproduce, but from http://man7.org/linux/man-pages/man2/ioctl_tty.2.html this seems like correct fix

Seeing this again
The relevant values
(Pdb) p fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, '\0' * 8)
b'%\x00P\x00\x00\xc4\x06\x06'
(Pdb) p array.array('h', win_size)
array('h', [37, 80, -15360, 1542])

Maybe the code should just check for exception and fallback to default window size
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/run_manager.py", line 1053, in wrap_existing_process
    io_wrap.SIGWINCH_HANDLER.add_fd(stdout_read_fd)
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/io_wrap.py", line 118, in add_fd
    self._set_win_sizes()
  File "/Users/yaroslavvb/anaconda3/envs/main/lib/python3.6/site-packages/wandb/io_wrap.py", line 140, in _set_win_sizes
    win_size = struct.pack("HHHH", rows, cols, xpix, ypix)
struct.error: ushort format requires 0 <= number <= (32767 *2 +1)
wandb: ERROR W&B process (PID 85223) did not respond
wandb crash with W&B process failed to launch, see: wandb/debug.log

Looking at relevant values:

Hi Yaroslav,
Are you sure you've upgraded your W&B package? That value unpacks successfully for me with the new code:
import struct
win_size = b'%\x00P\x00\x00\xc4\x06\x06'
struct.unpack('HHHH', win_size)
(37, 80, 50176, 1542)

The values look strange/impossible but there at least isn't an exception.

Yeah, weird.  We'll catch the error in the next release.  Do you have a sense for what the best default values would be?

I don’t think it will throw an error the way it is right now. If I’m
missing something, I think it would be good to understand what is going on
rather than handling an exception that we don’t understand.
There are a couple of default values in there already: 25x80, the
“standard” terminal size.
On Tue, Aug 13, 2019 at 6:37 PM Chris Van Pelt<EMAIL_ADDRESS>wrote:

Yeah, weird. We'll catch the error in the next release. Do you have a
sense for what the best default values would be?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/wandb/client/issues/401?email_source=notifications&email_token=AAAQJPZUZMXZSVHBD6NRKMTQENOVDA5CNFSM4H4GX332YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4HOGOQ#issuecomment-521069370,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAQJP4B467M6LRK3G3IOHLQENOVDANCNFSM4H4GX33Q
.

sorry for noise, that was indeed issue with old version of wandb
the new version unapcks it to following values
(37, 80, 50176, 1542)


bulk export of static meshes issue

latest app/commit: when using GUI to bulk export static meshes, I get random errors, usually texture related
e.g.
<- appFree <- TryExecuteInThread: ExportTexture <- Materials <- ExportCommonMeshData <- ExportStaticMeshLod <- Lod: 0 <- ExportObject: StaticMesh4'2hand_axe' <- ExportObjects <- ExportPackages <- CUmodelApp::ShowPackageUI <- Main: umodel_build=1538 <- WriteTGA <- TryExecuteInThread: ExportTexture
commit b520a47 (Jun 24, 2020): when using GUI to bulk export static meshes, no errors, but significantly slower
for testing I used Portal Defect (4.25) but it fails with other projects as well. In both cases the process is as follows:
start the app in GUI.
Point to the PAK folder
select 4.25 for game detection
change to flat view
Tools/scan content
sort by size and static mesh
bulk select all the static meshes ( nothing else)
click the export button
wait
latest app/commit: eventually errors out randomly
commit b520a47 (Jun 24, 2020): completed successfully, just slower

I can't reproduce any issue. This doesn't mean that there's no any, but this mean - I can't find and fix the problem.
Is there any crash message in a log? E.g. some "first crash", followed by 2nd one, with texture exporter code?
BTW what CPU you have? How many cores are there?

Yes, -nomt fix my issue! :-)
Did not see your edit, so I went through a lot of manual trial and error, see below details. You can close this or put on the back burner...
Thanks!
===============================================================
last commit without my issue present
37c91dc commit on Jul 6, 2020
cannot test my issue
error introduced FPakVFS::LoadPakIndexLegacy <- FPakVFS::ReadDirectory:PakVer=9.0 <- RegisterGameFile:d:\Games\PortalDefect\TimeSplit\Content\Paks\/pakchunk2008-WindowsNoEditor.pak <- ScanGameDirectory <- appSetRootDirectory:dir=d:\Games\PortalDefect\TimeSplit\Content\Paks\ <- Main:umodel_build=(unversioned)
first commit with error FPakVFS::LoadPakIndexLegacy
a1a880a commit on Jul 6, 2020
last commit with error FPakVFS::LoadPakIndexLegacy
b0e9499 commit on Jul 15, 2020
can test my issue again
error fixed FPakVFS::LoadPakIndexLegacy
cbdc699 commit on Jul 15, 2020 FArray::GrowArray: fixed error
my issue present in cbdc699 commit on Jul 15, 2020
Exception in thread 12280: *** ERROR: Out of memory: failed to allocate 67108864 bytes appMalloc:size=67108864 (total=2308 Mbytes) <- CTextureData::Decompress:fmt=PF_DXT1(5) Exporting Texture2D Material__5_Metallic to f:/Work/Github/UEViewer/UmodelExport/Game/TimeLoop/Weapons/Weapon_Meshes/2hander/DecoAxe/Material__5_Metallic.tga
Without hard proof, because unfortunately I cannot test it due to the FPakVFS error, I would say that the most likely culprit for my particular case/issue is commit da0aae3 on Jul 15, 2020 Multithreaded texture export
Processor	AMD Ryzen 9 3900X 12-Core Processor               3.80 GHz
Installed RAM	64.0 GB
System type	64-bit operating system, x64-based processor

Edition	Windows 10 Pro
Version	20H2
OS build	19042.928
Experience	Windows Feature Experience Pack 120.2212.551.0

Can you make a 64-bit build and test with multithreading again? I think that might be export of N textures at the same time, with multiple threads, might cause "out of memory" error as it grabs the whole 3Gb 32-bit space?
I definitely should make error reporting for multiple threads stable, currently it mixes messages from multiple threads and produces garbage.

yep, 64 bit build fixed the issue. user error!  I didn't realize that running export with multiple threads may cause out of memory issue, so I definitely must fix it in some way.

absolutely, you are correct, this issue should be addressed for the public application. I was referring to me as a programmer (at least as a wannabe one), I should have thought about the 2 GB memory limitation of the 32bit app. I closed this because  I'm using the repository and I can choose 64bit when compiling in Visual Studio, so my specific issue is fixed, it was an amateur error :)
which reminds me to ask: is there any reason for the app not to be 64bit by default?

Just a quick answer to your question:
https://twitter.com/UGildor/status/1321431262838607877


FATAL: Error verifying developer key: Failed to create input stream: Connection timed out (Read failed)

I am trying to integrate Jenkins with TestLink. Both of them are on separate machines.
Referred following links to integrate it and a pdf with all steps:
https://wiki.jenkins.io/display/JENKINS/TestLink+Plugin
When I try to run the job in Jenkins, I get following error:
Preparing TestLink client API.
Using TestLink URL: http://IP_Address:Port/TestLink_1.9.19/lib/api/xmlrpc/v1/xmlrpc.php
FATAL: Error verifying developer key: Failed to create input stream: Connection timed out (Read failed)
br.eti.kinoshita.testlinkjavaapi.util.TestLinkAPIException: Error verifying developer key: Failed to create input stream: Connection timed out (Read failed)
at br.eti.kinoshita.testlinkjavaapi.MiscService.checkDevKey(MiscService.java:64)
at br.eti.kinoshita.testlinkjavaapi.TestLinkAPI.(TestLinkAPI.java:149)
at hudson.plugins.testlink.TestLinkBuilder.getTestLinkSite(TestLinkBuilder.java:331)
at hudson.plugins.testlink.TestLinkBuilder.perform(TestLinkBuilder.java:206)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1810)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Caused by: org.apache.xmlrpc.XmlRpcException: Failed to create input stream: Connection timed out (Read failed)
at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.getInputStream(XmlRpcSunHttpTransport.java:99)
at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:152)
at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143)
at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69)
at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:158)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:147)
at br.eti.kinoshita.testlinkjavaapi.BaseService.executeXmlRpcCall(BaseService.java:83)
at br.eti.kinoshita.testlinkjavaapi.MiscService.checkDevKey(MiscService.java:61)
... 12 more
Caused by: java.net.SocketException: Connection timed out (Read failed)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:706)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.getInputStream(XmlRpcSunHttpTransport.java:92)
... 21 more
ERROR: Error communicating with TestLink. Check your TestLink configuration.
Finished: FAILURE
TestLink version: 1.9.19
TestLink plugin version: 3.16
What is going wrong? Please help!

Hi @RuchiDhore ,

Connection timed out

This could be a connectivity issue. Check IP, port, HTTP vs. HTTPS, etc.

If I access this address in browser: http://IP_Address:Port/TestLink_1.9.19/lib/api/xmlrpc/v1, I am able to see all files under v1 directory. Tried changing http to https, in that I dont get any error however build fails..

If I access this address in browser: http://IP_Address:Port/TestLink_1.9.19/lib/api/xmlrpc/v1, I am able to see all files under v1 directory.

Just to make sure. You are testing that URL from the same host where Jenkins is running?
Also take a look at similar issues reported before. I remember some of them had good pointers about what could be causing this issue in your environment: https://github.com/kinow/testlink-java-api/issues?utf8=✓&q=developer+key

I was able to connect through API and code when I changed the link to http://IP_Address:Port/testlink/lib/api/xmlrpc/v1/xmlrpc.php
There seems to be some network issue on Jenkins
Thanks!


Macos2async

Changes from (ongoing) MacOS testing.

I think this is all okay - but it feels somewhat odd, to pass objects a shared_ptr to themselves. If it can't be simplified, a few comments would really help to make it clearer what's going on!
One nitpick - consistancy with the whole this->membervariable thing. Sometimes you miss the this.


As a user, I want to view chosen PDF file(s)

2022-11-07 16:30 - 20:15
Researched GitHub tried pushing clean install of pdfjs prebuilt, failed, asked for help, Dino Fixed it.


Enable cross-region replication on production Asset Manager S3 bucket

The changes in this PR enable cross-region replication on the main S3 bucket currently used by the Asset Manager app.
The motivation behind this is to (eventually) replace the nightly cron job which uses Duplicity to backup the Asset Manager files from NFS to one of the off-site backup S3 buckets. This will be a step towards being able to decommission NFS, or at least the Asset Manager bit of it.
Note that he changes in this PR are intended to be applied after the changes in the preparatory PR. The changes in this PR are all in the final commit with subject line: "Enable replication on Asset Manager S3 bucket in production". I plan to rebase this branch against master after the preparatory PR has been merged. I had to split the changes into two PRs, because there was an ordering problem with switching on versioning on the main bucket and enabling replication.
Note also that these changes are closely based on the S3 cross-region replication example in the Terraform documentation.
See alphagov/asset-manager#146 for more details.
I tested the changes in this PR in a non-GDS AWS account as follows:

Created an AWS IAM user, jm-govuk-terraform-provisioning in Admin group, i.e. with AdministratorAccess policy.
Created an AWS S3 bucket with name jm-govuk-terraform-state-integration to store Terraform state for the integration environment.
Created an AWS S3 bucket with name jm-govuk-terraform-state-production to store Terraform state for production environment.
Exported the following environment variables:

AWS_ACCESS_KEY_ID=<redacted>
AWS_SECRET_ACCESS_KEY=<redacted>

TERRAFORM_STATE_S3_BUCKET_REGION=eu-west-2
TERRAFORM_STATE_S3_BUCKET_NAME_PREFIX=jm-govuk-terraform-state

TF_VAR_account_id=jm-govuk-terraform-provisioning
TF_VAR_bucket_name=jm-govuk-assets

Production environment
Re-created existing state from master branch
$ git rev-parse HEAD
41f659b609dae91e4f2f597f8563c1333c772da9

$ PROJECT_NAME=asset-manager DEPLOY_ENV=production rake apply
Initialized blank state with remote state enabled!
 Resources: 4 added, 0 changed, 0 destroyed.

Applied preparatory changes
$ git co prepare-to-enable-cross-region-replication-on-production-asset-manager-s3-bucket
Switched to branch 'prepare-to-enable-cross-region-replication-on-production-asset-manager-s3-bucket'

$ PROJECT_NAME=asset-manager DEPLOY_ENV=production rake apply
Initialized blank state with remote state enabled!
Remote state configured and pulled.
terraform apply -var-file=variables/production.tfvars /var/folders/h8/mjfyg9z90xsbtfq7jd8j62bw0000gn/T/tf-temp20171023-81001-1rahwu7
aws_s3_bucket.asset-manager: Refreshing state... (ID: jm-govuk-assets-production)
aws_iam_user.asset-manager: Refreshing state... (ID: jm-govuk-assets-production-user)
data.aws_iam_policy_document.asset-manager: Refreshing state...
aws_iam_policy.asset-manager: Refreshing state... (ID: arn:aws:iam::699110273029:policy/asset-manager-user-iam-policy)
aws_iam_policy_attachment.asset-manager: Refreshing state...  Resources: 4 added, 1 changed, 0 destroyed.

Applied changes from this PR
$ git co enable-cross-region-replication-on-production-asset-manager-s3-bucket
Switched to branch 'enable-cross-region-replication-on-production-asset-manager-s3-bucket'

$ PROJECT_NAME=asset-manager DEPLOY_ENV=production rake apply
Initialized blank state with remote state enabled!
Remote state configured and pulled.
terraform apply -var-file=variables/production.tfvars /var/folders/h8/mjfyg9z90xsbtfq7jd8j62bw0000gn/T/tf-temp20171023-82125-y8f15f
aws_iam_policy.asset-manager-backup: Refreshing state... (ID: arn:aws:iam::699110273029:policy/asset-manager-backup-iam-policy)
aws_iam_role.asset-manager-backup: Refreshing state... (ID: asset-manager-backup-iam-role)
aws_iam_user.asset-manager: Refreshing state... (ID: jm-govuk-assets-production-user)
aws_s3_bucket.asset-manager-backup: Refreshing state... (ID: jm-govuk-assets-backup-production)
data.aws_iam_policy_document.asset-manager: Refreshing state...
aws_iam_policy.asset-manager: Refreshing state... (ID: arn:aws:iam::699110273029:policy/asset-manager-user-iam-policy)
aws_iam_policy_attachment.asset-manager-backup: Refreshing state... (ID: asset-manager-backup-iam-policy-attachment)
aws_iam_policy_attachment.asset-manager: Refreshing state... (ID: asset-manager-user-iam-policy-attachment)
aws_s3_bucket.asset-manager: Refreshing state... (ID: jm-govuk-assets-production)
aws_s3_bucket.asset-manager: Modifying...
  replication_configuration.#:                                                       "0" => "1"
  replication_configuration.0.role:                                                  "" => "arn:aws:iam::699110273029:role/asset-manager-backup-iam-role"
  replication_configuration.0.rules.#:                                               "0" => "1"
  replication_configuration.0.rules.2448157392.destination.#:                        "0" => "1"
  replication_configuration.0.rules.2448157392.destination.2946003106.bucket:        "" => "arn:aws:s3:::jm-govuk-assets-backup-production"
  replication_configuration.0.rules.2448157392.destination.2946003106.storage_class: "" => "STANDARD"
  replication_configuration.0.rules.2448157392.id:                                   "" => "asset-manager-backup-replication-rule"
  replication_configuration.0.rules.2448157392.prefix:                               "" => ""
  replication_configuration.0.rules.2448157392.status:                               "" => "Enabled"
aws_s3_bucket.asset-manager: Modifications complete

Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Manual checks
At this point I used the AWS console to confirm that the changes had all taken effect as expected and when I uploaded a file to the main S3 bucket, it was automatically replicated to the backup S3 bucket.
Integration environment
Re-created existing state from master branch
$ git co master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

$ PROJECT_NAME=asset-manager DEPLOY_ENV=integration rake apply
Initialized blank state with remote state enabled!
 Resources: 4 added, 0 changed, 0 destroyed.

Applied preparatory changes
Expected to be a no-op
$ git co prepare-to-enable-cross-region-replication-on-production-asset-manager-s3-bucket
Switched to branch 'prepare-to-enable-cross-region-replication-on-production-asset-manager-s3-bucket'

$ PROJECT_NAME=asset-manager DEPLOY_ENV=integration rake apply
Initialized blank state with remote state enabled!
Remote state configured and pulled.
terraform apply -var-file=variables/integration.tfvars /var/folders/h8/mjfyg9z90xsbtfq7jd8j62bw0000gn/T/tf-temp20171023-83610-k1z8if
aws_s3_bucket.asset-manager: Refreshing state... (ID: jm-govuk-assets-integration)
aws_iam_user.asset-manager: Refreshing state... (ID: jm-govuk-assets-integration-user)
data.aws_iam_policy_document.asset-manager: Refreshing state...
aws_iam_policy.asset-manager: Refreshing state... (ID: arn:aws:iam::699110273029:policy/asset-manager-user-iam-policy)
aws_iam_policy_attachment.asset-manager: Refreshing state... (ID: asset-manager-user-iam-policy-attachment)

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Applied changes from this PR
Expected to be a no-op
$ git co enable-cross-region-replication-on-production-asset-manager-s3-bucket
Switched to branch 'enable-cross-region-replication-on-production-asset-manager-s3-bucket'

$ PROJECT_NAME=asset-manager DEPLOY_ENV=integration rake apply
Initialized blank state with remote state enabled!
Remote state configured and pulled.
terraform apply -var-file=variables/integration.tfvars /var/folders/h8/mjfyg9z90xsbtfq7jd8j62bw0000gn/T/tf-temp20171023-84359-l09g8j
aws_iam_user.asset-manager: Refreshing state... (ID: jm-govuk-assets-integration-user)
aws_s3_bucket.asset-manager: Refreshing state... (ID: jm-govuk-assets-integration)
data.aws_iam_policy_document.asset-manager: Refreshing state...
aws_iam_policy.asset-manager: Refreshing state... (ID: arn:aws:iam::699110273029:policy/asset-manager-user-iam-policy)
aws_iam_policy_attachment.asset-manager: Refreshing state... (ID: asset-manager-user-iam-policy-attachment)

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Manual checks
At this point I used the AWS console to confirm that no changes had been applied to the AWS resources, e.g. there was no backup S3 bucket and neither versioning nor replication was enabled on the main S3 bucket.

@surminus Has applied the changes in #140 to integration, staging & production, so I'm happy that we can now merge this PR.

@surminus Has just generated a "plan" against integration (no-op as expected) and production (1 change; enable replication on govuk-assets-backup-production as expected).

@surminus Has just applied the changes from this PR against integration (no-op as expected), staging (no-op as expected) and production (1 change; enable replication on govuk-assets-backup-production as expected).


[Feature] Tire pressure state color

Short summary
Add Color to tire pressur
Detailed description
Hi,
I have a sensor for my car that provides a color (green for OK, yellow for warning, and red for critical). The sensor is sensor.2025_chevrolet_equinox_ev_tire_pressure_right_rear_message (state = GREEN).
Would it be possible to use this sensor to set the font color of the tire pressure card (for each tire)?
Examples 🖼
No response
Additional context 🗒
No response

Hi @thib5, yes, it's possible. I will add additional color template options for each pressure state 👍

@thib5 update 🎉
I added this feature to the card, did you mean something like this?
I'll test a few more things and I can release a beta version with this enhancement.


Beejones/add unit tests

Problem:
Updating unit tests to get closer to 100% line coverage.
Update default resolver to the beta ION endpoint.
Solution:
Update default resolver to the beta ION endpoint.
Validation:
New unit tests
Type of change:

[ ] Feature work
[ ] Bug fix
[ ] Documentation
[x] Engineering change
[ ] Test
[ ] Logging/Telemetry

Risk:

[ ] High – Errors could cause MAJOR regression of many scenarios. (Example: new large features or high level infrastructure changes)
[ ] Medium – Errors could cause regression of 1 or more scenarios. (Example: somewhat complex bug fixes, small new features)
[x] Small – No issues are expected. (Example: Very small bug fixes, string changes, or configuration settings changes)

Merging because:

This is basically only about unit tests added
Fixing the LongForm failing unit tests
Need to work on error reporting. This will impact heavily this merge


Add item to AttackTactic enum

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

@sagamzu This is a breaking change for java/c# SDK. Since it's preview version, I'm fine with it. I invited ARM team to have a quick review.


drivers: led: Microchip XEC LED driver using BBLED controller

Implement a LED driver for Microchip XEC using the breathing, blinking LED controller. The driver supports LED on, off, and
blink API's.

Hi @jvasanth1. Thanks for this driver. I'll review it this week-end.

LGTM
@jvasanth1 looks like maybe there are some .yaml files needed to be update for CI @nashif any pointer here?

@carlescufi Please merge!


Incompatibility with BCLib (library mod for BetterNether & others)

BCLib is a library mod required by BetterNether, BetterEnd, and EdenRing. When it is installed alongside Better Enchantment Boosting, the game fails to launch.

Minecraft 1.18.1
Fabric 0.12.12
Fabric API 0.46.1
BCLib 1.2.5
Better Enchantment Boosting 1.0.0

The game window never opens, and no crash report is generated. The launcher opens a popup reading: An unexpected issue occurred and the game has crashed. We're sorry for the inconvenience. Exit Code: 0.
Log file: latest.log
I've also reported this issue on the BCLib repo as issue #82.

This is because I had to rip out Mojang's code for bookshelf searching and replace it with my own as their original search algorithm would tank performance for larger areas. BCLib needs to fix this on their end by not loading their mixin when mine is present and then registering their bookshelves with Better Enchantment Boosting.

I've looked into it and it should be possible to fix it on my end.

This is fixed in the latest release.


kernel: SMP scheduling: edge case with pinned threads

Describe the bug
SMP systems (with IPI support) that make use of pinned threads may fail to schedule the highest priority thread that is ready to run.
The last CPU in a SMP system to service an IPI and switch its thread out in favour of a higher priority thread pinned to that CPU can result in that switched-out thread not getting scheduled anywhere until another schedule point is reached.
To Reproduce
Imagine a system with 2 CPUs. In this system there are the following four threads to consider.
T1 - executing on CPU0, not pinned, has priority 10
T2 - execution on CPU1, not pinned, has priority 15
T3 - pended, pinned to CPU0, has priority 5
T4 - pended, not pinned, has priority 12
Some event happens and CPU1 unpends both T3 and T4 and makes them executable at the same time. Since threads were made ready, flag_ipi() is called and the pending_ipi flag is set. CPU1 hits its reschedule point to switch out T2 for T4 and issues a call to signal_pending_ipi().  This will clear the pending_ipi flag and trigger the IPI. CPU0 will get the IPI and hit a reschedule point. It is at this point that CPU0 will switch out T1 for T3. At this stage of events, we now have ...
Final Summary
T1 - priority 10, ready but not executing anywhere
T2 - priority 15, ready but not executing anywhere
T3 - priority 5, ready and executing on CPU0
T4 - priority 12, ready and executing on CPU1
Expected behavior
Based on the Final Summary shown above, since T1 is of a higher priority than T4 (10 vs 12), it is expected that T1 would be executing on CPU1 and not T4.
A clear and concise description of what you expected to happen.
Impact
It is recognised that although T1 will eventually get scheduled when CPU1 reaches its next scheduling point, we can not know when that will be. It might be in a few hundred microseconds, or it could be seconds later, or even never. Until that happens, we essentially have a type of priority inversion on T1. In a system with a tickless kernel, this could be a long long time.
Fortunately, this inversion can only apply to systems that pin threads to execute on a subset of the CPUs in the system.
Additional context
I think that in general, if the CPUs that are switching our for pinned threads are not the first ones doing so, then we can encounter this issue.
** Possible Solution **
If a thread in an SMP is being switched out for a pinned or CPU restricted thread, then we could signal another IPI to the other non-restricted CPUs. Although this may lead to more interrupts and ISRs (which would have a performance impact), we would know that this type of priority inversion would be kept to a minimum.

@peter-mitsis @andyross Please evaluate and assign a priority to this issue.

It is at this point that CPU0 will switch out T1 for T3.

Which modifies  the run queue, which will trigger another IPI, right?  I'm pretty sure we get this right already?  Is there an existence proof of the bug?

Which modifies the run queue, which will trigger another IPI, right?

I may be mistaken, but I suspect that you are referring to the call z_requeue_current() from within do_swap(). That routine does indeed call signal_pending_ipi(), however signal_pending_ipi() will only call arch_sched_ipi() if pending_ipi is true, and it is only set to true in flag_ipi().
The routine flag_ipi() is called from a few places, but I think that the only relevant place in this scenario is ready_thread() (which is called by z_ready_thread()).  As you know, z_ready_thread() can get invoked when unblocking a thread from one of our kernel objects.  In the scenario I described, when CPU0 switches out T1 for T3, the pending_ipi flag is currently false because the original call to arch_sched_ipi() on another CPU cleared it and nothing has happened since to set it again.

I'm pretty sure we get this right already?

As long as the threads involved do not have any restrictions as to which CPU they may run on, everything is correct and it works. The problem only rears its head in SMP when a system has a thread that is not allowed to run on one or more CPUs. This is because a CPU no longer picks the highest priority ready thread, but rather the highest priority ready thread that it is allowed to run.

Is there an existence proof of the bug?

I did create a test project to force this scenario, and I am confident that I succeeded. However, due to its strict need to control for scheduling points it came out somewhat harder to follow and I need to clean it up (and hopefully simplify it) before I post it here.

I am uploading a zip file that contains a test case to reproduce the failure.
smp_ipi_test.zip
Build it using ...
cd <test directory>
west build -p -b qemu_x86_64 ./ -t run

When it fails, you should observe something like ...
*** Booting Zephyr OS build v3.6.0-rc2-94-g865128fff59f ***
T3 switched in!.

To make it pass, edit the source file and remove/comment the following line ...
#define FORCE_FAILURE
Rebuild, and the output when it passes will look something like ...
*** Booting Zephyr OS build v3.6.0-rc2-94-g865128fff59f ***
This message should not appear!
T3 switched in!.
134.121.X4Y31
T1 - This message should show!

Oh... I think I see what you're saying.   FWIW I don't think this really has anything to do with cpu_mask except as an exerciser strategy.  It's a race/misfeature with the way we do preemption:

When a CPU preempts one runnable thread with another, it does not signal an IPI synchronously, by design.[1]
If the preempted thread happens to be higher priority than the running thread on another CPU, that means that instantaneously it will not run right away, even though it's higher priority.

It's true that #2 is unlikely to happen under typical scheduling, because the preempting thread will likely have preempted whatever CPU it was made runnable on, which (by construction) is running a lower priority thread than ours.  But you can also make it runnable from an interrupt, and see this effect too.
I'm... frankly not sure this is a bug we want to fix.  The situation corrects itself the very next time an IPI is signaled for any reason,  or when the CPU running the "wrong" thread gets an interrupt for any reason, or if its current thread hits a scheduling point for any reason.  I think that's largely acceptable: single CPU apps simply can't preempt except in those circumstances anyway (stated diferently: we're demanding SMP add behavior to fix a bug that all single-core apps need to deal with anyway)
The fix, if we really want it, would be to synchronously IPI every time we preempt on an SMP system, and that's extremely expensive.
[1] The assumption being that whatever IPI needed to happen already did when the run queue was modified making us preemptible.  But that IPI might have already been handled by the time we get to the context switch.

To clarify: you should be able to make this happen more simply (on a 2-CPU system in this context):

Start "low priority" thread
Start "medium priority" thread to run on the second CPU
Enter an ISR that preempts the medium priority thread (irq_offload, whatever)
In the ISR, start a high priority thread
Verify that the low priority thread is still running even though medium "should" have migrated and preempted it.

Again though, the fix will hurt more than the problem.  If we do this, let's for sure gate it behind an default-n kconfig.

Thanks for the insights. If this goes forward, I definitely see the value of having this as a Kconfig option whose default is 'n'. On that note, one idea I have been exploring to help with the cost of IPI cascades and IPIs in general is to target the IPIs only to relevant CPUs. If I am following things correctly, any time a thread is made available to run, we broadcast an IPI to all CPUs. As a result, each CPU has to go through the scheduler--even if to determine that it does not need to schedule in a new thread.
If we can target the IPIs to CPUs that are executing a lower priority thread, then that ought to give us some performance benefit.

Now that the IPI delivery optimization has been merged, I am going to finish tackling this issue.


Use arrays in weird ways and make sure C backend generates correct code.

Examples:

[ ] Pointers to arrays
[ ] Multidimensional arrays

If issues are found code generation should also be cleaned accordingly.

People started using the C backend. Any issues found should just be regular tickets moving forward.


DSC meta configuration

Summary of the new feature / enhancement

As a user, I want to define default behaviors/options for dsc so that I don't need to pass the options to every invocation or define a function to do so for me.

Right now, there's no persistent way for a user to control how dsc behaves except for the DSC_RESOURCE_PATH environmental variable. Users may want to set the default output format for DSC to pretty-json, or only use manifests that have been signed, or disable specific providers (see #274).
As the options for how dsc should behave expand, these needs will compound - consider the WhatIf scenario, whether to pre-check for permissions, etc.
Proposed technical implementation details (optional)
I haven't done much research on the available options for rust applications, but in an ideal world, we could borrow (a subset of) the functionality that viper has, supporting layered overrides, where each item in the following list takes precedence over the item below it:

Explicitly defined flag option, like --format
Environment variable value, like DSC_FORMAT
Configuration file key value, like format
Lookup from a key-value store, like consul or etcd (I think this is out of scope, included for completeness)
Defined defaults in the code

Even if we only supported flags and environment variables, I think we'd have a more manageable UX. We could implement the configuration file handling later, if ever. With support for using environment variables as default options, users could use .env files as lightweight configuration, or set the variables in their CI jobs, or whatever makes sense for their context.

My vote is for a json configuration file sitting next to dsc.exe, similar to what PowerShell is using - it's proven to be a good solution and easy to implement from dev perspective.
We can even have a DSC resource to read/modify it, so that it won't require manual editing.

I'm fine with either/or JSON or YAML, and we can readily schematize the configuration file for documenting/editing. I think a DSC Resource to read/modify it is perfectly sensible, could just be calling dsc meta get|set built into the CLI.

dsc should be a resource for its own config and as such the config file format can be either JSON or YAML

DSC meta settings
This document describes potential settings for DSC's meta configuration. There are six
scenarios,including examples, organized into near-term and future priorities.

[!NOTE]
The settings in the examples use snake-case and YAML. This is for readability in the proposal,
but actual naming should be more carefully considered. The example settings are illustrative, not
prescriptive.

Resource discovery path - (P0)
Tracing - (P0)
Allowed configuration documents and operations - (P1)
Allow listing resources and invocation operations - (P2)
Require version pins in configurations - (P2)
Require verified documents and resources - (P2)

Configuration file
The configuration file that contains the meta settings should be located with dsc.exe for portable
configurations, otherwise, should be located in the correct configuration location for that
operating system. File can be json or yaml and configured by a DSC resource (planned future).
File name json: dsc.settings.json
File name yaml: dsc.settings.yaml
P0 -----------------------
Resource discovery path

As a user, I want to pre-define the path DSC uses to look for resources and to control whether
that path can be overridden with the DSC_RESOURCE_PATH environment variable, so that I can have
more deterministic control over the resources invoked on my machine.

Users should be able to define an array of directories that DSC should search for non-built-in
resources[^1]. The settings should:

Accept an array of directories instead of a path syntax to allow cross-platform path variable
concatenation.
Give users the option to append the PATH environment variable to the directories, ensuring that
specifically included directories are searched for resources first and treated as canonical.
Give users the option to define whether to allow overriding with the DSC_RESOURCE_PATH
environment variable.

Example settings
With an empty configuration file
# settings.dsc.yaml

---
# Effective settings
resource_path:
  allow_env_override: true
  append_env_path:    true
  directories:        null

With directories defined
# settings.dsc.yaml
resource_path:
  directories:
    - '/ops/dsc/resources'
    - '/app/dsc'
---
# Effective settings
resource_path:
  allow_env_override: false
  append_env_path:    false
  directories:
    - '/ops/dsc/resources'
    - '/app/dsc'

With directories defined and PATH appended.
# settings.dsc.yaml
resource_path:
  append_env_path: true
  directories:
    - '/ops/dsc/resources'
    - '/app/dsc'
---
# Effective settings
resource_path:
  allow_env_override: false
  append_env_path:    true
  directories:
    - '/ops/dsc/resources'
    - '/app/dsc'

Tracing

As a user, I want to define a default trace level and format for DSC instead of always passing
the specified flags at runtime or using the DSC_TRACE_LEVEL environment variable.

Currently, the tracing defaults are built-in and can only be overridden by specifying the option flags on the root command or the DSC_TRACE_LEVEL environment variable (level only, not format). The settings should:

Allow setting the trace level
Allow setting the trace format
Allow defining whether the settings can be overrridden.

Example settings
When tracing isn't specified in settings
# settings.dsc.yaml

---
# Effective settings
tracing:
  level:  warning
  format: default
  allow_override: true

When tracing.level is specified
# settings.dsc.yaml
tracing:
  level: info
---
# Effective settings
tracing:
  level: info
  format: default
  allow_override: true

When tracing is fully specified
# settings.dsc.yaml
tracing:
  level:  info
  format: json
  allow_override: false
---
# Effective settings
tracing:
  level:  info
  format: json
  allow_override: false

P1-P2 -----------------------
Allowed configuration documents and operations

As an infrastructure engineer, I want to limit DSC to only using approved configuration documents
so that we can limit issues and how the documents change our system.

As an infrastructure engineer, I want to limit the dsc config <operation> commands that can be
executed to ensure stronger control over how users can query and modify our systems.

The most coherent approach to this seems to be enabling users to define a list of allowed configuration documents with optional additional restrictions.
We could also define how users can send documents to DSC - the most reliable being allow-listed
document files with a known SHA and trusted signature, but we can allow users to configure whether
they allow arbitrary documents from stdin or as a JSON blob to an argument.
The settings should:

Allow any configuration document from file or command input (stdin or argument) for any operation
by default.

Enable users to define an array of allowed documents by file path glob with optional constraints
(like specifying the SHA of the document, or that the document is signed by a trusted persona).

Enable users to define per-operation whether to allow documents from input and/or file. The value for each operation should be one of:

false - Forbid the operation command entirely.

true - Allow the operation command. When the settings also specify a list of allowed
documents, only allow passing a configuration document by file path for set and what-if
operations.

An array of values indicating how that operation command can receive a document:

Array
Effect

[]
Forbid the command entirely.

[from_document]
Forbid passing a configuration document from stdin or as an argument. Only allow using configuration documents saved as files.

[from_input]
Forbid specifying the path to a configuration document saved as a file. Only allow using configuration documents passed from stdin or as an argument. (Unlikely to be used).

[from_document, from_input]
Allow command regardless of how the configuration document is passed.

When users define a list of allowed documents, forbid passing documents from input by default for
the set command, including in what-if mode

When passing a document by file path with a defined allow list, always raise an error for
documents outside the allow list for set commands regardless of mode.

When passing a document from stdin or argument with a defined allow list, raise a warning when
the SHA of the document doesn't match the SHA of an allowed document.

For configurations that include other configurations, the included configurations must also be
allowed or DSC should raise an error (to prevent a malicious actor from altering an included
configuration to inject misbehavior into a trusted document).

Example settings
When configuration isn't specified in settings
# settings.dsc.yaml

---
# Effective settings
configuration:
  operations:
    export: [from_input, from_document]
    get:    [from_input, from_document]
    test:   [from_input, from_document]
    whatIf: [from_input, from_document]
    set:    [from_input, from_document]

With an allow list for configuration documents
# settings.dsc.yaml
configuration:
  allow_documents:
    - /ops/dsc/configs/*          # simple string as file glob
    - path: /app/dsc/web.dsc.json # object with advanced options
      sha256: <sha>
---
# Effective settings
configuration:
  allow_documents:
    - path: /ops/dsc/configs/*
    - path: /app/dsc/web.dsc.json
      sha256: <sha>
  operations:
    export: [from_input, from_document]
    get:    [from_input, from_document]
    test:   [from_input, from_document]
    whatIf: [from_document]
    set:    [from_document]

With an allow list and forbidding export
# settings.dsc.yaml
configuration:
  allow_documents:
    - /ops/dsc/configs/*          # simple string as file glob
    - path: /app/dsc/web.dsc.json # object with advanced options
      sha256: <sha>
  operations:
    export: false # convenience, could also be empty array
---
# Effective settings
configuration:
  allow_documents:
    - path: /ops/dsc/configs/*
    - path: /app/dsc/web.dsc.json
      sha256: <sha>
  operations:
    export: []
    get:    [from_input, from_document]
    test:   [from_input, from_document]
    whatIf: [from_document]
    set:    [from_document]

With an allow list and boolean operation values
# settings.dsc.yaml
configuration:
  allow_documents:
    - /ops/dsc/configs/*          # simple string as file glob
    - path: /app/dsc/web.dsc.json # object with advanced options
      sha256: <sha>
  operations:
    export: false
    get:    true
    test:   true
    whatIf: true
    set:    true
---
# Effective settings
configuration:
  allow_documents:
    - path: /ops/dsc/configs/*
    - path: /app/dsc/web.dsc.json
      sha256: <sha>
  operations:
    export: []
    get:    [from_input, from_document]
    test:   [from_input, from_document]
    whatIf: [from_document]
    set:    [from_document]

With boolean operation values and without an allow list
configuration:
  allow_documents:
    - /ops/dsc/configs/*          # simple string as file glob
    - path: /app/dsc/web.dsc.json # object with advanced options
      sha256: <sha>
  operations:
    export: []
    get:    true
    test:   true
    whatIf: true
    set:    true
---
# Effective settings
configuration:
  operations:
    export: []
    get:    [from_input, from_document]
    test:   [from_input, from_document]
    whatIf: [from_input, from_document]
    set:    [from_input, from_document]

With fully explicit settings
configuration:
  allow_documents:
    - /ops/dsc/configs/*          # simple string as file glob
    - path: /app/dsc/web.dsc.json # object with advanced options
      sha256: <sha>
  operations:
    export: []
    get:    [from_document]
    test:   [from_document]
    whatIf: [from_document]
    set:    [from_document]
---
# Effective settings
configuration:
  allow_documents:
    - path: /ops/dsc/configs/*
    - path: /app/dsc/web.dsc.json
      sha256: <sha>
  operations:
    export: []
    get:    [from_document]
    test:   [from_document]
    whatIf: [from_document]
    set:    [from_document]

Allow listing resources and invocation operations

As an infrastructure engineer, I want to define an allow list for resources that can be invoked
or included in a configuration document.

As an infrastructure engineer, I want to limit the dsc resource <operation> commands that can be
executed to ensure stronger control over how users can query and modify our systems.

The most coherent approach to this seems to be enabling users to define a list of allowed resources
with optional additional restrictions. Users may prefer to define this list by path or by type or
both. This check should be independent of discovery, which uses the
resource_path settings.
For resource invocation, it probably makes the most sense to define a map of boolean values to
operations, true enabling direct invocation and false forbidding it for a given operation. For
simplicity, users should be able to specify true or false to allow/forbid all direct invocation
operations.
These settings should:

Enable users to define whether to allow use of built-in resources (suspect this will always be
true, but perhaps an org forbids them for some reason?)
Enable users to specify file globs for the paths to allowed resources, with optional restrictions
like SHA, signature, version range, etc.
Enable users to specify name globs for the types of allowed resources, with optional restrictions.
Enable users to specify which DSC resource invocation operations are allowed.
Enable users to specify true or false for the setting that allows invocations to indicate
whether to allow or forbid invocations in general.
If the settings don't specifically define which invocation operations are allowed, forbid set
and delete when the settings explicitly define any allowed configuration documents to prevent
one-by-one changes to the system outside of the allowed configurations.
If the settings define allowed invocation operations as true, still forbid set and delete
when the settings also define a list of allowed configuration documents.

Example settings
With an empty configuration file
# settings.dsc.yaml

---
# Effective settings
resource:
  allow_built_in: true
  allow_invocation:
    get:    true
    test:   true
    set:    true
    export: true
    delete: true

With a list of allowed documents
# settings.dsc.yaml
configuration:
  allow_documents:
    - /ops/dsc/configs/*          # simple string as file glob
    - path: /app/dsc/web.dsc.json # object with advanced options
      sha256: <sha>
---
# Effective settings
configuration:
  allow_documents:
    - path: /ops/dsc/configs/*
    - path: /app/dsc/web.dsc.json
      sha256: <sha>
  operations:
    export: [from_input, from_document]
    get:    [from_input, from_document]
    test:   [from_input, from_document]
    whatIf: [from_document]
    set:    [from_document]
resource:
  allow_built_in: true
  allow_invocation:
    get:    true
    test:   true
    set:    false
    export: true
    delete: false

With a list of allowed documents and allow all invocations
# settings.dsc.yaml
configuration:
  allow_documents:
    - /ops/dsc/configs/*          # simple string as file glob
    - path: /app/dsc/web.dsc.json # object with advanced options
      sha256: <sha>
resource:
  allow_invocation: true
---
# Effective settings
configuration:
  allow_documents:
    - path: /ops/dsc/configs/*
    - path: /app/dsc/web.dsc.json
      sha256: <sha>
  operations:
    export: [from_input, from_document]
    get:    [from_input, from_document]
    test:   [from_input, from_document]
    whatIf: [from_document]
    set:    [from_document]
resource:
  allow_built_in: true
  allow_invocation:
    get:    true
    test:   true
    set:    false
    export: true
    delete: false

With all invocations forbidden
# settings.dsc.yaml
resource:
  allow_invocation: false
---
# Effective settings
resource:
  allow_built_in: true
  allow_invocation:
    get:    false
    test:   false
    set:    false
    export: false
    delete: false

With resources allowed by path
# settings.dsc.yaml
resource:
  allow_paths:
    - /ops/dsc/resources/*                             # simple string as file glob
    - path:   /app/dsc/resources/web.dsc.resource.json # object with advanced options
      sha256: <sha>
---
# Effective settings
resource:
  allow_built_in: true
  allow_paths:
    - path:   /ops/dsc/resources/*
    - path:   /app/dsc/resources/web.dsc.resource.json
      sha256: <sha>
  allow_invocation:
    get:    false
    test:   false
    set:    false
    export: false
    delete: false

With resources allowed by type
# settings.dsc.yaml
resource:
  allow_types:
      - Microsoft.SqlServer*    # Simple string as type glob
      - type: TSToy*            # object with advanced options
        require_signature: true
---
# Effective settings
resource:
  allow_built_in: true
  allow_types:
      - type: Microsoft.SqlServer*
      - type: TSToy*
        require_signature: true
  allow_invocation:
    get:    false
    test:   false
    set:    false
    export: false
    delete: false

With resources allowed by path and type
# settings.dsc.yaml
resource:
  allow_paths:
    - /ops/dsc/resources/*                             # simple string as file glob
    - path:   /app/dsc/resources/web.dsc.resource.json # object with advanced options
      sha256: <sha>
  allow_types:
      - Microsoft.SqlServer*    # Simple string as type glob
      - type: TSToy*            # object with advanced options
        require_signature: true
---
# Effective settings
resource:
  allow_built_in: true
  allow_paths:
    - path:   /ops/dsc/resources/*
    - path:   /app/dsc/resources/web.dsc.resource.json
      sha256: <sha>
  allow_types:
      - type: Microsoft.SqlServer*
      - type: TSToy*
        require_signature: true
  allow_invocation:
    get:    true
    test:   true
    set:    true
    export: true
    delete: true

resource:
  # Allow use of built-in resources, like `Microsoft.DSC/Group`
  allow_built_in: true # default
  # Define allowed resources by path glob
  allow_paths:
    # simple string as file glob
    - /ops/dsc/resources
    # object with advanced options
    - path:   /app/dsc/resources/web.dsc.resource.json
      sha256: <sha>
  # Define allowed resources by type glob
  allow_types:
      # Simle string as type glob
      - Microsoft.*
      # object with advanced options
      - type: Microsoft.SqlServer*
        require_signature: true
  allow_invocation:
    get:    true
    test:   true
    set:    true
    export: true
    delete: true

Require version pins in configurations

As an infrastructure engineer, I want to ensure that my configurations are as deterministic as
possible without relying entirely on manual verification by having DSC reject configuration
documents with resource instances that don't declare their version pin.

Currently, DSC doesn't support version pinning per resource instance or configuration. To help
users ensure deterministic configurations, we should have an opt-in setting that requires version
pins for resources in a configuration.
When DSC is set to require version pinning, it should fail the validation for any passed configuration
that includes one or more instances without a version pin. The error should collect all such instances
and report them in the error message, not just the first invalid resource instance.
Example settings
With an empty configuration file
# settings.dsc.yaml

---
# Effective settings
configuration:
  require_version_pinning: false

With the setting defined
# settings.dsc.yaml
configuration:
  require_version_pinning: true
---
# Effective settings
configuration:
  require_version_pinning: true

Require verified documents and resources

As an infrastructure engineer, I want to require all configuration documents and resources to be
signed by a trusted persona so that I can have increased trust in the resources that modify my
systems.

As an infrastructure engineer, I want to require all configuration documents and resources to
have a software bill of materials (SBOM) to comply with policies/regulations and have increased
confidence in the provenance of code that modifies my systems.

This requires answering questions about signing configurations and resources, and having a trust
model for DSC. This must be deferred until those domains are handled, but should be considered when
implementing them.
If signatures are required, any operation that includes an unsigned configuration document or
resource should raise an error indicating the document or resource isn't signed. Users should be
able to specify whether to require signatures for either or both, and to override on a per-document
level for explicitly allowed documents.
If SBOMs are required, any operation that includes a configuration or resource without one should
raise an error indicating what items are missing an SBOM. Users should be able to specify whether
to require SBOMs for either or both, and to override the setting on a per-resource level for
explicitly allowed resources.
The following code snippet is a gesture in this direction, but I don't have the familiarity with
signing or SBOMs to have a better idea at this time.
# Settings to define what DSC trusts for verifying signatures
verification:
  trusted_authorities:     # Define a list of authorities to use for verification
  trusted_personas:        # Define a subset of personas to trust
  require_signature: false # Define whether to require signatures for resources and documents
  require_sbom:      false # Define whether to require SBOMs for
# Configuration settings
configuration:
  require_signature: true # Overrides verification.require_signature
  require_sbom:      true # Overrides verification.require_sbom
  allow_documents:
    # Allow all documents in this folder (require sbom and signature)
    - /ops/dsc/configs/*
    # Allow all documents signed by this persona, regardless of path
    - signed_by: <trusted persona>
    # Allow all documents in the folder & signed by the ops team
    - path: /ops/dsc/configs/*
      signed_by: <ops team persona>
    # Allow this document without sbom, require signature
    - path: /temp/debug.dsc.config.yaml
      require_sbom: false
resource:
  require_signature: true # Overrides verification.require_signature
  require_sbom:      true # overrides verification.require_sbom
  allow_types:
    # Allow all resources in this namespace (require sbom and signature)
    - MyOrg*
    # Allow all resources signed by this persona, regardless of type
    - signed_by: <trusted persona>
    # Allow all resources in this namespace signed by the ops team
    - type: MyOrg.Ops*
      signed_by: <ops team persona>
    # Allow this resource without sbom, require signature
    - type: MyOrg.Debug/TelemetryTrace

Per discussion for 3.0, we'll only implement the P0 items.  Current thinking is to have a Microsoft.DSC/Config and Microsoft.DSC/Policy resources that handle scoping where Config is for the current user (the config file is stored in the same location as the cache) and Policy is for the instance of DSC (presumably can be installed system wide under a protected folder).  Here Policy means the values cannot be overridden by the user while Config means it sets the default value, but can be overridden at runtime.

I would recommend using Microsoft.DSC/Settings instead of Microsoft.DSC/Config to avoid further overloading the term config, if possible. The distinction between Policy and Settings is still intuitive to me.

I like the idea of having a Settings file with each resource / configuration used as an override to the higher level Settings. This is similar to how it is done in Bicep as well. This would allow for more complex configurations where some resources are allowed to change state, while other potentially disruptive SET operations are disallowed.

Moving this to 3.1 as more work is needed to make the meta config into a DSC resource


creating virtualenv fails on pypy

Steps to Reproduce

rye init -p<EMAIL_ADDRESS>testpypy
cd testpypy
rye sync

Expected Result
Syncs successfully
Actual Result
error: failed creating virtualenv ahead of sync
Caused by:
    No such file or directory (os error 2)

The error is caused by the tcl tk path workaround, which hardcodes a path like pythonX.Y inside site-packages, but pypy3.9 uses .venv/lib/pypy3.9/site-packages/ here.
Version Info
rye 0.11.0
commit: 0.11.0 (f6f63d6c1 2023-07-18)
platform: linux (x86_64)
self-python<EMAIL_ADDRESS>symlink support: true
Stacktrace
No response

The crux of the question, I think, is why cpython created the folder python, while pypy is still pypy.

One could shell out to python -S -c "import site; print(site.getusersitepackages())" in the venv but I hope there is a better way to find the name of the directory

venv Virtual environments are created by virtualenv. There is a python folder in the lib folder created by cpython, and pypy is created by pypy, and the code only matches python, so it is not found.


ConnectionBalancer Bug

Hi. Report a bug in ConnectionBalancer
When pickTargetHandler is called, Count 1 increases as shown below.
BalancedConnectionHandler&
ExactConnectionBalancerImpl::pickTargetHandler(BalancedConnectionHandler&) {
--- skip ---
    min_connection_handler->incNumConnections();             ///< increment connection count
  }

  return *min_connection_handler;
}

However, the connection count is always 0, and the connection balancer is not processed as expected. (See log below)
[DEBUG] WORKER[0] CONNECTION COUNT[0]
[DEBUG] WORKER[1] CONNECTION COUNT[0]
[DEBUG] incNumConnections!!!!!!            ///< increment count 1
[DEBUG] decNumConnections!!!!!!           ///< decrement ??
[DEBUG] incNumConnections!!!!!!           ///< increment count 1 ???
///< next connection receive
[DEBUG] WORKER[0] CONNECTION COUNT[0]      //< why 0???
[DEBUG] WORKER[1] CONNECTION COUNT[0]
[DEBUG] incNumConnections!!!!!!
[DEBUG] decNumConnections!!!!!!
[DEBUG] incNumConnections!!!!!!

Temporarily modified as follows and it resolved.
BalancedConnectionHandler&
ExactConnectionBalancerImpl::pickTargetHandler(BalancedConnectionHandler&) {
--- skip ---
    min_connection_handler->incNumConnections();
#ifdef _BUG_CONN_BALANCER_
    min_connection_handler->incNumConnections();            ///< add
#endif

  }

  return *min_connection_handler;
}

Please review.
Thanks.
Reference information
Envoy Binary Version
./envoy  version: 430fb4cd4004831170885184066045a3902acc4b/1.17.0/Modified/RELEASE/BoringSSL
Configuration
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: test-filter
  namespace: istio-system
spec:
  configPatches:
  - applyTo: LISTENER
    match:
      context: SIDECAR_OUTBOUND
      listener: {}
    patch:
      operation: MERGE
      value:
        connection_balance_config:
          exact_balance: {}

cc @lambdai I think this is the bug you are currently fixing?

cc @lambdai I think this is the bug you are currently fixing

No, I'm not currently fixing it.

@dmsqls Thanks for the analysis.
Will be fixed by https://github.com/envoyproxy/envoy/pull/15842
Before the fix, only the balance depends on the connections owned by the virtualoutbound listener. The number of connections is usually 0 there.
With my fix and the envoy filer crd, the connection will be balanced as your expectation

Thank you. It works as expected. 👍


Consolidate redundant backend creation in tests

Purpose
Creating backend object every test cases is redundant. We can make test faster by eliminating this redundant object creation.
Result
Before
Chrome 65.0.3325 (Mac OS X 10.12.6): Executed 4089 of 4089 SUCCESS (2 mins 18.853 secs / 2 mins 17.784 secs)
Firefox 58.0.0 (Mac OS X 10.12.0): Executed 4089 of 4089 SUCCESS (9 mins 7.102 secs / 8 mins 25.818 secs)

After
Chrome 65.0.3325 (Mac OS X 10.12.6): Executed 4089 of 4089 SUCCESS (1 min 15.038 secs / 1 min 1.975 secs)
Firefox 59.0.0 (Mac OS X 10.12.0): Executed 4089 of 4089 SUCCESS (5 mins 6.947 secs / 4 mins 25.21 secs)

This change is

@dsmilkov Could you take a look when you get a chance?

 Thank you for this amazing contribution!

Reviewed 1 of 1 files at r2.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable

And thanks for the ping! We should appologize instead of you - it's our job to review the great contributions that our community makes to the library!

Thank you so much!


Ensure symbols are not reused across plan nodes

This fixes an aliasing issue that causes queries to return incorrect results.
It happens because symbol allocator can produce non-globally unique names when
columns in the table share the same prefix and have the form xxx_nnn. E.g.,
CREATE TABLE t AS SELECT * FROM (VALUES (1,2)) t (foo_1, foo_2_4);
SELECT foo_1, foo_2_4 from t;

Incorrect plan:
 - Output[foo_1, foo_2_4] => [foo:bigint, foo:bigint]
         foo_1 := foo
         foo_2_4 := foo
     - Exchange[GATHER] => foo:bigint
         - TableScan[t, original constraint=true] => [foo:bigint]
                 foo := <column foo_1>

Expected plan:
 - Output[foo_1, foo_2_4] => [foo:bigint, foo_2:bigint]
         foo_1 := foo
         foo_2_4 := foo_2
     - Exchange[GATHER] => foo:bigint, foo_2:bigint
         - TableScan[t, original constraint=true] => [foo:bigint, foo_2:bigint]
                 foo := <column foo_1>
                 foo_2 := <column foo_2_4>

Looks good, but add a test that checks that newSymbol("foo_2_4") followed by newSymbol("foo_1") results in a symbol map with two entries

looks good


Dropdowns on hover lose rounded corners

This is really minor, but I should fix this eventually:

Fixed by #1903


Encrypt user modified password

#320
Problem
No encryption for the modified password
Solution
Implement the Update method to encrypt the modified password

We used to drop this field on GET. Can you check why it is not working in https://github.com/rancher/harvester/blob/master/pkg/api/user/formatter.go#L13?


"quota exceed" breaks automation when using "-no-prompt=true"

Server01:/backup$ drive push -no-prompt=true backup.tar.gz

Resolving...
This change will exceed your drive quota
 projected size:<PHONE_NUMBER>) 7.48GB
 Proceed with the changes? [Y/n]:

If google drive quota will exceed when using "drive push no-prompt=true path/", then "drive" should exit with an error message/code instead of prompting for user input which breaks batch automation.

Hello again @casperklein thanks for reporting this issue.
PR https://github.com/odeke-em/drive/pull/387 addresses it.

Please get the latest from master. It should be resolved now.


Eloquent emits event retrieved prior to finishing the entire retrieval process of eager loaded relations

Laravel Version: 5.8.32
PHP Version: 7.3
Database Driver & Version: n/a

Description:
When retrieving models through Eloquent, it emits the retrieved event prior to retrieving the eager loaded relations, if any.
The retrieval of the eager loaded relations are to be considered part of the retrieval process, otherwise you loose the benefit of eager loading anything if you are listening to the retrieved event to work with the related items.
Analysis:
This is what is being executed when fetching models:
public function get($columns = ['*'])
{
    $builder = $this->applyScopes();
    // If we actually found models we will also eager load any relationships that
    // have been specified as needing to be eager loaded, which will solve the
    // n+1 query issue for the developers to avoid running a lot of queries.
    if (count($models = $builder->getModels($columns)) > 0) {
        $models = $builder->eagerLoadRelations($models);
    }
    return $builder->getModel()->newCollection($models);
}

If you dive into the $builder->getModels($columns) bit, you will see that the models are being instantiated in this method:
public function newFromBuilder($attributes = [], $connection = null)
{
    $model = $this->newInstance([], true);
    $model->setRawAttributes((array) $attributes, true);
    $model->setConnection($connection ?: $this->getConnectionName());
    $model->fireModelEvent('retrieved', false);
    return $model;
}

As you can see, the retrieved event is being fired here.  However, the eager loading of the events is done after.
In an ideal world, the retrieved event should only be thrown after the relations have been eager loaded, as you can now not approach any related model in your listener for the retrieved event without causing for an N+1 query issue.  Now - for me - the retrieval is still ongoing (it still has to fetch the related models from the database) when the retrieved event is being thrown.
Please let me know if you need anything else.

Bit torn about this being a bug or a potential improvement. I'll mark this as a bug for now. I don't have time to deep dive into this atm so any help is appreciated.

I don't think we should change the current behavior:

I would argue that it's technically correct.
It would be a significant breaking change.

What if we add a new event that fires after the eager loading?

That might be a solution, but will that also work when retrieving ONE model?

If we fire the event Eloquent\Builder::get(), it will also work for User::first().

Yes but what with find()?

Not sure of the implementation - can’t check as I’m in the car, but does that also pass through the same code there?  The new event should be emitted for each retrieval, hence my question...  And will you emit it also when there are no eager loaded relations?

Yes, all these methods are handled by get().

And will you emit it also when there are no eager loaded relations?

Yes, I think it should always fire.

Then I agree this would definitely a viable solution.
I don’t understand however why you feel it’s difficult to “move” the current event to after eager loading, but it’s possible for the new event?
Your suggestion would - if I understand correctly - alwayshave the two events shortly after another?  Any use case I’m missing where you would still want to listen to retrieved?

I don’t understand however why you feel it’s difficult to “move” the current event to after eager loading, but it’s possible for the new event?

If we move the retrieved event out of Model::newFromBuilder(), it breaks other methods relying on it (e.g. cursor()).

Okay - that's clear to me.
I think this would be really beneficial to be honest.  Not sure how we could name the event though.  Something like 'eagerloading.completed' sounds tempting, but since the event needs to be emitted even if there are no eager loaded relations, it sounds a bit strange to me.
Again, this is probably a lower prio issue, but especially for an optimistic locking trait where the version is stored in a related model not to clutter the base tables, this would seriously come in handy.

Naming is hard...

After reading up a bit I'm gonna shift more to naming this an enhancement. It might indeed be better if we just add a new event. But I believe the better place to discuss this is the ideas repo. So feel free to open up an issue there.


Cache for zabbix graphs

Save graphs in temporary dir for some time (i.e. one minute), add ability to configure it via actions.

Doesn't make any sense if you have item that updates every 10/15 seconds.


Put thumbnails in the API, for realsies

Replaces/closes #828.

I’m going to merge as soon as tests pass; this was already reviewed in #828.


Add version options for intkey, xo and supplychain etc.

Signed-off-by: feihujiang<EMAIL_ADDRESS>Ref #644

@vaporos please review this PR. Thanks!


[BUG] sending empty message while attaching zip file

Rocket.Chat.Android version: (make sure you are running the latest)
2.0.0-alpha1
Mobile device model and OS version: (e.g. "Nexus 7 - Android 6.0.1")
Nexus 6 - Android 7.1
Description
while selecting zip file as a file attachments, it sends an empty message.

Actually, it crashed here. Marked as bug.

@leonardoaramaki same problem is occurring when I'm attaching a pdf file.

@leonardoaramaki @divyanshub024 I found the same problem after uploading a .pdf file. It seems the RocketChatClient.messages() method is returning messages with their attachments' contents as null.
I tested on a LG tablet, Android 5.0.1

Closed by #1195


Add flatten feature

It would be nice there is a builder(flatten) to merge 2 structs into one builder.
#[derive(TypedBuilder)]
struct A {
  a: String,
}
#[derive(TypedBuilder)]
struct A {
  #[builder(flatten)]
  shared: A,
  more: bool,
}

let a1 = A::builder().a("test".into()).more(true).build();

This should create a builder that will construct and fill the shared structure.
Similar to serde(flatten).
This is a common used data structure and would simplify usage.

You would need to provide the fields of the struct to flatten, in this example: #[builder(flatten({a: String}))]. This could be automated with a macro that wraps both types, but it will get complicated and ugly...