Modify checkbox text for creating a Start Menu folder

This checkbox should say "Create Start Menu Folder" and should be checked by default. Check boxes should be used to DO or DON'T, YES or NO something. The way it currently works, a user must say: " YES - Don't do this!"

VSCode Version:
OS Version:

Steps to Reproduce:

Install VS Code
Observe confusing checkbox

While I somewhat agree with the rationale here, I can also see the other side: checkboxes are meant to opt-in to non-default things.
Ultimately since this seems to be the default in Inno Setup, our setup framework, I'll just leave it be. Sorry about that!


feat: mention "nonNpm": "conflict" in readme and error message

It'd be nice if we could link to https://github.com/DefinitelyTyped/DefinitelyTyped?tab=readme-ov-file#naming

@jakebailey I've made an attempt


test_resistance_centrality  fails on aarch64

test_resistance_centrality  fails on aarch64 with:
[   91s] =================================== FAILURES ===================================
[   91s] __________________________ test_resistance_centrality __________________________
[   91s] [gw2] linux -- Python 3.9.18 /usr/bin/python3.9
[   91s]
[   91s]     def test_resistance_centrality():
[   91s]         inputs, output, _, size_dict = ctg.utils.lattice_equation([3, 3])
[   91s]         hg = ctg.HyperGraph(inputs, output, size_dict)
[   91s]         cents = hg.resistance_centrality()
[   91s] >       assert cents[0] == 0.0
[   91s] E       assert 6.178632484870434e-16 == 0.0
[   91s]
[   91s] tests/test_hypergraph.py:17: AssertionError

I think it should be fixed with https://github.com/jcmgray/cotengra/commit/43270038e60cd93e79b2c0d14e06074dfadb3ecd#diff-0dc964be60160ec49413a84e24be48ae7f05f252f61b6a7799bd1620b57e04bd


Remove 'classic' asciidoc build

The project is using antora but there are still remnant to remove
So the main CI build should only generate/deploy the javadocs (reference docs based on Antora are part of another build).
The main things to update after removing the Asciidoc resources are:

Remove the asciidoc plugin and the generated resources from the distribution assembly descriptor: this and this
Update the CI build here to run mvn assembly:single instead of mvn site

Look at the latest version of these files in the Batch repo: spring-batch-docs/pom.xml , src/assembly/javadocs.xml and .github/workflows/continuous-integration.yml to get the complete view.

fixed via 27bb72999ac8f4fd00b2f201ec1fac6aa9b03285 and<PHONE_NUMBER>31e8fa353e60ce02a0300d8a94acd7


1823825 | Message fixes | Address validation issues | 1

This PR is for user story 1823825.

Fixed an issue with duplicate titles.

If these changes are not appropriate, please let me know. I'm only trying to clean up validation issues in this repo. So I can easily close this PR or modify it in whatever way is best for the content.

Docs Build status updates of commit 9e1c925:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/adapters-and-accelerators/install-the-biztalk-adapter-pack-2016.md
:bulb:Suggestion
View
Details

biztalk/core/requirements-for-single-sign-on1.md
:bulb:Suggestion
View
Details

biztalk/core/requirements-for-single-sign-on5.md
:bulb:Suggestion
View
Details

his/install-and-config-guides/release-notes-2020.md
:bulb:Suggestion
View
Details

his/install-and-config-guides/same-server-migration-2020.md
:bulb:Suggestion
View
Details

biztalk/core/office365-mail-adapter.md
:white_check_mark:Succeeded
View

biztalk/esb-toolkit/the-resolver-and-adapter-provider-framework.md
:white_check_mark:Succeeded
View

his/install-and-config-guides/his-migration-tool-2020.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/install-the-biztalk-adapter-pack-2016.md

Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Install the BizTalk Adapter Pack 2016' is duplicated with other articles: 'adapters-and-accelerators/installing-the-biztalk-adapter-pack-2016.md(18,1), adapters-and-accelerators/install-the-biztalk-adapter-pack-2016.md(18,1)'. First level headings must be unique within a docset.

biztalk/core/requirements-for-single-sign-on1.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Requirements for Single Sign-On' is duplicated in 'core/requirements-for-single-sign-on1.md(2,14)', 'core/requirements-for-single-sign-on2.md(2,14)', 'core/requirements-for-single-sign-on3.md(2,14)', 'core/requirements-for-single-sign-on4.md(2,14)', 'core/requirements-for-single-sign-on5.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Requirements for Single Sign-On' is duplicated with other articles: 'core/requirements-for-single-sign-on1.md(18,1), core/requirements-for-single-sign-on2.md(18,1), core/requirements-for-single-sign-on3.md(18,1), core/requirements-for-single-sign-on4.md(18,1), core/requirements-for-single-sign-on5.md(18,1)'. First level headings must be unique within a docset.

biztalk/core/requirements-for-single-sign-on5.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Requirements for Single Sign-On' is duplicated in 'core/requirements-for-single-sign-on1.md(2,14)', 'core/requirements-for-single-sign-on2.md(2,14)', 'core/requirements-for-single-sign-on3.md(2,14)', 'core/requirements-for-single-sign-on4.md(2,14)', 'core/requirements-for-single-sign-on5.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Requirements for Single Sign-On' is duplicated with other articles: 'core/requirements-for-single-sign-on1.md(18,1), core/requirements-for-single-sign-on2.md(18,1), core/requirements-for-single-sign-on3.md(18,1), core/requirements-for-single-sign-on4.md(18,1), core/requirements-for-single-sign-on5.md(18,1)'. First level headings must be unique within a docset.

his/install-and-config-guides/release-notes-2020.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Release Notes' is duplicated in 'install-and-config-guides/release-notes-2020.md(2,14)', 'install-and-config-guides/release-notes.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Release Notes' is duplicated with other articles: 'install-and-config-guides/release-notes.md(17,1), install-and-config-guides/release-notes-2020.md(18,1)'. First level headings must be unique within a docset.

his/install-and-config-guides/same-server-migration-2020.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Same Server Migration' is duplicated in 'install-and-config-guides/same-server-migration-2020.md(2,14)', 'install-and-config-guides/same-server-migration.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Same Server Migration' is duplicated with other articles: 'install-and-config-guides/same-server-migration.md(17,1), install-and-config-guides/same-server-migration-2020.md(18,1)'. First level headings must be unique within a docset.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit a9991c2:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/adapters-and-accelerators/install-the-biztalk-adapter-pack-2016.md
:bulb:Suggestion
View
Details

biztalk/core/requirements-for-single-sign-on1.md
:bulb:Suggestion
View
Details

biztalk/core/requirements-for-single-sign-on5.md
:bulb:Suggestion
View
Details

his/install-and-config-guides/release-notes-2020.md
:bulb:Suggestion
View
Details

his/install-and-config-guides/same-server-migration-2020.md
:bulb:Suggestion
View
Details

biztalk/core/office365-mail-adapter.md
:white_check_mark:Succeeded
View

biztalk/esb-toolkit/the-resolver-and-adapter-provider-framework.md
:white_check_mark:Succeeded
View

his/install-and-config-guides/his-migration-tool-2020.md
:white_check_mark:Succeeded
View

biztalk/adapters-and-accelerators/install-the-biztalk-adapter-pack-2016.md

Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Install the BizTalk Adapter Pack 2016' is duplicated with other articles: 'adapters-and-accelerators/installing-the-biztalk-adapter-pack-2016.md(18,1), adapters-and-accelerators/install-the-biztalk-adapter-pack-2016.md(18,1)'. First level headings must be unique within a docset.

biztalk/core/requirements-for-single-sign-on1.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Requirements for Single Sign-On' is duplicated in 'core/requirements-for-single-sign-on1.md(2,14)', 'core/requirements-for-single-sign-on2.md(2,14)', 'core/requirements-for-single-sign-on3.md(2,14)', 'core/requirements-for-single-sign-on4.md(2,14)', 'core/requirements-for-single-sign-on5.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Requirements for Single Sign-On' is duplicated with other articles: 'core/requirements-for-single-sign-on1.md(18,1), core/requirements-for-single-sign-on2.md(18,1), core/requirements-for-single-sign-on3.md(18,1), core/requirements-for-single-sign-on4.md(18,1), core/requirements-for-single-sign-on5.md(18,1)'. First level headings must be unique within a docset.

biztalk/core/requirements-for-single-sign-on5.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Requirements for Single Sign-On' is duplicated in 'core/requirements-for-single-sign-on1.md(2,14)', 'core/requirements-for-single-sign-on2.md(2,14)', 'core/requirements-for-single-sign-on3.md(2,14)', 'core/requirements-for-single-sign-on4.md(2,14)', 'core/requirements-for-single-sign-on5.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Requirements for Single Sign-On' is duplicated with other articles: 'core/requirements-for-single-sign-on1.md(18,1), core/requirements-for-single-sign-on2.md(18,1), core/requirements-for-single-sign-on3.md(18,1), core/requirements-for-single-sign-on4.md(18,1), core/requirements-for-single-sign-on5.md(18,1)'. First level headings must be unique within a docset.

his/install-and-config-guides/release-notes-2020.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Release Notes' is duplicated in 'install-and-config-guides/release-notes-2020.md(2,14)', 'install-and-config-guides/release-notes.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Release Notes' is duplicated with other articles: 'install-and-config-guides/release-notes.md(17,1), install-and-config-guides/release-notes-2020.md(18,1)'. First level headings must be unique within a docset.

