Rework error handling in JNI code

This patch reworks error handling in the following way:
some_function() {
    <declare vars>

    if (<error>) goto out;
    if (<error>) goto out;
    ...

    <set result to success>

out:
    if (<var allocated>) <release var>;
    if (<var allocated>) <release var>;

    return <result>;
}

In other words, function now has only one return path; that return path first frees all allocated resources, and then returns.
This approach is less error-prone because:

you don't have to duplicate resource freeing in each return branch
you don't need to track what resources should be freed in what branches

I also unified exception messages a bit and add comments to separate sections in large functions.

Nice!


Recipe editing

Creating and editing recipes use the same form. It's been renamed RecipeForm
instead of Create.

It's a big one ;-). Mostly just renamed file though.

This is awesome! I may or may not have time to really dig into this in the next day or so (visiting my girlfriends family for Christmas). I'll take a look as soon as possible.

I have one question: how users will navigate here? There should be a button on the recipe page that a user can click to edit a recipe.
There would also need to be permissions that only allow certain users to access and edit recipes. I believe the backend has these auth checks already but the frontend would need them as well. This also just might be out of scope for this PR. I think we should just get the the editing piece working. Then move on to making sure users can't get where they are not allowed on the frontend.

Good call on the buttons, although I think there may be a better way to display the two lists, and specifically the ingredients one. The delete button needs the label or it'll look awkwardly aligned so maybe the solution is to remove the labels for the other fields? We already include the names on blank ones and it's easy to figure out what each field is when the values are entered.
Regarding the user journey, I hadn't included it in the PR because I still haven't figured out how to do it properly and it felt like it'd be better off as a future PR. Ideally we'd include a link on each recipe page but only when the owner views them. Including a check to make sure the logged in user matches the recipe owner when going directly to the URL should be easy enough.

I agree with removing the labels on the ingredients fields. They really don't need them and it just adds to the length of the page. Feel free to drop them.
As for the user journey, I'll create an issue for it. If you want to take that up next feel free. Your comment above is exactly what I would be looking for as well.


Add Support for importing SSH Keys from Github

Enhancements

