How to pass idempotence step with restarted service?

Issue Type

Bug report

Molecule and Ansible details
ansible --version
ansible 2.5.2

molecule --version
molecule, version 2.14.0

Molecule installation method (one of):

pip

Ansible installation method (one of):

pip

Desired Behavior
In Ansible role I have task like:
- name: restart sshd service
  systemd:
    name: sshd
    state: restarted

I expect that idempotence step will end without fail, but get an error, because of ansible task always returns  "changed" state when restarts service.
--> Scenario: 'default'
--> Action: 'idempotence'
ERROR: Idempotence test failed because of the following tasks:
* [ansible-server-common] => server-common : restart sshd service
An error occured during the test sequence.  Cleaning up

Is there some hack to get idempotence work?

Maybe: changed_when: False

Should the service always be restarted with every execution of the role?  Seems like the role isn't idempotent, simply b/c it will always restart the service.  Instead why not make the task a handler, and only restart when triggered?

It seems, that I've not completely understood handlers behaviour. Reading ansible docs clarified some things and @retr0h is right, my role isn't idempotent.
Thanks for help and such great instrument like molecule!

would you guys contribute on how this can be achieved?

@raolivei This document has you covered: https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlers-running-operations-on-change
Basically, it lets you define "actions" (=handlers) which you can run when a particular file has changed. This seems to be very useful to me; haven't tested it myself but it definitely seems like the way to go with these kind of things.

We also have molecule-notest-idempotence tag to get out jail now :+1:

@decentral1se

We also have molecule-notest-idempotence tag to get out jail now +1

Good point. For reference: https://molecule.readthedocs.io/en/stable/configuration.html#id22
(but in general it's of course better to try and design your Ansible roles to be idempotent, as far as is possible.)

"get out of jail" = when Ansible is fighting you (bugs, issue tracker disagreements, etc.)
:)

"get out of jail" = when Ansible is fighting you (bugs, issue tracker disagreements, etc.)

True that. :+1: :laughing:

@decentral1se But it's actually named molecule-idempotence-notest. I tried the other name but it didn't work. :smirk:

Basically use service/systemd task as a handler and run it using notify only when (for example) configuration file changes.


fix: replace 'Returns' in comments with '@return'

Using @return is correct style for nodejs.

Please use https://conventionalcommits.org/ style for commit messages.

@ofrobots Hmm, not sure why the "fix: " prefix didn't make it to the commit message.


$__timefilter variable issue on armhf (e.g. raspberry)

I complied the plugin from source for armhf, which is used by the raspberries. The plugin is working in general, but the variable $__timefilter seems to have an issue. The timestamps are incorrect and sometimes negative. It looks like a 32bit overrun issue?!
My filter in grafana is set to from 2013-10-03 00:00:00 to 2013-10-04 23:59:59 and that results in
"time BETWEEN from_milliseconds(2066697984) AND from_milliseconds(-2055470312)". As you can see the second timestamp is negative, which I believe should not be the case.

I think I found the root cause and created a pull request to fix the issue: https://github.com/grafana/timestream-datasource/pull/53. I tested it on my raspberry and the plugin is running as expected now.
Issue is described here: https://github.com/golang/go/issues/23086

I think I found the root cause and created a pull request to fix the issue: https://github.com/grafana/timestream-datasource/pull/53. I tested it on my raspberry and the plugin is running as expected now.
Issue is described here: https://github.com/golang/go/issues/23086

Closed by #53

Closed by #53


$(selector, context) context can't be selector

$(selector, context) context can't be selector
version: 3.0.0-beta.3
Current behavior
$('.proggres', '#fa-201-18') don't work
$('.proggres', $('#fa-201-18')), $('#fa-201-18 .proggres')  Works OK

Expected behavior

I don't think this is worth implementing, it only saves you 3 characters and not having it encourages you to cache the result of that selector instead, which is probably something one should do 🤔
Also in jQuery v3 having a string selector doesn't seem to be supported either:

Maybe that was only available in jQuery 1.x or something. Or maybe the docs are actually wrong 🤔

This is not about these few characters, but about the time spent on finding why it does not work after changing jQuery -> Cash
And this work on "jquery": "^3.3.1",

That's a good point, I've update the readme https://github.com/kenwheeler/cash/commit/c55287b877e9874234c5982bb385e1c026ac4832
Hopefully while that's not a perfect solution maybe that's a decent implement.


refactor(pagination): First try on the BEM naming of a widget

I added BEM naming to the pagination widget. The generated markup
looks like:

First

Previous

1

2

3

4

5

Last

Last

Everytime I add a BEM class, one can add its own set of custom
classes through the cssClasses object config in the widget.
A default pagination.css file is provided but currently only
includes the visibility:hidden styling of disabled elements. The
demo styling is thus done through bootstrap classes.
I quite happy with the end result. I also simplified the existing code
in the process and moved all default attributes in the widget (instead
of the components).
I'm submitting the PR to get feedback and then I'll update the docs
and maybe add some default styling not from Bootstrap.

I like it, we then need to make sure to document in the readme what are the available classes (just copy pasting the default css should be enough).

This should provide a very good extensibility feature for people needing so. :100:

Are we merging this and waiting for 0.14 to do a refactor on pageLink being a simple function component?

IMHO it should have stayed a component in the first place. I would revert that into a standalone component and later migrate to a simple function component.

IMHO it should have stayed a component in the first place. I would revert that into a standalone component and later migrate to a simple function component.

WFM @pixelastic care about re-putting it as a component? Indeed in the end this is not part of the feature you are adding (BEM), so let's not try to spend time on this subject (right now) while the added BEM functionnality is good :)

Yep, I'll push that soon.

so let's not try to spend time on this subject (right now) while the added BEM functionnality is good :)

Yep true @vvo, this feature is really awesome @pixelastic  :dango: :dancers:

I've re-added the PaginationLink component, ready to be merged.

Lgtm :)


server IDs bogus

The code in Globals.cc that sets the server ID looks like it's left over from before reconfiguration was implemented. I think the result is that server IDs currently have to be assigned manually on the command line for reconfiguration to work.

Yeah, this makes no sense. Currently:

the server ID is given on the command line or defaults to 1
the server's listen address is given by config.read("servers"), split by semicolon, indexed by serverId
the Reconfigure binary assigns IDs to the servers counting from 1, in the order given on the command line


🌱 Update metadata to include capi 1.2.X releases

Update metadata to include capi 1.2.X releases
Otherwise we get,
est:~ $ clusterctl init --infrastructure=metal3:v1.2.0-rc.0
Fetching providers
Error: invalid provider metadata: version v1.2.0-rc.0 for the provider capm3-system/infrastructure-metal3 does not match any release series

/test-ubuntu-integration-main

Commit says unverified. Otherwise LGTM

Fixed, thanks

/test-ubuntu-integration-main

/lgtm


'Prevent Pages From Stealing Focus' doesn't work on Firefox for google searches

The page steals the focus even when the option is enabled.
This works on Chrome.
See the comments on #2.

Resolved in release 1.14.


Update development deployment Travis procedure

When development environment will be ready in #657, we need to update after_success part of .travis.yml, that will build new version of it every time something lands in master branch.

Done already


VirtualizedList horizontal pagingEnabled page count 0 of 9

Description
Hello, I am using VirtualizedList, I have shared the example below. Although I have +10 pages of data, I cannot reach page 11.
Version
0.64.2
Output of npx react-native info
System:
OS: macOS 12.6.1
CPU: (8) x64 Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
Memory: 23.78 MB / 16.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 16.14.2 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 8.5.0 - /usr/local/bin/npm
Watchman: 2<IP_ADDRESS> - /usr/local/bin/watchman
Managers:
CocoaPods: 1.11.3 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.4, iOS 15.5, macOS 12.3, tvOS 15.4, watchOS 8.5
Android SDK:
Android NDK: 22.1.7171670
IDEs:
Android Studio: 2021.1 AI-211.7628.21.2111.8193401
Xcode: 13.4.1/13F100 - /usr/bin/xcodebuild
Languages:
Java: 11.0.17 - /usr/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: 17.0.1 => 17.0.1
react-native: 0.64.2 => 0.64.2
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
Video
https://streamable.com/4kxv7m
Video File
https://www.dosyaupload.com/48K6y/Screen_Recording_2022-12-24_at_3.54.04_AM.mov
Snack, code example, screenshot, or link to a repository
<VirtualizedList
   data={userList}
   keyExtractor={(_item, index) => index?.toString()}
   horizontal
   pagingEnabled
   initialNumToRender={initialScrollIndex + 1}
   showsHorizontalScrollIndicator={false}
   onViewableItemsChanged={this.onViewableItemsChanged}
   renderItem={this.renderItem}
   initialScrollIndex={initialScrollIndex}
   extraData={currentIndex}
   scrollEnabled
   getItemCount={() => slice || userList?.length || 10}
   getItemLayout={(_, index) => ({
   length: width,
   offset: width * index,
   index,
   })}
        getItem={this.getItem}
        viewabilityConfig={{
          itemVisiblePercentThreshold: 50,
        }}
/>

Hi, i have a similar issue, how was this resolved?


Fix BitField::{store,load}_{le,be} panic when the field is aligned to the storage boundary

Both left and right shifts that are equal or exceed the value type bit
width panic.
if/then/else and checked_sh[lr]().unwrap_or(0) produce the same
assembly when optimized.  (Switch to "Show Assembly" and look for functions f and g).

Thank you for catching this. I apologize for the delay; I've been intentionally avoiding reading my notifications here due to my personal life and trying to get through finishing 0.20. This will be published in 0.20.1 shortly.

Thanks a lot for merging this in!
Hope your personal life is OK, and you still have some time left for open source projects :)


Add .eslintcache icon

This just adds the eslint icon (which needs to be updated to the new logo, but will do that on https://github.com/Alhadis/FileIcons repo) to .eslintcache files.

Thanks, mate. =)
Make sure to keep the old icon (as in, don't overwrite it with the new one). Cheers!

Thanks for the tip, I probably would have done just that.

Hey mate, I took care of it for you. =) Hope you don't mind. ;)

Awesome, thanks!


Fix a typo in TextInputFormat.java

I pushed wrong base last time.sorry

-1 this is not a typo. Code won't compile after this change.

Thanks for the contribution. But please follow Hadoops' How to Contribute guide.
https://cwiki.apache.org/confluence/display/HADOOP/How+To+Contribute
Most importantly, please file a jira.

Very thankful.I didn't find the right way until you told me.
下次我会注意的，谢谢


Base58 now on NuGet