his/install-and-config-guides/same-server-migration-2020.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Same Server Migration' is duplicated in 'install-and-config-guides/same-server-migration-2020.md(2,14)', 'install-and-config-guides/same-server-migration.md(2,14)'.
Line 18, Column 1: [Suggestion-duplicate-h1s] H1 'Same Server Migration' is duplicated with other articles: 'install-and-config-guides/same-server-migration.md(17,1), install-and-config-guides/same-server-migration-2020.md(18,1)'. First level headings must be unique within a docset.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 31ae53e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/core/requirements-for-single-sign-on1.md
:bulb:Suggestion
View
Details

biztalk/core/requirements-for-single-sign-on5.md
:bulb:Suggestion
View
Details

his/install-and-config-guides/release-notes-2020.md
:bulb:Suggestion
View
Details

his/install-and-config-guides/same-server-migration-2020.md
:bulb:Suggestion
View
Details

biztalk/adapters-and-accelerators/install-the-biztalk-adapter-pack-2016.md
:white_check_mark:Succeeded
View

biztalk/core/office365-mail-adapter.md
:white_check_mark:Succeeded
View

biztalk/esb-toolkit/the-resolver-and-adapter-provider-framework.md
:white_check_mark:Succeeded
View

his/install-and-config-guides/his-migration-tool-2020.md
:white_check_mark:Succeeded
View

biztalk/core/requirements-for-single-sign-on1.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Requirements for Single Sign-On' is duplicated in 'core/requirements-for-single-sign-on1.md(2,14)', 'core/requirements-for-single-sign-on2.md(2,14)', 'core/requirements-for-single-sign-on3.md(2,14)', 'core/requirements-for-single-sign-on4.md(2,14)', 'core/requirements-for-single-sign-on5.md(2,14)'.

biztalk/core/requirements-for-single-sign-on5.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Requirements for Single Sign-On' is duplicated in 'core/requirements-for-single-sign-on1.md(2,14)', 'core/requirements-for-single-sign-on2.md(2,14)', 'core/requirements-for-single-sign-on3.md(2,14)', 'core/requirements-for-single-sign-on4.md(2,14)', 'core/requirements-for-single-sign-on5.md(2,14)'.

his/install-and-config-guides/release-notes-2020.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Release Notes' is duplicated in 'install-and-config-guides/release-notes-2020.md(2,14)', 'install-and-config-guides/release-notes.md(2,14)'.

his/install-and-config-guides/same-server-migration-2020.md

Line 2, Column 14: [Suggestion-duplicate-descriptions] Attribute 'description' with value 'Learn more about: Same Server Migration' is duplicated in 'install-and-config-guides/same-server-migration-2020.md(2,14)', 'install-and-config-guides/same-server-migration.md(2,14)'.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@mandiohlinger - I've made these changes as a part of user story 1823825. Please have a look and let me know if you have any feedback or if I need to change the way I work in this repo. I've got more issues to fix related to duplicate H1s and missing column headers so I'll have more PRs to submit.

@damabe First of all, thank you. This is a big task. Secondly, yes, these changes are fine. Thank you for taking the extra time to confirm.
Can you make these changes in the Master branch? I can merge this specific PR, which uses Live. But for the next PRs, I'd prefer we use Master.
Let me know if this PR is ready to merge.

@MandiOhlinger Thanks for the feedback. This PR is ready to merge. I'll make my subsequent PRs against Master.


Switched from ClonedPlanningMethod To LockedPlanningMethod

This PR changes ClonedPlanningMethod to LockedPlanningMethod in SnapPlanner, GreedyIKPlanner, CBiRRT, IKPlanner, NamedPlanner, OMPLPlanner, OpenRavePlanner, VectorField, TSRPlanner.
Now each PlanTo..  method uses robot.env() instead of self.env(). robot.CreateRobotStateSaver(...) has been added to necessary blocks.

Your changes look good. I added a few minor comments above. In addition, SnapPlanner.PlanToConfiguration still needs to be changed to a @LockedPlanningMethod.
We also need to give the same treatment to prpy.planning.retimer. This is where PrPy bindings for HauserParabolicSmoother live, so it's actually a pretty important file to change.

Thanks @gilwoolee! These changes look great. I expect that planning will be quite a bit faster with these changes in place.


Macro-based summary pattern template

Rewrite forms/summary pattern using Jinja2 macros
Splits the summary pattern into separate macros: for summary
header, top action link and the summary table.
Summary table relies on the Jinja2 "macro call" syntax
(http://jinja.pocoo.org/docs/dev/templates/#call).
This allows use of the pattern to create the table layout while
row contents are still written inside the template HTML.
Helper macros are provided for common field types.
This avoids the need for | safe in the pattern template.
Update pages builder script to support Jinja2 snippets as examples
Adds a check for the type of "example": if example is a dictionary
then with parameters example is generated, otherwise example is
rendered as a Jinja template.
Adds Environment to the example templates, which allows to use includes
and imports relative to the toolkit/templates folder.

Other than that one comment, colon plus symbol one colon from me.
This is a really neat solution to a difficult problem.

I found the link to the macro documentation really helpful in understanding this. It would be good if it were included in the docs somewhere.

Added assurance argument and a pageDescription field to the documentation files to link to the Jinja2 macro call docs /cc @quis @robyoung

plus one from me


chore: bump in_app_review dependency to 2.0.9

Will be mandatory at the end of September on Android:

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

Project coverage is 7.18%. Comparing base (4d9c7fc) to head (daf78d6).
Report is 233 commits behind head on develop.

Additional details and impacted files
@@            Coverage Diff             @@
##           develop   #5452      +/-   ##
==========================================
- Coverage     9.54%   7.18%   -2.37%
==========================================
  Files          325     391      +66
  Lines        16411   20388    +3977
==========================================
- Hits          1567    1464     -103
- Misses       14844   18924    +4080

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


fix typo, DownstreamDownstreamPathTemplate => DownstreamPathTemplate

I think it's a typo, right?

@Rwing haha yeh I think it is, I blame ReSharper :P


Modify MasterSlaveLoadBalanceAlgorithm "getDataSource()" method and r…

…elated functions.
Fixes ##3227.
Changes proposed in this pull request:

MasterSlaveLoadBalanceAlgorithm.getDataSource()
Implementation classes
Unit Tests.

Pull Request Test Coverage Report for Build 980

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

Totals

Change from base Build 571:
0.006%

Covered Lines:
11676

Relevant Lines:
16974

💛  - Coveralls

Maybe we need to discuss this pr.
User maybe need to know masterDataSourceName on the API, so we need to keep this parameter.
By the way, we may supported multiple master data sources in future.


Fix v1.17 compatibility + some linting

Description

Fix compatibility with v1.17 of Backstage
Fix some minor sonarlint issues with the user var instead of let or const
Bump dependencies versions

Related issue(s)
Resolves #7

Thanks for the fix and the linting ;-)


Add/remove children fix

Fixes #34.

@r2d2rigo Please revise as there are conflicts now

can you please re-submit?


[Bug] Invalidation of Printed Information

Hi Filip! We use this plugin with cypress-cucumber-preprocessor together in our project. There are of course multiple scenarios in our feature files. But the printed information of requests belongs to previous scenarios have been overriding until the last scenario executes. Well, only requests for the last scenario has can be viewed. Do you have any solution for this? Thanks.
 I don't use cucumber preprocessor at all, can't say I'm a bug fan of it. But I could take a look into the issue if you can provide me with a repo with a reproducible example.


Search for a framework

Which one is the best for this?

At the moment, we are using NodeJs with express and ejs  to render templates


Setup queue mode

@netroy I see this is work in progress still. Can I double check that while working on it you are:

Accounting for any differences between platforms (see the relevant branches)
Noting any changes needed to the guides: https://docs.n8n.io/hosting/installation/server-setups/

I'm wondering if this is a big enough change we should fully test on each provider?

rewriting this as a helm chart that supports both regular as well as queue mode in the same code.
The same chart will also support all the different cloud provider types, so we won't be needing all these different branches either.


Laser Pointer Stop working after Load.Scene

Hey! I've been struggling with laser pointer and LoadScene lately. The pointer works fine at everything that I wanted to do in project, but when I'm trying to change scene in build mode, laser pointer stops working.  Do you have any idea why is this happening?
To load the new scene I use an object as interactable with the pointer script and then in C# I have this code:
public void MyScene()
{
SceneManager.LoadScene(1);
}
The load scene is working fine and the scene changes, only the pointer stop working.
I'm using Oculus Go.

Hello, thanks for sending an issue.
Maybe when you are changing the scene, the Pointer object is getting destroyed and is not initialized again. Also, is there any error messages in the console?
I would also check if the EventSystem and other components are present in the other scenes.
I also recommend that you check out the native XR Toolkit implementation on unity. It's a powerfull native solution to VR interactions and really easy to implement.


Copy Response Button

This solves #30 And Thank You for this. :heart_decoration: From fellow mallu

Hey @athul,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 9b1eb5a0-c599-11e9-8aae-f1e5ed08699b

Hey @athul,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: a16dda30-c599-11e9-8aae-f1e5ed08699b

Hey @athul,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 7ff8df10-c59b-11e9-8aae-f1e5ed08699b

Hey @athul,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 81f85890-c59b-11e9-8aae-f1e5ed08699b

This solves #30 And Thank You for this. heart_decoration From fellow mallu

mallus ftw :rofl:

Do merge the best one.Since that PR will benefit a whole lot more people

After Checking I personally Think #35 is far better than mine. Thus closing it


Reset Order does nothing (at times)

I have a list of documents that have not been assigned an order ranking yet. Choosing it from the top right menu does nothing. Again, intermittently, as it has been working on other occasions for me.
Locally, it only works once, just after reloading the app completely (full browser window reload). After that, none of the other lists are able to reset the order. I have multiple lists/types without such orders right now.

