[Feature]: A middleground between full isolation and --runInBand

🚀 Feature Proposal
Provide some way to mark test suites as safe to run without isolation, and then allow those suites to share a process - cutting down on the overhead from the cost of spinning up new workers and re-initialising the modules.
Motivation
In the days before jest, NodeJS test runners tended to load all of the tests into a single process, and then execute them (eg. mocha).
If you had a lot of fast tests, this worked pretty well, but if you had a lot of tests which did a lot of setup (like jsdom), this ended up being quite slow - as there was no way to parallelise them.
Then along came jest with a new execution model, each file would be isolated and run in a subprocess, allowing them to all run in parallel.
Effectivetly, jest made your slow tests faster - but the tradeoff is that it made fast tests slower (mostly due to the extra subprocess and isolation overheads).
The --runInBand option is often suggested in blogs about speeding up jest testsuites - but that loses out on the parallelism entirely.
It would be nice if across a large project's testsuite we could make use of both execution models, so that test suites for simple, pure functions could all re-use the same worker (and module cache?), but the more complex tests could continue to take advantage of jest's more powerful features.
Example
I'm not entirely sure how a test would be marked as "simple" or "unisolated". I suspect that because it would need to change the worker behaviour, that this would need to be done with a configuration option that gave a filename pattern?
Pitch
When jest first came onto the scene it was rapidly adopted in part for it's speed advantages, but nowawdays there are a bunch of reports and blog posts where people are complaining that it's not fast enough.
I believe that these complaints have the same root - that jest is slower than a basic test runner for tests which would still work fine in a basic test runner.
Having a first party story for addressing this would be excellent.
I'm interested in experimenting in this space, so if there are ways to extend jest to try out models like this from outside core then I'd be happy to receive some pointers and I'll share any progress here.

While digging through #7963 for ideas, I came across this comment, which is a pretty clever way of achieving something close to what I've described above - albeit somewhat cryptically and in a way that'd break the CLI arguments that do test filtering.
https://github.com/facebook/jest/issues/7963#issuecomment-989120685

I would support such a mode of operation. We're seeing tremendous overhead of having to reload all modules for each test suite (800ms for a test suite that takes ~50ms) and as a little experiment I bundled all code and specs into a single bundle (using esbuild this took 5s) to see our test execution times drop tenfold, from 70s to 6s (so 11s in total including the bundling step). The primary issue with this approach is that it affects the location of snapshot files and there is no more progress information, as everything would then execute as a single test suite.
As an alternative approach I played around with caching the full Script instances in-memory, instead of requesting the file again from the transformer and then having to recreate the Script instance. This approach reduced module loading overhead by ~4x, to ~200ms, but I have not measured memory usage at all (whether this approach is acceptable depends a lot on usage patterns, e.g. in our case most of the modules have to be loaded for each suite regardless so just caching them in their entirety is beneficial in our case, but may not be for others).

Also interested in this idea as we're seeing some very large overhead to requiring the same modules over and over. I think in particular a possible approach could be to share a common cache for package imports marked with "sideEffects": false

For our current project, we have some tests that are resource-intensive / latency-sensitive and should not be run concurrently with other tests, but the majority of our tests are fine with concurrency
To accommodate this:

we rename these special tests to have .runinband. in the filename
we run jest with --runInBand --testPathPattern=runinband
then, we run jest again but with --testPathIgnorePatterns=runinband to run the rest of our tests with default concurrency

While this works, it's quite awkward, and it means that --changedSince and other jest features don't quite work as well as they could
It would be better for our use case if we could do something like jest.runInBand(true) inside the special test files, so that the scheduler could alternate between worker-pools and in-band modes as required within the one invocation of jest (instead of having to run it twice with different flags)


File association profiles and/or backup

Description of the new feature / enhancement
It takes a while to set up file associations to match my workflow. There are several applications that will silently change those associations for every file type they support (Wondershare Uniconverter springs to mind, but is not the only one) forcing me to go back into settings and put them back the way I want them. Since there are dozens of file types affected, and a lot of different applications to choose from for some of them, this takes a lot of time and is quite annoying.
I would like a tool that simply backs up my file associations and allows me to restore them easily.
It can do this for all or selected file types.  If it allows selection of the file types to save the associations for, this would allow a user to create profiles for their workflows, simply restoring the file associations stored in that profile.
I believe this would be a fairly straight forward tool to implement and that many people would find it useful.
Scenario when this would be used?

Restoring users preferences after an application installer messes them up:

User configures file associations with applications of their choice
User saves the file associations in a file
User updates or installs an application that unconditionally changes file associations for files it may be used on
User notices that clicking on a file brings up the wrong application and is annoyed
User restores the file associations from the file saved in step 2
User is now no longer annoyed

Workflow profiles

User configures file associations for media files with application set A (eg, Nero)
User saves current file associations for selected media file types in a profile named "Media Apps 1"
User configures file associations for media files with application set B (eg, Adobe)
User saves current file associations for selected media file types in a profile named "Media Apps 2"
User wants to use application set A to create a video: User restores "Media Apps 1" profile
User creates the video
User wants to use application set B to refine the video and add special effects: User restores "Media Apps B" profile
User refines the video

Supporting information
At it's simplest level, I believe this is simply saving off and restoring registry entries for file type associations.
Adding a dialog to display the known file types and allowing the user to select the settings to be saved will allow for profiles.
I don't think it's required to have a dialog to allow the user to select the settings to restore, but that would also be a nice option.

This is really Windows 11 feedback... Dear Microsoft please stop breaking things.

This is really Windows 11 feedback... Dear Microsoft please stop breaking things.

No argument from me on that, but being able to save off and restore file associations without having to wade through the registry and selectively saving entries into a .reg file would be a good thing.


'Configure policies' option missing

In STEP 3: "Select Configure policies and select Add a policy." - In my
Microsoft 365 admin center I do not have a 'Configure policies' option available to select... only a +New Request button (which is for use in STEP 4, item no. 4). I am using a M365 E5 Trial licence.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0bf337ec-3242-44b9-328b-7ca6381a2bcf
Version Independent ID: eda3540f-7049-ad17-a259-7952e5665983
Content: Get started with privileged access management - Microsoft 365 Compliance
Content Source: microsoft-365/compliance/privileged-access-management-configuration.md
Service: o365-seccomp
GitHub Login: @robmazz
Microsoft Alias: robmazz

Please ignore the above, screen sized hid the option. I do have it!

@challengelogic - Thank you for submitting feedback.
Based on your last comment, our understanding is that there is no issue anymore so we will close this issue.
Please feel free to open a new issue if you find any documentation error or if there is a specific area of the docs that we can improve on and we will be glad to help fix it. Thank you.


Fix Set-DbaDbFileGrowth when multiple files within file group

Issue when multiple file exist within the file group.
For example tempdb

Type of Change