We can now use base 58 from NuGet instead of our copy and paste. https://github.com/adamcaudill/Base58Check/issues/2

The package is not signed.  Raised issue https://github.com/adamcaudill/Base58Check/issues/5

Switched to SimpleBase package. Signing is no longer an issue.


Fix: typos

Fix: typos

@omahs, thanks so much for your help! Looks great to me, I think we can merge it


Trackpad pinch zooms the whole browser on Safari

Describe the bug
Pinch to zoom with a trackpad on Safari zooms the whole browser instead of just the map.
When performing gestures such as pinch to zoom and rotate on Safari it dispatches GestureEvent.
On iOS this is a secondary event that is fired alongside the normal touch and pointer events. These are already handled by Open Layers and calling preventDefault() on the related touch/pointer event stops the default behavior - the browser is not zoomed.
The Apple developer website has a description of the exact sequence of touch events and gesture events.
On macOS Safari these gesture events are fired on their own and because there is no related pointer or touch event they are not captured by Open Layers. This results in the browser performing the default page zoom.
On macOS Chrome and Firefox the behavior is different. The browser simply fires a wheel event with ctrlKey set to true so any JavaScript code sees the trackpad zoom as a standard mouse zoom.
I have created a minimal example where this is reproducible  - https://bqo8v.csb.app/
We are using a custom handler for these gesture events which I have provided here - https://6e2fv.csb.app/
It captures the gesture events and dispatches equivalent pointer events instead which are then captured by Open Layers.
However this solution is not ideal. It only handles zoom and not rotation. It is creating a fake representation of fingers/pointers which may not scale well and It will not work for the trackpad on a device with Safari and a touch screen and trackpad - such as an iPad with a keyboard attachment.
I believe that it can be fixed better in Open Layers itself by using the gesture events as the primary source of scale and rotation on Safari. This bug appears to have been present in Open Layers since the gesture events were introduced with iOS 7 (2015) as there is an issue from that time which was not resolved based on the last comment. #3817
I am willing to contribute a PR for this but I am not sure on the best way to implement this so I'd like to ask for some feedback and suggestions first.
To Reproduce
Steps to reproduce the behavior:

Use latest Safari macOS on a Mac with trackpad
Go to https://bqo8v.csb.app/
Move your cursor over the map
Perform the pinch to zoom gesture on the trackpad
The whole browser window zooms

Expected behavior
Only the map zooms

Using Safari 15.2 on Monterey 12.1, the map at https://bqo8v.csb.app/ behaves as it should. I am not seeing the whole browser zoom, unless I pinch outside the map.

Hi @sagadave. Thanks for taking the time to look into this. My apologies I had tested on Safari 14.2 at the time of reporting. I have updated the description. Retesting in Safari 15 it appears that it fixes this by adding a ctrl + wheel event in the same way that Chrome on MacOS does. Nevertheless the issues still stands for safari versions up to and including 14 which I believe is still a significant portion of users.


initialise completions with ZSH's compinit

My asdf has no completions.
see asdf zsh&git
I must execute this
autoload -Uz compinit && compinit

Has any other solutions?
@ericbn

Hi @jqhr. You definetly need to initialize the Zsh completion system for completion to work. And there are two ways to do it:

Add autoload -Uz compinit && compinit to your .zshr file.
OR add zmodule completion to your .zimrc file. This Zim module will call compinit for you.

Hi @jqhr. You definetly need to initialize the Zsh completion system for completion to work. And there are two ways to do it:
1. Add `autoload -Uz compinit && compinit` to your .zshr file.

2. **OR** add `zmodule completion` to your .zimrc file. This Zim module will call compinit for you.

I have addedzmodule completion to my zimrc file ，but it doesnot work

The completion module must come after the asdf module.

Yes.my zimrc is
# Start configuration added by Zim install {{{
# -------
# Modules
# -------

# Sets sane Zsh built-in environment options.
zmodule environment
# Provides handy git aliases and functions.
zmodule git
# Applies correct bindkeys for input events.
zmodule input
# Sets a custom terminal title.
zmodule termtitle
# Utility aliases and functions. Adds colour to ls, grep and less.
zmodule utility
# archieve
zmodule archive
# asdf
# 读取asdf后必须执行,否则没补全
zmodule asdf

#
# Prompt
#
# Exposes to prompts how long the last command took to execute, used by asciiship.
zmodule duration-info
# Exposes git repository status information to prompts, used by asciiship.
zmodule git-info
# A heavily reduced, ASCII-only version of the Spaceship and Starship prompts.
zmodule asciiship
# Aloxaf/fzf-tab
zmodule Aloxaf/fzf-tab

# Enables and configures smart and extensive tab completion.
# completion must be sourced after zsh-users/zsh-completions
zmodule completion
# Additional completion definitions for Zsh.
zmodule zsh-users/zsh-completions
# Fish-like syntax highlighting for Zsh.
# zsh-users/zsh-syntax-highlighting must be sourced after completion
zmodule zsh-users/zsh-syntax-highlighting
# Fish-like history search (up arrow) for Zsh.
# zsh-users/zsh-history-substring-search must be sourced after zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-history-substring-search
# Fish-like autosuggestions for Zsh.
zmodule zsh-users/zsh-autosuggestions
# custom modules
zmodule jeffreytse/zsh-vi-mode
# zmodule ohmyzsh/ohmyzsh -s plugins/vi-mode/vi-mode.plugin.zsh
zmodule b4b4r07/emoji-cli
zmodule wfxr/forgit
zmodule agkozak/zsh-z
zmodule pabloariasal/zfm
zmodule supercrabtree/k
zmodule zpm-zsh/clipboard
zmodule chriskempson/base16-shell --cmd 'eval "$("{}/profile_helper.sh")"'
zmodule mollifier/cd-gitroot
zmodule casonadams/alacritty-shell
zmodule MichaelAquilina/zsh-you-should-use --name "you-should-use"

# }}} End configuration added by Zim install

I add 'autoload -Uz compinit && compinit' in my zshrc, and it works

I uncommented "zstyle ':zim:completion' dumpfile "${ZDOTDIR:-${HOME}}/.zcompdump-${ZSH_VERSION}" in my zshrc.
and it works.

This issue still persists for me, completion module coming after asdf module. I will attempt the workarounds.

Hi @appilon. Check https://github.com/zimfw/zimfw/wiki/Troubleshooting

Hi @ericbn thanks for the help troubleshooting. Turns out ubuntu autoloads compinit in /etc/zsh/zshrc. The fix is to add skip_global_compinit=1 in ~/.zshenv. I might suggest mentioning this somewhere in the readme for https://github.com/zimfw/completion since it would be common problem, seems like a weird decision by the ubuntu release of zsh...


⚠ Bofrost.be has degraded performance

In f07dfb7, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 924 ms

Resolved: Bofrost.be performance has improved in e2086af.


BreadCrumbs return same data twice

https://github.corp.ebay.com/React/ebayui-core-react/blob/ddbf9622d588df9a0320ec8efe89bebeb8945fe5/src/ebay-breadcrumbs/breadcrumbs.tsx#L47
currently there is no way to override onClick on items since it is cloned .
something like this would be helpful
onClick: event => onSelect(event, index)
we can always deconstruct target from event like below
onSelect={({target})=>console.log(target)}

Re: from isuhardi
Sorry, I accidentally clicked the close button.
@armontoya  Do you mean we extend or change the breadcrumb onSelect signature to return index?
type BreadcrumbProps = ComponentProps<'div'> & {
    ...
    onSelect?: (event: MouseEvent | KeyboardEvent, index: number) => void;
}