Added support for importing SSH Keys from Github (fix #1)
Added check for storage (fix #2)

Bug Fixes

Fixed CentOS image references (fix #3)

@kyleinprogress - these changes look great, thanks so much for contributing!!


Update Met Office data

Update near-surface temperature dataset by Met Office.
TODO: Archive unused steps in a separate PR.

Sorry, I created a reference branch for this, I'll close this PR and create a new one.


Operate ST95 in reader mode

send SPI command for read
receive SPI response of the read out ID

firmware example
http://www.st.com/content/st_com/en/products/embedded-software/st25-nfc-rfid-software/stsw-st95hf001.html

Imported complete library from ST into project --> fairly easy API functions to be used for UID read out, etc...

UID readout is all we need. works very reliably (code-wise; not yet hardware-wise)


Fixed missing arguments to string.format call

The same %s.%s._type style is used later in this same helper method for storing values at line 333, presumably they should match
Summary of testing issue
If you try using string.format without supplying the appropriate parameters, it throws an error, so I'm uncertain how this was not an issue before.
Code tested:
print( string.format( "%s.%s._type" ) )

Result:
input:1: bad argument #2 to 'format' (no value)

Summary of fix
Fix to code proposed: Add in name and key to fill the %s spots, just as it is done on line 333
Code tested:
local name = "name"
local key = "key"
print( string.format( "%s.%s._type", name, key ) )

Result:
name.key._type

I realized why this was never an issue before. It's only utilized if storing trying to use the table properties of gets/sets. I think most people are probably using the registry helpers for nesting options, not storing tables directly. There should really be a unit test mod for this 😛

Good catch thanks for the PR.
I barely ever use util.shared_table myself but I'm still surprised I never ran into this since it's used around the place in different tools.
Most people who use this framework I would imagine only really use the pre-built packages which definitely don't contain this version of the file.


Fix grammar in auto_dispose.mdx

@rrousselGit, should I tag you when a PR is ready to be reviewed? I'm not really sure how things work here. I don't really have any experience contributing to open source repos.

LGTM thanks!

No need to tag me. But it's a bit random as for when I'll look at it


Allow users to configure the deprecation decorators

We don't have a way to change the default decorator now. Unless the user manually:

Build pyls-memestra with the dev installation in your system
Go to https://github.com/QuantStack/pyls-memestra/blob/943130b68a403e21f64d7671b70c7e365caff1cf/pyls_memestra/plugin.py#L8 and change it to the name of the package you're using + the wrapper, if needed please see https://memestra.readthedocs.io/en/latest/

@SylvainCorlay we have to fix this eventually. Any ideas on how to allow users to change this?
I'd be thankful for any insights, couldn't think of anything.

Yes, I think that decorators could be read from a configuration file eventually.
Just making  deprecated_uses = memestra(code, decorator=MEMESTRA_DECORATORS)  where ``MEMESTRA_DRECORATORSwould be set to("decoratortest", "deprecated"))` at the top of the file, and later on read from a configuration file upon loading the module may be good enough.

Closed by #31


Rethinking contributors page

The contributors page seems to be stable. Having a contributors page which is not updated doesn't convey that the OpenBazaar project is growing fast. I would remove the list and list to a contributors page on GitHub?
For example, Node.JS has a very polished and up-to-date list at https://github.com/nodejs/node/blob/master/AUTHORS

This is a good idea, I can help with this. Will revisit this soon.


Add lint scripts.

pylint is crashing on our code so using flake8 for now (it gives more
output anyway).
Issue #1 !

I'm going to go ahead and merge these as they are new scripts that don't affect anything else and are useful for code health.

Does this introduce a dependency in the environment to some new tools? How
configurable is the tool in terms of style and formatting choices?
Merged #645 https://github.com/GoogleCloudPlatform/datalab/pull/645.
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/datalab/pull/645#event-436679418.

It is an additional dependency but running this script is purely elective. Pylint itself would be an additional dependency.


Update sbt-mdoc to 2.2.18

Updates org.scalameta:sbt-mdoc from 2.2.2 to 2.2.18.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "sbt-mdoc" } ]

labels: sbt-plugin-update, semver-patch

Superseded by #205.


Fallback to way id if node id is gone

Nodes seem to go missing more often than ways, so the ref we have is outdated. This means iD can't open the right thing and instead shows a blank spot in DC. We should fallback to way ids in those cases, highlighting the slightly wrong thing is better than nothing.

We did this.


More explicit static_for error when different return types

Codecov Report

Merging #2 (f10da4b) into master (fb226c9) will increase coverage by 8.81%.
The diff coverage is 100.00%.

:exclamation: Current head f10da4b differs from pull request most recent head 265c2c7. Consider uploading reports for the commit 265c2c7 to get more accurate results

@@            Coverage Diff             @@
##           master       #2      +/-   ##
==========================================
+ Coverage   89.20%   98.01%   +8.81%
==========================================
  Files          13       13
  Lines         389      403      +14
==========================================
+ Hits          347      395      +48
+ Misses         42        8      -34

Impacted Files
Coverage Δ

include/cbr_utils/clock_traits.hpp
100.00% <ø> (ø)

include/cbr_utils/cyber_enum.hpp
97.50% <ø> (ø)

include/cbr_utils/digitset.hpp
100.00% <ø> (ø)

include/cbr_utils/integer_pack.hpp
100.00% <ø> (ø)

include/cbr_utils/integer_sequence.hpp
100.00% <ø> (ø)

include/cbr_utils/introspection.hpp
100.00% <ø> (ø)

include/cbr_utils/synchronizer.hpp
97.05% <ø> (ø)

include/cbr_utils/synchronizer_impl.hxx
100.00% <ø> (ø)

include/cbr_utils/utils.hpp
90.00% <ø> (ø)

include/cbr_utils/cyber_timer.hpp
100.00% <100.00%> (+47.88%)
:arrow_up:

... and 4 more

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 fb226c9...265c2c7. Read the comment docs.


now that mtimes has been removed from watchpack, how do we get all changed/removed files?

Feature request

What is the expected behavior?
It seems like the new version of WatchPack (v2.0.0) are getting rid of the mtimes variable. However, from my research it seems like that variable was the only way to get the list of changed files that triggered a re-compilation (source).
As such, there should be an alternative way to get this list of changed files.
What is motivation or use case for adding/changing the behavior?
Seems like a pretty useful feature for the watchRun hook, as there are already a couple people (including me) that use it.
How should this be implemented in your opinion?
Watchpack actually provides the info we need, in the variable filesModified that it passes to Watching.js. However, Watching.js doesn't use it at all. Ideally I think this variable should be provided in the watchRun hook, but it should also be fine to just store it as a property just like how it's done with removedFiles, eg in Watching.js:
this.compiler.filesModified = filesModified;

Are you willing to work on this yourself?
yes

We have 4 variables here:
// Timestamps for files
this.compiler.fileTimestamps;
// Timestamps for directories
this.compiler.contextTimestamps;
// Removed files
this.compiler.removedFiles;
// Modified files
this.compiler.modifiedFiles;

// Timestamps for directories
this.compiler.contextTimestamps;

for directories, I am seeing empty objects in compiler.contextTimestamps - is that expected?

// Removed files
this.compiler.removedFiles;
// Modified files
this.compiler.modifiedFiles;

is there also anything like addedFiles?

is there also anything like addedFiles?

I done a console.log of each keys in compiler that contains the string file or File, and it output this :
compiler.outputFileSystem
compiler.intermediateFileSystem
compiler.inputFileSystem
compiler.watchFileSystem
compiler.modifiedFiles
compiler.removedFiles
compiler._assetEmittingWrittenFiles
compiler._assetEmittingPreviousFiles


Refactor permission tests to match samplesheets conventions

With #1706 done, the permission tests in the samplesheets app are now the new yardstick regarding permission test conventions.
The other apps should be similarly refactored. This is not urgent, but something which would be nice to have for the current release.
Spec

Split tests per view class
Follow consistent method naming and docstrings
Set URL in class to avoid repetition where applicable
Use cleanup_method and setUp() set up things, remove unnecessary iteration within actual tests

Tasks

[x] Update tests in irodsbackend
[x] Update tests in irodsinfo
[x] Update tests in landingzones
[x] Update tests in ontologyaccess

Done.


[WIP] Pass the SparkSession when resolving the tables in the DeltaTableBuilder

Signed-off-by: Helge Bruegner<EMAIL_ADDRESS>
Description

Forward the SparkSession when resolving the tables in the DeltaTableBuilder
Remove some unused imports

Resolves #1475
How was this patch tested?

TBD
Does this PR introduce any user-facing changes?
No.

I would need some guidance regarding the testing: is there any test I could add or is this covered already?

I would need some guidance regarding the testing: is there any test I could add or is this covered already?
It's fine to not add a test for this trivial change.


Feat: add support for docvalue_fields and stored_fields in TopHitsAggregation

Hello,
It is currently impossible to my understanding to add "docvalue_fields" to a top hits aggregation. Here's a proposition using the storedFields field.
Thanks

Thank you for the quick review. I fixed the storedFields addition and added docValueFields as done in InnerHit.

Thank you!

Do you think you could make a release soon ?

I'd like to include the update to Elasticsearch 8.15.3, which looks to be imminent.


Update mini player UI

After consulting with our designer we decided to make these small changes to mini player UI.

Font changes:

Podcast episode title -> Podcast episode title
Podcast author -> Podcast author
Authors font size is reduced
Both fields now use same letterSpacing and height

Play/Pause buttons size is reduced
Now has a distinctive background color

Hi @erdemyerebasmaz,
With the mini player I have corrected the theming colours for the Scaffold, have aligned the text styling theme with the episode tiles and will be reviewing all text to ensure it is correctly themed so it will fit better with the Breez styling; however, the changes around the mini player colours and play/pause button styling do not fit with the direction I wish to take it so I will be declining those changes.

@amugofjava thanks. Can't we do something dynamic re the colors? What's wrong with the button design?

Hi @kingonly,
Yes, there must be a theme element we can use for the colours to allow you to apply your theme whilst not affecting it for the standalone version. Perhaps the cardColor value could be used as I don't have any cards as such as the moment. What do you think?
In terms of the button design, I sent two screenshots to a few of friends who have not seen my app - one for each design style. They all preferred the slightly larger player icon without the coloured circle background of the original design, and they all preferred the slightly smaller font size on your design as it was clearer and they could see more of the text. So, the commits I have made reflect this.

@amugofjava gotcha. I'll check with @roeierez what can we do here. Re the button, it's hard to argue with users' feedback, so I won, but fyi this change was suggested by our designer, and we like it 🤷♂

Hi @kingonly,
Yes, there must be a theme element we can use for the colours to allow you to apply your theme whilst not affecting it for the standalone version. Perhaps the cardColor value could be used as I don't have any cards as such as the moment. What do you think?

@amugofjava I think we can use backgroundColor if you merge my changes on podcast_details.

OK @erdemyerebasmaz, let's try backgroundColour. Now i have corrected the Scaffold to use scaffoldBackgroundColor as in your PR, backgroundColor is no longer being used anywhere.

@amugofjava Could you also add mainAxisAlignment: MainAxisAlignment.center, to mini player's Column? The items are not vertically centered on last build for our use case.

Sure @erdemyerebasmaz :)

Sure @erdemyerebasmaz :)

I went ahead and opened a PR https://github.com/amugofjava/anytime_podcast_player/pull/40


Dogfood Track 2: koans

The goal of this ticket is to walk through Track 2 koans a student and ensure things are up-to-date and easy to understand.
See also
https://github.com/clojurebridge-minneapolis/installfest/blob/experimental/docs/setup_new_koans.md
File issues in koans repo as needed

I did a diff vs. upstream koans and briand is right.. they took all of our suggestions.. so i brought https://github.com/clojurebridge-minneapolis/clojure-koans up to date with upstream
Then I tried to run the koans in Nightcode on Linux. Here's the issues I ran into

I can import the koans project, but when I navigate to src -> koans the files are listed out of order (?)
In other projects I can use the Nightcode REPL fine, but when I click "Run with REPL" my return key does not work (this is super annoying). Normally I used to be able to start the exercises with (exec "run"). As a workaround a did lein koan run in a separate terminal window.
For some reason Nightcode doesn't recognize editing the file and enabling the Save button ?!!! These seems to work fine in other projects... Please see if this works for you. I found a workaround: import the project, use the workaround from step 2 above, but do NOT press any of the Run buttons in Nightcode (then autosave just works).

NOTE: Here are the upstream URL's

https://github.com/functional-koans/clojure-koans
http://clojurekoans.com/

For track 2 we don't have to use nightcode - since the koan test runner is ran from the terminal I almost feel like it might be easier to use atom/sublime text.

@brian-dawn would atom/sublime be the cross platform recommendation?
I'm fine with that (of course we'd need to add the step to each platform's install instructions).
Otherwise do you think we can close this issue?

@tmarble yes it's cross platform I run it on all 3 OSs.
We can update each installfest doc, or we can have students use nightcode for now and just recommend in person that if they prefer they can try atom - I'm averse to too much change close to the event. Does that work? Because if so we can close this issue.

Works for me.


Allow to avoid overriding the Devices Site with the default site (vCenter: )

I have some Hosts in the vCenter for which the site can't be inferred from the name, and therefore are set to the default site (vCenter: <vcenter-name>) by the sync.
I then manually put the Devices in the right Site and Rack. But then on the next run of the sync script, those Devices generates errors because the sync tries to override the Site to the default.
Example of error:
2024-08-10 02:20:02,151 - ERROR: NetBox returned: PATCH /api/dcim/devices/4707/ Bad Request
2024-08-10 02:20:02,151 - ERROR: NetBox returned body: {'rack': ['Rack XYZ does not belong to site vCenter: <vcenter-name>.']}

Is there a way to bypass the override of the Site when the device already has a Site in NetBox that is not the default one?

Hi,
do these devices belong to a cluster? Or are they stand alone ESXi hosts? Please have a look at the cluster_site_relation setting.

Hi!
They do belong to clusters, but these clusters have their Site to <NONE>, because our Clusters aren't specific to a Site
We therefore used the host_site_relation to place the Hosts depdending on their name, which works for most of our devices. But we still have some devices that aren't named conventionally and are placed in the default site.
A workaround could be to add those Devices in the host_site_relation, but it is not very practical, as we would need to update the settings.yaml for any new unconventional Device.
An interesting feature for us would be to be able to set a default value for the different relations in the settings file (for instance the host_site_relation), and then being able to configure the sync so that it doesn't override the values in NetBox that were changed from the default one to another value. Would it make sense to you?

This sounds like to be solvable with some bash, yq and curl glue.
Quick idea:

assign this hand assind host a special tag
use curl to query the hosts with that tag
get the site for each of the hosts
update the settings.yaml with yq
run the sync

This way you can automate this process. Or you can set the config option via an environment variable.


Dework Dashboard

Description
A Governance Services Guild project management dashboard written in Javascript to be hosted on Netlify (https://www.netlify.com/) linked to GitHub. Vue JS
Repo - https://github.com/Governance-Services-Guild/Dework-Dashboard-Admin

Document the Repo and how to build it yourself.
Document basic usage of the dashboard - https://quality-assurance-dao.gitbook.io/treasury-advisory-service/

Dashboard to extract data from Dework dashboard
Created Repo and installed JS
Copied 1 file to work on CSV to JSON
Export to PostgreSQL
Playing around data structures

Organized database - working on Admin side of tool
Capturing data - pretty smooth - storing and retrieving from folders
Next step - what to do with the data = ChatGTP could help the presentation

Andre to look at original proposal to see whether Dework Dashboard is sufficient work to produce close out report

Repo for dashboard. Final touches to Admin side.
Incorporate Chat-Gpt bot into  Admin.

Organize data for input into Chat-Gpt.
Look at alternative AI models

Last week - everything set up to retrieve data from database. Working on manipulation and organization of data.
Once data organized will work on UI presentation. - Andre

Consider what data would be useful to see on a project board

Stephen

The dework CSV export headers are -

Name
Link (to dework)
Tags
Story Points
Status (TODO, IN_PROGRESS, DONE)
Assignees
Wallet Address
Reward
Due Date
Activities (Creation date, by whom, Completion date & time)

Will have something to show next Monday 24th April 2023
Sorting data into cache for speeding up website access.

Andre - Dework has a working API
On page right click and inspect element exposes API id

Andre working on Mondays - aiming to complete by June 2023

Meeting Note - Monday, 19th June 2023
The Dework Dashboard is completed and mentioned in the F8 Automate final report
Further details can be found here - https://quality-assurance-dao.gitbook.io/treasury-advisory-service/project-automation/project-board-automation/dework-performance-dashboard-automation


Phase 1 of solving issue 1128

I need to stage the commits for solving Issue 1128 into several phases, that
is caching commonly used configuratioin parameters. If I try to do a single
monolithic change I've already seen that I'll never be able to simultaneously
resolve all of the conflicts that will arise.
Phase 1 sets up the infrastructure, and redefines the peer-package functions
GetLocalAddress(), GetValidatorStreamAddress() and GetpeerEndpint() as
caching versions.
Once this is accepted, Phase2 will replace all config parameters that appear
frequenctly in single-peer runs with NOOPS. Later phases will fix up any
remaining issues. I've already seen that when we're done it will make
significant improvements in performance.
Note, the Go tests all run, but some Behave tests fail intermittently. I Don't think this changeset is the cause.
Also note that a few of the changes here come from running 'gofmt' on files I changed.

Signed-off-by: Bishop Brock<EMAIL_ADDRESS>


Add the jar build plugin version.

resolves #40

FYI: For some reason I would have used maven-shade-plugin, e.g: https://github.com/testmycode/tmc-core/blob/master/pom.xml#L75-L87

LGTM.

Coverage remained the same at 0.0% when pulling bba5ee32653add8f9ca31c4e76c80e3f8f604799 on build-plugin-aleksi into 7deb23f61d7f635fed3e78ec7b007d9654662029 on master.

Coverage remained the same at 0.0% when pulling bba5ee32653add8f9ca31c4e76c80e3f8f604799 on build-plugin-aleksi into 7deb23f61d7f635fed3e78ec7b007d9654662029 on master.

Coverage remained the same at 0.0% when pulling f4f4425e563825c33b656712ce3bbca74f7845c0 on build-plugin-aleksi into 7deb23f61d7f635fed3e78ec7b007d9654662029 on master.


can you add me to the org

i want to add enums and maybe a lil more that would be useful

I added enums fairly recently, but if you want to add any features, feel free to fork the repository and make a pull request! This is just so I can make sure any code that is merged follows the same conventions as the existing code base.


Add -q quiet flag, to make Docker build quieter

Once the Dockerfile.dapper container build is working well, the
'docker build' output is noisy and not always helpful, especially in
CI log output. Add -q option to pass -q through to 'docker build'.

LGTM
@ibuildthecloud

Great, thanks!


After merging aac and mp4 files, the merged code is not rendering audio.

Movie movie = MovieCreator.build(videopath); AACTrackImpl aacTrack = new AACTrackImpl(new FileDataSourceImpl(audiopath)); CroppedTrack aacCroppedTrack = new CroppedTrack(aacTrack, 1, aacTrack.getSamples().size()); movie.addTrack(aacCroppedTrack); Container mp4file = new DefaultMp4Builder().build(movie); FileOutputStream fileOutputStream = new FileOutputStream(output); FileChannel fc = fileOutputStream.getChannel(); mp4file.writeContainer(fc); fileOutputStream.close();
Where  audiopath = directory + "/my_song.aac"; and videopath = directory + "/myvideo.mp4";
If I try to play  the output video, only video is getting played. Audio is not playing. Any solution for this?

Did you fix problem?

Movie movie = MovieCreator.build(videopath); AACTrackImpl aacTrack = new AACTrackImpl(new FileDataSourceImpl(audiopath)); CroppedTrack aacCroppedTrack = new CroppedTrack(aacTrack, 1, aacTrack.getSamples().size()); movie.addTrack(aacCroppedTrack); Container mp4file = new DefaultMp4Builder().build(movie); FileOutputStream fileOutputStream = new FileOutputStream(output); FileChannel fc = fileOutputStream.getChannel(); mp4file.writeContainer(fc); fileOutputStream.close();
Where audiopath = directory + "/my_song.aac"; and videopath = directory + "/myvideo.mp4";
If I try to play the output video, only video is getting played. Audio is not playing. Any solution for this?

How did you fix this issue?


Update dpaw-utils to 0.3a11, add API call to Borg Collector to run harvest for PRS locations

This change is

Coverage increased (+0.1%) to 67.994% when pulling b7cd3213008930828fdc9a19c4004efb23988267 on ropable:v2.1 into 2a5b774502eb4274940e1b684f490aac88d23868 on parksandwildlife:v2.1.

Reviewed 6 of 6 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Release the component version 1.1.0

Check if new sailor logger is being used where possible
Check whether or not any additional manipulations should be done by the end-user because of the new credentials configurations
Do QA process

Do not deploy until:
"Check whether or not any additional manipulations should be done by the end-user because of the new credentials configurations"
is fully examinated

Duplicate of https://github.com/elasticio/gspreadsheets/issues/3


Expose raw mongo lib

Expose the mongodb lib on mongodb-bluebird object for use of raw driver special objects such as mongodb.Long, mongodb.ObjectId, etc...

Good idea, thanks you.


fix: remove duplicated image name in sample of deploying to container service using Azure Pipeline

umm not sure why the check has failed, and I have been 403 from the links to instruction on resolving the failure ... please let me know anything else I could help in resolving the check failure

I will create a new PR and to trigger the check again. Thanks


Update dotnet versions to 5.0.403 and 5.0.12

Description
Updates the dotnet versions used to 5.0.403 and 5.0.12 along with the base images for docker files.
Related issues
Addresses AB#16849.
Testing
Existing tests continue to pass.

dotnet 6.0 upgrade came in first.


[ffmpeg] update to 5.0

Library name:ffmpeg
New version number:5.0
Other information that may be useful (release notes, etc...)
https://www.ffmpeg.org/index.html#news

Please double confirm https://github.com/microsoft/vcpkg/issues/9693#issuecomment-1047923701 when you update the ffmpeg.


Test: add ignored benchmark on a cluster of 3 nodes

Changelog
Test: add ignored benchmark on a cluster of 3 nodes

This change is

@schreter
Does the setup in this benchmark reflect the one you mentioned in:
https://github.com/datafuselabs/openraft/pull/189#issuecomment-1047267421
I use only 1 task for client_write.
Do you have multiple threads for client write?

I use only 1 task for client_write. Do you have multiple threads for client write?

I tested both with a single task pushing requests (this is primarily relevant for latency and seeing the scheduling issues in Tokio) and with multiple parallel tasks (relevant for throughput and seeing the throughput-limiting issues in openraft).
With all optimizations so far including my refactoring I did locally, I reached about 70K requests/second with a single task and about 450K requests/second with 16 tasks on my first-gen Apple M1 MBP (release build). On my "big" Linux machine, the throughput is only about 1/3rd of the MBP.


Pcalf keep on creating conda environment

Every run create at least one conda environment with no name. It should be avoided

not sure to understand but in my opinion, --conda-prefix  should be added either the --snakargs default value or when calling snakemake.
By default snakemake install conda env into the working directory.


NDM stuck in container creating mode on WSL2

Hey, i am really new to this, so can somebody help me?
I am trying to use OpenEBS on my WSL2 on Windows 10, but it is stuck in container creating mode.
The error it gives: "MountVolume.SetUp failed for volume "udev" : hostPath type check failed: /run/udev is not a directory".
And here are my values for it: https://github.com/pukanszkypeter/progressive-architecture/blob/main/clusters/my-cluster/openebs.yaml
Everything else is running perfectly:

Is it a problem with the Windows WSL2 or what am i missing?
Thanks in advance!

NDM uses udev for fetching the devices connected to the machine. I think WSL2 does not support udev. May be you can try it on a linux VM on your machine.


fix: Incorrect updation of selctedRowIndex when primary column is set.

Description

[!TIP]
Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content, marketing, and DevRel team).
Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR.

Fixes #36080
or
Fixes Issue URL

[!WARNING]
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation
/ok-to-test<EMAIL_ADDRESS>@tag.Binding, @tag.Sanity"
:mag: Cypress test results

[!CAUTION]
🔴 🔴 🔴 Some tests have failed.
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/10937883737
Commit: 69b58b55f182e2aea9473c732297b1224e6e4b50
Cypress dashboard.
Tags: @tag.Table, @tag.Binding, @tag.Sanity
Spec:
The following are new failures, please fix them before merging the PR:
cypress/e2e/Regression/ClientSide/OneClickBinding/PropertyControl_spec.ts
List of identified flaky tests.
Thu, 19 Sep 2024 09:50:33 UTC

Communication
Should the DevRel and Marketing teams inform users about this change?

[ ] Yes
[ ] No

Summary by CodeRabbit

Improvements

Enhanced the efficiency of the TableWidgetV2 by streamlining the method for retrieving the index of selected rows.
Improved code readability and maintainability without altering the overall functionality.

/build-deploy-preview skip-tests=true

/build-deploy-preview skip-tests=true

/build-deploy-preview skip-tests=true


Audit CSS

I'm feeling unsure of some trickery. These weak parts should be documented in the codebase and left for future rework.

It is what it is. I'll be researching this continuously.


The values of the levels audio property are incorrect

After creating a new level with POST level and then fetching it with GET level, the audio information was changed and is incorrect:
The audio.title attribute seems to have the value of the original SoundCloud resources permalinkattribute instead of the title attribute. Also, the audio.artist attribute has the value of user.permalink instead of user.username. The audio.duration attribute has a completely different value (I have no idea of its origin.).
The route GET audio/soundcloud seems to be not affected by this and still returns the original SoundCloud resource.
Found when searching for bugs manually (https://github.com/TouchTheBeat/TouchTheBeat/issues/72).

Check if the audio entry in audio table is correct

Checked: Audio entry in table is correct.

As found in issue https://github.com/TouchTheBeat/TouchTheBeat/issues/74, the streamURL gets also changed by the backend, but it shouldn't.
When sending a new levelto the backend via POST level, the streamURL value is a https url. Once the level is retrieved again (via GET level), the value of streamURL has changed to a http url. This was causing a bug due to the browsers security policies.
This behaviour seems to have changed recently, because there was no such error a few weeks ago when using the client over https.

I've tested it with latest client and backend:
the response of a new level by fetching it with GET level is the following. I can no no anomalies found.
{
    "data": {
        "id": "testlevel-2",
        "name": "testlevel-2",
        "tags": [],
        "audio": {
            "artist": "Foster The People",
            "title": "Pumped Up Kicks",
            "duration": 238379,
            "streamUrl": "https://api.soundcloud.com/tracks/13471671/stream",
            "permalinkUrl": "http://soundcloud.com/fosterthepeoplemusic/pumpedupkicks",
            "timeLastRefresh": "0000-00-00 00:00:00"
        },
        "visuals": {},
        "gameObjects": [
            {
                "type": "Tap",
                "x": 130,
                "y": 650,
                "tapTime": 7.9786666666667,
                "shape": {
                    "type": "circle",
                    "size": "medium"
                }
            }, [...]
        ],
        "timeCreated": "2015-02-03 10:53:20",
        "timeLastModified": "2015-02-03 10:53:20",
        "owner": {
            "id": "3a10c00f-021a-4aa3-9900-5bdd4415c469",
            "email"<EMAIL_ADDRESS>            "username": "test",
            "homepage": "",
            "gravatar": "//www.gravatar.com/avatar/f84d37ce99493155ee296c2b746191d0?d=mm"
        },
        "playCounter": 0
    },
    "error": null,
    "error_data": null,
    "error_message": null
}

@ErdnussFlipS  I also tested it again with the latest client and backend. The properties still get changed during POST.  Take a look at the attached log file:
issue53.har e.g. with HAR Analyzer
I think this is also causing the "http https" bug within the client (https://github.com/TouchTheBeat/TouchTheBeat/issues/74).

Ah, that is not a bug.
If you post an level with an already existing audio permalink in storage, the audio entry in storage is not updated. We have that determined at the begin of our work.
But I want to add an auto update feature, if the last refresh is to old.
In your case, an audio entry with the permalink already exsits in the mysql db and so the audio information from db are used.
The 'https' "bug" in https://github.com/TouchTheBeat/TouchTheBeat/issues/74 is the same as this, because the stream link in db is an http link.

@ErdnussFlipS I understand that the audio entry is only saved once within the database and an entry gets retrieved later again, but the values of this single audio entry are still wrong values and not only outdated values:

The audio.title attribute seems to have the value of the original SoundCloud resources permalinkattribute instead of the title attribute. Also, the audio.artist attribute has the value of user.permalink instead of user.username. The audio.duration attribute has a completely different value (I have no idea of its origin.).

This wrong interpretation of the original SoundCloud resource must have happened somewhere when creating the original audio entry and that is why I think this issue is a bug...

The level you posted has an audio entry, which has test data in storage, so the data is correct.


Taking heap snapshot is 5-10X slower in headless mode

Hey,
OS: OSX v10.15.2
Puppeteer: v3.0.0
Node: v12.6.0
I am trying to get V8 heap snapshots in puppeteer. When devtools is set to true, each snapshot takes less than 1s, which is great. But when I run it in headless mode, it takes about 12s. That's 10X slower.. When the heap size is big (e.g., 70MB), it could take several minutes. I am using a remote server, which cannot run puppeteer in headful mode.
Is this a bug in puppeteer or headless Chromium? How can I start a headless Chromium with devtools: true? Thanks.
I also tried in the following setup and get a similar slowdown:
OS: Linux Ubuntu 18.04.4LT
Puppeteer: v2.1.1
Node: v12.6.0
Here is the code to reproduce it:
(async () => {
  const puppeteer = require('puppeteer');
  const browser = await puppeteer.launch({
    devtools: true, // <--------------------- 10X slower when set to false
  });
  const page = await browser.newPage();
  await page.goto('https://www.apple.com');

  const start = Date.now();
  const cdpSession = await page.target().createCDPSession();
  cdpSession.on('HeapProfiler.addHeapSnapshotChunk', (data) => {
    // process data ...
  });
  await cdpSession.send('HeapProfiler.takeHeapSnapshot', {
    reportProgress: false,
  });
  await cdpSession.detach();
  const end = Date.now();

  console.log((end - start) + 'ms');
  await browser.close();
})();

This appears to happen whenever you attempt to take a snapshot with the dev tools panel not open. Running headful chrome with devtools: false also results in extreme slowness. I haven't found an option for this yet but is it possible to open the dev tools panel immediately before taking a snapshot as opposed to having it open on launch?


Timeout + Return to terminal fix

Added two fixes:
Added timeout to ask method to prevent hanging. Fixed return to terminal breakdown.

Not sure if this issue is the right place for this, but it seems the timeout code is broken. If I ask ChatGPT to write a story, or something that presumably takes longer than sixty seconds, if streaming is enabled, I can see that the response is coming in, but then after presumably a minute, it tracebacks and exits, and even if I have logging enabled, my request and the partial response are not logged.

Here's an example of the traceback I'm getting on long responses. Sorry for words being broken at line breaks, I'm on Windows and had to use PowerShell's transcript facility since the built-in logging facility is useless when a response doesn't complete successfully. As you can see, I deliberately had it write a long-winded story so it'd take a long time.
Now write another story, describing each of the dentists in detail.
Once upon a time, there were seven dentists who also happened to be hobbyist programmers. They had
been working on a project together for months, creating a program that would streamline their denta
l practice's appointment scheduling system.
Dr. Smith was the leader of the group. He was a natural leader and had a keen eye for detail. He wa
s always the first to spot any errors in the code and was relentless in his pursuit of finding the
solution. He was also the one who rallied the team when morale was low and kept them focused on the
end goal.
Dr. Patel was the team's resident problem-solver. She was always the first to come up with a creati
ve solution to a tricky coding challenge. She was a whiz with algorithms and could write efficient
code with ease. Her ability to think outside the box was a valuable asset to the team.
Dr. Lee was the team's logical thinker. He was the one who made sense of the code and identified th
e root cause of any issues. He had a methodical approach to debugging and was always able to find t
he problem, even in the most complex code.
Dr. Chen was the team's technical expert. He was the one who knew the ins and outs of the programmi
ng language they were using and was always happy to share his knowledge with the rest of the team.
He was also responsible for testing the program to ensure that it was working as it should.
Dr. Williams was the team's optimizer. He was always looking for ways to make the code more efficie
nt and faster. He was a stickler for performance and would spend hours fine-tuning the program to m
ake sure it was running at its best.
Dr. Kim was the team's communicator. He was responsible for communicating with the other team membe
rs, relaying important information and keeping everyone on the same page. He was also the one who c
oordinated with the IT department when the program was ready to be implemented in the practice.
Dr. Gupta was the team's motivator. He was the one who kept the team's spirits up when things got t
ough. He had a great sense of humor and was always able to make everyone laugh, even in the most tr
ying of circumstances.
With each dentist bringing their own unique strengths to the table, the team was able to debug the
code and implement the program successfully. And the dentists were proud of the program they hadTra
ceback (most recent call last):
File "C:\python39\lib\cmd.py", line 214, in onecmd
func = getattr(self, 'do_' + cmd)
AttributeError: 'GPTShell' object has no attribute 'do_Now'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\python39\Scripts\chatgpt-script.py", line 33, in
sys.exit(load_entry_point('chatGPT==0.3.7', 'console_scripts', 'chatgpt')())
File "C:\python39\lib\site-packages\chatgpt-0.3.7-py3.9.egg\chatgpt_wrapper\chatgpt.py", line 508
, in main
File "C:\python39\lib\cmd.py", line 138, in cmdloop
stop = self.onecmd(line)
File "C:\python39\lib\cmd.py", line 216, in onecmd
return self.default(line)
File "C:\python39\lib\site-packages\chatgpt-0.3.7-py3.9.egg\chatgpt_wrapper\chatgpt.py", line 367
, in default
File "C:\python39\lib\site-packages\chatgpt-0.3.7-py3.9.egg\chatgpt_wrapper\chatgpt.py", line 231
, in ask_stream
File "C:\python39\lib\site-packages\chatgpt-0.3.7-py3.9.egg\chatgpt_wrapper\chatgpt.py", line 103
, in _cleanup_divs
File "C:\python39\lib\site-packages\playwright\sync_api_generated.py", line 7697, in evaluate
self._sync(
File "C:\python39\lib\site-packages\playwright_impl_sync_base.py", line 104, in _sync
return task.result()
File "C:\python39\lib\site-packages\playwright_impl_page.py", line 407, in evaluate
return await self._main_frame.evaluate(expression, arg)
File "C:\python39\lib\site-packages\playwright_impl_frame.py", line 277, in evaluate
await self._channel.send(
File "C:\python39\lib\site-packages\playwright_impl_connection.py", line 44, in send
return await self._connection.wrap_api_call(
File "C:\python39\lib\site-packages\playwright_impl_connection.py", line 419, in wrap_api_call
return await cb()
File "C:\python39\lib\site-packages\playwright_impl_connection.py", line 79, in inner_send
result = next(iter(done)).result()
playwright._impl._api_types.Error: document.getElementById(...) is null
@debugger eval code line 191 > eval:1:10
evaluate@debugger eval code:191:30
@debugger eval code:1:44


Toggle Protocols

What
This PR adds a new feature - the ability to selectively enable or disable support for websocket protocols. This is added to the extension preferences window using the simple-prefs API.
Why
There are a few downsides to having all protocols enabled at all times.

Performance. Having to try to parse every single frame into a plethora of protocols will kill perfomance in high-load situations. It is advantageous to be able to remove some or all protocols to allow for performant behaviour.
Unused protocols. Most of the time, you are only interested in the protocol you and your team are actually using. In my case I am using a JSON based system, yet subscribe frames, which look like subscribe?..., are parsed by the parser as MQTT, which is not what I expect it to do

How
I added a new store and changed redux to be populated with the prefs at load. I also use the onPrefChanged hook to update the store on demand. Changing a setting is not retroactive, i.e. it will not change any already parsed frames, only future frames. I do not currently see this as an issue worth the complexity to fix.

Nice job here!
I made a few comments, please fix and I'll merge it into the master and release a new WSM version.
Honza

Thanks for the review. I'll fix your comments later today.

@janodvarko
All righty, I have now implemented the changes you requested

Awesome, thanks!
Honza


Generator not reseting if cancel action is not taken

I am having some troubles implementing the cancel action. I have a function that will translate some actions from an server's array into some redux saga logic:
function * translateActions (nextActions) {
	for (let action of nextActions.payload) {

		switch (action.type) {

			case SET_UI_ELEMENT:
				yield put({ type: UPDATE_UI, payload: { element: action['ui-element'], text: action.text } })
				break;

			case LOAD_MESSAGES:
				const historyMessages = yield call(apiClient.loadHistory, action.url)
				yield put({ type: LOAD_HISTORY, payload: historyMessages.data.payload })
				break;

			case LOAD_NEXT_MODULE_ACTION:
				yield call(loadModule, nextActions.phoneNumber)
				break;
		}
	}
}

On the other hand I have another function that will take a proccesServerActions action and execute this function. The thing I want to accomplish using the cancel effect is and any remaining in the channel, in case the user logouts before the translateActions function has finished, this should be cancelled and in case the user logins again, start for the beginning. This is what I have so far:
function * processServerActions () {
	// Take all PROCESS_ACTIONS dispatched actions,
	// in case one is already running, it will queue the next

	const queuedActions = yield actionChannel(PROCESS_ACTIONS)

	while (true) {
		const nextActions = yield take(queuedActions)
		// Iterate through all the actions array
		// and build the generator function that will
		// execute the actions

		try {
			const proceedActions = yield fork(translateActions.bind(null, nextActions))
			yield take(LOGOUT)
			yield cancel(proceedActions)

		}

		// In case an error is catched, reset the function
		// and start listening to new 'queuedActions' actions

		catch (error) {
			yield processServerActions()
			return error
		}

	}
}

The problem is, once the translateActions fork finishes, the saga will stay wating for the LOGOUT action instead of returning to the yield actionChannel(PROCESS_ACTIONS)
I can't figure out what I am doing wrong, since I would expect that if the fork finishes, the listener to the cancellation action (in this case yield take(LOGOUT)) to  be disregarded.
I am now trying to start a race between de saga and the logout action, and throw an error in case the logout action is rececived, but everytime I Lougout, the action is not received:
function * processServerActions () {
	// Take all PROCESS_ACTIONS dispatched actions,
	// in case one is already running, it will queue the next

	const queuedActions = yield actionChannel(PROCESS_ACTIONS)

	while (true) {
		const nextActions = yield take(queuedActions)
		// Iterate through all the actions array
		// and build the generator function that will
		// execute the actions

		try {
			const { processedActions, logout } = yield race({
				processedActions: yield call(translateActions, nextActions),
				logout: call(delay, 3000),
			});
			if (logout) {
				yield cancel(processedActions)
				throw new Error('User has logged out')
			}

		}

		// In case an error is catched, reset the function
		// and start listening to new 'queuedActions' actions

		catch (error) {
			yield processServerActions()
			return error
		}

	}
}

Thanks in advance!

Alright, I managed to get it working throwing an error in case the LOGOUT action is received (see code below):
function * processServerActions () {
	// Take all PROCESS_ACTIONS dispatched actions,
	// in case one is already running, it will queue the next

	const queuedActions = yield actionChannel(PROCESS_ACTIONS)

	while (true) {
		const nextActions = yield take(queuedActions)
		// Iterate through all the actions array
		// and build the generator function that will
		// execute the actions

		try {
			console.log('enter the race')
			const { logout, processedActions } = yield race({
				logout: take(LOGOUT),
				processedActions: call(translateActions, nextActions),
			});
			console.log('logouuuuuuuut', processedActions, logout)
			if (logout) {
				console.log('error entered')
				throw new Error('User has logged out')
			}

		}

		// In case an error is catched, reset the function
		// and start listening to new 'queuedActions' actions

		catch (error) {
			yield processServerActions()
			return error
		}

	}
}

Nevertheless, I don't like the idea of throwing an exception inside the try. Also, I believe there has to be a better way to solve this issue using the cancel effect from the library.
What do you think?
Thanks !

When you do this:
			const { logout, processedActions } = yield race({
				logout: take(LOGOUT),
				processedActions: call(translateActions, nextActions),
			});

If LOGOUT is received, the call will automatically be cancelled. But that only cancels the current translateActions task. I think I would put the logic to manage the entire process in a "parent" saga:
function* namingThingsIsHard () {
  const processServerActionsTask = yield fork(processServerActions)
  take(LOGOUT)
  yield cancel(processServerActionsTask)
  // now the task is dead forever
}

You could even make this saga use something like while (yield take(START_DOING_STUFF) { } so you can start it again at a later time (I think you mentioned that requirement). Hope that makes sense!

As generators do not like recursion you could also change the code like this, leveraging flush effect
function * processServerActions () {
	const queuedActions = yield actionChannel(PROCESS_ACTIONS)

	while (true) {
		const nextActions = yield take(queuedActions)

		const { logout, processedActions } = yield race({
			logout: take(LOGOUT),
			processedActions: call(translateActions, nextActions),
		});

		if (logout) {
			yield flush(queuedActions)
		}
	}
}

@Andarist @granmoe Thank you guys, I ended up doing what @Andarist recommended and is working fine now!


Great Weapon Master feat's bonus action attack after a kill does go away at the end of turn

Great Weapon Master's bonus action attack on kill lasts until you use it -- at least, you can use it the next turn instead.
I don't have a specific setup where this is testable, but you can use this save which has some characters with the feat in a fairly easy combat.
Test_GFB_PlusFireDmg.zip

Cannot reproduce this one on my end. GWM BA attack disappeared on the same round I got it if I didn't use it.

cannot repro. closing.


BinomialHeap does not work when multiple elements have the same priority

MWE:
import Std.Data.BinomialHeap

open Std

def test : BinomialHeap (Nat × Nat) (λ (x, _) (y, _) => x < y) :=
  BinomialHeap.empty.insert (0, 1) |>.insert (0, 2) |>.insert (0, 3)

#eval test.toList

Expected output of the #eval: [(0, 1), (0, 2), (0, 3)] (or a permutation).
Actual output: [(0, 2), (0, 2), (0, 1)].
Lean version: current master.

@JLimperg BinomialHeap is currently dead code in the repo. We don't use it anymore to implement Lean.
Are you willing to take ownership of this module and fix this issue? It would be super helpful for us.

Sure! I'll try to make a properly verified version while I'm at it.

For the verified version, I think I need either wfrec or a computable recursor for nested types. But this is not a high priority anyway.


Add "shouldReload" closure for user to intercept cell reloads

@srdanrasic For example, if the cell is already visible, you may want to just run an animation on it or do something else.

I'm going to revert this change as it's interfering with something else at the moment. Maybe there is a cleaner way to do this without complicating table/collection view bond.


Failed to activate Julia package after update

Hi,
I am running OpenSuse 15.
My Julia-client version is 0.8.10. There are no available updates.
Today I updated the Julia package as suggested in Juno, after restart I get this error (see later).
As a consequence, the Julia console does not start. I am very very troubled by this ehehe!
Can I at least downgrade?
Best
**Uncaught TypeError: Cannot read property 'close' of undefined** TypeError: Cannot read property 'close' of undefined     at Object.close (/home/alequa/.atom/packages/julia-client/lib/runtime/console2.js:154:18)     at /home/alequa/.atom/packages/julia-client/lib/ui/layout.js:40:19     at Array.map (native)     at closePromises (/home/alequa/.atom/packages/julia-client/lib/ui/layout.js:39:26)     at Object.restoreDefaultLayout (/home/alequa/.atom/packages/julia-client/lib/ui/layout.js:101:15)     at /home/alequa/.atom/packages/julia-client/lib/julia-client.coffee:28:37
and the relative fail in julia-client
TypeError: this.scopes.some is not a function     at BreakpointManager.appliesToEditor (/home/alequa/.atom/packages/ink/lib/debugger/breakpoints.js:102:24)     at /home/alequa/.atom/packages/ink/lib/debugger/breakpoints.js:77:20     at TextEditor.observeGrammar (/usr/share/atom/resources/app/src/text-editor.js:752:11)     at /home/alequa/.atom/packages/ink/lib/debugger/breakpoints.js:76:26     at Workspace.observeActiveTextEditor (/usr/share/atom/resources/app/src/workspace.js:724:11)     at new BreakpointManager (/home/alequa/.atom/packages/ink/lib/debugger/breakpoints.js:74:34)     at Object.activate (/home/alequa/.atom/packages/julia-client/lib/runtime/debugger.js:30:17)     at Object.consumeInk (/home/alequa/.atom/packages/julia-client/lib/runtime.coffee:28:15)     at Object.consumeInk (/home/alequa/.atom/packages/julia-client/lib/julia-client.coffee:48:7)     at Provider.module.exports.Provider.provide (/usr/share/atom/resources/app/node_modules/service-hub/lib/provider.js:34:58)     at ServiceHub.module.exports.ServiceHub.consume (/usr/share/atom/resources/app/node_modules/service-hub/lib/service-hub.js:50:24)     at Package.activateServices (/usr/share/atom/resources/app/src/package.js:405:79)     at Package.activateNow (/usr/share/atom/resources/app/src/package.js:233:20)     at measure (/usr/share/atom/resources/app/src/package.js:206:33)     at Package.measure (/usr/share/atom/resources/app/src/package.js:88:25)     at activationPromise.Promise (/usr/share/atom/resources/app/src/package.js:200:20)     at Promise (<anonymous>)     at Package.activate (/usr/share/atom/resources/app/src/package.js:198:38)     at PackageManager.activatePackage (/usr/share/atom/resources/app/src/package-manager.js:695:42)     at config.transactAsync (/usr/share/atom/resources/app/src/package-manager.js:670:36)     at Config.transactAsync (/usr/share/atom/resources/app/src/config.js:866:28)     at PackageManager.activatePackages (/usr/share/atom/resources/app/src/package-manager.js:668:23)     at PackageManager.activate (/usr/share/atom/resources/app/src/package-manager.js:647:50)     at loadStatePromise.loadState.then (/usr/share/atom/resources/app/src/atom-environment.js:871:27)     at <anonymous>

The issue solved itself after a few restarts.
The rubber duck effect is always lurking.
Bytheway, maybe the report can be useful for debugging

I'm half sure you didn't restart Atom process when you faced the issue, did you ?

Then you are half wrong.
I restarted Atom and even the computer.
After tinkering with it a bit I managed to start the Julia console. However, the code cannot be run 'line by line' as I used to do.  Not even 'by block' or 'by file' using the lateral bar

don't know but there's no file named console2.js in the latest versions of atom-julia-client anymore, so the error
shouldn't happen after clean update.
Making sure restart all the Atom process after update will solve probs you faced.

Do you know of any temporary folder that could be storing these files?
I closed the editor and tried 'pkill atom'.
Now the error does not occur anymore.
Anyway, I can't run the code by the file.
If I try the console gets stuck. With Ctrl-C I get
ERROR: InterruptException: Stacktrace:  [1] poptaskref(::Base.InvasiveLinkedListSynchronized{Task}) at ./task.jl:660  [2] wait() at ./task.jl:667  [3] wait(::Base.GenericCondition{Base.Threads.SpinLock}) at ./condition.jl:106  [4] lock(::ReentrantLock) at ./lock.jl:80  [5] evalrepl(::Module, ::String) at /usr/local/share/julia/home/packages/Atom/N5oSJ/src/repl.jl:201  [6] top-level scope at /usr/local/share/julia/home/packages/Atom/N5oSJ/src/repl.jl:252  [7] eval(::Module, ::Any) at ./boot.jl:330  [8] eval_user_input(::Any, ::REPL.REPLBackend) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/REPL/src/REPL.jl:86  [9] macro expansion at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/REPL/src/REPL.jl:118 [inlined]  [10] (::REPL.var"#26#27"{REPL.REPLBackend})() at ./task.jl:333 ERROR: unlock from wrong thread Stacktrace:  [1] error(::String) at ./error.jl:33  [2] unlock(::ReentrantLock) at ./lock.jl:101  [3] evalrepl(::Module, ::String) at /usr/local/share/julia/home/packages/Atom/N5oSJ/src/repl.jl:231  [4] top-level scope at /usr/local/share/julia/home/packages/Atom/N5oSJ/src/repl.jl:252
Thanks for helping

Try update Atom.jl to the latest (0.12.7) 👍

(v1.3) pkg> status
Status /usr/local/share/julia/home/environments/v1.3/Project.toml
[c52e3926] Atom v0.12.7

ah, please open an another issue on this with MRE, please.

Ok, thanks.

What version of julia-client are you on after the update? You need 0.12.x for Atom.jl 0.12.x to work properly.

My Julia-client version is 0.8.10. There are no available updates.

What version of Atom are you running?

If I try the console gets stuck. With Ctrl-C I get

I'm having this exact same issue, detailed on the Julia discourse here


Improve upstream buffer API

    upStreamBuff->multi_place(2u, (const void* const*)m_lineData,(uint32_t*)&offsets,(uint32_t*)&sizes,(uint32_t*)&alignments);
    if (upStreamBuff->needsManualFlushOrInvalidate())
    {
        auto upStreamMem = upStreamBuff->getBuffer()->getBoundMemory();
        m_driver->flushMappedMemoryRanges({video::IDriverMemoryAllocation::MappedMemoryRange(upStreamMem,offsets[0],sizes[0]),video::IDriverMemoryAllocation::MappedMemoryRange(upStreamMem,offsets[1],sizes[1])});
    }

If needsManualFlushOrInvalidate is always called after multi_place, can we move this call inside multi_place so that user doesn't have to call it manually?

Not really because Vulkan can flush multiple mapped memory ranges in a single device command, so flushes from multiple placements and user-side modifications can be performed "at-once"

Even ranges from different buffers can be flushed in one call


jest-haste-map: add test to check duplicate modules are broken

The way duplicate module IDs are handled is broken right now. jest-haste-map doesn't recover from duplicate module IDs, because it systematically loose track of one of the duplicates, unable to recover it ever after. This changeset adds the structure of the test to show that it's broken, and put comment where we'll want to change the lines once it's fixed.
Test plan
Unit test, no logic change.

Sadly yarn prettier causes some completely unrelated fixes.


Failed to execute 'addColorStop' on 'CanvasGradient': The provided value (2400) is outside the range (0.0, 1.0)

A DOM Exception is raised while rendering the page . Tried to go through the plotty.js file, but don't know where to change the range.
Any help is appreciated . Thanks in advance.

Can you please post some example code?  Does this error occur when you are creating a custom color scale?
Here is the reference for addColorStop which is throwing the error.

Hi Mathews,
Exactly , this error occurs when creating a custom color scale. Here , is the code
plotty.js
"res": {
colors: ["#C1CDD7","#63AF61","#B3E287","#F6EB1A","#F1A56A","#F46F16"],
positions: [0,1367,2734,4100,5467]
}
map.html
L.leafletGeotiff(
url='qasz.tif',
options={
band: 1,
displayMin: 0,
displayMax: 6000,
name: 'Sample',
colorScale: 'res'
}
).addTo(mymap);
Note: The pixel values ranges from 0 to 6000.

The positions array needs to be values from 0 to 1, as per the doc, and must have the same number of entries as the colors array, e.g. [0, 0.2, 0.4, 0.6, 0.8, 0.1]

Done the same thing what you have suggested but it throws in the console like "mymap is off screen ".  I don't know, whether any changes should be done to GeoTIFF File or any prerequisites before using it with 'leaflet-geotiff'

Works !. Great . Thanks Matthews. :+1:


front end

How To front-end run

If you want to develop the frontend you can follow the instructions here: https://github.com/wandb/openui/blob/main/frontend/README.md

thank you


RESEARCH: Adding patients to SimpleReport

Right now, we present organizations with three options for adding patients to SimpleReport - manual entry, bulk upload and self-registration.
We have heard feedback that self-registration won't work for schools, our biggest bulk upload requester.
As we aim to ease the burden of using SimpleReport, we want to better understand how sites are thinking about adding patients and their process for doing so. Specifically:

What factors are leading to their chosen approach? (e.g. testing program/ strategy, limited staff, etc.)

For those choosing self-registration, how they are setting it up? For those it doesn't work for, why?

For those using manual entry, why they are doing that? Underand how big a burden it is...

For those requesting bulk upload, how users are gathering information for CSV template? Why they chose that method?

For those requesting bulk upload, what applications are they using to generate those lists? What is the format that those apps create? Does that format include all the required fields for SR patients? Can we accept files in that format without manipulation?

_Once this kicks off, please use the research plan template to outline the approach, and drop the link here. _

Connected to our existing research that patient registration can be a burden to our users. @lg-king to link related research.

5/12 discussion

There could be crossover research with the CSV uploader research
When would a user want to use CSV upload to upload both patient information and/or results?

@jayna-SkylightDigital @emmastephenson @zdeveloper For your situational awareness, the design team is considering picking this up for our next research effort in tandem with the ongoing STD/STI work. This research effort would be focused on understanding how best to support users in adding patients to SimpleReport

competitive analysis - QR code, drivers license scan?

@lg-king to write up a summary for this, but the interviews are complete.


Support for LScache

Describe the feature you'd like
Is it possible to integrate support for Litespeed Cache in Bookstack?
Describe the benefits this feature would bring to BookStack users
A lot of hosting environments use Litespeed as webserver, as it's a a drop-in replacement for apache.
Additional context
They have a laravel plugin, which seems to function as a some sort of cache driver. However, my knowledge of laravel is not really great.

Thank for the consideration. I understand that the benefits for a small amount of users offsets the extra work that is need in maintaining the code.


absolute pdn offset

Prompt
A clear and concise description of what shortcoming you feel OpenLane has.
PDN's offset is measured from the core origin. This is the way openroad api is defined. During developing a design core margin can change frequently resulting in a new PDN interface the given same PDN offset
Proposal
A clear and concise description of what you want to happen.
Using the core margin, core site dimensions, a fixed PDN offset, an offset relative to the core can be calculated at run time to maintain a "fixed" PDN offset. This can ease development of designs and maintenance of new versions of designs

Why would you want PDN to be fixed if the core area is moving underneath it?  You may wind up with a poor grid that doesn't cover the core area.

It would connect to the straps only over the overlapping area (in the extreme they would be unconnected if there was no overlap).  What is the value in having the PDN fixed in space?

In some cases a given macro is already integrated and it would be hard to change the routing of the parent design

Why change the core margin in that case?

Do you mean make the margin smaller?  Increasing the margin would increase congestion.  I'm not sure why you don't just set it to a minimal value to start with.

Yes that's what I meant. If the old was big, decreasing it would help. Having a minimal value.
I don't know really know on the top of my head why we aren't using always a minimal margin. I think the relation between the margin, number of pins, congestion, etc.. isn't always directly correlated. I recall that I once had to increase the margin in order to get it to cleanly route.

I recall that I once had to increase the margin in order to get it to cleanly route.
That sounds more like a bug.  I think using a minimal value would be better than fixing the pdn grid.


touch -m -h -d 2009-10-10 link is failing with "Unable to parse date"

With
touch a
ln -s a link

touch -m -h -d 2009-10-10 link

works with gnu
but fails on us with
$ ./target/release/coreutils touch -m -h -d 2009-10-10 link
thread 'main' panicked at 'Unable to parse date
Invalid day.', src/uu/touch/src/touch.rs:243:19
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Code is in:
https://github.com/uutils/coreutils/blob/master/src/uu/touch/src/touch.rs#L243

Encountered a similar problem in https://github.com/NixOS/nixpkgs/pull/116274
touch --date '2021-05-30 16:59:52.627421773 +0000' /nix/store/hf1cjsvzyv8mfazndnycln2zy57hqfbz-ed-1.17/bin/red
thread 'main' panicked at 'Unable to parse date
Invalid day.', src/uu/touch/src/touch.rs:248:19
stack backtrace:
   0: rust_begin_unwind
   1: std::panicking::begin_panic_fmt
   2: uu_touch::parse_date
   3: uu_touch::uumain
   4: coreutils::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Is this still an issue?

This was fixed in #2317


Create SQL tables

Once we figure out how .sql files work.

Aaron should also create a similar table so that we can test on our own local servers.

Did before the previous commit


Crash: run mc, resize continuously, hits assertion I added.

This is related to the yBase being updated to be offsets during a scroll event, and then the buffer returning a nil for a value.
That said, the display is also out of sync, whatever the display change is, affects the rendering, and the state of the terminal no longer reflects reality, likely due to the scroll change, for example, notice this:

This was two separate issues, and they are gone now.


marathon 1.4.8 bump

High Level Description
What features does this change enable? What bugs does this change fix? High-Level description of how things changed.
Related Issues

MARATHON-7697 - CLUSTER constraint doesn't require a value.
MARATHON-7724 - Better error handling around proxy leader failure.
MARATHON-7728 - Always log exceptions when performing migration.
MARATHON-7696 - Do a better job at maintaining task failure rate limiting values per RunSpec.

Checklist for all PR's

[x] Included a test which will fail if code is reverted but test is not. If there is no test please explain here:
[x] Read the DC/OS contributing guidelines
[x] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[x] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[x] Test Results: https://jenkins.mesosphere.com/service/jenkins/view/Marathon/job/marathon-pipelines/job/releases%252F1.4/87/
[ ] Code Coverage (if available): N/A

@mesosphere-mergebot bump-ee


Can take out edit bid gold

I was able to take out the bid gold from the ui and keep it

Please provide a video reproducing the issue


Innacuracies between official TMX docs and Tiled TMX saving implementation

There are a number of examples of the Tiled editor not following what appears to be documented in the TMX reference docs.
This is problematic for this project. If we follow the spec to the letter, then in some cases the code won't run (if an attribute or element is absent when it should be present according to the docs) or users will be confused (Tiled outputs something different than what we expect)
Decisions regarding this will need to be made on a case-by-case basis. Some of these examples are fairly minor, but some are more serious.
The most important thing is to document clearly and publicly where these contradictions exist, to reduce mistakes when developing on and against the API.
Examples will be created as separate issues and referenced back to this issue for posterity.

Okay, so turns out most intances of this are intentional.

All optional attributes are either marked as optional, or have a default value to imply that they are optional.

-- https://doc.mapeditor.org/de/latest/reference/tmx-map-format/#
This greatly reduces the scope of this issue.
The official policy (open to being revisited) of this project is that if there is a default provided in the docs, the object will be given that value by default, and if there is no default and it is optional, the value will be set to None by default.

I think this is irrelevant now since the JSON re-write


fix(app): module cards and slideouts various bug fixes

partially closes #10839 and fully closes #10854
Overview
This PR addresses various small fixes within the module cards and module slideouts:

if runStatus is null, module card slideouts are accessible
fix some spacings
slideout buttons are clickable via the enter button on keyboard
when 1st turning on H-S, the status will not say Cooling but instead say Idle
confirm attachment modal is now rendered above breadcrumbs
input field no longer accepts decimal points unless it is the magnetic module since the minimum value is -2.5

Changelog

changed all module slideouts and module card logic by adding useRunStatus
created new button SubmitPrimaryButton that uses an input tag and type submit so you can submit your command via the enter button

Review requests

turn on H-S, status label should say idle instead of cooling
complete a run, the module slideouts should be accessible
the input fields should no longer allow decimal points and once you input a value, the enter button on the keyboard should send and close the slideout

Risk assessment
low

🐛 First load: if you press enter to submit a shake value and it triggers the Confirm Attachment modal, the whole page reloads and the command isn't sent. After the reload, the same steps will still show the modal but you can click through it and the command works as expected.
https://user-images.githubusercontent.com/1958332/175104728-389e2b97-3d38-4ac9-9e00-f0db6420c73b.mov


Include knife-windows gem + deps in the ChefDK gemset

Having to install an additional knife-windows gem by hand in order to bootstrap Windows nodes makes Windows feel like a second-class citizen.
In addition, installing this gem requires native-compiled dependencies, and users managing Windows nodes are typically running on Windows workstations where compiling native gems is often a huge issue.

https://github.com/chef/knife-windows/pull/107 isn't in a release yet, because we're still testing some failures related to winrm: https://github.com/chef/knife-windows/issues/210.
We couldn't remember exactly why we didn't want to include em-winrm in a build. We thought maybe because it would pull in nokogiri and that was big, but it looks like we ship nokogiri anyway now, see CHEF-4675 and the note in https://github.com/chef/omnibus-chef/blob/master/config/software/chefdk.rb#L42.
On an fresh install of chef-dk=0.4.0 installing knife-windows=0.8.4 is only a single gem, so it appears fine from a dependency perspective to include it:
C:\opscode\chefdk>embedded\bin\gem install knife-windows --no-ri --no-rdoc
Fetching: knife-windows-0.8.4.gem (100%)
Successfully installed knife-windows-0.8.4
1 gem installed

I can't think of any remaining reasons not to include it.

This was added the nightly builds of ChefDK omnibus (against master) in https://github.com/chef/omnibus-chef/commit/f947ee0b49ba02fefac676bc6ae3719f29e80846 (and then fixed in https://github.com/chef/omnibus-chef/commit/451cb9948d142f4cbf4bb6f077325522e529b278).  If you search chefdk_0.4.0+20150420 on https://packagecloud.io/chef/current you can obtain a package which includes knife-windows.  Although, that won't work for Windows or OSX.  Are those nightly builds accessible somewhere?

@tyler-ball:
➜  curl "http://www.chef.io/chef/metadata-chefdk?prerelease=false&nightlies=true&p=mac_os_x&pv=10.10&m=x86_64"
url	http://opscode-omnibus-packages.s3.amazonaws.com/mac_os_x/10.8/x86_64/chefdk-0.4.0%2B20150422085010-1.dmg
md5	d2b5d96eb6d819428be9a7eb5f11cf11
sha256	01577cb297b5795ed74b57d553d4afa8ba9bff171d105495ff99a529684a6b6b

You should also update the default version of the ChefDK software definition to be master:
https://github.com/chef/omnibus-chef/blob/master/config/software/chefdk.rb#L18
This will ensure you are pulling in the latest changes form the chef/chef-dk repo and it will fix the versioning of your nightly/integration builds to be 0.5.0.rc.5+YYYYMMDDHHMMSS*.


Looks like IRAM_ATTR doesn't works for c++ lambda (IDFGH-6345)

This code doesn't works as expected:
timer_isr_register( TIMER_GROUP_0, TIMER_0, [](void* obj)IRAM_ATTR{ static_cast<Protection*>
(obj)->ProtectionISR(); }, this, ESP_INTR_FLAG_IRAM, NULL )

Where ProtectionISR() is method of Protection class.
Probably, IRAM addres check failed in esp_intr_alloc_intrstatus()
This is not 100%, but 95% reason. Not 100, because functions return ESP_ERR_INVALID_ARG, that can be returned because of other reasons. But, because if replace lambda to "normal" function - all works fine, i suppose, problem in not working IRAM_ATTR for lambda.

P.S. More info.
Looks like any sort of section attribute are silently ignored by compiler for lambda (even, attributes  must work (proof1, proof2) for lambdas too)
I have tried things like:

auto lambda = [](void* pProtection) [[gnu::section(".iram1")]] -> void { static_cast<Protection*>(pProtection)->TaskFunction(); };
auto lambda = [](void* pProtection) attribute((section(".iram0.text"))) -> void { static_cast<Protection*>(pProtection)->TaskFunction(); };

In any combinations of attribute sintax and section names.
xtensa-esp32-elf-objdump always show result like this:

400d0f1c <ZZN10ProtectionC4EP3App10gpio_num_tS2_yENUlPvE0_4_FUNES3>:
400d0f1c:	004136        	entry	a1, 32
400d0f1f:	02ad      	mov.n	a10, a2
400d0f21:	afefe5        	call8	40080e20 <_ZN10Protection12TaskFunctionEv>

400d0f1c is from 6 .flash.text   0001620d  400d0018  400d0018  000266f0  2**2 section
Unfortunately, i'm not GCC expert, and can't go deeper my self. Hope, anybody can....
P.P.S. - why i need so? Because i want to hide timer ISR inside of my class. And, ISR must have access to private class fields. And, ISR must be in IRAM, of course. Now, i'm using workaround, made fields public and ISR is "normal" function. But, this is ugly in my case.

Hi @FoxKeys, indeed GCC does not support section attributes on lambdas. However, even if this could be made to work, it still doesn't guarantee that all the functions used to dispatch this lambda call would also be placed into IRAM.
For your original requirement, to handle an interrupt from a member function, the usual pattern would look like this:
// header file
class Timer{
public:
    Timer();
protected:
    intr_handle_t m_handle;
    static void interrupt_handler_static(void* arg);
    void interrupt_handler();
};

// source file
void Timer::Timer()
{
    timer_isr_register(TIMER_GROUP_0, TIMER_0, &Timer::interrupt_handler_static, this, 0, &m_handle);
}

void IRAM_ATTR Timer::interrupt_handler_static(void* arg)
{
    reinterpret_cast<Timer*>(arg)->interrupt_handler();
}

void IRAM_ATTR Timer::interrupt_handler()
{
    // actual handler
}

Note that the functions involved in interrupt handling are not defined inline (in class definition), and IRAM_ATTR are used to place them into the correct section.

Yes, static method works too. I have found this workaround. Moreover, no need to have proxy function. For some reason, compiler not block access to private fields from static (i'm not c++ expert, so can't explain is this correct or not. But, this is works. And, minus one excess call for ISR (that is important).
Code looks like this:
// header file
class Timer{
public:
    Timer();
private:
    int privateField = 0;
    intr_handle_t m_handle;
    static void interrupt_handler_static(void* pTimer);
};

// source file
void Timer::Timer()
{
    timer_isr_register(TIMER_GROUP_0, TIMER_0, &Timer::interrupt_handler_static, this, 0, &m_handle);
}

void IRAM_ATTR Timer::interrupt_handler_static(void* pTimer)
{
    Timer* self = reinterpret_cast<Timer*>(pTimer);
    self->privateField = 1;//NO problem to write to private field...
}

P.S. Maybe, you can check this and write down as recommendation for c++ writers somewhere in examples (for ISR, for RTOS callbacks, etc)?
It was not easy to find this solution for me, at least.

For some reason, compiler not block access to private fields from static method

The critical difference here is that the static function is still a class member. In terms of function signature & calling parameters it behaves exactly as if it wasn't a class member, but the compiler will give it access to the class internals.
The pattern you wrote looks fine to me, but my C++ is a bit rusty also. Although I think that static_cast is a better choice for casting from the void *, as you want "simple" cast behaviour here.

Looks like you are right. I'm read more about different c++ type casts and static_cast is more restrictive (but enough in this case).
In my code (unlike of @igrr sample on this page) i'm used static_cast (not because i'm more smart than @igrr, just because copy-pasted from elswere :))
Updated my post.

Hi,
Thanks for posting these examples igrr.  I have tried your suggestion but using the arduino platform in PlatformIO. (I realise this may be a bit of an ask mentioning Arduino, but i imagine my question is more ESP32 and C++ memory allocation related so not sure where to go next)
I've got stuck because the function I use to attach the interrupt does not allow arguments to be passed to the ISR (ie the 'arg' parameter).  Is there a variant of your example for functions without parameters?  Someting like the below:
`// header file
class InterruptButton{
public:
InterruptButton();
protected:
static void readButtonISR_static(VOID);
void readButtonISR();
};
// source file
void InterruptButton::InterruptButton()
{
attachInterrupt(digitalPinToInterrupt(m_pin), &InterruptButton::readButtonISR_static, CHANGE);
}
void IRAM_ATTR InterruptButton::readButtonISR_static(VOID)
{
reinterpret_cast<InterruptButton*>()->readButtonISR();
}
void IRAM_ATTR InterruptButton::readButtonISR()
{
// actual handler
}`

@rwmingis in this case you can only have a single instance of InterruptButton class (signleton), since the interrupt handler won't know which InterruptButton instance to call the readButtonISR member on. To be honest this doesn't look very ESP32 specific to me, this is a general issue if the callback (ISR, in your case) doesn't pass any context or pointer along.
If in the ISR you can somehow figure out which of the InterruptButton instances you need to call, for example by reading GPIO status, then you could lift this limitation, to some extent. For example, declare a static array of pointers to InterruptButton instances, one for each GPIO you are using. In the ISR, check the GPIO status and figure out which was toggled. Then find the corresponding InterruptButton instance from the array and call its member function.

Ahhh, good man @igrr.  I totally forgot that static members more reside in the global deffinition of the class rather than in the instance itself.  Yes, you are reight, not ESP specific assuming the the IRAM_ATTR doesn't stop me.
In my previous version, I had an external ISR in RAM and passed a pointer to that ISR to the object instance during the setup.  The object then sets up the interrupts to call that ISR when event occurs.   When the ISR was called, it then called the readbutton member function of the object, and I don't believe that readButton code sits in the ram even though the actual ISR does.  Was trying to fix that.
Cheers for your help!
Rob

Hi all, just sharing a working example i made using @igrr's suggestion for creating ISR inside of class objects.  It's done by creating a static class handler function common along all instances, which is passed a reference to a particular instance to do the ISR dirtywork.
It also uses as similar technique to attach an a class member function to a pin change interrupt using std::bind method.
This was done to make my interrupt driven debounced button library work.  I found the standard non-interrupt (loop driven) button libraries lacking abit, so I hope this helps someone out.

Thank you @igrr for the lesson/tip.  :)
Cheers!
Rob

Hi @FoxKeys, indeed GCC does not support section attributes on lambdas. However, even if this could be made to work, it still doesn't guarantee that all the functions used to dispatch this lambda call would also be placed into IRAM.
For your original requirement, to handle an interrupt from a member function, the usual pattern would look like this:
// header file
class Timer{
public:
    Timer();
protected:
    intr_handle_t m_handle;
    static void interrupt_handler_static(void* arg);
    void interrupt_handler();
};

// source file
void Timer::Timer()
{
    timer_isr_register(TIMER_GROUP_0, TIMER_0, &Timer::interrupt_handler_static, this, 0, &m_handle);
}

void IRAM_ATTR Timer::interrupt_handler_static(void* arg)
{
    reinterpret_cast<Timer*>(arg)->interrupt_handler();
}

void IRAM_ATTR Timer::interrupt_handler()
{
    // actual handler
}

Note that the functions involved in interrupt handling are not defined inline (in class definition), and IRAM_ATTR are used to place them into the correct section.

Thanks for your example, it helped me to solve an issue for a project.
Have a nice day!

While searching for my problem, I came across this issue.
I am trying to attach a pin interrupt whose ISR is to call xTaskResumeFromISR or xQueueSendFromISR. The ISR gets called correctly, but the code to execute results in a core 0 panic.
Here are the implementation details.
PlatformIO: platform = espressif32 @ 6.0.1, framework = arduino, board = esp32dev
Header file (Worker.h)
#pragma once
#include <Arduino.h>

class Worker {
  public:
    Worker(uint8_t pinExtInterrupt);
    bool startTask(void);
  protected:
    // static wrapper for task creation
    static void  staticRun(void *arg) {
      reinterpret_cast<Worker *>(arg)->run();
    }

    // actual task's logic
    void run(void);

    // static interrupt handler
    static void staticIsrHandler(void* arg);

    // actual interrupt handler
    void isrHandler();

    TaskHandle_t _taskHandle = nullptr;
    uint8_t _pinExtInterrupt;
};

Source file (Worker.cpp)
#include "Worker.h"

Worker::Worker(uint8_t pinExtInterrupt) {
  _pinExtInterrupt = pinExtInterrupt;
  pinMode(pinExtInterrupt, INPUT);
}

bool Worker::startTask(void) {
  BaseType_t xReturned = xTaskCreate(staticRun, "Worker", 2048, this, 5, &_taskHandle);
  gpio_set_intr_type(static_cast<gpio_num_t>(_pinExtInterrupt), GPIO_INTR_NEGEDGE);
  gpio_install_isr_service(0);
  gpio_isr_handler_add(static_cast<gpio_num_t>(_pinExtInterrupt), staticIsrHandler, NULL);
  return true;
}

void Worker::run(void) {
  for (;;) {
    vTaskSuspend(NULL);
    // LOGIC
  }
}

void IRAM_ATTR Worker::staticIsrHandler(void* arg) {
  reinterpret_cast<Worker*>(arg)->isrHandler();
}

void IRAM_ATTR Worker::isrHandler() {
  xTaskResumeFromISR(_taskHandle); // ###### THIS LINE THROWS THE EXCEPTION ######
}

Error
Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
0x400d1d00:0x3ffbeaac in Worker::isrHandler() at ...
But what works is if you replace xTaskResumeFromISR e.g. with digitalWrite(..).

Hi T94T.  I think I ran into a similar problem when developing my interrupt button library. (this one: https://github.com/rwmingis/InterruptButton/blob/main/InterruptButton.cpp)
I think my solution was to not use the resumeFromISR bit.   From memory, I think i added a task to a queue in the ISR, and then let the normal handler do the queue stuff using the normal vTaskResume instead.
It has been 6 months and I am only an intermediate, so I may be completely off the mark.
Cheers.

@rwmingis Thanks for you quick reply. I don't really get the idea of you proposal.

Fixed now by replacing NULL with the this pointer:
gpio_isr_handler_add(static_cast<gpio_num_t>(_pinExtInterrupt), staticIsrHandler, this);

Also changed the isrHandler logic to:
void IRAM_ATTR Worker::isrHandler() {
  if(_taskHandle != NULL) {
    xTaskResumeFromISR(_taskHandle);
  }
}


[FIX] cannot find yaml file error when installed by pip install .

In this PR, I've fixed the issue that BABS installed by pip install . does not behave as expect - i.e., cannot find the dict_cluster_system.yaml. To fix it I added this file to MANIFEST.in.


feature request: add JSDoc to create migration template

In the create migration template, we have the opportunity to add JSDoc for type hints in VSCode.
So this template:
https://github.com/db-migrate/node-db-migrate/blob/50b34a8dd2224e21c5f28843d49511a08d1dbe1b/lib/template.js#L60-L66
Could contain this JSDoc
/**
 *
 * @param {import('db-migrate/lib/interface/migratorInterface')} db
 * @returns
 */
exports.up = function(db) {
  db
  return null;
};

to provide these type hints:

or
/**
 *
 * @param {import('@types/db-migrate-base')} db
 * @returns
 */
exports.up = function(db) {
  db.runSql()
  return null;
};

from https://www.npmjs.com/package/@types/db-migrate-base
to provide these type hints like these:

relates to https://github.com/db-migrate/node-db-migrate/issues/717 which would be much better, but a bit harder to implement

not that critical