[x] Bug fix (non-breaking change, fixes # )
[ ] New feature (non-breaking change, adds functionality, fixes # )
[ ] Breaking change (effects multiple commands or functionality, fixes # )
[ ] Ran manual Pester test and has passed (.\tests\manual.pester.ps1)
[ ] Adding code coverage to existing functionality
[ ] Pester test is included
[ ] If new file reference added for test, has is been added to github.com/sqlcollaborative/appveyor-lab ?
[ ] Unit test is included
[ ] Documentation
[ ] Build system

Purpose
fix issue with multiple files within file group
Approach
changed the array creation
Commands to test
Set-DbaDbFileGrowth -sqlInstance $instance -Database tempdb -Growth 0 -ErrorAction Stop -Verbose
Screenshots

Learning
combining two arrays

Heyyy tests pass! Thank you so much 🙇🏼  This will be merged today.


[api] Visualize sam2 output for Sam2ServingTranslator

[api] Adds sam2 model to onnxruntime model zoo
[api] Standardizes CV output format
[api] Visualize sam2 output for Sam2ServingTranslator

Description
Brief description of what this PR is about

If this change is a backward incompatible change, why must this change be made?
Interesting edge cases to note here

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 63.97849% with 67 lines in your changes missing coverage. Please review.

Project coverage is 72.39%. Comparing base (b6656ed) to head (7020502).
Report is 1 commits behind head on master.

Files with missing lines
Patch %
Lines

.../modality/cv/translator/Sam2ServingTranslator.java
8.33%
33 Missing :warning:

.../ai/djl/modality/cv/translator/Sam2Translator.java
73.91%
14 Missing and 4 partials :warning:

...pencv/src/main/java/ai/djl/opencv/OpenCVImage.java
0.00%
11 Missing :warning:

...main/java/ai/djl/onnxruntime/engine/OrtEngine.java
33.33%
1 Missing and 1 partial :warning:

...ava/ai/djl/modality/cv/output/DetectedObjects.java
66.66%
0 Missing and 1 partial :warning:

.../modality/cv/translator/Sam2TranslatorFactory.java
75.00%
0 Missing and 1 partial :warning:

...pi/src/main/java/ai/djl/util/JsonSerializable.java
80.00%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3494      +/-   ##
============================================
- Coverage     72.52%   72.39%   -0.13%
- Complexity     7394     7410      +16
============================================
  Files           672      674       +2
  Lines         32909    33027     +118
  Branches       3501     3516      +15
============================================
+ Hits          23868    23911      +43
- Misses         7400     7483      +83
+ Partials       1641     1633       -8

Flag
Coverage Δ

?

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

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


Added contact summary back to the done page

Fixes #387
Changed the local issue completion cache to store B0001234-contact rather than just the contact id so we can see what the most recent results were. This works well enough but I would note that it is incorrect when you have called on a topic in the past and entered a valid result, like contact, but then skip that contact the next time. In the current implementation it'll fetch the most recent contact result, since skip is the absence of an entry in that list. I don't think this is an issue, I would prefer to keep the assumption in the codebase that skip is an absence of a contact outcome vs changing it to a skip outcome.
Package.resolved is back. Not sure when it was removed last?

@heathermh I tried combining these two views but I didn't like how complex the view ended up being and how many params you had to pass to configure it. I haven't built a lot of complex views so maybe I'm missing a pattern that would make it simpler. I'm gonna merge as-is for now and we can revisit.


humanizeDate utility function returns inconsistent results based on the time zone

I have checked the following:

[X] I use the newest version of bruno.
[X] I've searched existing issues and found nothing related to my issue.

Describe the bug
While writing tests for the utility functions found in packages/bruno-app/src/utils/common/index.js, I noticed that the humanizeDate function does not reliably return the date it is passed. This is caused by the Date object in JavaScript, which considers time zones when parsing a date.
See the discussions here for further explanation:

https://stackoverflow.com/a/31732581/7100879
https://stackoverflow.com/questions/47359812/why-does-adding-a-space-character-at-the-end-of-a-year-string-cause-javascript/47362875#47362875

File in question:
packages/bruno-app/src/utils/common/index.js
Code in question:
export const humanizeDate = (dateString) => {
  const date = new Date(dateString);
  return date.toLocaleDateString('en-US', {
    year: 'numeric',
    month: 'long',
    day: 'numeric'
  });
};

The below screenshot illustrates this phenomenon.
.bru file to reproduce the bug
No response
Screenshots/Live demo link

See this PR for a proposed fix and tests: https://github.com/usebruno/bruno/pull/2378

PR Merged


Unable to cast m3u8 and ts files

I am successfully able to cast mp4 files to TV through my sender app but got a issue while casting m3u8 and ts video files.
Please help me out.

For m3u8 CORS should be enabled on the origin server. Please check this once.
I am also facing the same issue but CORS is enabled on the streaming server. If CORS was enabled on your server have you managed to solve this?

I also had faced similar issue in past with m3u8 files.
First thing you should check if the CORS are enabled on your server.
Second, To support m3u8 files casting we need Custom Receiver. while creating application on your Google cast SDK developer console  create custom receiver and add your custom Web Receiver Application URL.
You can try this also. -
https://googleads.github.io/googleads-ima-cast/client_receiver/player.html
If you need further customization you can create your own and use.


fix missing getting started docs

Looks like this is a duplicate. Please see #11 for more context (it also links the PR that closes it)

Duplicated. Thanks!


About loss design

Hi @tkipf . I saw a comment that in practice we can use the representations learned at each layer to construct a compound loss function, e.g., the summation of three cross-entropy loss function if we have three gc layers.
I don't remember where I saw this comment, and it seems that this way can make the convergence more stable when we have no node features. Could you give some opinions on this? Thanks.

I do not remember seeing such a suggestion. Not sure exactly if I
understand what you mean, but if you want such an approach to work you
would probably have to attach a softmax classification layer + cross
entropy loss after each graph propagation layer.
On Thu, May 30, 2019 at 12:31 AM lanlin<EMAIL_ADDRESS>wrote:

Hi @tkipf https://github.com/tkipf . I saw a comment that in practice
we can use the representations learned at each layer to construct a
compound loss function, e.g., the summation of three cross-entropy loss
function if we have three gc layers.
I don't remember where I saw this comment, and it seems that this way can
make the convergence more stable when we have no node features. Could you
give some opinions on this? Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tkipf/gcn/issues/120?email_source=notifications&email_token=ABYBYYEJMBXIOLZ4O2JFP6DPX57DJA5CNFSM4HQ7UHQ2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GWVCENQ,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABYBYYFKIVR5ZJBA4EFZXRDPX57DJANCNFSM4HQ7UHQQ
.


reduce the main trace width to 72 columns

This PR removes the row address column from the hash chiplet, since we can use the clk column from the system component for the same purpose. This reduces the width of the chiplets to 17 columns, which restores the overall width of the main execution trace back to 72 columns

[x] update docs (constraints, images, etc)
[x] update processor
[x] update AIR
[x] update tests
[ ] update constants in the recursive verifier
[ ] update zipped excalidraw image files in the mdbook assets

Notes:

Since we're planning to update the trace width quite a bit, we may want to consider disabling the recursive verifier test and updating the verifier constants in a few weeks after all of the changes are made. Alternatively, is there a way we can set the trace columns in a single place so that one correction will resolve all updates (maybe this already exists and I just didn't see it in a cursory look).
I haven't benchmarked this yet, but I'll update with numbers

Here's what running fibonacci for 2^20 cycles looks like before and after. The full proof time dropped by 2% from 9485 ms to 9282 ms.
BEFORE
Generated execution trace of 73 columns and 1048576 steps in 397 ms
Built domain of 2^23 elements in 8 ms
Extended execution trace of 73 columns from 2^20 to 2^23 steps (8x blowup) in 2302 ms
Computed execution trace commitment (Merkle tree of depth 23) in 1063 ms
Built auxiliary trace segment of 9 columns and 2^20 steps in 43 ms
Extended execution trace of 9 columns from 2^20 to 2^23 steps (8x blowup) in 686 ms
Computed execution trace commitment (Merkle tree of depth 23) in 393 ms
Evaluated constraints over domain of 2^23 elements in 2983 ms
Converted constraint evaluations into 8 composition polynomial columns of degree 1048575 in 191 ms
Evaluated 8 composition polynomial columns over LDE domain (2^23 elements) in 412 ms
Computed constraint evaluation commitment (Merkle tree of depth 23) in 314 ms
Built DEEP composition polynomial of degree 1048574 in 358 ms
Evaluated DEEP composition polynomial over LDE domain (2^23 elements) in 66 ms
Computed 4 FRI layers from composition polynomial evaluations in 79 ms
Determined 27 query positions in 1 ms
Built proof object in 76 ms
Program with hash 055af6c034549f6e3cb885a789906c3c970c2a64c45a99f2fabf87b1fe665751 proved in 9485 ms
AFTER
Generated execution trace of 72 columns and 1048576 steps in 381 ms
Built domain of 2^23 elements in 9 ms
Extended execution trace of 72 columns from 2^20 to 2^23 steps (8x blowup) in 2153 ms
Computed execution trace commitment (Merkle tree of depth 23) in 983 ms
Built auxiliary trace segment of 9 columns and 2^20 steps in 43 ms
Extended execution trace of 9 columns from 2^20 to 2^23 steps (8x blowup) in 704 ms
Computed execution trace commitment (Merkle tree of depth 23) in 392 ms
Evaluated constraints over domain of 2^23 elements in 3005 ms
Converted constraint evaluations into 8 composition polynomial columns of degree 1048575 in 198 ms
Evaluated 8 composition polynomial columns over LDE domain (2^23 elements) in 413 ms
Computed constraint evaluation commitment (Merkle tree of depth 23) in 291 ms
Built DEEP composition polynomial of degree 1048574 in 383 ms
Evaluated DEEP composition polynomial over LDE domain (2^23 elements) in 66 ms
Computed 4 FRI layers from composition polynomial evaluations in 80 ms
Determined 27 query positions in 0 ms
Built proof object in 48 ms
Program with hash 055af6c034549f6e3cb885a789906c3c970c2a64c45a99f2fabf87b1fe665751 proved in 9282 ms


chore: renamed variable name

Hello, I renamed the variable allFilesToExclude to allFilesToInclude because I thought it would be the more correct name.
Thanks.

Nice catch !


accept and rollback error message should be the same as c hooks

When doing accept or rollback in jshooks you cannot send in data and have it return the hex value. If you send in a hex, it will hex that again.
Current Behavior:
accept('DEADBEEF', 18)
// "HookReturnString": "4445414442454546"

accept(SBUF("DEADBEEF"), 18)
// "HookReturnString": "4445414442454546"

let acc = hook_account()
accept(acc, 18)
// "HookReturnString": ""

uint8_t hook_acc[20];
hook_account(SBUF(hook_acc));
accept(SBUF(hook_acc), 18)
// "HookReturnString": "6DF90ECA2B5C0B45AA2E1D6E993BF7D9DCB226B3"

let acc = hook_account()
accept(toHex(acc), 18)
// "HookReturnString": "36444639304543413242354330423435414132453144364539393342463744394443423232364233"

Conclusion:
I think we should allow the ability to send in the buffer/byte array and have it return the hex of that. To match the behavior of the c hooks.
If I update the macro with the following then I can send the byte array into the accept, with as_hex=true and then get the account id as the HookReturnString.
if (JS_IsBool(as_hex) && !!JS_ToBool(ctx, as_hex))\
    {\
        auto in = FromJSIntArrayOrHexString(ctx, error_msg, 64*1024);\
        if (in.has_value())\
        {\
            if (in->size() > 1024)\
                in->resize(1024);\
            hookCtx.result.exitReason = std::string((const char*)in->data(), in->size());\
        }\
    }\

There is also a function is_UTF16LE in the c path and I think we should decide if we want to incorporate this as well.

This seems reasonable, feel free to make the change


Bot is broken

nothing happens when i run Bot.py. No output, no errors . Just quis out

solved the issue, you can check it out now


"Auto-Attach" DebugSession name change after launch

I am currently implementing something akin to an »auto-attach« feature for vscode-perl-debug. When I call vscode.debug.startDebugging I do not have a good name for the debug session yet, but once a connection to the debugger is established, I can come up with a better one.
Unfortunately the DebugSession.name property is read-only and there does not seem to be an alternative to set it post-launch. https://github.com/Microsoft/vscode-node-debug/blob/d490a306164fd086e7e792dec858b1d36a879871/src/node/extension/autoAttach.ts#L62 also uses an awkward name like Auto attached (123) it seems.
I do have control over the thread name, but in case of Perl, there is only ever one thread, and I'd rather not have session name and also thread name in the user interface, https://github.com/Microsoft/vscode/issues/69752.
(Some way to make vscode use the thread name of the single thread in place of the poorly auto-generated session name would work for me.)

Valid feature request, but since you are the first to ask for this, it will not addressed anytime soon...

Related to https://github.com/Microsoft/vscode/issues/62972

@hoehrmann DebugSession.name has been made writable some time ago and changes are now properly reflected in the UI.


Visual, automatic bookmarks / work heatmap

Had an idea for an extension.
I work in files with many lines of code, and often need to jump around in the file while working. It's easy to lose track of where I was last making changes, and I waste a lot of time scrolling around to find code. I know there are a couple bookmark extensions for Brackets, but would like a solution that is a) automatic, and b) visual (but unobtrusive).
Here's some mockups:
Version 1. This shows a "heatmap" in the scrollbar of the last few places edits were made in the file, and also highlights the line numbers on the left.

Version 2. This replaces the gradient heatmaps with simple colored lines (I literally copied the effect from Bracket's "find" feature, just as a starting point.) This version also highlights the entire line of code.

Effects can be mix and matched, of course. Just wanted to get visual proof of concepts out there.
I thought the extension would work by saving the line numbers of the last 20-50 lines of code that have been edited in the file, and updating/redrawing the visual markers in the scrollbar as more edits are made. Newer changes are brighter while older changes gradually fade away.
I poked through the "FindBar" API documentation and also found "ScrollTrackMarkers" but it sounds like it's not intended for use by extensions, unfortunately. I'm willing to try to hack together an extension but not really sure where to start.
Comments, suggestions & ideas are welcome! Thanks for reading.

With plugin https://github.com/yaddran/brackets-occurrences-marker when you select a word it add
scroll track markers to all occurrences of that word.
Maybe can help you.

Thank you! I downloaded the source and am checking it out now. I also found this extension which seems to do the same thing but with fewer files.

Never made an extension before but gave it my best shot: https://github.com/gem0303/work-heatmap
Lots of things on the To Do List but the basic functionality is there.

Made a small update to my extension today and am pretty pleased with how it's working so far.

For my next feature, I'd like to save the file's bookmarks when I switch between editor windows (currently I just empty the bookmark array on file change). I found getCurrentDocument in the DocumentManager API and think I could use this to drive saving out unique arrays of bookmarks for later reference, but would really like to have an example of how to use it.
Anyone have any recommendations for a good example?


build(package-lock.json): fix for npm pkg ip vulnerable to SSRF

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

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


21.05 version of plugin does not start on Koha 21.05

The 21.05 version of the plugin doesn't start in Koha version 21.05
It can be started by adding the following JS:
StartEDS('default')
But the plugin won't start on its own

The site in question is here:
https://galveston.bywatersolutions.com/
I have installed the 21.05003.kpz but the problems persist


Plugin idea: Hide date/time in menu bar while recording

This should be possible to implement when https://github.com/wulkano/kap/pull/804 is merged.
Idea from https://twitter.com/rauschma/status/1234155670036979712
I debugged the system preferences and discovered a way to hide the clock programmatically:
Hide:
defaults write com.apple.systemuiserver "menuExtras" "(\"/System/Library/CoreServices/Menu Extras/AirPort.menu\", \"/System/Library/CoreServices/Menu Extras/Volume.menu\")" && killall SystemUIServer

Show:
defaults write com.apple.systemuiserver "menuExtras" "(\"/System/Library/CoreServices/Menu Extras/AirPort.menu\", \"/System/Library/CoreServices/Menu Extras/Volume.menu\", \"/System/Library/CoreServices/Menu Extras/Clock.menu\")" && killall SystemUIServer

Actually, "Show" is not entirely correct. We need to first read what menuExtras contains before disabling and then restore that.

Yeah that’s a good recording plugin idea and not very hard to implement. Just out of curiosity what is the use case for it? Not showing when you made the recording?

@karaggeorge Two reasons:

You don't want to show that you recorded something at 4 AM.
If you edit a lot and leave out parts, the time will jump, which can be distracting.

I think we should also send a global notification before and after recording, so third-party apps like Dato can be supported too.
Event names:

com.wulkano.kap.will-start-recording
com.wulkano.kap.did-stop-recording

https://www.electronjs.org/docs/api/system-preferences#systempreferencespostnotificationevent-userinfo-deliverimmediately-macos

But that means the apps themselves would have to adapt to Kap. Wouldn't it make more sense for the apps to expose events that they listen to, that Kap can adapt to? Not sure what the standards are in macOS

I think it makes more sense for Kap to define this as it's Kap that decides whether to send the events or not based on whether the user has the plugin installed and want this behavior. Kap could document these events and apps could add support for them if they want to. Either way, the apps have to add something for it to work. This doesn't matter much anyway, as I doubt any other apps will adopt this.

I think it makes more sense for Kap to define this as it's Kap that decides whether to send the events or not based on whether the user has the plugin installed and want this behavior. Kap could document these events and apps could add support for them if they want to. Either way, the apps have to add something for it to work. This doesn't matter much anyway, as I doubt any other apps will adopt this.

But then how will Dato, for example, know to hide. willStart and didStop sound like events that should be sent out every recording. They would have to pass some other information as well, about wether the plugin was on or not. If it was a Dato specific event that it listens to, we could send those in the plugin's willStart/didStop hooks, only when it's enabled

@karaggeorge The plugin would send those events.

Hmm, then could they be less generic? Maybe com.wulkano.kap.hidedate.willStartRecording ?
Something to show that this event is specific to the plugin

👍

I'll implement this today hopefully 😄

https://github.com/karaggeorge/kap-hide-clock


Polkadot: ink! 5.0

Upgrade Solang to be compatible with ink!  v5.0 .

Simplify events
Latest substrate node on CI
Update tests and docs

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

Project coverage is 88.57%. Comparing base (5764e01) to head (7296b16).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1632      +/-   ##
==========================================
- Coverage   88.58%   88.57%   -0.01%
==========================================
  Files         150      150
  Lines       69330    69285      -45
==========================================
- Hits        61415    61370      -45
  Misses       7915     7915

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


Evaluate Profile-Guided Optimization (PGO) usage

Hi!
Since the README file mentions a lot of performance-oriented things, I decided to test one compiler optimization - Profile-Guided Optimization (PGO) on genson-rs.  I already tested it on various projects with positive results (you can find all benchmarks here: https://github.com/zamazan4ik/awesome-pgo), so here are the benchmark results for genson-rs.
Test environment

Fedora 39
Linux kernel 6.8.7
AMD Ryzen 9 5900x
48 Gib RAM
SSD Samsung 980 Pro 2 Tib
Compiler - Rustc 1.78
The project version: the latest for now from the main branch on commit 67afe6d3ad8d10affb65b251694ca7b52b978769
Disabled Turbo boost

Benchmark
For benchmark purposes, I use built-in into the project benchmarks. For PGO optimization I use cargo-pgo tool. Release bench result I got with the taskset -c 0 cargo bench command. The PGO training phase is done with taskset -c 0 cargo pgo bench, PGO optimization phase - with taskset -c 0  cargo pgo optimize bench.
All measurements are done on the same machine, with the same background "noise" (as much as I can guarantee). taskset -c 0 is used for reducing OS scheduler "noise".
Results
I got the following results:

Release: https://gist.github.com/zamazan4ik/f2f108acf6c8f232816b1bccd9a0bb26
PGO optimized compared to Release: https://gist.github.com/zamazan4ik/01699361bfbcfa96fc505d091084a4f2
(just for reference) PGO instrumented compared to Release: https://gist.github.com/zamazan4ik/1b98f888fc596b4fc682ffb4754a0a8d

According to the results, PGO measurably improves the tool's performance at least in the benchmark above.
Further steps
I can suggest the following action points:

Perform more PGO benchmarks with other test files. If it shows improvements - add a note to the documentation (README file?) about possible improvements in the tool's performance with PGO.
Optimize prebuilt binaries with PGO (if any). As a training set, you can try to gather multiple real-life files, train PGO on them, and deliver pre-PGO-optimized binaries to the users.
Consider enabling Link-Time Optimization (LTO) for the tool. It can help with optimizing performance and reducing the binary size.

Testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too (Clang and Rustc already use BOLT as an addition to PGO) but I recommend starting from the usual PGO.
I would be happy to answer your questions about PGO.
P.S. I created the Issue since Discussions are disabled for the repo. Since it's not the issue but an improvement idea, probably Discussions is a better place to discuss such things.

This is great idea! I will test it out


Add bitwise XOR reducer to lax.reduce

Fixes #11005.
This commit adds handling for the lax.bitwise_xor operation to lax.reduce. It also includes a new standard reduce primitive, modeled after the existing and/ or reducer primitives.
TODO: Add testing. (The example by @jakevdp given in the issue works now, though:)
>>> from jax import lax
>>> import jax.numpy as jnp
>>> lax.reduce(jnp.arange(10), 0, lax.bitwise_xor, (0,))
>>> DeviceArray(1, dtype=int32)

Looks great so far! I'm poking around, and it doesn't look like we have any explicit test coverage of the boolean reductions for lax.reduce. If you're up for it, you can add those as part of this PR. If not, please let me know and I can maybe do that separately, and you can use the test as a template for the new ones here.

Yes, that stopped me a little bit. I wanted to confirm if there was any existing coverage before adding my own thing, but thank you for confirming. I can add it no problem, what do you think about adding it as a new actual test (i.e. a new function)? The reason is that the decorator over testReduce is already getting quite crowded, and separating the boolean ops seems like a nice semantic structure in my opinion.
Could you briefly sketch your approach on this? Otherwise I can also build off of the existing testReduce facility.

Also, looking more closely, these special reductions are only defined for boolean types, so the example above doesn't even hit this codepath I believe. We should be able to extend these primitives to support both boolean and integer types, but that's probably a contribution for another time.

I added a separate test for the boolean reduce ops. Let me know if that works :)

I fixed the test failures (due to my misunderstanding of the role of init_val) and added xor_reduce_p to jax.lax exports.

Thank you for the speedy review! I will try to get something done extending the binary ops to integer types as well

There's one more thing you'd need to fix to get this merged, which is add the new primitive here:
https://github.com/google/jax/blob/7098088f4eb15cf750398889e4341dbc15cda1b3/jax/experimental/jax2tf/jax2tf.py#L979
(We don't run jax2tf tests as part of our github presubmits as a measure to cutdown on presubmit times, but we do need them to pass before merging.)

Thanks, fixed.


Annotations for finding UI elements

In the native drivers, annotations can be added to a MobileElement variable in replacement of using the traditional driver.findElementById() method.  Having these annotations for Flutter finder methods, like valueKey, would be very valuable.

@ajschwieterman Could you please create a proposal in testNg community.

@shibupanda Can you point me to where I can find the testNg community?

@ajschwieterman raise a proposal here.

@shibupanda - Can you please help me understand as to how this would be connected to TestNG ?


Properly handle edgecases and throw ValueErrors for org_id

https://www.pivotaltracker.com/story/show/148701941

we're already capturing and aborting on ValueErrors in set_valid_consents() in the user API; however, we weren't properly throwing ValueErrors on bad data in UserConsent.from_json(). Modified the logic slightly and added some extra error handling, so we can avoid SQL exceptions (see PT story).

Hello @OptimusRhine! Thanks for submitting the PR.

In the file portal/models/user_consent.py, following are the PEP8 issues :

Line 107:12: E713 test for membership should be 'not in'


Duplicated menu when using hierarchy

Bug Report
When adding sub-menu items, I'm facing an item both inside it's parent and in the root level:

Here is the document configuration:
---
name: Composition
route: /concepts/composition
menu: Concepts
---

And here is the menus config:
// doczrc.js
module.exports = {
  menu: [
    'Introduction',
    'Getting Started',
    { name: 'Development', menu: ['Structure', 'Environment & Commands'] },
    { name: 'Concepts', menu: ['Composition'] },
    { name: 'Reference', menu: ['Routing', 'Layouts & Blocks', 'Menus'] }
  ]
}

Expected behavior
Once I configure an item to be shown under a parent, it should not be shown in the root level.

@lucasconstantino try to update to the new release, this can be fixed on it 🙏

@pedronauck  I'm currently having the same issue on 1.2.0. So I think this is not yet fixed unfortunately.

Is there an example of a working implementation of docz v1.2.0 with a custom menu using the above structure? I am getting both duplicate entries, but the one in the sub-menu is not clickable and does not function.

This regression exists in v2 as well.

/notstale

Any updates on this? Makes using the menu option basically infeasible.

/notstale part3

Still not stale, running into this now.

In case it helps anyone else, I'm currently working around this by explicitly hiding the undesired links via CSS:
// Hack to hide duplicate nested menu items https://github.com/doczjs/docz/issues/694
div[data-testid="sidebar"] > a[href*="/entities/"] {
  display: none;
}

Hello @jakemmarsh @mAAdhaTTah !
Do you guys still run into this issue ? I tried to replicate your issue but I can't seem to reproduce it
If you do, can you guys give me your project's version of docz + gatsby-theme-docz ?
(Upgrading it might solve the issue)

@mickaelzhang this issue does still exist for me on the latest versions<EMAIL_ADDRESS>and<EMAIL_ADDRESS>

Running into the same issue on version<EMAIL_ADDRESS>

Can you guys direct me to a project where you have this issue?

I ended up rewriting the menu setup to avoid it so I don't have a case right now. I'll see if I can reproduce it.

This appears to be fixed in master. Tried to reproduce in the basic example:

doczrc.js
export default {
  menu: [
    'Getting Started',
    'Readme',
    { name: 'Components', menu: ['Alert2', 'Alert'] },
  ],
}


Add Pedro Ávila to Contributors list

First PR.

@avilapedro, I'm quite elated about your PR. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a PR and learned that I merged it?

@Roshanjossey thanks for asking. That was exciting! I'm a beginner in the world of programming as well, and as such, I feel kind of uncomfortable with contributing around, even on issues specially labeled for beginners.
I guess that I may have to study more and do some small projects by myself to get more confident.

@avilapedro, I’d urge you to continue contributing to other open source projects.
We also have a slack team to help/mentor people trying to contribute to open source projects.
You can join the team by going to https://firstcontributions.herokuapp.com


 We need to support multiple in the future.

We no longer have ESRT centers.


nodes: add preload function to create children with specific metadata

preload lets the caller decide how metadata should be set on soon-to-be children without incrementing the lookup count.
There is almost certainly a better set of functions to manipulate these values (no map??) but I'm still not certain that we have a firm idea of the operations required. @yallop please review.

This looks good to me.


Also boot emulator/Simulator

Hey, thanks for this awesome initiative! Do you have any future plans with it? I think it would make it even much more useful if you could also boot the emulator or Simulator with this for instance :)

@jfversluis Thank you.
Yeah, that's a good idea to also boot the emulator or Simulator.
I used to think about it. However, there are quite a lot of iOS simulators, showing them all on CLI won't look good.
I am thinking about a VSCode extension will serve better or an add-in to C# tool.

Yeah that's all pretty cool ideas! I definitely like the VSCode extension, I think a lot of people will like that. Is something like that included in Comet already as well? You might be able to get some inspiration from that too

Yeah, I didn't managed to run Comet on my machine yet. I will check it out again.

Looks like this could be handy as well: https://github.com/redth/AndroidSdk.Tools

It looks cool. Thanks for sharing, @jfversluis .


Avoid unnecessary call to getMockModule

Summary
getMockModule is called even when it is not used. After this patch yarn test is running ~2 seconds faster in my computer. I am not familiar with the code to estimate the impact, but it worth to be fixed anyway.
Test plan
yarn test
Before:

After:

Current coverage is 68.31% (diff: 100%)

Merging #2678 into master will not change coverage

@@             master      #2678   diff @@
==========================================
  Files           140        140
  Lines          5063       5063
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           3459       3459
  Misses         1604       1604
  Partials          0          0

Powered by Codecov. Last update 393dd35...b2f085b

Nice. Performance improvements in this code are definitely always very welcome. Love that you are doing this.

This is my first open source contribution! I am so happy! :)


Call users/:id endpoint on sign in to force user update

Context
We want to ensure that any changes on Delius is updated automatically for users logging in. To enable this, we have added an extra API call to the /users/:id endpoint which updates the user[1].
[1]
https://github.com/ministryofjustice/hmpps-approved-premises-api/blob/main/src/main/kotlin/uk/gov/justice/digital/hmpps/approvedpremisesapi/controller/UsersController.kt#L29
Release checklist
Release process documentation.
Pre-merge checklist

[ ] Are any changes required to dependent services for this change to work?
(eg. CAS API)
[ ] Have they been released to production already?

Post-merge checklist

[ ] Manually approve
release to test
[ ] Manually approve
release to preprod
[ ] Manually approve
release to prod

 Frontend asks the API to update a user with the latest Delius data


Hook update-status fails

Bug Description
The hook update-status fails intermittently after deployment. We are experiencing this issue in our CI pipeline in a not frequently active project, after a while, there was a change that triggered the CI and prometheus-k8s failed to deploy successfully. Although we've had successful runs, we're not able to reproduce the bug consistently.
Here's a sample failed run
To Reproduce
Deploy prometheus-k8s and wait for it to fail
juju deploy prometheus-k8s --trust

Environment
We've experienced the issue using the latest/stable and 2.9.38-ubuntu-amd64 in two different environments:

Github runner, set up with charmed-kubernetes/actions-operator@main action.
GKE (Kubernetes version 1.24.8-gke.2000)

Relevant log output
controller-0: 09:41:15 INFO juju.worker.logforwarder config change - log forwarding not enabled
controller-0: 09:41:16 INFO juju.worker.logger logger worker started
controller-0: 09:41:16 INFO juju.worker.pruner.action status history config: max age: 336h0m0s, max collection size 5120M for test-integration-nltj (5b32b060-5900-4355-8d9c-394ec108cf2e)
controller-0: 09:41:16 INFO juju.worker.pruner.statushistory status history config: max age: 336h0m0s, max collection size 5120M for test-integration-nltj (5b32b060-5900-4355-8d9c-394ec108cf2e)
controller-0: 09:41:17 INFO juju.worker.logforwarder config change - log forwarding not enabled
model-5b32b060-5900-4355-8d9c-394ec108cf2e: 09:41:19 INFO juju.worker.caasupgrader abort check blocked until version event received
model-5b32b060-5900-4355-8d9c-394ec108cf2e: 09:41:19 INFO juju.worker.caasupgrader unblocking abort check
model-5b32b060-5900-4355-8d9c-394ec108cf2e: 09:41:19 INFO juju.worker.muxhttpserver starting http server on [::]:17071
model-5b32b060-5900-4355-8d9c-394ec108cf2e: 09:41:19 INFO juju.worker.caasadmission ensuring model k8s webhook configurations
controller-0: 09:41:21 INFO juju.worker.caasapplicationprovisioner.runner start "prometheus-k8s"
controller-0: 09:41:15 INFO juju.worker.apicaller [5b32b0] "controller-0" successfully connected to "localhost:17070"
controller-0: 09:41:30 INFO juju.worker.caasapplicationprovisioner.runner start "prometheus-configurer-k8s"
unit-prometheus-k8s-0: 09:41:38 INFO juju.cmd running containerAgent [2.9.38 6d211be0d72d6f4d625c61c7c4ddb4e9325226c8 gc go1.19.4]
unit-prometheus-k8s-0: 09:41:38 INFO juju.cmd.containeragent.unit start "unit"
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.upgradesteps upgrade steps for 2.9.38 have already been run.
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.probehttpserver starting http server on [::]:65301
unit-prometheus-k8s-0: 09:41:38 INFO juju.api cannot resolve "controller-service.controller-gcloud-jan-18-us-east1.svc.cluster.local": lookup controller-service.controller-gcloud-jan-18-us-east1.svc.cluster.local: operation was canceled
unit-prometheus-k8s-0: 09:41:38 INFO juju.api connection established to "wss://<IP_ADDRESS>:17070/model/5b32b060-5900-4355-8d9c-394ec108cf2e/api"
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.apicaller [5b32b0] "unit-prometheus-k8s-0" successfully connected to "<IP_ADDRESS>:17070"
unit-prometheus-k8s-0: 09:41:38 INFO juju.api connection established to "wss://controller-service.controller-gcloud-jan-18-us-east1.svc.cluster.local:17070/model/5b32b060-5900-4355-8d9c-394ec108cf2e/api"
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.apicaller [5b32b0] "unit-prometheus-k8s-0" successfully connected to "controller-service.controller-gcloud-jan-18-us-east1.svc.cluster.local:17070"
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.migrationminion migration phase is now: NONE
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.logger logger worker started
unit-prometheus-k8s-0: 09:41:38 WARNING juju.worker.proxyupdater unable to set snap core settings [proxy.http= proxy.https= proxy.store=]: exec: "snap": executable file not found in $PATH, output: ""
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.caasupgrader abort check blocked until version event received
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.caasupgrader unblocking abort check
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.leadership prometheus-k8s/0 promoted to leadership of prometheus-k8s
unit-prometheus-k8s-0: 09:41:38 INFO juju.agent.tools ensure jujuc symlinks in /var/lib/juju/tools/unit-prometheus-k8s-0
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.uniter unit "prometheus-k8s/0" started
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.uniter resuming charm install
unit-prometheus-k8s-0: 09:41:38 INFO juju.worker.uniter.charm downloading ch:amd64/focal/prometheus-k8s-79 from API server
unit-prometheus-k8s-0: 09:41:38 INFO juju.downloader downloading from ch:amd64/focal/prometheus-k8s-79
unit-prometheus-k8s-0: 09:41:39 INFO juju.downloader download complete ("ch:amd64/focal/prometheus-k8s-79")
unit-prometheus-k8s-0: 09:41:39 INFO juju.downloader download verified ("ch:amd64/focal/prometheus-k8s-79")
unit-prometheus-k8s-0: 09:41:43 INFO juju.worker.uniter hooks are retried true
unit-prometheus-k8s-0: 09:41:43 INFO juju.worker.uniter found queued "install" hook
unit-prometheus-k8s-0: 09:41:45 INFO unit.prometheus-k8s/0.juju-log Running legacy hooks/install.
unit-prometheus-k8s-0: 09:41:46 INFO unit.prometheus-k8s/0.juju-log Kubernetes service 'prometheus-k8s' patched successfully
unit-prometheus-k8s-0: 09:41:47 INFO juju.worker.uniter.operation ran "install" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:41:48 INFO juju.worker.uniter.operation ran "prometheus-peers-relation-created" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.cmd running containerAgent [2.9.38 6d211be0d72d6f4d625c61c7c4ddb4e9325226c8 gc go1.19.4]
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.cmd.containeragent.unit start "unit"
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.upgradesteps upgrade steps for 2.9.38 have already been run.
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.probehttpserver starting http server on [::]:65301
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.api cannot resolve "controller-service.controller-gcloud-jan-18-us-east1.svc.cluster.local": lookup controller-service.controller-gcloud-jan-18-us-east1.svc.cluster.local: operation was canceled
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.api connection established to "wss://<IP_ADDRESS>:17070/model/5b32b060-5900-4355-8d9c-394ec108cf2e/api"
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.apicaller [5b32b0] "unit-prometheus-configurer-k8s-0" successfully connected to "<IP_ADDRESS>:17070"
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.migrationminion migration phase is now: NONE
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.logger logger worker started
unit-prometheus-configurer-k8s-0: 09:41:48 WARNING juju.worker.proxyupdater unable to set snap core settings [proxy.http= proxy.https= proxy.store=]: exec: "snap": executable file not found in $PATH, output: ""
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.caasupgrader abort check blocked until version event received
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.caasupgrader unblocking abort check
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.worker.leadership prometheus-configurer-k8s/0 promoted to leadership of prometheus-configurer-k8s
unit-prometheus-configurer-k8s-0: 09:41:48 INFO juju.agent.tools ensure jujuc symlinks in /var/lib/juju/tools/unit-prometheus-configurer-k8s-0
unit-prometheus-configurer-k8s-0: 09:41:49 INFO juju.worker.uniter unit "prometheus-configurer-k8s/0" started
unit-prometheus-configurer-k8s-0: 09:41:49 INFO juju.worker.uniter resuming charm install
unit-prometheus-configurer-k8s-0: 09:41:49 INFO juju.worker.uniter.charm downloading local:focal/prometheus-configurer-k8s-0 from API server
unit-prometheus-configurer-k8s-0: 09:41:49 INFO juju.downloader downloading from local:focal/prometheus-configurer-k8s-0
unit-prometheus-k8s-0: 09:41:49 INFO juju.worker.uniter found queued "leader-elected" hook
unit-prometheus-configurer-k8s-0: 09:41:49 INFO juju.downloader download complete ("local:focal/prometheus-configurer-k8s-0")
unit-prometheus-configurer-k8s-0: 09:41:49 INFO juju.downloader download verified ("local:focal/prometheus-configurer-k8s-0")
unit-prometheus-k8s-0: 09:41:50 INFO juju.worker.uniter.operation ran "leader-elected" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:41:52 INFO juju.worker.uniter hooks are retried true
unit-prometheus-configurer-k8s-0: 09:41:53 INFO juju.worker.uniter found queued "install" hook
unit-prometheus-k8s-0: 09:41:53 INFO juju.worker.uniter.operation ran "database-storage-attached" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:41:53 INFO unit.prometheus-configurer-k8s/0.juju-log Running legacy hooks/install.
unit-prometheus-k8s-0: 09:41:54 INFO unit.prometheus-k8s/0.juju-log Kubernetes resources for app 'prometheus-k8s', container 'prometheus' patched successfully: ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'})
unit-prometheus-configurer-k8s-0: 09:41:54 INFO unit.prometheus-configurer-k8s/0.juju-log Kubernetes service 'prometheus-configurer-k8s' patched successfully
unit-prometheus-k8s-0: 09:41:54 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-configurer-k8s-0: 09:41:55 INFO juju.worker.uniter.operation ran "install" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:41:55 INFO juju.worker.uniter found queued "leader-elected" hook
unit-prometheus-k8s-0: 09:41:55 INFO juju.worker.uniter.operation ran "config-changed" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:41:55 INFO juju.worker.uniter found queued "start" hook
unit-prometheus-k8s-0: 09:41:55 INFO unit.prometheus-k8s/0.juju-log Running legacy hooks/start.
unit-prometheus-configurer-k8s-0: 09:41:56 INFO juju.worker.uniter.operation ran "leader-elected" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:41:57 INFO juju.worker.uniter.operation ran "start" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:41:57 INFO unit.prometheus-configurer-k8s/0.juju-log Restarted container dummy-http-server
unit-prometheus-configurer-k8s-0: 09:41:57 INFO juju.worker.uniter.operation ran "dummy-http-server-pebble-ready" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:41:58 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:41:58 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 205.
unit-prometheus-configurer-k8s-0: 09:41:58 INFO juju.worker.uniter.operation ran "prometheus-configurer-pebble-ready" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:41:59 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-configurer-k8s-0: 09:41:59 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:41:59 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 274.
unit-prometheus-k8s-0: 09:41:59 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:00 INFO juju.worker.uniter.operation ran "rules-storage-attached" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:00 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:00 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 362.
unit-prometheus-configurer-k8s-0: 09:42:01 INFO juju.worker.uniter.operation ran "config-changed" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:01 INFO juju.worker.uniter found queued "start" hook
unit-prometheus-k8s-0: 09:42:01 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-configurer-k8s-0: 09:42:01 INFO unit.prometheus-configurer-k8s/0.juju-log Running legacy hooks/start.
unit-prometheus-k8s-0: 09:42:02 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:02 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:02 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 454.
unit-prometheus-configurer-k8s-0: 09:42:02 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:02 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 493.
unit-prometheus-configurer-k8s-0: 09:42:02 INFO juju.worker.uniter.operation ran "start" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:03 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:03 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 543.
unit-prometheus-configurer-k8s-0: 09:42:03 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:03 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-k8s-0: 09:42:04 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:04 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:04 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 614.
unit-prometheus-configurer-k8s-0: 09:42:05 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:06 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-k8s-0: 09:42:06 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:06 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:06 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 686.
unit-prometheus-configurer-k8s-0: 09:42:06 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:08 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-k8s-0: 09:42:08 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:08 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:08 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 759.
unit-prometheus-configurer-k8s-0: 09:42:09 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:10 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-k8s-0: 09:42:10 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:11 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:11 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 835.
unit-prometheus-configurer-k8s-0: 09:42:11 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:12 INFO unit.prometheus-k8s/0.juju-log reqs=ResourceRequirements(limits={}, requests={'cpu': '0.25', 'memory': '200Mi'}), templated=ResourceRequirements(limits=None, requests={'cpu': '250m', 'memory': '200Mi'}), actual=ResourceRequirements(limits=None, requests=None)
unit-prometheus-k8s-0: 09:42:13 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:13 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:13 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 909.
unit-prometheus-configurer-k8s-0: 09:42:13 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:14 INFO juju.worker.caasunitterminationworker terminating due to SIGTERM
unit-prometheus-k8s-0: 09:42:14 ERROR juju.worker.uniter.operation hook "update-status" (via hook dispatching script: dispatch) failed: signal: terminated
unit-prometheus-k8s-0: 09:42:14 INFO juju.worker.uniter awaiting error resolution for "update-status" hook
unit-prometheus-configurer-k8s-0: 09:42:15 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:15 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 986.
unit-prometheus-k8s-0: 09:42:16 INFO juju.worker.uniter awaiting error resolution for "update-status" hook
unit-prometheus-configurer-k8s-0: 09:42:16 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:17 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:17 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 1053.
unit-prometheus-configurer-k8s-0: 09:42:17 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:18 INFO juju.worker.uniter awaiting error resolution for "update-status" hook
unit-prometheus-configurer-k8s-0: 09:42:19 INFO unit.prometheus-configurer-k8s/0.juju-log Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:19 INFO unit.prometheus-configurer-k8s/0.juju-log Started alert rules watchdog process with PID 1122.
unit-prometheus-configurer-k8s-0: 09:42:19 INFO juju.worker.uniter.operation ran "update-status" hook (via hook dispatching script: dispatch)
unit-prometheus-k8s-0: 09:42:19 INFO juju.worker.uniter awaiting error resolution for "update-status" hook
unit-prometheus-k8s-0: 09:42:19 INFO juju.worker.uniter awaiting error resolution for "update-status" hook
unit-prometheus-configurer-k8s-0: 09:42:20 INFO unit.prometheus-configurer-k8s/0.juju-log prometheus:1: Starting alert rules watchdog.
unit-prometheus-configurer-k8s-0: 09:42:20 INFO unit.prometheus-configurer-k8s/0.juju-log prometheus:1: Started alert rules watchdog process with PID 1193.
unit-prometheus-configurer-k8s-0: 09:42:21 INFO unit.prometheus-configurer-k8s/0.juju-log prometheus:1: Restarted container prometheus-configurer
unit-prometheus-configurer-k8s-0: 09:42:22 INFO juju.worker.uniter.operation ran "prometheus-relation-created" hook (via hook dispatching script: dispatch)
unit-prometheus-configurer-k8s-0: 09:42:22 WARNING juju.worker.uniter.operation we should run a leader-deposed hook here, but we can't yet
unit-prometheus-configurer-k8s-0: 09:42:22 INFO juju.worker.caasunitterminationworker terminating due to SIGTERM
unit-prometheus-configurer-k8s-0: 09:42:23 ERROR juju.worker.uniter.operation hook "rules-storage-detaching" (via hook dispatching script: dispatch) failed: signal: terminated
unit-prometheus-configurer-k8s-0: 09:42:23 INFO juju.worker.uniter awaiting error resolution for "storage-detaching" hook
unit-prometheus-configurer-k8s-0: 09:42:24 INFO juju.worker.uniter awaiting error resolution for "storage-detaching" hook
unit-prometheus-configurer-k8s-0: 09:42:26 INFO juju.worker.uniter awaiting error resolution for "storage-detaching" hook
controller-0: 09:43:26 INFO juju.worker.caasapplicationprovisioner.runner stopped "prometheus-configurer-k8s", err: application "prometheus-configurer-k8s" not found
controller-0: 09:43:26 ERROR juju.worker.caasapplicationprovisioner.runner exited "prometheus-configurer-k8s": application "prometheus-configurer-k8s" not found
controller-0: 09:43:26 INFO juju.worker.caasapplicationprovisioner.runner restarting "prometheus-configurer-k8s" in 3s
controller-0: 09:43:29 INFO juju.worker.caasapplicationprovisioner.runner start "prometheus-configurer-k8s"
controller-0: 09:43:29 INFO juju.worker.caasapplicationprovisioner.runner stopped "prometheus-configurer-k8s", err: <nil>

Additional context
No response

@sanchezfdezjavier was this when removing the application or destroying a model?
There's no Python traceback in the log, which makes me suspect it's the same Juju bug (we haven't seen it on 3.x in a while, but late 2.9 series saw it semi-frequently when churning models) where juju.worker.caasunitterminationworker sends a SIGTERM while a hook is running. Operator Framework doesn't have a signal handler, so it immediately shuts down and cleans up, returns a non-zero exit code to the hook runner, and Juju believes that it's failed.
There is/was a Launchpad issue about this, but I can never find it when I want it. @jameinel does this ring a bell? @benhoyt?
Not that OF necessarily needs to, but in our KubernetesComputeResourcesPatch, we set one up for a limited window of time which will allow Juju to happily continue on even if changing the PodSpec (first unit, usually) hits the scheduling window on the k8s reconciler loop and the Juju dispatch loop.
I can't think of many meaningful scenarios where executing charm code would receive a SIGTERM|SIGKILL|SIGHUP and actually want to exit 1, but I'm sure there are some.

@rbarry82 I believe you're thinking of https://bugs.launchpad.net/juju/+bug/1951415 that Tom is currently working on.

That's the one. Thanks @benhoyt! I'll remember to look here so I don't get lost in similar Launchpad issues.
In our charms, whether by being one of the earliest OF charming teams or by accident, we're pretty good about guarding against exceptions from Pebble while it's dying, so containeragent going away early manifests as "pure" hook failures. Is there a reason you can think of why signals would make it to OF, though? That is -- is there a reason you can think of why OF shouldn't set up a signal handler which exits gracefully?

@sanchezfdezjavier was this when removing the application or destroying a model?
There's no Python traceback in the log, which makes me suspect it's the same Juju bug (we haven't seen it on 3.x in a while, but late 2.9 series saw it semi-frequently when churning models) where juju.worker.caasunitterminationworker sends a SIGTERM while a hook is running. Operator Framework doesn't have a signal handler, so it immediately shuts down and cleans up, returns a non-zero exit code to the hook runner, and Juju believes that it's failed.
There is/was a Launchpad issue about this, but I can never find it when I want it. @jameinel does this ring a bell? @benhoyt?
Not that OF necessarily needs to, but in our KubernetesComputeResourcesPatch, we set one up for a limited window of time which will allow Juju to happily continue on even if changing the PodSpec (first unit, usually) hits the scheduling window on the k8s reconciler loop and the Juju dispatch loop.
I can't think of many meaningful scenarios where executing charm code would receive a SIGTERM|SIGKILL|SIGHUP and actually want to exit 1, but I'm sure there are some.

No, it didn't happen when removing or destroying a model. You can see the failed run here
Let me know how can I help.
This is the error log from the CI
------------------------------ live log teardown -------------------------------
[44](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:45)
INFO     pytest_operator.plugin:plugin.py:761 Model status:
[45](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:46)

[46](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:47)
Model                  Controller       Cloud/Region        Version  SLA          Timestamp
[47](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:48)
test-integration-vzo3  github-pr-7ad0d  microk8s/localhost  2.9.38   unsupported  14:14:09Z
[48](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:49)

[49](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:50)
App                        Version  Status   Scale  Charm                      Channel  Rev  Address         Exposed  Message
[50](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:51)
prometheus-configurer-k8s           waiting      1  prometheus-configurer-k8s             0  <IP_ADDRESS>  no       installing agent
[51](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:52)
prometheus-k8s                      waiting      1  prometheus-k8s             stable    79  <IP_ADDRESS>   no       installing agent
[52](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:53)

[53](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:54)
Unit                          Workload     Agent      Address      Ports  Message
[54](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:55)
prometheus-configurer-k8s/0*  maintenance  executing  <IP_ADDRESS>         Configuring pebble layer for prometheus-configurer
[55](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:56)
prometheus-k8s/0*             error        idle       <IP_ADDRESS>         hook failed: "update-status"
[56](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:57)

[57](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:58)

[58](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:59)

[59](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:60)
INFO     pytest_operator.plugin:plugin.py:767 Juju error logs:
[60](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:61)

[61](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:62)
unit-prometheus-k8s-0: 14:05:51 ERROR juju.worker.uniter.operation hook "update-status" (via hook dispatching script: dispatch) failed: signal: terminated
[62](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:63)

[63](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:64)
INFO     pytest_operator.plugin:plugin.py:783 juju-crashdump finished [0]
[64](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:65)
INFO     pytest_operator.plugin:plugin.py:854 Resetting model test-integration-vzo3...
[65](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:66)
INFO     pytest_operator.plugin:plugin.py:843    Destroying applications prometheus-k8s
[66](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:67)
INFO     pytest_operator.plugin:plugin.py:843    Destroying applications prometheus-configurer-k8s
[67](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:68)
INFO     pytest_operator.plugin:plugin.py:859 Not waiting on reset to complete.
[68](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:69)
INFO     pytest_operator.plugin:plugin.py:832 Forgetting main...
[69](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:70)

[70](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:71)

[71](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:72)
=================================== FAILURES ===================================
[72](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:73)
_ TestPrometheusConfigurerOperatorCharm.test_given_prometheus_configurer_charm_in_blocked_status_when_prometheus_relation_created_then_charm_goes_to_active_status _
[73](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:74)
Traceback (most recent call last):
[74](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:75)
  File "/home/runner/work/prometheus-configurer-k8s-operator/prometheus-configurer-k8s-operator/tests/integration/test_integration.py", line 67, in test_given_prometheus_configurer_charm_in_blocked_status_when_prometheus_relation_created_then_charm_goes_to_active_status
[75](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:76)
    await ops_test.model.wait_for_idle(
[76](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:77)
  File "/home/runner/work/prometheus-configurer-k8s-operator/prometheus-configurer-k8s-operator/.tox/integration/lib/python3.8/site-packages/juju/model.py", line 2707, in wait_for_idle
[77](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:78)
    _raise_for_status(errors, "error")
[78](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:79)
  File "/home/runner/work/prometheus-configurer-k8s-operator/prometheus-configurer-k8s-operator/.tox/integration/lib/python3.8/site-packages/juju/model.py", line 2646, in _raise_for_status
[79](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:80)
    raise error_type("{}{} in {}: {}".format(
[80](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:81)
juju.errors.JujuUnitError: Unit in error: prometheus-k8s/0

The key log messages are here:
unit-prometheus-k8s-0: 09:42:14 INFO juju.worker.caasunitterminationworker terminating due to SIGTERM
unit-prometheus-k8s-0: 09:42:14 ERROR juju.worker.uniter.operation hook "update-status" (via hook dispatching script: dispatch) failed: signal: terminated
unit-prometheus-k8s-0: 09:42:14 INFO juju.worker.uniter awaiting error resolution for "update-status" hook

Also, that the model had literally just come up:
INFO     pytest_operator.plugin:plugin.py:761 Model status:

Model                  Controller       Cloud/Region        Version  SLA          Timestamp
test-integration-vzo3  github-pr-7ad0d  microk8s/localhost  2.9.38   unsupported  14:14:09Z

App                        Version  Status   Scale  Charm                      Channel  Rev  Address         Exposed  Message
prometheus-configurer-k8s           waiting      1  prometheus-configurer-k8s             0  <IP_ADDRESS>  no       installing agent
prometheus-k8s                      waiting      1  prometheus-k8s             stable    79  10.152.183.[47](https://github.com/canonical/prometheus-configurer-k8s-operator/actions/runs/3959138602/jobs/6781573945#step:4:48)   no       installing agent

Unit                          Workload     Agent      Address      Ports  Message
prometheus-configurer-k8s/0*  maintenance  executing  <IP_ADDRESS>         Configuring pebble layer for prometheus-configurer
prometheus-k8s/0*             error        idle       <IP_ADDRESS>         hook failed: "update-status"

There is not even a containeragent running on the charm yet, and no charm code is involved. This is strictly something happening with Juju (on deployment rather than teardown, it seems)

Good point, thanks for clarifying @rbarry82. I guess that I can close it, as this is not a prometheus problem, right?

It's not, really, no. Hopefully we pointed you in the right direction though.


Your bash script is bad.

Don't worry, I made it good again.
haste() { a=$(cat); curl -X POST -s -d "$a" http://hastebin.com/documents | awk -F '"' '{print "http://hastebin.com/"$4}'; }

Use:
cat file.txt | haste

It will use whatever you pipe to it.
The one you have listed is using a messed up curl command.

... So it's 2017... and it appears that this command is no longer working for me. I've been trying variations of this command and have yet to get anything beyond the base url of my hastebin.
Can I get a little help on this?

@KeiroD What error are you getting?

The haste is set up at the base subdomain, no subfolder setup.Similar to the following:
user@domain:~$ curl -X POST -d 'test' example.example.com /home/user/test.txt https://example.example.com | awk -F '"' '{print "https://example.example.com/"$4}'
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100    18  100    14  100     4    127     36 --:--:-- --:--:-- --:--:--   128
chttps://example.example.com/
url: (3) <url> malformed
100    18  100    14  100     4     33      9 --:--:-- --:--:-- --:--:--    40

And other variations, such as:
user@example:~$ curl --data-binary @/home/user/example.txt -X POST example.example.com
Cannot POST /

All of this is in an attempt to whittle it down to just curl -F<EMAIL_ADDRESS>example.example.com
My work-place has this sort of setup and I've been trying to duplicate that curl -F functionality and it's been... frustrating.

I almost had it... almost.
#hastie() { a=$(file); curl -d "$a" -X POST http://paste.ituralde.com/documents | awk -F '"' '{print "http://paste.ituralde.com/"$4}'; }
Works... sort of. It returns the following:
user@example:~$ hastie authorized.txt
Usage: file [-bcEhikLlNnprsvzZ0] [--apple] [--extension] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    20    0    20    0     0    180      0 --:--:-- --:--:-- --:--:--   181
http://subdomain.example.com/ocasoheheq

As you can see, it does return a link. Just an empty one. Heh. So this format works now.
hastie() { a=$(cat); curl -d "$a" -X POST http://subdomain.example.com/documents | awk -F '"' '{print "http://subdomain.example.com/"$4}'; }
However, going back to the original one results in the file that was cat'd simply... not returning a result. I suspect that the usage of cat here is the issue.

What platform are you on @KeiroD ?

The server I was running the commands on was Ubuntu 16.04.3 LTS but I also have Arch.
Hmmmmm... as long as the example haste for bash is used ending in /documents, it works... but if I don't want to use /documents, I encounter loads of issues. I must've been idiotically using cat or something. I don't know, man.
As long as I stick with /documents, it works. I'd just rather not do that, though... but I understand if that's something that can't be easily done. (can it?)

Nope - currently /documents is needed since that's the endpoint to which the paste gets uploaded.  Could change via a config but we're currently not set up to do so


New release

Hi is it possible to create a new release and publish it on PyPi.
We would need this fix.

0.4 has been released.


SignalXY: last point sometimes does not get rendered

Perhaps because a binning issue?

This is reproducible and only affects "high density mode"
using ScottPlot;

namespace Sandbox.WinForms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        int count = 1000;
        double[] xs = Generate.Consecutive(count);
        double[] ys = Generate.RandomWalk(count);
        ys[^1] = -100;

        formsPlot1.Plot.Add.SignalXY(xs, ys);
    }
}

Interestingly, it's only the very last point, and only about half the frames. It "flickers" as you zoom horizontally.

using ScottPlot;

namespace Sandbox.WinForms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        int count = 1000;
        double[] xs = Generate.Consecutive(count);
        double[] ys = Generate.RandomWalk(count);
        ys[0] = -100;
        ys[499] = -100;
        ys[999] = -100;

        var sig = formsPlot1.Plot.Add.SignalXY(xs, ys);
        sig.MarkerShape = MarkerShape.OpenCircle;
        sig.MarkerColor = Colors.Black;
        sig.MarkerSize = 10;
    }
}

I'm pretty sure the issue is in here
https://github.com/ScottPlot/ScottPlot/blob/6468dbe93b7cb5dd686183cc0329d1f93fed35b9/src/ScottPlot5/ScottPlot5/DataSources/SignalXYSourceDoubleArray.cs#L156-L187

I'm thinking the issue is here: https://github.com/ScottPlot/ScottPlot/blob/6468dbe93b7cb5dd686183cc0329d1f93fed35b9/src/ScottPlot5/ScottPlot5/DataSources/SignalXYSourceDoubleArray.cs#L170
For the last point, it's possible where the last pixel column contains a single value, so start and stop index positions will be the same

This fix introduced a bug with rotated SignalXY plots that can be demonstrated with the following code (I'm using the WPF Sandbox here):
'''
    InitializeComponent();

    var amplitude = Generate.Sin();
    double[] time = new double[51];
    for (int i = 0; i < time.Length; i++)
        time[i] = i;

    var signal = WpfPlot1.Plot.Add.SignalXY(time, amplitude, color: ScottPlot.Colors.Black);
    signal.Data.Rotated = true;

'''
It looks like the last point (which should be at X = 0, Y = 51, is being plotted without cooridnate rotation (i.e. at X = 51 and Y = 0).


example_1 :

Dear @christophfroehlich,
Thanks again for the great work in restructuring the repo.
After cloning ros2_control from HEAD to c8cfa05, ros2_controllers from HEAD to  82a4e24
I tried the following:
ros2 launch ros2_control_demo_example_1 rrbot.launch.py
ros2 launch ros2_control_demo_example_1 test_joint_trajectory_controller.launch.py

and the robot is not moving.
The output of rrbot.launch.py:
[ros2_control_node-1] [INFO] [1679797583.074655377] [RRBotSystemPositionOnlyHardware]: Reading...
[ros2_control_node-1] [INFO] [1679797583.074724709] [RRBotSystemPositionOnlyHardware]: Got state 0.00000 for joint 0!
[ros2_control_node-1] [INFO] [1679797583.074769125] [RRBotSystemPositionOnlyHardware]: Got state 0.00000 for joint 1!
[ros2_control_node-1] [INFO] [1679797583.074802707] [RRBotSystemPositionOnlyHardware]: Joints successfully read!
[ros2_control_node-1] [INFO] [1679797583.074926205] [RRBotSystemPositionOnlyHardware]: Writing...
[ros2_control_node-1] [INFO] [1679797583.074956538] [RRBotSystemPositionOnlyHardware]: Got command 0.00000 for joint 0!
[ros2_control_node-1] [INFO] [1679797583.074993370] [RRBotSystemPositionOnlyHardware]: Got command 0.00000 for joint 1!
[ros2_control_node-1] [INFO] [1679797583.075030203] [RRBotSystemPositionOnlyHardware]: Joints successfully written!
[ros2_control_node-1] [INFO] [1679797583.175206210] [RRBotSystemPositionOnlyHardware]: Reading...
[ros2_control_node-1] [INFO] [1679797583.175299375] [RRBotSystemPositionOnlyHardware]: Got state 0.00000 for joint 0!
[ros2_control_node-1] [INFO] [1679797583.175336207] [RRBotSystemPositionOnlyHardware]: Got state 0.00000 for joint 1!
[ros2_control_node-1] [INFO] [1679797583.175373040] [RRBotSystemPositionOnlyHardware]: Joints successfully read!
[ros2_control_node-1] [INFO] [1679797583.175533370] [RRBotSystemPositionOnlyHardware]: Writing...
[ros2_control_node-1] [INFO] [1679797583.175573453] [RRBotSystemPositionOnlyHardware]: Got command 0.00000 for joint 0!
[ros2_control_node-1] [INFO] [1679797583.175660118] [RRBotSystemPositionOnlyHardware]: Got command 0.00000 for joint 1!
[ros2_control_node-1] [INFO] [1679797583.175700200] [RRBotSystemPositionOnlyHardware]: Joints successfully written!
[ros2_control_node-1] [INFO] [1679797583.275331301] [RRBotSystemPositionOnlyHardware]: Reading...
[ros2_control_node-1] [INFO] [1679797583.275404967] [RRBotSystemPositionOnlyHardware]: Got state 0.00000 for joint 0!
[ros2_control_node-1] [INFO] [1679797583.275446132] [RRBotSystemPositionOnlyHardware]: Got state 0.00000 for joint 1!
[ros2_control_node-1] [INFO] [1679797583.275498131] [RRBotSystemPositionOnlyHardware]: Joints successfully read!
[ros2_control_node-1] [INFO] [1679797583.275955289] [RRBotSystemPositionOnlyHardware]: Writing...
[ros2_control_node-1] [INFO] [1679797583.276004038] [RRBotSystemPositionOnlyHardware]: Got command 0.00000 for joint 0!
[ros2_control_node-1] [INFO] [1679797583.276044121] [RRBotSystemPositionOnlyHardware]: Got command 0.00000 for joint 1!
[ros2_control_node-1] [INFO] [1679797583.276079870] [RRBotSystemPositionOnlyHardware]: Joints successfully written!

Do you have any hints on what I am missing ?

have you activated joint_trajectory_controller? per default, only the forward_command_controller is active. See point 6 in the docs

Excellent ! Thanks for the fast answer. IHMO maybe the file README.md could be update to point towards the doc
I am closing the issue.

You mean instead of the link to the folder only? Maybe we should add a simple readme in every folder with the only content "Documentation can be found in doc/userdoc.rst" ;)

You mean instead of the link to the folder only? Maybe we should add a simple readme in every folder with the only content "Documentation can be found in doc/userdoc.rst" ;)

Your link was extremely useful. I do not get why I missed it in the documentation. Maybe putting the equivalent link in each README.md would be very useful.


Removes usage of @google-cloud/firestore

Removes old snippet which uses @google-cloud/firebase

fulltext-search-firestore and quickstart/uppercaser-firestore also import @google-cloud/firebase could you premove it from there too?
Also can you remove the import in package.json ? (in all 3 samples)

Are you sure? I don't see them importing it, however it is in the package.json and I'll fix that.

Yup I think it's just in the 3 package.json :)

Okay, removed!

Looks good!


Add ability to update malformed messages

Is your feature request related to a problem? Please describe.
When using multiple receivers, it would be nice to have Pagermon replace duplicates that may be malformed with the correct version if another receiver has it.
Describe the solution you'd like
Some form of matching to replace messages if received within 5 (?) seconds or so of another message with the same address and similar content.
Additional context
Example

Hi DanrwAU,
Is there an easy way to setup the groups (SES/RFS/etc..) or did you just slowly add them as identified?
I have just gotten the scanner function to work with multiple frequencies on the one dongle and now my feed has become more difficult to read without some way to identify which service the pages came from.
Would be great to have it looking like yours!

Offtopic comment removed, capcode sharing is not in scope of the project.

Sorry about that mate. -- Sent from my Android phone with mail.com Mail. Please excuse my brevity.On 20/9/20, 9:57 pm Dan W<EMAIL_ADDRESS>wrote:
Offtopic comment removed, capcode sharing is not in scope of the project.
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.


Increase test coverage and switch to pytest for testing

Currently we're running into issues because we are not really testing much and end up making breaking changes without noticing. This PR will add many unit tests which are run using pytest through github actions.

I've updated this PR to not include all the nitty gritty of what we'll need in the future.

This also does validation of the HTML returned by the functions tested. I've updated the HTML which gave errors.


Repository should be consistent with all other Knative repos

As per title, to make it fit seamlessly into workflows. A few things that come to mind:

Missing vendor directory
Missing third_party directory
Missing hack directory with update-codegen.sh and update-deps.sh to generate the above

It's a bit unclear why we need the Mage stuff in here, that we have nowhere else. Any insights into that?

This repo was intentionally done by me in different share than any other knative repo. I wanted it to act as a showcase of how knative can move out of this awful setup you just have described above. That was my second goal, apart from doing kn-event plugin. To hit two birds with one stone.
Nevertheless, I think we should align this repo with other knative repos, to enable work of others on it. I have a source repo cardil/kn-event still, that I can use to showcase that different project setup. We spoke about that already with @rhuss.

Sounds reasonable. It'd be nice to document what you find awful in the current setup so painpoints can be tackled in a targeted way.

Sure. I'm thinking of doing a slides about that.

Does #15 fix this?
It still isn't 100% consistent as presubmit is doing nothing, and this repo has tighter golangci-lint roles enabled.

I thinks this is good enough (thanks @markusthoemmes !), so let's close this and continue on-demand to set up the CI.


Waterbeach station missing

Waterbeach seems to be missing unless I’m being dumb?

They are all there but the two column layout might make finding some of them less intuitive for some, e.g. on mobile but here's Waterbeach
https://github.com/anisotropi4/kingfisher/blob/main/image/W/WBC-rail.png

Oh apologies. It was indeed me being dumb. I looked 3 times!!

Well I can't find the butter in the fridge when it's right in front of my face so I think you get a free pass on this!

Fixed as required.


Update Robot and Marbles to run in Google Colab

(previously https://github.com/cadCAD-org/cadCAD/issues/86)
Update all the robot and marbles tutorials so that they immediately run in Google Colab from a URL like https://colab.research.google.com/github/BlockScience/cadCAD/blob/master/tutorials/robot-marbles-part-1/robot-marbles-part-1.ipynb
This would require adding a cell in the notebook that pip installs cadCAD
%%capture #avoid printing the output of pip install
!pip install cadCAD

Add direct links to the top of every notebook and to the README

Is any one actively working on this issue at the moment?

Not that I know of. I don't think so.

Great. I'll take a stab at it.

This has been handled in #35  -  #41 . This issue can be closed


Automatic purging of removed repositories and projects

Motivation:
The repositories and projects that were removed by users just renamed with having the suffix of .removed.
If the number of deleted files increases, it takes up a lot of disk space.
We can reduce wasted disk space by permanently deleting files which are older than configured.
Modifications:

Add PurgeProjectCommand and PurgeRepositoryCommand and their thrift, rest api.
Add markForPurge() and purgeMarked() method to mark and permanently delete a project or a repository directory.
Add PurgeSchedulingService and PurgeSchedulingServicePlugin to purge automitically.

When the scheduler get started, it cleans up purged projects and repositories
which were not deleted before.

Add a new configuration maxRemovedRepositoryAgeMillis and update its documentation.

Setting 0 to maxRemovedRepositoryAgeMillis means disable the automatic purging.

Record removal time into removal.timestamp file when a project/repository is removed.
Change return type of Set<String> listRemove() into
Map<String, Instant> listRemoved() to get a removal timestamp.

Result:

A user who has permission can purge a repository or a project on demand.
Removed repositories and projects are pursed automatically.

Fixes #47

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks for fast feedback! @trustin 😊
I will fix it soon.

Had chat with @trustin about the strategy of purging scheduler.

If scheduler receives a directory, delete the directory in order in a single thread.
When scheduler started, scan .purged directories and rescheduling them
Automatically purge old projects and repository which were removed

I will improve test coverage. 🤨

We have discussed that asynchronous purging logic could crash replication just in case:
1. createProject(foo)
2. removeProject(foo)
3. purgeProject(foo)
3.1 purgeWoker.execute(() -> {
    deleteFile(foo)  // this runs asynchronously and `foo.purge` don't deleted yet
})
4. createProject(foo) -> success
5. removeProject(foo) -> success
6. purgeProject(foo)  -> fail because `foo.purge` is aleady existed.

Thanks. @trustin 😀

Thanks for your patience and nice work, @ikhoon :+1:

the PR description has updated.

:tada: Great job!


gatsby-plugin-sharp error

Hi, I tried to run my gatsby project that uses gatsby-plugin-sharp, I typed in:
docker run -it --rm -v $(pwd)/site:/site -p 8000:8000 aripalo/gatsby-docker develop

but I'm getting following error:
Error: Error loading shared library /site/node_modules/sharp/build/Release/sharp.node: Exec format error

Everything is working fine when I'm starting a new project without mentioned plugin. Does anyone know what I'm doing wrong?

I just started to run this docker image, and noticed my terminal output states the following:

Error: 'linux-x64' binaries cannot be used on the 'linuxmusl-x64' platform. Please remove the 'node_modules/sharp/vendor' directory an  d run 'npm install'.

error GraphQL Error Unknown field childImageSharp on type File

/site/src/components/image.js
21:11  error  Cannot query field "childImageSharp" on type "File"  graphql/template-strings

So it might be due to the first error about musl(alpine linux as base I assume). Changing to another base image that doesn't use musl but libc like most would fix that or recompiling the binary modules. Alpine would have been chosen for achieving a small filesize in the docker image file.

The sharp plugin depends on a bunch of system libraries not shipping with node 9.5 alpine image.
As this docker image doesn't install any additional dependencies and hasn't been updated in 2 years, that's to be expected.
You're better off copying the entry.sh file and creating your own docker container based on a more recent nodejs build and installing the required libGL version.


High fees for large NET tx

Getting higher than expected fee offer for high-NET transfers that I don't actually need Greymass Fuel to complete.
Brought up this issue months ago on TG when Fuel came out, seems to still be happening.
Apologize for the unformatted issue.

No worries - and thanks for bringing it back up. Our lack of action on this issue has primarily been just due to priority against other things we need to accomplish.
For the time being, I went ahead and just disabled NET from the fee calculation algorithm, since we haven't identified a good way to correct what the fee should be for it. If you run into the fee prompt again, I'd be curious to know if the fee decreased to a more suitable level or if it still shouldn't be triggering at all (e.g. you have plenty of resources).


Validate the length of preprocessing operations from custom config

Description
This PR validates the length of preprocessing operations from custom config.
By default the value would be "" if it's missing. Thus, check the length of the string before parsing the operations.
Upgrade Notes
Does this PR prevent a zero down-time upgrade? (Assume upgrade order: Controller, Broker, Server, Minion)

[ ] Yes (Please label as backward-incompat, and complete the section below on Release Notes)

Does this PR fix a zero-downtime upgrade introduced earlier?

[ ] Yes (Please label this as backward-incompat, and complete the section below on Release Notes)

Does this PR otherwise need attention when creating release notes? Things to consider:

New configuration options
Deprecation of configurations
Signature changes to public methods/interfaces
New plugins added or old plugins removed

[ ] Yes (Please label this PR as release-notes and complete the section on Release Notes)

Release Notes

Documentation

Codecov Report

Merging #7119 (2e8e720) into master (0255757) will decrease coverage by 8.16%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #7119      +/-   ##
============================================
- Coverage     73.58%   65.42%   -8.17%
  Complexity       91       91
============================================
  Files          1495     1495
  Lines         73381    73381
  Branches      10580    10580
============================================
- Hits          53999    48010    -5989
- Misses        15868    21982    +6114
+ Partials       3514     3389     -125

Flag
Coverage Δ

integration
?

unittests
65.42% <ø> (-0.03%)
:arrow_down:

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

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