I agree with this 👍
Although this will make our API different than Marko ebay-breadcrumb, I don't see the point of returning clicked element since you can get it from event.
@tmanyanov  What do you think? I think you also made a PR to ebayui-core marko so pagination return index instead of element (https://github.com/eBay/ebayui-core/issues/1407)


Registry server: connection pool configuration

After some highly concurrent load tests, I've noticed that the server is starved for connections. Would it help to adjust our pool configuration?
https://go.dev/doc/database/manage-connections
https://github.com/GoogleCloudPlatform/golang-samples/blob/66716d85a55616601c8a0b634885505f7a439a49/cloudsql/postgres/database-sql/cloudsql.go#L178
https://cloud.google.com/sql/docs/postgres/manage-connections#go_2
https://cloud.google.com/sql/docs/quotas#postgresql

I think this would need to be determined in the context of SLO and performance requirements.


Extension install 02

Follow up of this PR: https://github.com/lnbits/lnbits/pull/1123
Doc: extension-install.md
Merge too complex, moved here
Summary
This PR allows extensions to be installed/uninstalled at runtime by an admin user.

there is no need for a server restart after an extension has been installed

the db is created/updated dynamically (migrations.py)
the endpoints and static resources are mapped dynamically

when an extension is uninstalled all endpoints to that extension will be blocked (including static resources like html files)
extensions can be installed/uninstalled only by admin users (listed in LNBITS_ADMIN_USERS env var)
after installation, an extension is not active. It must be explicitly activated by the admin user.
regular users will only see installed extensions that have been activated by an admin user
when an extension is uninstalled the db for it is NOT removed
[x] install from GitHub releases (see extension-install.md](https://github.com/lnbits/lnbits/blob/extension_install_02/docs/guide/extension-install.md))
[x] show star count from GitHub stars (for per-repo extensions)
[x] allow non-admins to view install page (but not install)
[ ] show warning if extension has critical bugs
[x] allow older versions to be installed

the LNbits instance can have an old version that only supports older extensions

[ ] add dependencies in config.json (???)

Limitations

GitHub API: For unauthenticated requests, the rate limit allows for up to 60 requests per hour.
Solution:
add the LNBITS_EXT_GITHUB_TOKEN env variable. Specifying this variable increases the rate-limit

this value is not visible for the super-admin therefore SaaS  can re-use the same token for all instances
Note: tokens expire after 1 year

Test

use both poetry and uvicorn
only admin users can install/uninstall extensions

Install&Activate

install an extension (with an admin user)
check that regular users cannot yet access the extension
Activate the extensions
users should be able to Enable and use the extension
Deactivate the extension
users should not see the extension in the list or access any UI or endpoints (HTTP 401)

Dependencies

an extension can depend on other extensions. This must be specified in the dependencies: [] fields of the repository manifest file
if extension A depends on extension B then

A cannot be installed until B is installed
B cannot be uninstalled before A is uninstalled

[ ] specify dependencies for GitHub releases

Container Install

extension installation adds new files (at lnbits/extensions) to the filesystem. If the app runs in a docker container then the container filesystem state will be recreated if the container is destroyed and recreated.
the zips for installed extensions are stored on the LNBITS_DATA_FOLDER (which must be mapped to a volume) volumes:
    - ./data/extensions:/app/lnbits/data/extensions

on restart the app checks if:

the extension has been installed (in the DB)
the zip for that extension is present (if not it re-downloads it)
the zip is installed. If not it will re-install it

to test:

start app in container
install extensions
destroy container
start app again using the same image (with and without volume mapping)
expected result: the previously installed extensions are present

Extension Coding Conventions
There are some rules that extensions must follow in order to be installable
Imports

no relative import of other extensions

NOK: from ..watchonly.crud import get_config, get_fresh_address
OK:    from lnbits.extensions.watchonly.crud import get_config, get_fresh_address
in the future extensions should communicate EXCLUSIVELY via REST API calls (no direct imports)

no absolute import of own modules:

NOK: from lnbits.extensions.satspay.crud import check_address_balance, get_charge
OK:    from .crud import check_address_balance, get_charge, update_charge

Codecov Report

Merging #1231 (94d9a0a) into main (5f920fd) will decrease coverage by 0.29%.
The diff coverage is 50.32%.

@@            Coverage Diff             @@
##             main    #1231      +/-   ##
==========================================
- Coverage   49.86%   49.56%   -0.30%
==========================================
  Files         255      256       +1
  Lines       14745    14990     +245
==========================================
+ Hits         7352     7430      +78
- Misses       7393     7560     +167

Impacted Files
Coverage Δ

lnbits/core/views/api.py
33.62% <17.11%> (-6.21%)
:arrow_down:

lnbits/core/views/generic.py
51.55% <45.00%> (-6.42%)
:arrow_down:

lnbits/core/helpers.py
62.06% <62.06%> (ø)

lnbits/app.py
59.89% <74.28%> (+0.13%)
:arrow_up:

lnbits/core/crud.py
58.50% <77.77%> (+0.90%)
:arrow_up:

lnbits/commands.py
64.81% <81.81%> (-10.19%)
:arrow_down:

lnbits/helpers.py
85.05% <85.36%> (-0.24%)
:arrow_down:

lnbits/core/__init__.py
100.00% <100.00%> (ø)

lnbits/core/models.py
64.23% <100.00%> (+0.52%)
:arrow_up:

lnbits/settings.py
85.55% <100.00%> (+0.16%)
:arrow_up:

... and 2 more

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

I want this merged so bad.
What about extensions sharing function names?
What happens if I try and install two extensions with the same name?

What about extensions sharing function names?

there is no conflict as each extension has its own namespace

What happens if I try and install two extensions with the same name?

extension IDs must be unique
the ID is also the path in the URL: https://legend.lnbits.com/withdraw/

withdraw in this case

if two extensions have the same name then the last one to be installed will overwrite the previous one

LGTM

Couple of notes:

Please make star theme the same as what we have in extensions.html
Remove JS from template file into a separate js file, as we do with other template files in core

Remove JS from template file into a separate js file, as we do with other template files in core

not so straightforward, can be addressed in a different PR

Have you removed ability to role back extension versions? if so can we have an install or update button on the manage dialogue, without clicking through cards.

will keep it like this for now, later can be improved

Hazaaah! LGTM (after I have made a video and composed a tweet)


ActionBar/Mode Show/Hide Uses API 11+ Methods

Calls through to the embedded NineOldAndroid classes which use setTranslationX and setAlpha. Should be able to use offsetTopAndBottom and ignore alpha on pre-11.

Fix'd


Add speach to text project

Is your feature request related to a problem? Please describe.
data = https://keithito.com/LJ-Speech-Dataset/
model = CTC
Automatic Speech Recognition using CTC
Describe the solution you'd like
THis project is inspired by https://keras.io/examples/audio/ctc_asr/#:~:text=CTC is an algorithm used to train deep,characters in the transcript align to the audio).
Describe alternatives you've considered
No response
Additional context
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

assign me


There are some errors in compiling.

There are some errors in compiling.
While compile this code, I found a error like this:\ 403 error

That is because of the environment. check your system.


May need a helm upgrade for arkade install linkerd

I have installed fresh k3s cluster, when I wanted to do arkade install linkerd, there was a problem with helm chart, see below

I quickly googled and found out that it needs to correct helm chart kind from batch/v1beta1 to batch/v1 which Linkerd stable-2.12.0 uses now

https://github.com/alexellis/arkade/blob/master/cmd/apps/linkerd_app.go
https://github.com/linkerd/linkerd2/issues/9523
Expected Behaviour

when I run arkade install linkerd should install correct via helm chart?? I am not sure, if apps is using manifests or charts, I am so terrible at understanding helm charts and where they come from and who stores where (YAML files are my nightmares)
Current Behaviour

I believe current behaviour is using old version of helm charts but k8s API has changed in 1.25 or 1.26?

[ ] No

Possible Solution

need to change helm chart's resource kind from batch/v1beta1 to batch/v1 which Linkerd stable-2.12.0 uses now, but feel free to point me in a direction where I can understand the root cause more
Steps to Reproduce (for bugs)

Install fresh version of k3s
do arkade install linkerd

Context
I am trying to install linkerd, If issue is not resolved, I will heck in with bare manifests. I am expecting some sort of helm chart breakage, they are quite famous with helm 3 and helm 2 incompatible changes breakthrough :dagger:
Your Environment

What Kubernetes distribution are you using?

k3s
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:57:26Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.6+k3s1", GitCommit:"9176e03c5788e467420376d10a1da2b6de6ff31f", GitTreeState:"clean", BuildDate:"2023-01-26T00:47:47Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"linux/amd64"}

Operating System and version (e.g. Linux, Windows, MacOS):

Linux sourbrownie 6.1.11-200.fc37.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Feb  9 19:20:24 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
NAME="Fedora Linux"
VERSION="37 (Workstation Edition)"
ID=fedora
VERSION_ID=37
VERSION_CODENAME=""
PLATFORM_ID="platform:f37"
PRETTY_NAME="Fedora Linux 37 (Workstation Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:37"
DEFAULT_HOSTNAME="fedora"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f37/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=37
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=37
SUPPORT_END=2023-11-14
VARIANT="Workstation Edition"
VARIANT_ID=workstation

What arkade version is this?

Version: 0.8.56
Git Commit: faff958880813d477a3b8d433a87a61fc1bc1611

no longer an issue https://github.com/alexellis/arkade/blob/master/cmd/apps/linkerd_app.go#L25, works when version is specified as 2.12.0

Hey thanks for dropping by. Would you like to send a PR?

if I change this constant, it is likely to break v1.26 below k8s clusters btw, it may not be an issue or it may be an issue https://github.com/alexellis/arkade/blob/master/cmd/apps/linkerd_app.go#L25

So Linkerd released a change that breaks in K8s 1.25 and lower? That doesn't sound like their style.
Can you confirm through testing?
If so, which I really find hard to believe, then we'd just maintain an if statement in the code after fetching the K8s version.
cc @wmorgan for comment

Clarifications:
arkade install linkerd installs using the linkerd CLI (as recommended) not helm.
The version currently installed is stable-2.11.1 (10/28/2021), which is behind the current release: stable-2.13.0
The minimum Kubernetes version supported by stable-2.11.0 was v1.17.0
The minimum Kubernetes version supported by stable-2.13.0 is v1.21.0
https://linkerd.io/2.13/tasks/upgrade/#upgrade-notice-stable-2-13-0

yea probably I should update the go file linkerdVersion to 2.13 as min version


https://www.internalfb.com/intern/bug-bounty/get-canary-token

Describe the bug
(Write your answer here.)
Did you try recovering your dependencies?

(Write your answer here.)
Which terms did you search for in User Guide?

(Write your answer here if relevant.)
Environment

(paste the output of the command here.)
Steps to reproduce

(Write your steps here:)

Expected behavior

(Write what you thought would happen.)
Actual behavior

(Write what happened. Please add screenshots!)
Reproducible demo

(Paste the link to an example project and exact instructions to reproduce the issue.)

Doesn't seem relevant to create-react-app.


Reimplemt Fink support

https://github.com/astrolabsoftware/fink-science-portal/pull/213

He he you were faster than me on this ;-) So basically this should work:
https://fink-portal.org/?query_type=Conesearch&ra=193.822&dec=2.89732&radius=5&startdate_conesearch=2021-07-01 05:59:36&window_days_conesearch=1

See https://fink-broker.org/2021-09-27-science-portal-updates/ for more information

@JulienPeloton thank you!


Nullable datetime casting

Is there an existing issue for this?

[X] I have searched the existing issues

Search terms
casting, datetime
Current Behavior
If you have a field like deleted_at which will be a nullable datetime casting it will create a js Date with the epoch datetime

Expected Behavior
when casting a null datetime it should remain null
Environment
No response
Anything else?
No response
Reproduction
No response

You could work around the issue by either setting a custom caster using a AttributeCaster object or setting the datetime value in the configuration.
I'm a little torn on wether this should be returning null or not. Purely on the basis that other casters are throwing an error if they can't cast as expected. eg.:
https://github.com/upfrontjs/framework/blob/79ee7fb84a26cf100bcce26ac2458c39fad255d1/src/Calliope/Concerns/CastsAttributes.ts#L217-L227

I think having
if (value === null) {
    return null;
}

after the line:
https://github.com/upfrontjs/framework/blob/79ee7fb84a26cf100bcce26ac2458c39fad255d1/src/Calliope/Concerns/CastsAttributes.ts#L280
would be acceptable as we know we're using the built in Date and an absence of value is normally denoted by null (which is what apis might return) not undefined


Start server without plugin configs.

What would you like to be added?
Ratify was designed to load plugin configs from a mounted file to start up service without CRD support. But since we already have CRD support, maybe we can consider stop reading from the mounted config file.
The reason I want to remove it is that for each plugin config, Ratify might have 2 different set-up, one is from config file, the other is from CR objects. And if users delete all CR objects of a plugin, it will fall back to the config file which might beyond users' expection as deleting all CR objects means delete all related plugins.
If we remove the config file loading, Ratify would fully rely on the CRD resources and need not to select between config file and CR objects.
Anything else you would like to add?
No response
Are you willing to submit PRs to contribute to this feature?

[ ] Yes, I am willing to implement it.

Agreed that having to keep track of which resource (CRD or configmap) overrides the other is very confusing. There are some fields that are only accessible in the CRD such as the executor config. Would we simply remove the overlapping config fields from the configmap and continue to use the same configmap but only for executor config? Or would we introduce another CRD?
Also, this wouldn't remove config file support for CLI scenarios right?