I'm able to recreate the issue, but only intermittently as you say. Will investigate. Thanks for reporting!

This appears to be resolved in Studio version 2.21.8


Improve ease of use and/or documentation for the refactor_openjdk_release_tool job

The publishing step could possibly be improved / made more intuitive.  We can look for opportunities to improve the usability of the https://ci.adoptopenjdk.net/job/build-scripts/job/release/job/refactor_openjdk_release_tool job.
SL/Nov 23: Repurpose this issue as per
https://github.com/adoptium/adoptium/issues/181#issuecomment-1317029457
Related:

#111
https://github.com/adoptium/github-release-scripts/issues/126

There are three potential options here:

Ensure the documentation is "idiot-proof" so it's absolutely clear what is needed for each version/platform combination
Have a way to simplify the regex, or provide pre-defined options in the current release tool (Suggested in https://github.com/adoptium/temurin-build/issues/3449)
Have a wrapper job around this that will be used by releasers that will feed in the correct regexs to the existing job.

I've been leaning towards preferring option 3 but input from others who've done releasing would be good :-)

Marking as done, based on the good work from @sophia-guo to add links to prepopulated release_tool runs for the release pipeline (via https://github.com/adoptium/ci-jenkins-pipelines/pull/923)


Avoid false positives when checking email addresses in HTML input

Fixes #1111

@thomas-zahner, can you have a look and see if that looks correct to you?

@mre Looks good, don't see a problem with the implementation but I could be missing something.
The only improvement I could think of is the code duplication in the tests.
They are exactly the same for both implementations.
Also the HTML in the tests could either be extracted to a function where the email link is a parameter or the HTML could be merged to a single HTML file as a fixture with a single test expecting multiple email links

The only improvement I could think of is the code duplication in the tests.
They are exactly the same for both implementations.

Yes, that is correct. My goal was to test one behavior per unit test. Even though that's a bit redundant, it helps me troubleshoot issues faster, as I can read the name of the unit test to get the context of what's failing.

Also the HTML in the tests could either be extracted to a function where the email link is a parameter or the HTML could be merged to a single HTML file as a fixture with a single test expecting multiple email links

Also true. We could refactor the tests at some point to avoid the duplication, but the goal is to use one HTML engine and remove the other eventually. Given that, there's no urge to refactor at the moment.
I appreciate the code review and creating the issue in the first place. 👍  Added the test you suggested. Merging.


Question

Hi,
i read your articles and your posts in different places.
is this repo the best starting point to try to build a proof of concept system ?
I would love to try with a big corpus, because my guess is that it will perform well with lots of data.
cheers,
Vinny

Yes


Standalone Docker image?

I see there's a Docker image for this server as an addon for Home Assistant OS, what are the chances of having a standalone version that could be run alongside Home Assistant in a container?

You can just go and use homeassistant/aarch64-addon-matter-server:latest
Configure it using the host network and with /data as persistent path inside the container.
I just did that, and it works :)

I just tried the amd64 version on my NUC and it works!

Home Assistant won't discover it. You will need to click add integration -> matter.

It looks like it's trying to save things in /root/.matter-server (I see chip.json), should that also be persistent?
And I assume the errors about "Could not resolve host: supervisor" / "Something went wrong contacting the API" are okay—I think that's just how Home Assistant OS manages the addons?

 Did you get the bluetooth interface to work in the container?

I just got my ESP32 device today so I'm finally able to actually test this, and I got exactly the same error.
This is my new docker-compose:
version: '3.8'
services:
  matter-server:
    image: homeassistant/amd64-addon-matter-server:latest
    container_name: matter-server
    network_mode: 'host'

    volumes:
      - './data:/data'
      - './root-matter_server:/root/.matter_server'

      # For Bluetooth, expose DBus socket
      - '/run/dbus:/run/dbus:ro'

    restart: unless-stopped

With the DBus socket exposed I was able to start the commissioning process, but both python-matter-server and the console on the ESP32 are repeating the same errors:
python-matter-server
2022-12-13 00:18:56 citywall chip.EM[63] INFO >>> [E:60387r M:119459934] (S) Msg RX from 1:0000000000000002 [EB9F] --- Type 0001:05 (IM:ReportData)
2022-12-13 00:18:56 citywall chip.DMG[63] INFO Refresh LivenessCheckTime for 35000 milliseconds with SubscriptionId = 0xf95c1437 Peer = 01:0000000000000002
2022-12-13 00:18:56 citywall chip.EM[63] INFO <<< [E:60387r M:73464016 (Ack:119459934)] (S) Msg TX to 1:0000000000000002 [EB9F] --- Type 0001:01 (IM:StatusResponse)
2022-12-13 00:18:56 citywall chip.IN[63] INFO (S) Sending msg 73464016 on secure session with LSID: 58364
2022-12-13 00:18:56 citywall chip.EM[63] INFO >>> [E:60387r M:119459935 (Ack:73464016)] (S) Msg RX from 1:0000000000000002 [EB9F] --- Type 0000:10 (SecureChannel:StandaloneAck)

ESP32
I (837294) chip[DMG]: Refresh subscribe timer sync after 10 seconds
I (837304) chip[EM]: <<< [E:60392i M:119459944] (S) Msg TX to 1:000000000001B669 [EB9F] --- Type 0001:05 (IM:ReportData)
I (837304) chip[IN]: (S) Sending msg 119459944 on secure session with LSID: 15928
I (837314) chip[DMG]: Refresh Subscribe Sync Timer with min 0 seconds and max 10 seconds
I (837334) chip[EM]: >>> [E:60392i M:73464021 (Ack:119459944)] (S) Msg RX from 1:000000000001B669 [EB9F] --- Type 0001:01 (IM:StatusResponse)
I (837344) chip[IM]: Received status response, status is 0x00
I (837344) chip[EM]: <<< [E:60392i M:119459945 (Ack:73464021)] (S) Msg TX to 1:000000000001B669 [EB9F] --- Type 0000:10 (SecureChannel:StandaloneAck)
I (837354) chip[IN]: (S) Sending msg 119459945 on secure session with LSID: 15928

No log messages from Home Assistant itself, so something is stuck.

I posted an update here for anyone following this issue.

I was running it sucessfully before, but currently i get the same output as here:
https://github.com/home-assistant-libs/python-matter-server/issues/133

Please don't dilute this issue referencing other issues. Each issue should be as narrow as possible in the discussion to be meaningful. If you get the same output as described in another issue you're very likely affected by that issue and not this issue.
Thanks!

I'll repeat here what I just answered in an issue report:
The docker image is not meant to be used standalone as it is created for the Home Assistant supervisor. For example that is where the config file is provided from. It maybe works by accident today and breaks tomorrow. Best is to create a dedicated docker image to run standalone.
At this time we are really busy with the basic stuff and polishing the Matter server and integration for daily usage, focusing on the add-on as first step and we might provide a standalone container later but if you want to pick up the glove, you can look at the add-on structure to find out what's missing for the standalone container.

Are you open to packaging this standalone? If so I could start taking a look at creating a Dockerfile for that.
It seems like the addon image is pretty close, it almost seems like all that's needed is to remove the Home Assistant supervisor integration and to add some environment variables for configuration.

We do want to eventually offer that, but we don't have the bandwidth right now.

Closing this as there is a docker alternative available although primary dev focus goes to the HA integration and companion add-on. Feel free to submit any PR's to improve the docker route. Thanks!

@marcelveldt
where to find the 'docker alternative'?
the current  homeassistant/amd64-addon-matter-server image spits this every 2-3 seconds:
[00:11:32] INFO: Successfully send discovery information to Home Assistant.
Traceback (most recent call last):
  File "/usr/local/bin/matter-server", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.9/dist-packages/matter_server/server/__main__.py", line 71, in main
    logging.basicConfig(handlers=handlers, level=args.log_level.upper())
  File "/usr/lib/python3.9/logging/__init__.py", line 2018, in basicConfig
    root.setLevel(level)
  File "/usr/lib/python3.9/logging/__init__.py", line 1417, in setLevel
    self.level = _checkLevel(level)
  File "/usr/lib/python3.9/logging/__init__.py", line 194, in _checkLevel
    raise ValueError("Unknown level: %r" % level)
ValueError: Unknown level: 'NULL'
[00:11:33] INFO: Starting Matter Server...
curl: (6) Could not resolve host: supervisor

Building the Docker image from source with the instructions at the bottom of the main README works, and does not look for the supervisor host (I just tried it).
(@marcelveldt FYI:)
I hadn't been running the addon version of the container for awhile so I deleted the entity/device in HA and re-commissioned it from a HomeKit pairing mode PIN (on HA 2023.1.6 and matter-server tag 1.1.0) and it worked just fine (although I had to use "Commission Device"—"Add Shared Device" did NOT work).
IMHO once the server stabilizes pretty much all the maintainers would need to do is start publishing the built Docker images and it would be ready to go. The downside of running it right now is that you'll have to keep an eye on matching versions, if you build the current HEAD it won't work with the current HA release since HEAD is now a newer Matter version.
This is my docker-compose.yml (I checked this repo out into source because I wanted to modify the docker-compose to move the data directory):
version: "3.8"
services:
  matter-server:
    build:
      context: ./source
      dockerfile: Dockerfile.dev
    image: matter-server:latest
    container_name: matter-server

    # Required for mDNS to work correctly
    network_mode: host

    security_opt:
      # needed for bluetooth via dbus
      - apparmor:unconfined

    ports:
      - "5580:5580"

    volumes:
      - ./data:/data/
      - /run/dbus:/run/dbus:ro

    restart: unless-stopped