TaxonomyPicker: Show an error message for an invalid/unresolved input

Q
A

Bug fix?
[x]

Enhancement?
[x]

New feature?
[ ]

New sample?
[ ]

Related issues?
fixes #728

What's in this Pull Request?
Provides ability to optionally show an error message beneath the taxonomy picker control for any invalid input entered by the user.
Implementation Details
The input validation will happen based on newly introduced property named "validateInput" of type boolean.

If set to true, then an error message [Please fix invalid term(s)] will be shown for any invalid input.
If set to false or not defined, then it will continue to work as it works currently (i.e., no error message will be displayed).

Usage
In order to enable input text validation, you need to set validateInput={true} property of <TaxonomyPicker /> control.

Hi @devangbhavsar89,
Thanks for the PR.
I have a question though. How's the new property behave (or should behave) together with onGetErrorMessage prop set?

Hi @AJIXuMuK,
This  new text validation via. validateInput prop works independently from onGetErrorMessage prop.
Here is the output, with different set of configurations around those two props:
Scenario-1:
We set both validateInput and onGetErrorMessage props.
<TaxonomyPicker ... validateInput={true} ... onGetErrorMessage={(value) => { return !!value && value.length > 0 ? '' : 'This field is required'; }} />
Then the validation will be executed with following logic:

Initial state

When I add invalid term inside the text box of taxonomy picker control, an error indicating invalid term will be displayed.

When I remove all terms from the taxonomy picker control

Scenario-2:
We only set onGetErrorMessage props. That is validateInput is either not configured or set to false.
<TaxonomyPicker ... onGetErrorMessage={(value) => { return !!value && value.length > 0 ? '' : 'This field is required'; }} /> or <TaxonomyPicker ... validateInput={false} ... onGetErrorMessage={(value) => { return !!value && value.length > 0 ? '' : 'This field is required'; }} />
Then the validation will be executed with following logic:

Initial state

When I add invalid term inside the text box of taxonomy picker control, no error related to invalid term will be displayed.

When I remove all terms from the taxonomy picker control

So basically the idea of using that additional validateInput prop, is to not force that 'Please fix invalid term(s)' error message each time (as this may not be the desired behaviour for all use-cases). Hence I've kept this additional validation around unresolved input text as optional (which is driven by validateInput prop).
Hope this answers  your question. Please let me know, if you need more details around it.
Thanks!

Thank you @devangbhavsar89 for the detailed explanation!
I've merged the PR.

Hello @devangbhavsar89,
this is great ! It is possible to implement this PR also for v1 realease?

Hi @Matej4386,
I just checked the code base of v1 and it seems pretty much doable. So I'll implement this enhancement also for v1 release and create a PR for it.

@devangbhavsar89 thank you very much. I really appreciate it 👍

Hi guys!
@Matej4386 - I've created a PR #738, which includes same enhancement for v1 release.
@AJIXuMuK - I noticed that we do have a milestone 1.21.1 for v1. So hopefully, this will be included in v1 release.

Hi @devangbhavsar89, @Matej4386,
I've merged the PR, so it will be included in v1.21.1


Suggestion for parsing one object from keyA or keyB?

I'm dealing with an API that pulls a Profile object from the key profile or profileSummary depending on it being a lite object or not but I always want the User object that owns the Profile to have a profile (it should not be optional). For now, I'm doing:
class User: Mappable {
    var _p1: Profile?
    var _p2: Profile?

    var profile: Profile {
        return self._p1 == nil ? self._p2! : self._p1!
    }

    required init(map: Mapper) throws {
        _p1 = map.optionalFrom("profileSummary")
        _p2 = map.optionalFrom("profile")
    }
}

is there a more idiomatic way?

Yes! You can use:
class User: Mappable {
    var profile: Profile

    required init(map: Mapper) throws {
        profile = try map.from(["profileSummary", "profile"])
    }
}


Rely on buildpack binaries existing on the path

Modify build pod creation to handle the go cnb updates that put the app binary on the PATH.
See these changes to the go cnb: https://github.com/cloudfoundry/go-mod-cnb/commit/babdd6cbe22533e6b4c9d9e6fd81513b0bd8a14f

Codecov Report

Merging #202 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master    #202   +/-   ##
======================================
  Coverage    54.5%   54.5%
======================================
  Files          52      52
  Lines        2640    2640
======================================
  Hits         1439    1439
  Misses       1031    1031
  Partials      170     170

Impacted Files
Coverage Δ

pkg/apis/build/v1alpha1/build_pod.go
98.03% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 41dceff...853e4ae. Read the comment docs.


Automated cherry pick of #5536: e2e: switch from netshoot image to toolbox image

Cherry pick of #5536 on release-1.12.
#5536: e2e: switch from netshoot image to toolbox image
For details on the cherry pick process, see the cherry pick requests page.

/skip-all


Fix 'resources' type description

Summary:
This pull request addresses the discrepancy in the type definition for the resources field in the microservice model. The current implementation uses an array type, which causes issues during deployment. The correct type should be a plain JSON object.
Details:
The ent CLI does not perform any validation on the microservice model during pack execution, leading to potential errors during deployment.
Examples:
Example 1:

{
      "name": "testms",
      "stack": "custom",
      "dbms": "postgresql",
      "healthCheckPath": "/api/health",
      "commands": {
        "build": "...",
        "run": "...",
        "pack": "..."
      },
      "version": "0.0.5",
      "resources": [  // valid, no errors during pack phase
        {"cpu": "100m"},
        {"memory": "128M"}
      ]
}

Example 2:

{
      "name": "testms",
      "stack": "custom",
      "dbms": "postgresql",
      "healthCheckPath": "/api/health",
      "commands": {
        "build": "...",
        "run": "...",
        "pack": "..."
      },
      "version": "0.0.5",
      "resources": {  // valid, no errors during pack phase
        "cpu": "100m",
        "memory": "128M"
      }
}

Both examples work during the pack phase. However, if the deployed bundle is installed with the microservice defined as in Example 1, the error "plugin/testms.yaml invalid [...]" appears when clicking the install button in AppBuilder. On the other hand, the deployed bundle with the microservice defined as in Example 2 will also fail:
The "cm" pod logs a null pointer exception due to the missing "storage" parameter in the "resources" object. Could this parameter be made optional? Some containers do not require storage.

NPE detail
java.lang.NullPointerException: null
	at java.base/java.util.regex.Matcher.getTextLength(Matcher.java:1770) ~[na:na]
	at java.base/java.util.regex.Matcher.reset(Matcher.java:416) ~[na:na]
	at java.base/java.util.regex.Matcher.<init>(Matcher.java:253) ~[na:na]
	at java.base/java.util.regex.Pattern.matcher(Pattern.java:1134) ~[na:na]
	at org.entando.kubernetes.validator.descriptor.PluginDescriptorValidator.validatePluginResourcePropOrThrow(PluginDescriptorValidator.java:381) ~[classes!/:7.3.0-SNAPSHOT]
	at org.entando.kubernetes.validator.descriptor.PluginDescriptorValidator.validatePluginResources(PluginDescriptorValidator.java:366) ~[classes!/:7.3.0-SNAPSHOT]
	at org.entando.kubernetes.validator.descriptor.BaseDescriptorValidator.lambda$validateOrThrow$0(BaseDescriptorValidator.java:91) ~[classes!/:7.3.0-SNAPSHOT]
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) ~[na:na]

Changes:

Corrected the type of the resources field to a plain JSON object to ensure consistency and avoid deployment errors.

Thank you for pointing this out!


App SDK Migration (to depend on Holoscan SDK)

This is a large change set to review, for the reason that these are changes are to base the App SDK on Holoscan SDK and incremental merger into main is not feasible.
Major changes:

Exposing Holoscan SDK modules as monai.deploy ones by creating a similar sub module structure and importing Holoscan modules within each
Updated MONAI Deploy App SDK native modules/classes to the new core and other modules
Updated the example applications
Updated the Jupyter notebooks
Updated Doc changes

Example apps can be tested directly, though the model file and test files must be downloaded and staged local, with environment variables set to point to the input, model, and output folders.
Alternatively, the example apps can be tested with the Jupyter notebooks, as they include the steps to download the test data and set environment variables for input etc. However, please avoid 02_mednist_app-prebuilt as it pulls the code from the main branch, hence not going to work. Also, for the notebooks, the MAP packaging step needs to be modified to provide the App SDK Wheel file built in this branch, with the --monai-deploy-sdk-file option, as well as setting --sdk-version 0.6.0; this is needed because the Packager would otherwise pip install the App SDK from PyPi, which obviously does not have v0.6.0 App SDK yet. So, to prepare the Wheel file

checkout this branch, and cd to the project root
create and activate venv
./run setup
./run build
In the dist folder, find the Wheel file, e.g. monai_deploy_app_sdk-0.5.1+18.gf829a6c-py3-none-any.whl
For the Packaging step of all the Jupyter Notebooks, add the versions and sdk file, e.g.
monai-deploy package my_app -m {models_folder} -c my_app/app.yaml -t {tag_prefix}:1.0 --platform x64-workstation -l DEBUG --sdk-version 0.6.0 --monai-deploy-sdk-file {sdk_wheel}

Note:
Sonarcloud has complaints about many commented out code in the example apps, but they were left there for good reasons. It also complains about duplications, which are unavoidable because the example applications need to implement the same or similar code.
Unit test coverage is low, though the Jupyter notebooks are for functional and integration tests which exercise the App SDK more thoroughly.
Side Note:
Not impacting the review and such, just a bit of the history of this branch.
This pull request is from a dev branch which was merged onto from a prior migration dev branch with all the commits squashed, as seen below
$ git checkout main
$ git pull
$ git checkout -b mqin/v0.6_from_0.5.1
$ git merge --squash mqin/sdk_migration
$ git commit -s
$ git push --set-upsream v0.6_from_0.5.1

Hi @MMelQin
Quick question as I am reviewing this. Did we change how app().run() functions.  I remember in the previous version you can do the following for setting the input directory as app().run(input=path_to_some_input_dir). But now we cannot do this, even though the Application has an argument input.
I tried the simple_imaging_app in the examples and it works fine. But when I try to change the input directory to something else as
app().run(input='./input2')

I get the following error
(monai-deploy-test) gupta@DIGI1036734:~/disk/Tools/CodeReview/monai-deploy-app-sdk/examples/apps/simple_imaging_app$ python app.py
Traceback (most recent call last):
  File "app.py", line 78, in <module>
    App().run(input='./input2')
TypeError: run(): incompatible function arguments. The following argument types are supported:
    1. (self: holoscan.core._core.Application) -> None

Invoked with: <holoscan.Application: name:>; kwargs: input='./input2'

@vikashg Thanks for reviewing the pull request. The run method does not have the desired behavior that we had in the App SDK 0.5 and earlier, basically this is saying that the input and output folders can NOT be passed in via this method. Also, on the application does not parse command line arguments for setting the input and output folders, either. This is mostly due to the underlying Holoscan SDK.
The environment variables are now used to define the input and output folders, though the parsing of such is still not the built-in functionalities of the base Application class, and each derived Application class needs to explicitly create the app context to parse them.

Thanks @MMelQin. I am going over it. Few things are interesting and definitely new like Fragments and Condition. So I am going over that on the holoscan documentation.

Thanks @MMelQin. I am going over it. Few things are interesting and definitely new like Fragments and Condition. So I am going over that on the holoscan documentation.

Thanks @vikashg . Yes, the underlying Holoscan SDK does introduces some new capabilities while losing a few for the time being, e.g. decorators for I/O spec and dependencies, and auto-mapping of file I/O for the app.
The Application class derives from Fragment, while an application implementation can also have multiple concrete fragments, enabling the app to be run on multiple nodes, each with specific fragment(s). Right now, none of the examples makes use of this.
The Condition is a very useful, allowing the Operator class to define certain input as optional, which does not require the actual input at runtime before it can start executing. Similarly, a output can be defined as "dangling", meaning downstream receivers are optional. This makes the Operator class implementation much more flexible.
I plan to have a migration guide as part of the release note to highlight the few main changes.

Thank you so much @vikashg for the approval. For the enhancement suggestions, we'll create new issues to address them in the coming releases.


Audio context within video plugin

I am trying to use the video-button-response from jspych 6.1.0 on google chrome (Version 83.0.4103.106). When I run the code, this error comes up:
jspsych.js:44
The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu
It appears that it was fixed by someone in the audio-button plugin (https://github.com/jspsych/jsPsych/issues/518), but I am not sure where to modify the audio context in the video plugin

Is this the very first trial, or do you have something like html-button-response before this trial?

This is the first trial; I am trying to figure out how to work with videos in jspsych, so the code is very basic

My experiment

That's the error then. You need a trial that requires user interaction (like a button response or instructions) before the video trial. I don't believe this is an issue with jsPsych.

Just to elaborate, the error message is harmless if things are working as expected.


poquito requests

Closes #1914
Part of #2175
Description:

optimistic request to tx query after tx succeeds
query balance & rewards every 10 blocks

Thank you! 🚀

For contributor:

[ ] Added entries in PENDING.md with issue # and GitHub username
[ ] Reviewed Files changed in the github PR explorer
[ ] Attach screenshots of the UI components on the PR description (if applicable)
[ ] Scope of work approved for big PRs

For reviewer:

[ ] Manually tested the changes on the UI

wish it was a poquito PR 😆


ignore JetBrains IDEs, tidy-up imports

Imports sorted in order:

stdlib
external crates
atuin/internal

I'm happy to accept this, could you create the relevant rustfmt.toml file to ensure it stays updated?

It requires rustfmt nightly, are you ok with that?

What features are you trying to use?

imports_granularity and group_imports

stable rustfmt only has reorder_imports which is... eh
https://rust-lang.github.io/rustfmt/?version=v1.4.38&search=imports

I'd be happy to merge this with just reorder_imports, I don't really think it's worth depending on nightly fmt for this.


[WIP] listener: support multiple addresses

Commit Message: listener: support multiple addresses
Additional Description:
The new field addresses was added. The additional listen addresses can be added. But a listener only can support single socket type, mixed socket type will be rejected.
When the ListenerImpl has multiple addresses, ListenSocketFactory will be created for each address. And ConnectionHandlerImpl will create ActiveListener for each address also.
Risk Level: medium
Testing: TODO
Docs Changes: TODO
Release Notes: TODO
Platform Specific Features: no
Fixes #11184

cc @mattklein123

This is a very rough PoC yet, maybe it is ok for a high-level review.
Anyway, I will update it in 2022

When the ListenerImpl has multiple addresses, ListenSocketFactory will be created for each address. And ConnectionHandlerImpl will create ActiveListener for each address also

can we shared same ActiveListener across multiple addresses?

When the ListenerImpl has multiple addresses, ListenSocketFactory will be created for each address. And ConnectionHandlerImpl will create ActiveListener for each address also

can we shared same ActiveListener across multiple addresses? 🤔

Most of the things should be able to share except the stats, Each address should have its own stats, which managed by ActiveListener.

Each address should have its own stats, which managed by ActiveListener

Consider how this interacts with stat_prefix on the listener. We may want to allow configuring a stat_prefix for each address.

Each address should have its own stats, which managed by ActiveListener

Consider how this interacts with stat_prefix on the listener. We may want to allow configuring a stat_prefix for each address.

got it, thanks!

/wait
Still work-in-progress

/wait
still WIP

/wait
still working on the tests

/wait
The major code was finished, and should passed all the existing tests. Need to add new tests for new functionality.

/wait

/retest

still working on it

@ggreenway @mattklein123 @lambdai I think I did enough PoC and investigation now, it is time to look for your guys' suggestions.
The background is multiple addresses in single listener can benefit the case of dual-stack. Since people have the same config for the ipv4 address and ipv6 address. Currently, they have to create duplicated listener config for them. So the multiple addresses has two benefits:

Get rid of duplicated Envoy config, reduce the bytes sent from the control plane to the Envoy.
Reduce the duplicated resources consume inside Envoy.

The other potential use cases also describe in the issue https://github.com/envoyproxy/envoy/issues/11184 and https://github.com/envoyproxy/envoy/issues/16123
Here is also the Istio dual-stack support issue https://github.com/istio/istio/issues/37533, and currently they depend on multiple addresses now.
The API is pretty simple, I added repeated item for new message ListenAddresses in the Listener config to instead of the old one.  https://github.com/envoyproxy/envoy/pull/19367/files#diff-f76ce906fb5b9dde8e23a117a524f178e43b28c1002dc7d1cd3d98ac134c6a23R39-R47
message ListenAddresses {
  // Optional prefix to use on listener stats. If empty, the stats will be rooted at
  // `listener.<address as string>.`. If non-empty, stats will be rooted at
  // `listener.<stat_prefix>.`.
  string stat_prefix = 1;

  // The address that the listener should listen on.
  core.v3.Address address = 2 [(validate.rules).message = {required: true}];
}

The key thing I got from the initial review feedback is each address expects to have their own stats.
In the end, I found the major trouble is coming from creating stats for each address (there are other small troubles but I think it can be discussed in the code review).
Since all the Envoy filter/extension using the same pattern, using HCM as example here. Envoy create the filter config first and the config is shared for all the instances of filter.
https://github.com/envoyproxy/envoy/blob/e33f444b4c5ee783a8a1126f3186832f4a031a39/source/extensions/filters/network/http_connection_manager/config.cc#L818
Then we have factory lambda method/factory object https://github.com/envoyproxy/envoy/blob/e33f444b4c5ee783a8a1126f3186832f4a031a39/source/extensions/filters/network/http_connection_manager/config.cc#L827-L828
And those filters/extensions reference the address-specific stats scope inside the filter config and shared among all the filter instances. That means we have two options here, we create filter config and filter factory for each address, or tell the filter factory create an instance for which address, then the filter factory can reference to the specific address stat scope.
For the option 1:
This is what the current PR code implemented.  I created an per-address context struct PerAddressContext  inside ListenerImpl
https://github.com/envoyproxy/envoy/pull/19367/files#diff-e7a517ffa60d492c4979c569cc2857ed4bdc89e9d188ae3167a777cdf264e189R550-R570
Then ListenerImpl will hold listener filter/network filter/transport socket related contexts and listener filter/network filter/transport factory for each address.
https://github.com/envoyproxy/envoy/pull/19367/files#diff-e7a517ffa60d492c4979c569cc2857ed4bdc89e9d188ae3167a777cdf264e189R634
Also simple wrap call for per address listener config https://github.com/envoyproxy/envoy/pull/19367/files#diff-e7a517ffa60d492c4979c569cc2857ed4bdc89e9d188ae3167a777cdf264e189R320 which can reference to the correct filter/network filter/transport socket related contexts and listener filter/network filter/transport factory for each address.
In the end, in the ConnectionHandlerImpl, we still create ActiveTcpListener and ActiveUDP/QuicListener for each address. That means only the control path(main thread) aware the multiple addresses inside listener, all the data path(worker threads) doesn't aware that.
The benefits for this options are:

All the changes is inside the control path.
No filter/extension need to be modified.

The downside for this option are:

There still have some duplicated resource consume inside Envoy. Like we have to create contexts obj and factory obj for each address. But it didn't add more resource consume compare the create fully duplicated listener, at least it reduce some duplicate resource consume in the control path.

Since the downside of option 1, I want to give a try whether I can get rid of all the duplicated resource consume inside Envoy, so I give a try on the option 2
For the option 2:
If I didn't want to create duplicated contexts and factory objects, then I have let the filter factory aware that the filter instance is created for which address. So at least I need to pass new parameter to the filter factory method, like address. Then the filter factory can query the specific address stat scope from the config. As the above side, currently, the filter config will create stats objects and shared with all the filter instances, then I have to modify that, let filter config only reference to all the address-specific stat scopes, then let the filter instance create the stats objs by itself. That mean not only just add new parameter to the factory method, also change the filter code pattern here. It comes to not complex for change the HCM. But in the end, it becomes complex for change the tls transport sockets. I can't easily just create stats inside SslSocket, I also create SslServerContext for each address, and choice the correct on when create SslSocket. This there more filters/extensions are waiting for change, like the listener filter and QUIC code path. It is also terrible for asking each filter factory implementation to aware that the instance should be created for which listener address .
So the benefits for option 2:

get rid of all the duplicated resource consume inside envoy, which further step, we also can create one ActiveTcpListener for multiple addresses.

The downsides are:

Asking each filter/extension to aware the instance is created for which listener address
Change across control path and data path, and network filter/listener filter/transport socket extension, and related QUIC code path.

So yes, in the end, I prefer the Option 1 here. The API already get rid of duplicated config send from control plane, it get rid of some resource consume inside Envoy control path.
Let me know what do you think about it, also if there is more easy way I didn't aware. Thanks in advance for any feedback! also sorry for such looong text.
cc @jacob-delgado

Append a tl;dr, in the case the above text is too long...
I got two options here:

Still create filter/extension's factory/context obj for each address. But limit the change inside the control path(main thread)
Get rid of duplicated factory/context obj between addresses also, but need to change the filter/extension factory obj to be aware of which listener address is served to.

I prefer option 1, and looking for feedback on

whether option 1 is enough for this feature
whether option 1 implementation (the current PR code implement) has correct design from the high-level

Appreciate for any feedback, and thanks in advance!

The benefits of this Option 1 are:

All the changes are inside the control path. (Major modification in the ListenerImpl, ListenerManagerImpl and ConnectionHandleImpl)
No filter/extension needs to be modified.

The downside of Option1 are:

There still have some duplicated resources consumed inside Envoy. Like we have to create context obj and factory obj for each address. But it didn't add more resource consumption compared to the create a fully duplicated listener, at least it reduce some duplicate resource consumption in the control path.

Append to Option 1, most configuration is coming from HCM in most cases, so I checked RDS and new ECDS, ensure they are duplicated or not.
For RDS, in Option 1 we still can share the same RouteConfigProvider for all the addresses in the same listener.
https://github.com/envoyproxy/envoy/blob/3883a94c0d66fc9c58ca5c11cadf4007b5ee3287/source/common/rds/route_config_provider_manager.cc#L80-L81
For ECDS https://github.com/envoyproxy/envoy/pull/11826, I didn't see a similar code as RDS to reuse the config provider, but I think it shouldn't be hard to add.

Can we just say that when using multiple addresses the stat scope is shared? IMO this is fine. If someone actually cares they can split the listeners. Even with a shared scope you could still have per address listener only stats which seems ok to me from a monitoring perspective?

Can we just say that when using multiple addresses the stat scope is shared? IMO this is fine. If someone actually cares they can split the listeners. Even with a shared scope you could still have per address listener only stats which seems ok to me from a monitoring perspective?

Yea, with shared stats, then the whole is much more simple. It is worth to explore this requirement again. @jacob-delgado @ggreenway
Thanks for the reply!

One question I have,

Get rid of duplicated factory/context obj between addresses also, but need to change the filter/extension factory obj to be aware of which listener address is served to.

For a dual-stack system that supports native IPv4 and IPv6 support (e.g. IPv4 traffic is proxied to IPv4 endpoints, same for IPv6) I'm thinking Envoy should have the following

A listener with multiple addresses (say, <IP_ADDRESS> and ::)
This will be configured with route/cluster in mind
There will be changes to the EDS to have a set of "ipv4" and "ipv6" addresses.
a) There will have to be some ipFamily type associated with a request to mark the request. I'm thinking it may be possible to use the Metadata fields See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#config-core-v3-metadata.