Mounting a volume into /root/.matter_server is no longer needed (at least for the non-addon version), chip.json etc are now persisted in /data


Keeping K8S_VERSIONS up-to-date

Describe the enhancement you'd like to see
The tool keeps pace with the current Kubernetes release schedule and versions currently K8S_VERSIONS is only applicable up to 1.28. The current release for Kubernetes is 1.30 and 1.28 will go out of support later this year

thanks @thpang - I have a PR in the works with some dependency updates also.. release coming up in a day or two.. https://github.com/kubeshop/monokle/pull/4231

thanks @thpang - I have a PR in the works with some dependency updates also.. release coming up in a day or two.. #4231

Is there a ETA on the new release which supports 1.30 and 1.31 ? 1.28 has reached EOL and 1.29 will reach EOL soon as well.


[FLINK-31123][connector/files] Add IT cases for FileSink speculative …

What is the purpose of the change
This change added an it case for FileSink in speculative execution mode that the sink will be scheduled by the speculative scheduler when there is a slow task.
Brief change log

Added an test to assert that the FileSink will execute multiple attempts and the final results are correct when there is a slow sink and enable speculative scheduling.

Verifying this change
This change is an it case.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not documented)

@flinkbot run azure

@flinkbot run azure

LGTM. Thanks for addressing the comments! @Rruop Would you squash the commits?

Thanks for your patiently reviewing, I will squash all the commits into one.


Addition of Country Vocabulary

Based off ISO 3166-1
Downloaded from http://dd.eionet.europa.eu/vocabulary/common/countries/view
converted rdf -> ttl using https://rdf-translator.appspot.com/
removed validation fails around multiple prefLabels per language.
Required for migration of Party data

@nicholascar Is there an active vocab with a SPARQL endpoint that we can use instead of creating our own?
Country doesn't appear to be in LOCI
Thanks, David

DBPedia:  < http://dbpedia.org/sparql>
It’s certainly got everything you could ever want in there - everything in Wikipedia - but also a lot of junk you don’t want, e.g. see:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>

SELECT ?country
WHERE {
 ?x a dbo:Country.
 ?x dbo:longName ?country.
}
ORDER BY ?country
LIMIT 100

I think WikiData  (https://query.wikidata.org/) is much higher quality so likely to have a much better list of real countries and perhaps even a way to query for current countries (as opposed to “Gaul” etc.) but can’t drum up a query for that this week as I’m out west (Winton) on holidays, so doing this on the phone.

Good to see exactMatch across to Geonames etc.
I’ll check with the OGC: perhaps either they have a good countries vocab or perhaps you can offload such a list to them and get a SPARQL endpoint out of it.
@rob-metalinkage, does the OGC have a countries vocab?
Future VocPrez versions will do multi-instance searching so your VP, if you keep upgrading (!) will be able to search directly across OGC vocabs without any effort.

OGC does not publish a countries vocabulary itself.
There are ISO and UNstats country codes. The SIRF project I ran at CSIRO loaded and cross-mapped these - but its no longer active :-(
Country identification is a rather fraught political problem - we really need a UN solution to publishing this.  SIRF identified 29 different country vocabularies or identifier schemes present in the UN data archive :-)

@KellyVance will we host this vocab on vocprez? if so, could you please let me know when you have refreshed the server so i can inform SRA of the URI to use.

@DavidCrosswellGSQ my IP must have changed again and I can't access the graph to refresh the cache. Can you please oblige @geoderekh and push this update through?


AVRO-2090: Improve encode/decode time for SpecificRecord using code generation

Initial patch for AVRO-2090

This is a good idea.  What is the performance improvement?  Did you run any benchmarks?
I had imagined generating bytecode using ASM, but generating it in the generated class would work too.

This work has gotten a bit old in my head.  I can dust it off and address the issues raised in this ticket, but want to make sure there is genuine interest before making the effort.

BTW, I believe that Thiru presented a bit of this work at Strata last Fall:
https://conferences.oreilly.com/strata/strata-ny-2017/public/schedule/detail/60729

If it demonstrates a big performance improvement under Perf.java then I think it would be a good change to have & am willing to help get it committed.

I'm very excited about the performance improvements with this feature and would like to see this in a usable state sooner rather than later. If I can assist getting this branch into a mergeable state, I'd love to do so (with @rstata 's consent)
There's a rather big issue with schema evolution currently, however. The generated reader relies on the field order within the ResolvingDecoder to stay the same. Hence, data written with a schema that only differs in regards to the order of fields will result in an error or (even worse) invalid data. If required, I can provide a code sample.

I will update this patch.  The old changes were easily rebased onto Avro's current master.  You can see that result here:
https://github.com/rstata-projects/avro/tree/specific-new-rebased
I then started addressing the comments above.  I just closed a few of the change requests from above -- you can find the resulting changes here:
https://github.com/rstata-projects/avro/tree/AVRO-2090-again
I'll keep working on this over the next few days.  In the meantime, if folks have applications that use SpecificRecord, it'd be great if you could enable this feature and run it through your test cases.

@juwex, would love your help if you're still interested.  Good catch on the field-order problem.  It'd be great if you could develop a test case that demonstrates the bug you've found -- it'd be a fantastic regression test.  Regarding a fix for this problem, we should check to see if the Decoder provided is an instance of ResolvingDecoder, and if it is code should use readFieldOrder to read fields in the correct order.

I've opened a new pull request (#350) to replace this one.


Content shown as free at overtaken claim, users charged for downloads

@tzarebczan commented on Thu Nov 09 2017

The Issue
When content is overtaken at a vanity URL that was previously cached, the new claim information is shown but the content price is not updated. There's a possibility that the content price is now 10 LBC but the app will still show 0. When the content is streamed or downloaded, the user is charged 10LBC unknowingly.
The original issue was first reported in https://github.com/lbryio/lbry-app/issues/511 and then was supposed to be fixed in https://github.com/lbryio/lbry-app/issues/511 but still continues to occur.  Recently we had a user charged 130LBC for lbry://nine because there was a takeover that didn't show the correct price.
This is most likely related to a more complex "when to refresh cached data" discussed here https://github.com/lbryio/lbry-app/issues/451#issuecomment-335543119 but I think something needs to be done in the interim to prevent the scenario where users are charged for seemingly free content.
Steps to reproduce

Access claim X (free) on PC1
on PC2, takeover claim X and set a content price
Wait for takeover and re-access the claim on PC1
Notice claim information is updated but the price shows free

Claim data:
  "lbrytestpublish1234": {
    "claim": {
      "address": "bVFPc4Yna5N91QeNFxRq6Afa5JFGxthkho",
      "amount": 1.0,
      "claim_id": "beba2f02344e7ec83268d34d8adb4f5f14028778",
      "claim_sequence": 2,
      "decoded_claim": true,
      "depth": 85,
      "effective_amount": 1.0,
      "has_signature": false,
      "height": 269920,
      "hex": "080110011ab1010801126a080410011a2c7465737420636f6e74656e7420746f206f76657274616b65206c627279746573747075626c6973683132333422002a0032044e6f6e6538004224080110011a1955b6e9b27a4c8ec4046047e212d74ff0b6ebad6f60ccd96b7d25000000404a0052005a001a41080110011a304685f12d6940be42ba656a4cc01fe58fc3d58b16be14777a7cf9116fd2c7892bac886733ce5e8170b84413139aeb514e2209696d6167652f706e67",
      "name": "lbrytestpublish1234",
      "nout": 0,
      "supports": [],
      "txid": "cee78347b9ebf84652bfa6062e5e574aeab7688dcddc277267a7598294842675",
      "value": {
        "claimType": "streamType",
        "stream": {
          "metadata": {
            "author": "",
            "description": "",
            "fee": {
              "address": "bVQRdi3iKgaaWj2L5SjF1CeZd9kWmZmevg",
              "amount": 2.0,
              "currency": "LBC",
              "version": "_0_0_1"
            },
            "language": "en",
            "license": "None",
            "licenseUrl": "",
            "nsfw": false,
            "preview": "",
            "thumbnail": "",
            "title": "test content to overtake lbrytestpublish1234",
            "version": "_0_1_0"
          },
          "source": {
            "contentType": "image/png",
            "source": "4685f12d6940be42ba656a4cc01fe58fc3d58b16be14777a7cf9116fd2c7892bac886733ce5e8170b84413139aeb514e",
            "sourceType": "lbry_sd_hash",
            "version": "_0_0_1"
          },
          "version": "_0_0_1"
        },
        "version": "_0_0_1"
      }
    }
  }
}

Claim being shown as free upon re-entering it:

Charged for content upon downloading:
2017-11-09 17:24:25,270 INFO     lbrynet.core.Wallet:823: Resolving lbry://lbrytestpublish1234
2017-11-09 17:24:41,537 INFO     lbrynet.daemon.Downloader:95: Download lbry://lbrytestpublish1234 status changed to initializing
2017-11-09 17:24:41,539 INFO     lbrynet.daemon.ExchangeRateManager:221: Converting 50.000000 USD to LBC, rates: [Currency pair:('USD', 'BTC'), spot:0.000140216096561, ts:1510266241, Currency pair:('BTC', 'LBC'), spot:41110.5353081, ts:1510266241, Currency pair:('BTC', 'LBC'), spot:41745.5336614, ts:1510266241, Currency pair:('USD', 'BTC'), spot:0.00014031, ts:1510266242, Currency pair:('BTC', 'LBC'), spot:41788.5499373, ts:1510266242]
2017-11-09 17:24:41,560 INFO     lbrynet.daemon.ExchangeRateManager:221: Converting 0.007011 BTC to LBC, rates: [Currency pair:('USD', 'BTC'), spot:0.000140216096561, ts:1510266241, Currency pair:('BTC', 'LBC'), spot:41110.5353081, ts:1510266241, Currency pair:('BTC', 'LBC'), spot:41745.5336614, ts:1510266241, Currency pair:('USD', 'BTC'), spot:0.00014031, ts:1510266242, Currency pair:('BTC', 'LBC'), spot:41788.5499373, ts:1510266242]
2017-11-09 17:24:41,561 INFO     lbrynet.daemon.ExchangeRateManager:221: Converting 2.000000 LBC to LBC, rates: [Currency pair:('USD', 'BTC'), spot:0.000140216096561, ts:1510266241, Currency pair:('BTC', 'LBC'), spot:41110.5353081, ts:1510266241, Currency pair:('BTC', 'LBC'), spot:41745.5336614, ts:1510266241, Currency pair:('USD', 'BTC'), spot:0.00014031, ts:1510266242, Currency pair:('BTC', 'LBC'), spot:41788.5499373, ts:1510266242]
2017-11-09 17:24:41,562 INFO     lbrynet.daemon.Downloader:95: Download lbry://lbrytestpublish1234 status changed to downloading_metadata
2017-11-09 17:24:41,562 INFO     lbrynet.core.client.ConnectionManager:42: Connection Manager 4685f12d6940be42ba656a4cc01fe58fc3d58b16be14777a7cf9116fd2c7892bac886733ce5e8170b84413139aeb514e initialized
2017-11-09 17:24:41,761 INFO     lbrynet.core.client.BlobRequester:414: Offered rate 0.000000/mb accepted by <IP_ADDRESS>
2017-11-09 17:24:41,791 INFO     lbrynet.core.client.BlobRequester:563: Blob 4685f12d6940be42 has been successfully downloaded from <IP_ADDRESS>:3333
2017-11-09 17:24:42,571 INFO     lbrynet.lbry_file.EncryptedFileMetadataManager:246: Saved sd blob hash 4685f12d6940be42ba656a4cc01fe58fc3d58b16be14777a7cf9116fd2c7892bac886733ce5e8170b84413139aeb514e to stream hash da61e77ca9f916e516cbee9189883e2f753195185a7b8f7b1ba6370ae91d98bc94b46fa6e3356edc6e1310dd0fa86316
2017-11-09 17:24:42,573 INFO     lbrynet.daemon.Downloader:134: Pay key fee 2.000000 --> bVQRdi3iKgaaWj2L5SjF1CeZd9kWmZmevg

Expected behaviour
Tell us what should happen
Actual behaviour
Tell us what happens instead
System Configuration

LBRY Daemon version: 0.18rc1
LBRY App version: 0.18.0
LBRY Installation ID:
Operating system: Windows

Anything Else

Screenshots

duplicate of #803

@lyoshenka I don't think it's a duplicate.. I was going to mention that on the call but didn't want to prolong the conversation anymore.
This issue is more of a pricing update problem... Someone can overtake a claim and set a high lbc price and the person going to that claim will see the old price (or free).
There's a bit of timing involved, but this has happened in the past and I'm able to reproduce it.
Maybe it has to do more with the general "when do we invalidate cache" issue, not sure. But I was hoping to have a more short term solution which would product users by refreshing the price before purchase or something.
Looks like it was moved to lbry from lbry-app, not sure where it belongs.

@tzarebczan can you reproduce this issue using only lbrynet? I suspect this is a lbry-app issue involving caching, but if you can reproduce it in lbrynet, then this is the appropriate repo.
If you can ever call resolve on a name and get it to show you the wrong price, then we'll need to fix it here. Otherwise the solution may be for the app to call resolve before any credits are spent, just to refresh the cached price. That said, it's always possible that in the time between calling resolve and get, a new block comes in and the content changes. If that's the only way to trigger this, then I'm much less concerned about it.

@lyoshenka - no, the resolve command shows the correct price, but the app does not. @liamcardenas originally moved it from app to the daemon - maybe they also misunderstood the issue.
It's happening to me right now on lbry://seven - someone put the price at 550 LBC but shows free in app.

I'll move this back to the app side.

Issue moved to lbryio/lbry-app #797 via ZenHub


Activation function implementation choice

This issue is with regard to #1448 .
Some of the activation function implementations recently added to other frameworks like Pytorch, Tensorflow and MXNet that don't have an implementation in Chainer are:
1)CeLU - Pytorch, MXNet
https://arxiv.org/abs/1704.07483 (Introduced in this paper)
2)GLU - Pytorch
https://arxiv.org/abs/1612.08083 (Introduced in this paper)
3)ReLU6 - Pytorch, Tensorflow
https://arxiv.org/pdf/1803.08607.pdf (Application)
I'm looking to try and start implementing one of the above in chainer. Could I have some suggestions on which (if any) of the above will be a particularly helpful addition to the framework at the moment?