Would there be a way to have the metadata field work separately for each address? Is that how Envoy would want to support dual-stack listeners and dual-stack support?

3. There will be changes to the EDS to have a set of "ipv4" and "ipv6" addresses.
a) There will have to be some ipFamily type associated with a request to mark the request. I'm thinking it may be possible to use the Metadata fields See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/base.proto#config-core-v3-metadata.

@lambdai has a solution for how to choose ipv4 and ipv6 endpoint https://github.com/envoyproxy/envoy/issues/16123#issuecomment-827016343, which is my next step.
For metadata, I think it is still a workaround since you still have to have duplicated filter-chain config, here is an example I have tried before:
static_resources:
  listeners:
  - name: dual_stack_listener
    reuse_port: false
    addresses:
    - socket_address:
        protocol: TCP
        address: "<IP_ADDRESS>"
        port_value: 13333
    - socket_address:
        protocol: TCP
        address: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
        port_value: 13333
    # We are going to have two filters. One for IPv4, another for Ipv6. This duplicated can be get rid of by the multiple addresses listener support in Envoy.
    filter_chains:
    # Here is the filter chain for IPv4. Using the filter_chain_match to filter out ipv4 stream.
    - filter_chain_match:
        prefix_ranges:
        - address_prefix: <IP_ADDRESS>
          prefix_len: 24
      filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: dual_stack_cluster
                  # Add ipv4 metadata for it.
                  metadata_match:
                    filter_metadata:
                      envoy.lb:
                        ipfamily: 'ipv4'
          http_filters:
          - name: envoy.filters.http.router
    # Here is the filter chain for IPv6.
    - filter_chain_match:
        prefix_ranges:
        - address_prefix: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
          prefix_len: 128
      filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: dual_stack_cluster
                  # Add ipv6 metadata for it.
                  metadata_match:
                    filter_metadata:
                      envoy.lb:
                        ipfamily: 'ipv6'
          http_filters:
          - name: envoy.filters.http.router
  clusters:
  - name: dual_stack_cluster
    connect_timeout: 0.25s
    type: STATIC
    lb_policy: round_robin
    # This is subset loadbanacer config.
    lb_subset_config:
      fallback_policy: NO_FALLBACK
      default_subset:
        stage: prod
      subset_selectors:
      - keys:
        - ipfamily
    protocol_selection: USE_DOWNSTREAM_PROTOCOL
    http2_protocol_options: {}
    dns_lookup_family: ALL
    load_assignment:
      cluster_name: dual_stack_cluster
      endpoints:
      # So we can put ipv4 and ipv6 endpoints in single cluster but with different metadata
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: <IP_ADDRESS>
                port_value: 33333
          metadata:
            filter_metadata:
              envoy.lb:
                ipfamily: 'ipv4'
        - endpoint:
            address:
              socket_address:
                address: ::1
                port_value: 33334
          metadata:
            filter_metadata:
              envoy.lb:
                ipfamily: 'ipv6'

yeah I don't think this change by itself will fix duplicate filter chains in all cases, but it's a step in the right direction. I would strongly suggest we just add multiple addresses as a start with no other major changes. I think this will help quite a few use cases. Then from there we can refine as needed.

yeah I don't think this change by itself will fix duplicate filter chains in all cases, but it's a step in the right direction. I would strongly suggest we just add multiple addresses as a start with no other major changes. I think this will help quite a few use cases. Then from there we can refine as needed.

Can we force the user to specify a stat_prefix when using multiple addresses? since when the user didn't specify the stat_prefix, then envoy will use the listener address as the prefix, but it won't apply for multiple addresses.

Or we use the listener name as the default stat_prefix, but when the user didn't specify a name, it gonna be a generated uuid, that confuse the end user also, since they don't have a way to match the uuid to the specific listener.

IMO I wouldn't overthink this. You could just do the first address and spit out a warning or something.

Or we use the listener name as the default stat_prefix, but when the user didn't specify a name, it gonna be a generated uuid, that confuse the end user also, since they don't have a way to match the uuid to the specific listener.

IMO I wouldn't overthink this. You could just do the first address and spit out a warning or something.

thanks, that is nice call!

/wait stil work-in-progress

Unassigning myself. Please reassign when not draft.

/retest

/retest

Is this PR ready for full review? Also, this is very big. Is there any way to split this into smaller chunks? Thank you.
/wait-any

Is this PR ready for full review? Also, this is very big. Is there any way to split this into smaller chunks? Thank you.

Yes, this is ready for a full review. Now we have two votes on the split PR, then let me split it. Also, the API change already separated out https://github.com/envoyproxy/envoy/pull/21391, appreciate the review and feedback!


Converted jquery.dragster.js from jquery plugin to vanilla js

Summary

Converted jquery.dragster.js from jquery plugin to vanilla js
Ticket Link

Fixes: https://github.com/mattermost/mattermost-server/issues/11429

Also, this fails on existing test

Tests passing on local.

Removed target.off jquery function in last commit. Using removeEventListener from inside the lib using js closure.

Doing querySelector instead of querySelectorAll inside the lib now.

Tests passing on local.

I can see it's failing.  Curious, how do you run the test on local?

Tests passing on local.

I can see it's failing. Curious, how do you run the test on local?

Passing now.

Merged! Thanks @niklabh! :tada:


Failure to build from source/hackage

Hi! Firstly: thank you for structured-haskell-mode!
I seem to be having some trouble building, both from hackage and source.
System information
$ cabal --version
cabal-install version <IP_ADDRESS>
using version <IP_ADDRESS> of the Cabal library

$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3

$ uname -rsm
Darwin 14.1.0 x86_64

Building from hackage:
Note: hackage package list is up to date
$ cabal install structured-haskell-mode
Resolving dependencies...
Configuring descriptive-0.9.3...
Building descriptive-0.9.3...
Failed to install descriptive-0.9.3
Build log ( /Users/cmacrae/.cabal/logs/descriptive-0.9.3.log ):
Configuring descriptive-0.9.3...
Building descriptive-0.9.3...
Preprocessing library descriptive-0.9.3...
[1 of 7] Compiling Descriptive.Internal ( src/Descriptive/Internal.hs, dist/build/Descriptive/Internal.o )
[2 of 7] Compiling Descriptive      ( src/Descriptive.hs, dist/build/Descriptive.o )
[3 of 7] Compiling Descriptive.Char ( src/Descriptive/Char.hs, dist/build/Descriptive/Char.o )
[4 of 7] Compiling Descriptive.Form ( src/Descriptive/Form.hs, dist/build/Descriptive/Form.o )
[5 of 7] Compiling Descriptive.Formlet ( src/Descriptive/Formlet.hs, dist/build/Descriptive/Formlet.o )
[6 of 7] Compiling Descriptive.Options ( src/Descriptive/Options.hs, dist/build/Descriptive/Options.o )
[7 of 7] Compiling Descriptive.JSON ( src/Descriptive/JSON.hs, dist/build/Descriptive/JSON.o )

src/Descriptive/JSON.hs:199:33: Not in scope: ‘floatingOrInteger’

src/Descriptive/JSON.hs:213:39: Not in scope: ‘toRealFloat’
cabal: Error: some packages failed to install:
descriptive-0.9.3 failed during the building phase. The exception was:
ExitFailure 1
structured-haskell-mode-1.0.20 depends on descriptive-0.9.3 which failed to
install.

Building from GitHub source:
$ git clone github:chrisdone/structured-haskell-mode
git clone github:chrisdone/structured-haskell-mode
Cloning into 'structured-haskell-mode'...
remote: Counting objects: 1690, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 1690 (delta 2), reused 0 (delta 0), pack-reused 1683
Receiving objects: 100% (1690/1690), 2.38 MiB | 2.22 MiB/s, done.
Resolving deltas: 100% (1168/1168), done.
Checking connectivity... done.