On ReLU6, Chainer could add an alias to F.clipped_relu(x, 6).

@aksub99, usually, we would implement new activation functions when several papers had referenced them or when someone needed to use them for some work they were doing.
If you'd like to implement new functions into Chainer, try looking at functions that are available in Numpy but not yet implemented in Chainer.
Thanks,

@Crissman Thanks for the suggestion! I'll do that.

@toslunar I'd like to work on ReLU6 which as you pointed out is a special case of 'F.clipped_relu' . Could you please elaborate on what you mean by adding an alias and how I can proceed?

On ReLU6, Chainer could add an alias to F.clipped_relu(x, 6).

@Crissman 'numpy.negative', 'numpy.power' and 'numpy.reciprocal' are available in Numpy but not in Chainer. Would any of these be useful additions?

For example, how about defining a function relu6 in chainer/functions/activations/clipped_relu.py and import the function to chainer/functions/__init__.py?

@toslunar I'd like to work on ReLU6 which as you pointed out is a special case of 'F.clipped_relu' . Could you please elaborate on what you mean by adding an alias and how I can proceed?

On ReLU6, Chainer could add an alias to F.clipped_relu(x, 6).

Thanks for the clarification. I'll work on it!


stack_order='fixed' sorts alphabetically instead of using given order

See title.
Logo(df, stack_order='fixed') results in stacks wherein the glyphs appear in alphabetic order, rather than in the order of df.columns

Thanks, I'll work on fixing this soon. Could you please provide a minimal example to reproduce this.
Ammar

I also would like to see this work! Here's an example:
`amino_acids = ['A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W', 'Y', 'V']
Sort amino acids in reverse alphabetical order
amino_acids_sorted = sorted(amino_acids, reverse=True)
Generate random integers between 1 and 20 for 3 rows
data = np.random.randint(1, 21, size=(3, len(amino_acids_sorted)))
Create DataFrame with columns in reverse alphabetical order
df = pd.DataFrame(data, columns=amino_acids_sorted)
print(df)
logomaker.Logo(df,stack_order='fixed')`

It looks like the columns are reordered to pandas default (alphabetical) when either
self.df = validate_matrix(...)
or
self.df = transform_matrix(...)
By simply moving the determination of C's before the input checks, this fixed the order issue. I am not by any means proficient at coding, so I don't know if this will cause other problems.

  # get list of characters
  self.cs = np.array([c for c in self.df.columns])
  self.C = len(self.cs)

  # perform input checks to validate attributes
  self._input_checks()


Fix broken link in docs

Sure no worries, I'll do that in a moment

Bah, these are broken too as I'm missing the tree/main part of the url, I'll fix that now

It's sad that mdbook doesn't check for link validity.

Ah that would be handy for sure - okay I think that's all of them, or most of them at least, if I spot any more as I go along I'll add them too

Lol https://github.com/Michael-F-Bryan/mdbook-linkcheck#configuration, I'll integrate this eventually! Thank you @nini-faroux

No worries!


If git-crypt is not installed rubiks does not work

Expected Behavior
Should be able to run rubiks after following the readme
Actual Behavior
Was unable to run rubiks because (I suspect) I do not have git-crypt installed.
Steps to Reproduce the Problem

Clone the repo
Try to run Rubiks

Specifications

Platform: Ubuntu 1604
Subsystem:

once installing git-crypt I also had to install htpasswd

htpasswd is not a function of rubiks, but of the rubiks repository you're trying to run against.
What's the error message when you run rubiks without git-crypt installed

Before installing git-crypt:
Traceback (most recent call last):
  File "../rubiks/rubiks", line 27, in <module>
    main()
  File "../rubiks/rubiks", line 24, in main
    sys.exit(command.Command.run_command())
  File "/home/ksharp/work/git/rubiks/lib/command.py", line 143, in run_command
    rc = cmd_obj.do_run(args.command)
  File "/home/ksharp/work/git/rubiks/lib/command.py", line 174, in do_run
    rc = self.run(nargs)
  File "/home/ksharp/work/git/rubiks/lib/commands/generate.py", line 46, in run
    files = collection.gen_output()
  File "/home/ksharp/work/git/rubiks/lib/load_python.py", line 206, in gen_output
    return self.outputs.write_output()
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 101, in write_output
    return self._write_output_clustered()
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 124, in _write_output_clustered
    uses_policybinding=uses_policybinding,
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 191, in _write_namespace
    p = op.write_file(path)
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 385, in write_file
    content = str(self.cached_yaml)
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 119, in __str__
    return self._internal_render()
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 112, in _internal_render
    ret += self.var[i].__str__()
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 120, in __str__
    return self.renderer(self._internal_render())
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 107, in _internal_render
    ret += self.to_string()
  File "/home/ksharp/work/git/rubiks/lib/kube_vartypes.py", line 27, in to_string
    s = str(self.value)
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 119, in __str__
    return self._internal_render()
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 107, in _internal_render
    ret += self.to_string()
  File "/home/ksharp/work/git/rubiks/lib/kube_vartypes.py", line 102, in to_string
    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