$ cd structured-haskell-mode/
cd structured-haskell-mode/

$ cabal install
cabal install
Resolving dependencies...
Configuring descriptive-0.9.3...
Building descriptive-0.9.3...
Failed to install descriptive-0.9.3
Build log ( /Users/cmacrae/.cabal/logs/descriptive-0.9.3.log ):
Configuring descriptive-0.9.3...
Building descriptive-0.9.3...
Preprocessing library descriptive-0.9.3...
[1 of 7] Compiling Descriptive.Internal ( src/Descriptive/Internal.hs, dist/build/Descriptive/Internal.o )
[2 of 7] Compiling Descriptive      ( src/Descriptive.hs, dist/build/Descriptive.o )
[3 of 7] Compiling Descriptive.Char ( src/Descriptive/Char.hs, dist/build/Descriptive/Char.o )
[4 of 7] Compiling Descriptive.Form ( src/Descriptive/Form.hs, dist/build/Descriptive/Form.o )
[5 of 7] Compiling Descriptive.Formlet ( src/Descriptive/Formlet.hs, dist/build/Descriptive/Formlet.o )
[6 of 7] Compiling Descriptive.Options ( src/Descriptive/Options.hs, dist/build/Descriptive/Options.o )
[7 of 7] Compiling Descriptive.JSON ( src/Descriptive/JSON.hs, dist/build/Descriptive/JSON.o )

src/Descriptive/JSON.hs:199:33: Not in scope: ‘floatingOrInteger’

src/Descriptive/JSON.hs:213:39: Not in scope: ‘toRealFloat’
cabal: Error: some packages failed to install:
descriptive-0.9.3 failed during the building phase. The exception was:
ExitFailure 1
structured-haskell-mode-1.0.20 depends on descriptive-0.9.3 which failed to
install.

Sorry, should this have perhaps been reported against descriptive?

Is your version of scientific < <IP_ADDRESS>?

Well... it seemed I didn't even have scientific present.
Following a cabal install scientific (it grabbed <IP_ADDRESS>), cabal install structured-haskell-mode built and installed it successfully :)
Thanks! I'll close this off


Added Consul status to the Health Check attributes

Added Consul status to the Health Check attributes. This enables to pass an initial status for health so that any monitoring services do not mark the service as critical as service enters the initial state. IN teh absence of this, service enters as critical giving a false alarm sometimes when monitoring for critical services. By enabling this we can pass "warning" for example as initial status and consul will eventually make the service as passing after first health check interval

Folks, any update on this PR? Thanks for your time.

Folks, any update on this PR? Thanks for your time.

Looks great. Needs documentation. Also maybe a better name. It's really the initial status. Maybe check_initial or something like that.

+1. Services are marked critical for a long time when check_interval is high.

Any update on this?

Hi, Is there any update on this PR?

+1

Still needs changes from OP for documentation and the naming.

Closing in favor of #445, which has better naming as is documented.


knowsmore: 0.1.38 -> 0.1.43

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for knowsmore is: Tool for pentesting Microsoft Active Directory
meta.homepage for knowsmore is: https://github.com/helviojunior/knowsmore
meta.changelog for knowsmore is: https://github.com/helviojunior/knowsmore/releases/tag/v0.1.43
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.1.43 with grep in /nix/store/m7azx022csisg518qgrys4cbhgz3w6ya-knowsmore-0.1.43
found 0.1.43 in filename of file in /nix/store/m7azx022csisg518qgrys4cbhgz3w6ya-knowsmore-0.1.43

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

knowsmore

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/m7azx022csisg518qgrys4cbhgz3w6ya-knowsmore-0.1.43 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A knowsmore https://github.com/r-ryantm/nixpkgs/archive/a03c8d60e288204068793c2fa8d4927fe50b3499.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/a03c8d60e288204068793c2fa8d4927fe50b3499#knowsmore

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/m7azx022csisg518qgrys4cbhgz3w6ya-knowsmore-0.1.43
ls -la /nix/store/m7azx022csisg518qgrys4cbhgz3w6ya-knowsmore-0.1.43/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

knowsmore
knowsmore.dist

Maintainer pings
cc @fabaff for testing.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 333256 run on x86_64-linux 1

2 packages built:

knowsmore
knowsmore.dist


bug in co_nvm_sim

The loop in DrvNvmRead and DrvNvmWrite is incorrect.
I think its dead "example" code, but you might break some test code in the future.
while ((pos < NVM_SIM_SIZE) && (size > 0))
should be
while ((pos < NVM_SIM_SIZE) && (size > idx))
Offtopic: this seems like a very solid implementation and properly documented stack! thx for sharing.

Hi thank you for your issue. You are right, the loop is not correct. The looping of pos is correctly through the size of the available NVM memory - but the size, which is looping through the size of the given buffer is missing the decrement statement in the while loop:
static uint32_t DrvNvmRead(uint32_t start, uint8_t *buffer, uint32_t size)
{
    uint32_t idx = 0;
    uint32_t pos;

    idx = 0;
    pos = start;
    while ((pos < NVM_SIM_SIZE) && (size > 0)) {
        buffer[idx] = NvmMemory[pos];
        idx++;
        pos++;
        size--;      /* <<<< that was the intension - but missing <<<< */
    }

    return (idx);
}

Note: I think, your solution is the better one. I would change it slightly, because it's easier for me to follow the code while reading when we use the constant values at the right side of a relation:
while ((pos < NVM_SIM_SIZE) && (idx < size)) {


Unable to resolve module react-addons-shallow-compare

After installation the following error shows up
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2574): UnableToResolveError: Unable to resolve module react-addons-shallow-compare from /path_to_my_project/node_modules/react-native-fence-html/HTML.js:

@jaseemabbas just manually run npm install --save react-addons-shallow-compare fixed the issue for me

+1

Same error here. the suggested solution did not fix the problem

This issue still persists after running npm install --save react-addons-shallow-compare

+1 =/


[BUG] Upgrade: VMs fail to live-migrate to other hosts in some cases

Describe the bug

The destination pod of a live-migrating VM continues erroring. The migration can never succeed.
To Reproduce
Steps to reproduce the behavior:

Create a v1.0.0 cluster.
Upgrade to a custom ISO.

I saw the upgrade-repo VM can't be live-migrated:

The failure happens on the second migration of VM, the first migration succeeds.

First migration (OK):

source pod image: registry.suse.com/suse/sles/15.3/virt-launcher:0.45.0-8.4.3
destination pod image: registry.suse.com/harvester-beta/virt-launcher:0.49.0-2

Second migration and rest (Failure):

source pod image:registry.suse.com/harvester-beta/virt-launcher:0.49.0-2
destination pod image: registry.suse.com/harvester-beta/virt-launcher:0.49.0-2

Destination pod fails with:
{"component":"virt-launcher","kind":"","level":"info","msg":"Prepared migration target pod","name":"upgrade-repo-hvst-upgrade-pxs8j","namespace":"harvester-system","pos":"server.go:171","timestamp":"2022-03-17T16:44:16.138343Z","uid":"5be1bfa7-df6a-4ef2-be38-c6b8e7d91857"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Signaled target pod virt-launcher-upgrade-repo-hvst-upgrade-pxs8j-fkmcj to cleanup","name":"upgrade-repo-hvst-upgrade-pxs8j","namespace":"harvester-system","pos":"server.go:151","timestamp":"2022-03-17T16:44:16.941232Z","uid":"5be1bfa7-df6a-4ef2-be38-c6b8e7d91857"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Signaled target pod virt-launcher-upgrade-repo-hvst-upgrade-pxs8j-fkmcj to cleanup","name":"upgrade-repo-hvst-upgrade-pxs8j","namespace":"harvester-system","pos":"server.go:151","timestamp":"2022-03-17T16:44:16.969113Z","uid":"5be1bfa7-df6a-4ef2-be38-c6b8e7d91857"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Signaled target pod virt-launcher-upgrade-repo-hvst-upgrade-pxs8j-fkmcj to cleanup","name":"upgrade-repo-hvst-upgrade-pxs8j","namespace":"harvester-system","pos":"server.go:151","timestamp":"2022-03-17T16:44:17.008409Z","uid":"5be1bfa7-df6a-4ef2-be38-c6b8e7d91857"}
panic: received early exit signal

goroutine 1 [running]:
main.waitForDomainUUID(0x4a45e1b600, 0xc00047f620, 0xc0005a0000, 0x55d89c9d8498, 0xc001a98370, 0xc00047f620)
	/home/abuild/rpmbuild/BUILD/kubevirt-0.49.0/go/src/kubevirt.io/kubevirt/cmd/virt-launcher/virt-launcher.go:267 +0x52c
main.main()
	/home/abuild/rpmbuild/BUILD/kubevirt-0.49.0/go/src/kubevirt.io/kubevirt/cmd/virt-launcher/virt-launcher.go:499 +0x1165
{"component":"virt-launcher","level":"info","msg":"Reaped pid 16 with status 512","pos":"virt-launcher.go:549","timestamp":"2022-03-17T16:44:17.840689Z"}
{"component":"virt-launcher","level":"error","msg":"dirty virt-launcher shutdown: exit-code 2","pos":"virt-launcher.go:567","timestamp":"2022-03-17T16:44:17.840791Z"}
{"component":"virt-launcher","level":"error","msg":"error when checking for istio-proxy presence","pos":"virt-launcher.go:657","reason":"Get \"http://localhost:15021/healthz/ready\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)","timestamp":"2022-03-17T16:44:19.842379Z"}

virt-launcher-upgrade-repo-hvst-upgrade-pxs8j-fkmcj.log
Expected behavior

VMs should be live-migrated.
Support bundle

supportbundle_a968c64f-604a-4bce-9ed1-d2bee6fe58fc_2022-03-17T17-04-55Z.zip
Environment:

Harvester ISO version: Custom build because there are some ongoing dependencies under development.
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630):

Additional context
Add any other context about the problem here.

Didn't see this when upgrading v1.0.1 to master builds so far.
Probably because we don't have too many changes yet (e.g. no KubeVirt, Rancher, RKE2, and Longhorn changes)

Didn't see this issue recently. Re-open if needed.


Mimic "Google Scholar PDF Reader" features