after installing git-crypt, BEFORE install htpasswd (or, more accurately, apache2-utils)
Traceback (most recent call last):
  File "../rubiks/rubiks", line 27, in <module>
    main()
  File "../rubiks/rubiks", line 24, in main
    sys.exit(command.Command.run_command())
  File "/home/ksharp/work/git/rubiks/lib/command.py", line 143, in run_command
    rc = cmd_obj.do_run(args.command)
  File "/home/ksharp/work/git/rubiks/lib/command.py", line 174, in do_run
    rc = self.run(nargs)
  File "/home/ksharp/work/git/rubiks/lib/commands/generate.py", line 46, in run
    files = collection.gen_output()
  File "/home/ksharp/work/git/rubiks/lib/load_python.py", line 206, in gen_output
    return self.outputs.write_output()
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 101, in write_output
    return self._write_output_clustered()
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 124, in _write_output_clustered
    uses_policybinding=uses_policybinding,
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 191, in _write_namespace
    p = op.write_file(path)
  File "/home/ksharp/work/git/rubiks/lib/output.py", line 385, in write_file
    content = str(self.cached_yaml)
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 119, in __str__
    return self._internal_render()
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 112, in _internal_render
    ret += self.var[i].__str__()
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 120, in __str__
    return self.renderer(self._internal_render())
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 107, in _internal_render
    ret += self.to_string()
  File "/home/ksharp/work/git/rubiks/lib/kube_vartypes.py", line 27, in to_string
    s = str(self.value)
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 119, in __str__
    return self._internal_render()
  File "/home/ksharp/work/git/rubiks/lib/var_types.py", line 107, in _internal_render
    ret += self.to_string()
  File "/home/ksharp/work/git/rubiks/lib/kube_vartypes.py", line 102, in to_string
    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

that's to do with the htpasswd (in this particular repository), and we should better trap that, and generate a proper error message - nothing to do with git-crypt that I can tell.

btw it works now that i installed those 2 things


Failed to create machine

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

create new vm

Expected behavior
Failed to create machine: create 'ubuntu': make rootfs: fetch index: decode index: invalid character '<' looking for beginning of value
Screenshots

Logs
Info report
OrbStack info:
  Version: 0.6.0 (60000)
  Commit: 785d7b9f634db63606f646784737f27a376775e0 (v0.6.0)

System info:
  macOS: 13.3 (22E252)
  CPU: arm64, 10 cores
  CPU model: Apple M1 Max

Duplicate of #143. This was an issue with Canonical's server that they've since fixed.


Simplify code around multiple solveOnePeriod

This PR resolves #496 by simplifying the code around multiple solveOnePeriod methods:

The check is performed in only one place (less overhead on user reading and understanding the code)
It does not require special use of the time_vary list(less overhead on user building on the code)

Hmm, whoops, this PR isn't clean. I'll set up a better one.


Create chroot for kafka in zookeeper

#12 would make this easier

This is actually not terribly easy. There are basically 2 zookeeper clients in ruby https://github.com/zk-ruby/zookeeper and https://github.com/lwoggardner/zkruby. The first uses native extensions to hook into a version of zookeeper in C which doesn't install successfully with Chef's gems. The second gem is a pure ruby gem but doesn't seem well supported and I had problems getting it to work.

May not be necessary anymore: https://issues.apache.org/jira/browse/KAFKA-404

Ugh I looked but apparently not hard enough. Thanks for the info!

No longer doing this


Random spawning for dinosaurs

Right now there is only one green dinosaur that spawns in the same place every time.
For a true shoot'em up experience, we could spawn dinosaurs at random places on the X axis and at random time intervals on the top of the screen.

https://github.com/AlmasB/FXGLGames/blob/d00f131f6911e5e865d540886bfab138167ca004/KeyRain/src/main/java/keyrain/KeyRainApp.java#L85-L87
is probably useful.
This looks like a fun student project, looking forward to new versions!

@AlmasB Thank you so much for sharing us the link!
Yes definitely, it's a cool student project 👌


Regenerate all gRPC VIs with grpc-labview <IP_ADDRESS>

[x] This contribution adheres to CONTRIBUTING.md.

What does this Pull Request accomplish?
This PR fixes #235. It does this by regenerating all of the client and server libraries using the latest grpc-labview. Note that the new generation code generates a lot of new VIs that weren't there before. I am going to get in touch the with grpc-labview folks before submitting to see if there is a way to not include the new VIs.
Why should this Pull Request be merged?
Customers will want to use the latest grpc-labview.
What testing has been done?
I ran the DCPower example, which uses all of the client/server libraries, and verified that it works.