Chrome has a new "Google Scholar PDF Reader" extension for academic articles. The extension allows clicking in-text citations to show, in a popup: the cited article's title, full author list, and article summary. That avoids losing your reading place every time you want to see what paper a citation corresponds to. It also avoids having to manually copy, paste, search, and find each citation online to read the abstract. The extension also automatically adds a linked table of contents for the current PDF, even for PDFs without a built-in linked table of contents.
To convey how much people like these features: the extension was only released a few months ago and already has 100k users.
Could these features be added to pdf.js? (It sounds to me like Firefox wouldn't allow these features to be implemented as a Firefox extension?)

FYI, this Google extension is based on pdf.js

Comment for better reach.

Any update/news on this pending feature?

No news, and we have other things with higher priorities in our roadmap at the moment.

This bookmarklet gives a popup preview for internal links like figures and citations. The only issue is I haven't found a way to automate manually clicking/calling the bookmarklet on every PDF load.
Maybe that repository's code could be integrated into pdf.js?

I don't think so, since that code can end up trigger rendering a lot when just moving the mouse around which may hurt overall performance in many cases.
This is made worse by the fact that there's no attempt, as far as I can tell, to actually cancel (and clean-up) properly once the preview is no longer needed.

I don't think so, since that code can end up trigger rendering a lot when just moving the mouse around which may hurt overall performance in many cases. This is made worse by the fact that there's no attempt, as far as I can tell, to actually cancel (and clean-up) properly once the preview is no longer needed.

Ah, fair enough. (For what it's worth, I haven't noticed any issues myself in years of usage. But obviously other people will have different usages, plus I might just be overlooking issues.)

Any updates?

Is Google Scholar PDF reader extension an open source project??
I'm thinking of adding annotation features somehow...

I've created a modified version of the Google Scholar PDF Reader extension that adds annotation capabilities while maintaining the core citation preview features: https://github.com/salcc/Scholar-PDF-Reader-with-Annotations. The extension is open source - feel free to use it or contribute!
Sorry for the slight off-topic reply, but I thought many people that come here just want these features (like me a few months ago)

Wow, I will take a look soon!!
Thank you a lot 😆

I've just used the extension, and it works just fine!! thx for your work!
I might create PR for a new feature later.


Users/pryenugu/brink back filtering to win rm tasksm92

Bringing back machine and tag based filtering. Updated help markdowns to show it only works with machine groups. Also moved to the Advanced section.

Looks good


Small fixes

Coverage remained the same at 81.775% when pulling 18b92b795587e4e21cff5d42a9e28b18f91ed271 on small-fixes into 5d500bdf095835ff223bbdb3d4c78a7c4df01216 on master.


Update workflows

Description of changes:
Looks like the linter bit-rotted: https://github.com/aws/aws-lambda-go/pull/486#issuecomment-1478885641
updating to latest release!
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@bmoffatt Was just reviewing the latest 1.39.0 release and saw the WithSetup bit that was added as part of this PR but not described in the release notes or in this PR. Intentional? If so, cool but just wanted to make sure 👍

@bmoffatt Was just reviewing the latest 1.39.0 release and saw the WithSetup bit that was added as part of this PR but not described in the release notes or in this PR. Intentional? If so, cool but just wanted to make sure 👍

Good eye, that wasn't intentional - I was too hasty with the golangci-linit version fix in https://github.com/bmoffatt/aws-lambda-go/commit/31b9f5c58fd109150002922c6391a93dc2f7d7c4 and didn't notice my dirty workspace
I'm gonna yank the WithSetup additions in a v1.39.1 release - I think the code that got released is functional, but I wasn't done with testing


Clear schedule feature

Stacked PR on #159, merge ONLY WHEN #159 is merged
Closes #167
adds new clear schedule, as shown below in screenshots :
BEFORE COMMAND

AFTER COMMAND

List of changes/additions :

clearschedule command, its parser class, and its command class
clearschedule updates the Person by replacing it with an instance w/ an empty schedule and updates its lastmodifieddatetime
As a consequence, its parser inherits from ClockDependentParser
execution of the command works when name only is provided, but provides different message (should not happen in normal operation, but in case)

Test cases (all passed) :

equals(),toString for all classes above
parsing with excess fields (i.e. any fields at all)
parsing with syntactically incorrect inputs (e.g. non-integer, non-positive integer)
execution with logically incorrect index
parsing with correct fields
parsing with logically incorrect but syntatically correct field (which throws a command failure but manages to parse)
execution with out-of-bounds field
execution with only name
execution with schedule and name
execution with schedule w/o name
execution on empty schedule and no name (fails)

Still WIP -- Test cases need updating with respect to new changes. in master

Test cases updated, all test cases passed.
Opened for review as #159 got merged.

Screenshots not updated for latest version of app, but smoke test done on my local machine.
Functionality still unchanged


Portable VS Code Extensions do not Transfer to Other Computers

Type: Bug

Download VS Code.
Make data folder.
Install extensions and customize settings.
Transfer VS Code folder to another computer, settings transfer, extensions do not.

Note: This folder is on a USB drive.
VS Code version: Code 1.74.3 (97dec172d3256f8ca4bfb2143f3f76b503ca0534, 2023-01-09T16:59:02.252Z)
OS version: Windows_NT x64 10.0.22621
Modes:
Sandboxed: No

System Info

Item
Value

CPUs
12th Gen Intel(R) Core(TM) i9-12900K (24 x 3187)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
undefined

Memory (System)
15.79GB (6.18GB free)

Process Argv
--crash-reporter-id 83ca7867-18a8-476d-a8a3-3c2686e5ef46

Screen Reader
no

VM
67%

Extensions: none
A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383cf:30185419
vspor879:30202332
vspor708:30202333
vspor363:30204092
vswsl492:30256859
vslsvsres303:30308271
pythonvspyl392:30443607
vserr242:30382549
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
pythondataviewer:30285071
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593:30376534
pythonvs932:30410667
cppdebug:30492333
vsclangdf:30486550
c4g48928:30535728
dsvsc012:30540252
azure-dev_surveyone:30548225
pyindex848:30577860
nodejswelcome1cf:30587006
2e4cg342:30602488
89544117:30613380
fim-prod:30623723

Whenever I install extensions manually and restart VS Code, they disappear.

Your description sounds like a problem that is already fixed in Insiders (1.75). Are you able to test with that version? Alternatively I suggest you wait until 1.75 becomes the General release (aka Stable), which is expected to happen in about 2 weeks.

Odd, I still seem to be having the issue of the extensions are not installing even though they are in the folder, settings are fine though.

Deferring to @sandy081

/duplicate
https://github.com/microsoft/vscode/issues/169006

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


Integrating D3 into a Vite-TS Project

Uncaught TypeError: Cannot read properties of undefined (reading 'document')
    at react-d3-components.js?v=826b55c8:1102:30
    at node_modules/react-d3-components/node_modules/d3/d3.js (react-d3-components.js?v=826b55c8:11487:6)
    at __require (chunk-UV5CTPV7.js?v=826b55c8:9:50)
    at node_modules/react-d3-components/lib/DefaultPropsMixin.js (react-d3-components.js?v=826b55c8:11500:14)
    at __require (chunk-UV5CTPV7.js?v=826b55c8:9:50)
    at node_modules/react-d3-components/lib/BarChart.js (react-d3-components.js?v=826b55c8:12034:30)
    at __require (chunk-UV5CTPV7.js?v=826b55c8:9:50)
    at node_modules/react-d3-components/lib/index.js (react-d3-components.js?v=826b55c8:13656:21)
    at __require (chunk-UV5CTPV7.js?v=826b55c8:9:50)
    at react-d3-components.js?v=826b55c8:13713:16

import { useState, useEffect } from "react";
import ReactD3 from "react-d3-components";

const BarChart =  ReactD3.BarChart;

type Props = {};

const QuizStatistics: React.FC<Props> = (props) => {
  const [name, setName] = useState("");

  return <>
  </>;
};

export default QuizStatistics;

How would I use modern import syntax for React^18.2? I keep getting an undefined error.

I have the exact same issue and no solutions yet :/


Analyzer crash when opening Flutter with this patch in IntelliJ

This issue was reported on discord by chunhtai.
To reproduce, open
https://github.com/flutter/flutter/pull/95226
in Flutter IntelliJ
You will see the following error.
RangeError (index): Invalid value: Only valid value is 0: 1
#0      List.[] (dart:core-patch/growable_array.dart:281:36)
#1      ErrorVerifier._checkForMixinSuperclassConstraints (package:analyzer/src/generated/error_verifier.dart:3383:61)
#2      ErrorVerifier._checkForAllMixinErrorCodes (package:analyzer/src/generated/error_verifier.dart:1446:17)
#3      ErrorVerifier._checkClassInheritance (package:analyzer/src/generated/error_verifier.dart:1352:10)
#4      ErrorVerifier.visitClassDeclaration (package:analyzer/src/generated/error_verifier.dart:443:9)
#5      ClassDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:1500:50)
#6      NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7971:20)
#7      CompilationUnitImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:2116:21)
#8      RecursiveAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:771:10)
#9      ErrorVerifier.visitCompilationUnit (package:analyzer/src/generated/error_verifier.dart:506:11)
#10     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2109:50)
#11     LibraryAnalyzer._computeVerifyErrors (package:analyzer/src/dart/analysis/library_analyzer.dart:472:10)
#12     LibraryAnalyzer._computeDiagnostics.<anonymous closure> (package:analyzer/src/dart/analysis/library_analyzer.dart:263:7)
#13     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:579:13)
#14     LibraryAnalyzer._computeDiagnostics (package:analyzer/src/dart/analysis/library_analyzer.dart:262:11)
#15     LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:106:5)
#16     AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1411:11)
#17     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#18     AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1388:20)
#19     AnalysisDriver._computeIndex (package:analyzer/src/dart/analysis/driver.dart:1460:26)
#20     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1075:39)
#21     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2095:24)
<asynchronous suspension>

#0      AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1440:9)
#1      PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#2      AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1388:20)
#3      AnalysisDriver._computeIndex (package:analyzer/src/dart/analysis/driver.dart:1460:26)
#4      AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1075:39)
#5      AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2095:24)
<asynchronous suspension>

@scheglov

I was not able to reproduce this, I can open and analyze code of this PR with the bleeding edge Dart SDK.
There were a few crashes that should be fixed with https://github.com/dart-lang/linter/commit/16169a54c908d19e948b1f244c924d84575104db, but we probably have no pulled it into Dart SDK yet. @pq

I'll start looking at a new roll.

FWIW I've got a new roll cooking but it's taking bit to cleanup new non_constant_identifier_names violations.
Roll PR here: https://dart-review.googlesource.com/c/sdk/+/242391

Linter 1.23.0 with the fix just landed in the SDK.  Assuming it doesn't shake out any problems downstream (and need a revert) you should see the fix in a dev build next week. 🤞