Abandoning. grpc-labview is still buggy.  :(  https://github.com/ni/grpc-labview/issues/287


A question about negative samples generation in preprocessing.py

Hi Thomas,
I'm confused when you generate the negative edge labels of validation set as:
val_edges_false = []
    while len(val_edges_false) < len(val_edges):
        idx_i = np.random.randint(0, adj.shape[0])
        idx_j = np.random.randint(0, adj.shape[0])
        if idx_i == idx_j:
            continue
        if ismember([idx_i, idx_j], train_edges):
            continue
        if ismember([idx_j, idx_i], train_edges):
            continue
        if ismember([idx_i, idx_j], val_edges):
            continue
        if ismember([idx_j, idx_i], val_edges):
            continue
        if val_edges_false:
            if ismember([idx_j, idx_i], np.array(val_edges_false)):
                continue
            if ismember([idx_i, idx_j], np.array(val_edges_false)):
                continue
        val_edges_false.append([idx_i, idx_j])

However, the test negative set is confirmed by
if ismember([idx_i, idx_j], edges_all):
           continue

Why does validation set use ismember([idx_j, idx_i], train_edges) and ismember([idx_i, idx_j], val_edges) instead of ismember([idx_i, idx_j], edges_all)?
Wu Shiauthie

I understand why assert error appears sometimes when running the program. This is because val_edge_false may appear in edges_all.
File "train.py", line 47, in <module>
    adj_train, train_edges, val_edges, val_edges_false, test_edges, test_edges_false = mask_test_edges(adj)
  File "/home/lf/work/gae/gae/preprocessing.py", line 100, in mask_test_edges
    assert ~ismember(val_edges_false, edges_all)
AssertionError

Hi,
I think a program without assert error, that is, the correct code, is equivalent to the following code:
val_edges_false = []
    while len(val_edges_false) < len(val_edges):
        idx_i = np.random.randint(0, adj.shape[0])
        idx_j = np.random.randint(0, adj.shape[0])
        if idx_i == idx_j:
            continue
        if ismember([idx_j, idx_i], edges_all):
            continue
        if val_edges_false:
            if ismember([idx_j, idx_i], np.array(val_edges_false)):
                continue
            if ismember([idx_i, idx_j], np.array(val_edges_false)):
                continue
        val_edges_false.append([idx_i, idx_j])


Chisel Docker's UNIX password

We are trying to use chisel3-tools docker in dockerhub. However we can't get to root of chisel docker or change the root password when we run the docker in bash.
So what is the root password of Chisel Docker?
Best wishes.

I believe you can just run a command as root using Docker no? Once you are root in the container, it should be easy to change the container's root password.
http://gaurav.koley.in/2018/root-user-in-docker-container


mount-zip: init at 1.0.8

Description of changes
New package mount-zip, built from https://github.com/google/mount-zip.
A read-only fuse filesystem for opening and working with zip files. Especially useful in TUI file managers such as vifm.
It's basically a modernised, read-only alternative to the now unmaintained fuse-zip. I've been using this version locally for a month or two without issue, so figured I'd contribute to this amazing project and community.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Many thanks for your input @ocfox - good spot on the build inputs, plus I like the trick with the version number. A big thanks for the autotools pointers - I was following docs and existing packages for examples, but there's a lot out there and don't think I'd have spotted these otherwise. I've updated the source branch, rebasing on this upstream master and squashing the suggested changes. I hope that's the right thing to do - I'm new to PR'ing on open source! 😄

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

1 package built:

mount-zip

Setting the PR to draft, feel free to remove it from draft when the requested changes are implemented.
If you don't feel like doing it, please just close the PR.

I've made the changes you requested @drupol. I didn't rebase nixpkgs as I don't really know the protocol when it comes to such things, but it looks like it should be a clean merge anyway. 👍


[Request] Homebridge-Sharp

Hello everyone, with the recent addition of TV's in HomeKit I have added most of my TV's. I have one tv in particular that doesn't run common OS's.
Info for this request:
Documentation: https://github.com/benburkhart1/sharp-aquos-remote-control
All I really want is just to be able to see if the TV is on or Off in HomeKit. Hdmi inputs are an extra.
Thanks!

@toshibochan I am going to attempt to, but TV's are still a little weird in my house with 1/3 of them consistently working with HomeKit. If you are willing to test the plugin that'd be amazing once it's finished.

let me know when is ready to test

@toshibochan what Sharp TV model have you managed to connect as a switch? I'm getting a connection refuded error message and wonder if my config is right. How can I find the correct IP and port of the TV?

Ask in plugin’s github. Here is for homebridge , not for specific plugin.


copy from Zotero storage

Copy files from Zotero storage instead of downloading, if possible. Discussed in #66.
Changes

import shutil for file copy
add zotero_storage arg to ZoteroDB init to specify the Zotero storage location, default is "~/Zotero/storage/"
if pdf for a document doesn't exist yet, first check Zotero storage.
if one pdf exists in Zotero storage, copy it to the paperqa storage location and return the destination path
if there is an error attempting to copy the pdf, fall back to downloading
if zero or more than one pdfs exist, fall back to downloading

Hi @g-simmons thank you for this PR. We just released v5 today which changes basically the whole repo.
If you are still interested, please rebase this PR atop the current main branch.

@jamesbraza thanks for the info. I probably won't be able to rebase this any time soon (other time commitments) :/


Using

Hello guys, maybe some of you can explain what am I doing wrong or maybe there is some limitation with using plain html in react-native-webview. From the beginning:
I have WebView component which looks like this:

as you see I pass as source "injectedHtml" which is a string with plain html code and it looks like this:

And now my question is, is it possible to make it work in this or any other way? The goal is to import function or object from other file ( like in javascript ) to use it inside this script tag. When I tried this approach, it doesn't work and I cannot log any errors from webview. As I read here https://javascript.info/modules-intro it's should be possible in normal environment ( I mean on clear web apps or something like that ) so maybe there is some limitations on webview site? I would be grateful for any help!
Environment:

OS: Mac OS
OS version: Ventura 13.3.1
react-native version: 0.70.6
react-native-webview version: 11.25.0

Update on 2.08.2023, still searching and waiting for any help / solution


preview of diary entries cuts short in middle of screen - preview could be longer?

Set height of card min to 90px and max to 145 px


include archive node tools in the deb

Include  archive_blocks, missing_subchain, and missing_block_auditor in the deb

Merged https://github.com/MinaProtocol/mina/pull/8013


Improvement in methods 'retrieve!' and 'exists?' - Volume API500

Scenario/Intent
Currently, the retrieve! and exists? methods can search a volume API500 by the name attribute on data or within properties. In the SDK is verified the existence of properties, if in case does not exist the parent method is called and the search will be by name within data. I think there is an improvement that can be made. Maybe it would be good to search first by name within data. Currently the method retrieve! throw an exception (IncompleteResource), if the attribute name or uri has not been passed, I can capture this exception and then go search for name within properties.
@tmiotto , @fgbulsoni , @ricardogpsf .What do you think?

It is more simples if you set the name as the root attribute on the initialize method, when user are creating a new instance of resource.
Something like:
´´´ruby
def initialize(client, params = {}, api_ver = nil)
super
Default values:
@data['type'] ||= 'StorageVolumeAttachment'
@data['name'] ||= @data['properties']['name'] if @data['properties'].@data'properties'
end
´´´

No change needed. Closing this question.


Failed logon does not give error.

A failed logon to a "Microsoft Exchange POP3" server does not give a error, and sets the authenticated flag.
Wireshark summary:
S: -ERR Logon failure: unknown user name or bad password.

Fixed: https://github.com/mattnenterprise/rust-pop3/pull/19

This should have been fixed in bf607bbc8a2c472c075dc8086464b6ae5efed8e9


[Improvement]: The docs website should have multi-versions

Search before asking

[X] I have searched in the issues and found no similar issues.

What would you like to be improved?
We should support multi versions of the docs website.
Nowadays, the 0.4.0 version is going to release, but massive guides are different from the 0.3.* version.
How should we improve?
The guide website is based on the mkdocs component.
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Subtasks
No response
Code of Conduct

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

Closed as have been supported.


UART No and other pins

How can I change UART number and other pins ?

THat's up to you to dig-in low-level part. You may take an example and open its low-level config, then change GPIO and UART settings + potentially DMA config for your MCU.


There is an extra 'Back' button on the Sign in panel when using 'Integrated Sign-in'

Storage Explorer Version: 1.18.1
Build Number: 20210311.3
Branch: main
Platform/OS: Windows 10/ Linux ubuntu 18.04/ MacOS Catalina
Architecture: ia32/x64
Regression From: Previous release (1.18.1)
Steps to Reproduce

Open Storage Explorer -> Open 'Settings -> Application-> Sign-in ' -> Select 'Integrated Sign-in'.
Open the connect dialog -> Click 'Subscription' -> Click 'Next'.
Check there is no 'Back' button on the Sign in panel.

Expected Experience
There is no 'Back' button on the Sign in panel.

Actual Experience
There is an extra 'Back' button on the Sign in panel.

Additional Context
Show the below behavior after clicking the 'Back' button.

We can't get rid of the back button, but I believe I have fixed the crashing. Please confirm that has at least been fixed.

@MRayermannMSFT
Verified this issue on build 20210315.7. The crashing is fixed. Show the below behavior after clicking 'Back':
The Sign in dialog exits and show the activity log 'Unable to sign in: User canceled authentication.'

Update:
The expected behavior after clicking 'Back'
Go back to the 'Sign In' dialog, as below screenshot.


feat: :sparkles: Merge dev into main and create new release

Description
This pull request will create a new release
Checklist:

[ x ] I have performed a self-review of my own code
[ x ] I have commented my code, particularly in hard-to-understand areas
[ x ] I have made corresponding changes to the documentation (postman)

Screenshots (optional)

/approve

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.4.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Why does Semux need the function PendingManager.processTransaction() ?

Why does Semux need the function PendingManager.processTransaction() ?
src/main/java/org/semux/core/PendingManager.java
    protected ProcessingResult processTransaction(Transaction tx, boolean isIncludedBefore, boolean isFromThisNode) {
         ......
    }

Because of the BlockGasLimit, it is possible for a block to fail to package all transactions in a tx pool.
Each time a block is added, let's assume that the block contains 300 transactions and the pool accumulates 1000 transactions due to receiving pressure.
The onBlockAdded() function triggers the 1000 transactions to be reexecuted, blocking block adding.
If the nodes are still receiving transactions at this point, the transactions will be packaged and consensused more slowly, and the tx pool will pile up transactions further, creating a vicious cycle.
    @Override
    public synchronized void onBlockAdded(Block block) {
            List<PendingTransaction> txs = reset();
            for (PendingTransaction tx : txs) {
                accepted += processTransaction(tx.transaction, true, false).accepted;
            }
    }

So, what is the necessity of doing this?
Thx!

Yes @fenghaoming, you're right!
The purpose of executing pending transactions in the pool is to exclude invalid transactions after the state change caused by importing a new block.
There is definitely a performance cost associated with this process and there are two possible workarounds:

To make the notifcation process asynchronous so the block importing will not be blocked;
To make the pending transaction validation lighter, for instance, only to check the sender's balance only.

Will definitely consider these options.

Yes @fenghaoming, you're right!
The purpose of executing pending transactions in the pool is to exclude invalid transactions after the state change caused by importing a new block.
There is definitely a performance cost associated with this process and there are two possible workarounds:

To make the notifcation process asynchronous so the block importing will not be blocked;
To make the pending transaction validation lighter, for instance, only to check the sender's balance only.

Will definitely consider these options.

First solution
I think the first asynchronous solution is still unreliable because all functions in the PendingManager need to be synchronized.
Without blocking block adding, but blocking transactions receiving like AddTransaction. it still reduce the TPS.
This solution just pass the problem on without really solving it.
Second solution
I think the second lighter scheme is reasonable, and this is how Ethereum deals with it. An example is as follows:
Example
Assume that an account currently has a nonce of 1 and a balance of 1000 ETH, and send four transactions as follows quickly and continuously (Nonce is null when user sends) :

The first transaction: GasPrice is 1 ETH, GasLimit is 700, and the actual GasUsed consumed by the contract is 400.
The second transaction: GasPrice is 1 ETH, GasLimit is 500, and the GasUsed actually consumed by the contract is 300.
The third transaction: GasPrice is 1 ETH, GasLimit is 400, and the actual GasUsed consumed by the contract is 300.
The fourth transaction: GasPrice is 1 ETH, GasLimit is 200, and the actual GasUsed consumed by the contract is 100.

###According to Semux's current treatment:
The first three transactions were successfully added to the tx pool (1000 ETH is just enough for the GasUsed accumulated according to the pending transactions execution),
while the fourth transaction immediately returned an "insufficient balance" error.
###As Ethereum does:

All transactions are successfully added to the trading pool, and on subsequent block generation:
Then the first and second transactions are successfully packaged in block N, with nonce of 1 and 2 respectively;
The third transaction was dropped due to insufficient balance (300 ETH in the new world state after executing the first two, and 400 ETH expected for this transaction);
The fourth transaction is demote into the queue with a nonce of 4 (because the third transaction occupies a nonce of 3).

After that, if the user initiates the following transaction:

Fifth transaction: GasPrice is 1 ETH, GasLimit is 100, and the actual GasUsed consumed by the contract is 50.

The fifth and fourth transactions are successfully packaged in blocks N + M with a nonce of 3 and 4 respectively (the fifth transaction reoccupies a nonce of 3).

Therefore
We can see that the removal of the pending transactions execution in the PendingManager only results in the following two disadvantages:

First, if the balance is sufficient to verify, it shall be in accordance with 'gasLimit', rather than the 'gasUsed' actually consumed by the contract as a reference.
This requires users to have a sufficient understanding of the 'gasUsed' of the contract, so as to avoid transaction verification failure caused by setting too high 'gasLimit'.

Second, the balance check for each transaction is independent, so when a user sends multiple transactions in rapid succession, subsequent transactions cannot be checked for an "insufficient balance" error in real time.

These two disadvantages only affect the case of sending multiple transactions in rapid succession when the user has only a small balance.
I think it's worth the huge performance overhead of pending transactions execution.
Do you agree with me? Thank you very much!

This is a thorough analysis!
I agree with the first conclusion but have some doubt about the second scenario.
The balance check should deduct the sender’s balance by the theoretical max cost and increase its nonce to the pending state after each added transaction. With a large number of transactions, they should be reorganized by the designated nonce and validated the same way. The transaction validation in pending pool may include false positives but should be sound.
Out of curiosity though, are you able to make a PR to improve the pending manager? :)

Also note that most of the account states should already be in cache and can be retrieved fairly fast.

This is a thorough analysis!
I agree with the first conclusion but have some doubt about the second scenario.
The balance check should deduct the sender’s balance by the theoretical max cost and increase its nonce to the pending state after each added transaction. With a large number of transactions, they should be reorganized by the designated nonce and validated the same way. The transaction validation in pending pool may include false positives but should be sound.
Out of curiosity though, are you able to make a PR to improve the pending manager? :)

May I ask what is your suspicion about the second scenario? Could you give me an example?
Do you want me to optimize the Pending Manager as I said above (remove mock execution, do not maintain a set of world states, just do simple "per transaction independent" balance checks)?

Let me clarify it a bit - my point was that we should not remove transaction execution, but simplify it instead.
When a new block is imported,

Create a new pendingState based on the current global state
Re-validate all transactions (assuming format and signature have been validated when received for the first time):

Check transaction nonce:

If it's greater than account nonce, move it to a secondary queue
If it's less than account nonce,  discard it immediately

Check if value + fee + gasPrice * gasLimit is not less than account balance

If not, discard it immediately

If all checks pass,

Increment the sender's account nonce in pendingState
Deduct the sender's balance by value + fee + gasPrice * gasLimit

The above process do not invoke any VM execution and only involves account state (cached with high probability), so  it's faster.

subsequent transactions cannot be checked for an "insufficient balance" error in real time

Essentially, transactions from the same sender are validated sequentially.
I might have missed details, but feel free to add as you see fit. :)

Let me clarify it a bit - my point was that we should not remove transaction execution, but simplify it instead.
When a new block is imported,

Create a new pendingState based on the current global state

Re-validate all transactions (assuming format and signature have been validated when received for the first time):

Check transaction nonce:

If it's greater than account nonce, move it to a secondary queue
If it's less than account nonce,  discard it immediately

Check if value + fee + gasPrice * gasLimit is not less than account balance

If not, discard it immediately

If all checks pass,

Increment the sender's account nonce in pendingState
Deduct the sender's balance by value + fee + gasPrice * gasLimit

Done

The above process does not trigger any VM execution and only requires account state (cached with high probability), so it should be fast.

subsequent transactions cannot be checked for an "insufficient balance" error in real time

Essentially, transactions from the same sender are validated sequentially, so "insufficient balance" error should be immediately available.
I might have missed details, but feel free to add as you see fit. :)

I agree with you on the whole, but I have a different opinion on one point
I don't think it is necessary to maintain the balance of the account in pendingState, so I don't need to perform the operation "Deduct the sender's balance by value + fee + gasPrice * gasLimit".
Example:
For example, there are 3 transactions from the same sender with a balance of 1000 ETH, each of which has a GasPrice of 1 ETH, a GasLimit of 500, but the actual execution consumes a GasUsed of 300
According to your approach:
The first two transactions successfully joined the PendingPool, and the last transaction reported an error of "insufficient balance" in real time.
My view:
All three transactions were successfully added to the PendingPool because "500 is less than 1000" (where each transaction is "independently" compared with the account balance by GasLimit), and finally successfully packaged into the block (compared with the "cumulative" GasUsed when the block is executed).
So:
I think your approach requires the user not to set the GasLimit too high (much higher than GasUsed) when sending a transaction, otherwise subsequent transactions from that user could easily check for errors "unreasonably".

Yes, your example is absolutely correct. The proposal is an optimistic approach and may falsely reject a transaction even if the sender has enough balance to cover the actual transaction cost. I think it only affects users who deliberately wants to spend all the available funds. In this case, they can potentially lower the gasLimit to work around it. Right?

Yes, your example is absolutely correct. The proposal is an optimistic approach and may falsely reject a transaction even if the sender has enough balance to cover the actual transaction cost. I think it only affects users who deliberately wants to spend all the available funds. In this case, they can potentially lower the gasLimit to work around it. Right?

I stand in the user's position to think about this problem.When I send a transaction, I don't know how much gas it actually consumes, so I usually try to set the gas as high as possible to avoid the error of outOfGas and wasting my ETH.This is just my personal opinion, do not know right?
Another reason I don't want to continue to maintain user balances in "onBlockAdded()" is that it still needs to read every transaction in the trade pool to operate, even if it no longer penetrates into the VM layer, but the time complexity is still O(n).
I think the trade pool should be maintained in both account and nonce dimensions.
public class TransactionPool {
    private WorldState worldState;

    // map< address, accTxs >
    Map<ByteArray, AccountTransactions> txs = new HashMap<>();

    public synchronized void onBlockAdded(Block block) {
        // reset worldState
        worldState = facade.getBlockchain().getWorldState().track();

        // retrieve max nonce of each account in given block
        Map<ByteArray, Long> accountMaxNonce = new HashMap<>();
        for (Transaction tx : block.getTransactions()) {
            ByteArray address = ByteArray.of(tx.getFrom());
            long nonce = tx.getNonce();
            accountMaxNonce.compute(address, (k, v) -> v == null || v < nonce ? nonce : v);
        }

        for (Map.Entry<ByteArray, Long> e : accountMaxNonce.entrySet()) {
            ByteArray address = e.getKey();
            AccountTransactions accTxs = txs.get(address);

            //remove txs whose nonce is outdated
            List<Transaction> removed = accTxs.forward(e.getValue());

            //remove first pending whose balance is insufficient and demote subsequent txs
            Amount available = worldState.getAccount(address.getData()).getAvailable();
            accTxs.filter(available);
        }
    }

public class AccountTransactions {
    // map< nonce, tx >, continuous nonce which is ready, and pendingNonceMin equals to accountNonce in DB
    private final Map<Long, Transaction> pending = new HashMap<>();
    private Long pendingNonceMin;
    private Long pendingNonceMax;

    // map< nonce, tx >, large nonce which greater than (pendingNonceMax + 1)
    Map<Long, Transaction> queue = new HashMap<>();

    // Remove transactions whose nonce less or equal given nonce
    public void forward(long nonce) {
        while (pendingNonceMin != null && pendingNonceMin <= nonce) {
            pending.remove(pendingNonceMin);
            if (pending.get(pendingNonceMin + 1) != null) {
                pendingNonceMin++;
            } else {
                pendingNonceMin = null;
                pendingNonceMax = null;
            }
        }
    }

    // Remove the first transaction with an insufficient balance, and demote subsequent transactions from pending to queue
    public void filter(Amount available) {
        Transaction pendingMin = pending.get(pendingNonceMin);
        if (available.greaterThenOrEqual(pendingMin.value.add(pendingMin.fee).add(pendingMin.gasPrice.multiply(pendingMin.gas)))) {
            return; // available is enough
        }

        // remove first
        pending.remove(pendingNonceMin);

        // demote subsequent
        for (Map.Entry<Long, Transaction> e : pending.entrySet()) {
            queue.put(e.getKey(), e.getValue());
        }

        // clear pending
        pending.clear();
        pendingNonceMin = null;
        pendingNonceMax = null;
    }

So we're going to do it this way, the number of onBlockAdded transactions that need to be processed is related only to the number of transactions in the block, not to the number of transactions pending.

Another reason I don't want to continue to maintain user balances in "onBlockAdded()" is that it still needs to read every transaction in the trade pool to operate, even if it no longer penetrates into the VM layer, but the time complexity is still O(n).

We can simply sort the transactions based on the gasPrice and limit the number of transactions that are actively evluated for pending block. So the complexity can be limited to O(1). The execute time is not wasted as it will spend up the block creation process, given most of the account states are hot.
That said, I do like the idea about grouping transactions by the sender's address. I will explore this a bit more.

We can simply sort the transactions based on the gasPrice and limit the number of transactions that are actively evluated for pending block. So the complexity can be limited to O(1).

If there 10,000 txs in txPool, but only 1000 txs that are actively evluated for pending block. You maintain user balances in txPool only with the 1000 txs. Here comes another new one tx. In my opinion, we should judge whether the balance of this transaction is sufficient by deducting the cost of those 10,000 transactions.Maintaining only those 1000 transactions makes no sense on its own.

The execute time is not wasted as it will spend up the block creation process, given most of the account states are hot.
I'm sorry, I don't understand how it will spend up the block creation process. Could you give an example? Thank you!


Is the author's S3 bucket supposed to be public?

When I try to deploy the CFT I get an error that I do not have permissions.
Resource handler returned message: "Your access has been denied by S3, please make sure your request credentials have permission to GetObject for blog-firewall-domain-list-manager-solution/domain-list-manager.zip. S3 Error Code: AccessDenied. S3 Error Message: Access Denied
I'm not sure what S3 key its asking for.

I've been working with AWS Support and neither of us can figure out why this always fails to deploy on the DomainListUpdater.  It seems to be related to the bucket that contains the Lambda code.  Even if we create a new bucket in S3, upload the .py code, specify the alias in the CFT as well as the alias to a KMS key created for said S3 bucket it still fails.
The text and default in the CFT about the "zip" file is confusing.  We don't see a zip file anywhere in the solution, out only assumption is it must download the zip file from a public S3 bucket which is predefined in the default values as adding our own does not work.

to help out the next guy.  Take the .py Lambda that is provided in this repo.  Zip it up using the name domain-list-manager.zip.  Upload that Zip file to your S3 bucket.  Specify the S3 bucket name (not ARN) in this CFT in 2nd to last parameter field.  For the S3 key field in the CFT do nothing leave default.