More info about error "Too many handler requests outstanding, your handler isn't running"

Hello Pushpin team,
We recently suffered an outage where we noticed that Pushpin had dropped all connection. From the Pushpin error logs, this log message seemed like the most important one:
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/superpoll.c:140: errno: Resource temporarily unavailable) Too many handler requests outstanding, your handler isn't running: 256 is greater than hot 256 max.

I was wondering if we could get more information about what this log message means, how to avoid it and how to act upon it. Eventually we just restarted Pushpin.
Here's a greater snapshot of the error logs during the time of the outage, in case it helps:
Wed, 02 Oct 2024 15:36:55 GMT [ERROR] (src/task/fd.c:231: errno: None) Error adding fd: -1 or socket: 0x239c4e0 to task wait list.
Wed, 02 Oct 2024 15:36:55 GMT [ERROR] (src/handler.c:329: errno: None) Receive on handler socket failed.
Wed, 02 Oct 2024 15:36:55 GMT [WARN] (src/handler.c:374: errno: None) Skipped invalid message from handler: ipc:///var/run/pushpin/pushpin-m2-out-443
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/superpoll.c:140: errno: Resource temporarily unavailable) Too many handler requests outstanding, your handler isn't running: 256 is greater than hot 256 max.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/task/fd.c:231: errno: None) Error adding fd: -1 or socket: 0x239c4e0 to task wait list.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/handler.c:329: errno: None) Receive on handler socket failed.
Wed, 02 Oct 2024 15:36:56 GMT [WARN] (src/handler.c:374: errno: None) Skipped invalid message from handler: ipc:///var/run/pushpin/pushpin-m2-out-443
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/io.c:150: errno: Resource temporarily unavailable) Handshake failed with error code: -29312
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/io.c:195: errno: None) SSL handshake failed: -1
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/superpoll.c:140: errno: Resource temporarily unavailable) Too many handler requests outstanding, your handler isn't running: 256 is greater than hot 256 max.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/task/fd.c:231: errno: None) Error adding fd: -1 or socket: 0x239c4e0 to task wait list.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/handler.c:329: errno: None) Receive on handler socket failed.
Wed, 02 Oct 2024 15:36:56 GMT [WARN] (src/handler.c:374: errno: None) Skipped invalid message from handler: ipc:///var/run/pushpin/pushpin-m2-out-443
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/task/fd.c:231: errno: File exists) Error adding fd: 338 or socket: (nil) to task wait list.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/io.c:173: errno: None) Error sending SSL data.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/io.c:777: errno: None) Write error when sending all.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/connection.c:1324: errno: None) Error delivering to MSG listener on FD 338, closing them.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/task/fd.c:231: errno: File exists) Error adding fd: 338 or socket: (nil) to task wait list.
Wed, 02 Oct 2024 15:36:56 GMT [ERROR] (src/io.c:524: errno: None) ssl_close_notify failed with error code: -1

We are running Pushpin on version 1.35.0.
Thanks in advance!

Hi @MauDagos,
These look like mongrel2 logs. Pushpin's use of mongrel2 is considered deprecated for a few years now.
To avoid this issue, I suggest upgrading to the latest Pushpin and using its built-in connection manager instead. When upgrading, you'll want to update the services= setting in your pushpin.conf, by removing mongrel2 and m2adapter from the comma-separated list, and adding connmgr.
If you want to stay on 1.35.0 for some reason, you can still use the newer connection manager but it will have a different name in that case ("condure") and it will need to be installed separately. There are apt packages for it. As of 1.38.0 it comes built-in.
History:

1.30.0 (2020-07-29) - Condure introduced as optional replacement for Mongrel2.
1.31.0 (2020-11-06) - Use Condure instead of Mongrel2, by default.
1.38.0 (2024-01-08) - Move Condure into Pushpin and name the program pushpin-condure.
1.40.0 (2024-07-17) - Rename Condure to connmgr.


Skip the minified files from parsing

Some repos contains the unnecessary minifieds js files which we should avoid to parse.
Updated exclude rule to remove the minified files

Thanks!
I also updated the version number (needs to be done manually atm) with: https://github.com/joernio/astgen/pull/14


Add easing functions

I've recently been using lax a lot for a homepage project I'm working on but I'd love to have a way to define an easing function so that I'm able to define starting and finishing points coordinates and mess around with the timing using easing

You could try this pull request to see if it met your requirements #70. Otherwise could you add a CSS easing to the element you are animating?

@ga-fleury Just to let you know that I have been working on a new lax 2.0 which has custom easings plus many more fun features! Check out the alpha here: https://github.com/alexfoxy/laxxx/tree/version-2

Hey @ga-fleury just so you're aware lax 2.0 has now been released and has easing functions! Check it out :)


[BUG] FilterDetectionsStage can spam the output edge with thousands of small sliced messages

Describe the bug
Degraded pipeline performance when using filter stage with any threshold.
In this case the pipeline_batch_size=8192 so messages entering the FilterDetectionsStage will generally contain 8192 rows, and FilterDetectionsStage will emit roughly ~1,800 slices of that incoming message which quickly causes the output edge to block on writes.

Environment overview (please complete the following information)

Environment location: Bare-metal
Method of Morpheus install: Docker

If method of install is [Docker], provide docker pull & docker run commands used

Environment details
https://gist.github.com/pdmack/2f1924031e20995e99985cfd735fbbc3
Additional context
Add any other context about the problem here.

The blocking of the writes is an indication of back-pressure. One way to alleviate back pressure could be to use a larger buffered channel for the specific sink/node where we are detecting it. This would be a viable solution if you were taking a batched input, performing the filter on each element and emitting elements rather than batches, as this results in an explosion of output items from the input item. However, if the downstream node is the rate limiter, increasing the size of the buffered channel will not have a significant impact, it will simply delay the detection of back pressure since the downstream node effectively limits the throughput of all nodes above it.

PR #231 should fix this, running the above command in that branch completes in about 16 seconds, but takes 5 minutes in branch-22.08


JS/TS client HubConnection.onClosed should be a method instead of a property

It should be possible to wire up multiple handlers to the closed event. We could even consider using on instead of having special events. That does mean we would need reserved names but it would be less concepts.
Today:
let http = new signalR.HttpConnection(document.location.protocol + '//' + document.location.host + '/chat');
let connection = new signalR.HubConnection(http);

connection.onClosed = e => {

};

Proposal:
let http = new signalR.HttpConnection(document.location.protocol + '//' + document.location.host + '/chat');
let connection = new signalR.HubConnection(http);

connection.on('close', e => {

});

We could also change the nomenclature and use connect/disconnect like the server side does.
/cc @moozzyk

I am not a fan of on('close' - it will get confused with regular hub methods.

Yea, I get it. socket.io does something similar for disconnect.

I think we should do the method change for all events in the .NET client as well. It's just a better API in general.

I don't like using the string for the name of the method for close if we can have just a strongly typed method. I also don't think we are reducing the number of concepts, rather we are conflating concepts. We could do:
connection.onClose(e => {
});

if we wanted to. One thing that is not clear from this signature is what happens if invoke this method multiple times. With the property it was clear that you are replacing the handler with the method it is not clear if you are adding or replacing.

It should match the on overload and it should be possible to subscribe multiple handlers. I think we should do the same for the .NET client as well.

I am opposed to changing connection.onClose to connection.on('close'...). In my mind this is similar to changing connection.start() to connection.invoke('start'...) which we hopefully are not doing.

@moozzyk yea I think that's fine. Lets go with:
connection.closed(e => {
});


[Pangolin] update to port

Library name: Pangolin (https://github.com/stevenlovegrove/Pangolin)
New version number: Newest Commit on Master
I used vcpkg to install pangolin. The installation itself works perfectly fine, unfortunately the port seems to be old. I come to this conclusion, since I get the following error output when I try to build the DeepSDF project. When I build pangolin manually I do not encounter this problem. The latest release of pangolin dates back to 2016 and since the repository is not updated that frequently I suggest to update the port to the newest commit.
[ 14%] Built target cnpy-static
[ 28%] Built target cnpy
[ 42%] Built target example1
[ 50%] Building CXX object CMakeFiles/PreprocessMesh.dir/src/Utils.cpp.o
[ 57%] Building CXX object CMakeFiles/PreprocessMesh.dir/src/PreprocessMesh.cpp.o
[ 64%] Building CXX object CMakeFiles/PreprocessMesh.dir/src/ShaderProgram.cpp.o
[ 71%] Building CXX object CMakeFiles/SampleVisibleMeshSurface.dir/src/SampleVisibleMeshSurface.cpp.o
[ 78%] Building CXX object CMakeFiles/SampleVisibleMeshSurface.dir/src/Utils.cpp.o
[ 85%] Building CXX object CMakeFiles/SampleVisibleMeshSurface.dir/src/ShaderProgram.cpp.o
In file included from /home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/glsl.h:39:0,
                 from /home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp:3:
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h: In static member function ‘static pangolin::Colour pangolin::Colour::Hsv(float, float, float, float)’:
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:101:30: error: ‘floor’ was not declared in this scope
           const int i = (int)floor(h);
                              ^~~~~
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:101:30: note: suggested alternative: ‘float’
           const int i = (int)floor(h);
                              ^~~~~
                              float
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h: In member function ‘pangolin::Colour pangolin::ColourWheel::GetColourBin(int) const’:
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:154:40: error: ‘sqrt’ was not declared in this scope
         float hue = i * 0.5f * (3.0f - sqrt(5.0f));
                                        ^~~~
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:154:40: note: suggested alternative: ‘sat’
         float hue = i * 0.5f * (3.0f - sqrt(5.0f));
                                        ^~~~
                                        sat
In file included from /home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/glsl.h:39:0,
                 from /home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp:3:
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h: In static member function ‘static pangolin::Colour pangolin::Colour::Hsv(float, float, float, float)’:
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:101:30: error: ‘floor’ was not declared in this scope
           const int i = (int)floor(h);
                              ^~~~~
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:101:30: note: suggested alternative: ‘float’
           const int i = (int)floor(h);
                              ^~~~~
                              float
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h: In member function ‘pangolin::Colour pangolin::ColourWheel::GetColourBin(int) const’:
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:154:40: error: ‘sqrt’ was not declared in this scope
         float hue = i * 0.5f * (3.0f - sqrt(5.0f));
                                        ^~~~
/home/josefkamysek/vcpkg/installed/x64-linux/include/pangolin/gl/colour.h:154:40: note: suggested alternative: ‘sat’
         float hue = i * 0.5f * (3.0f - sqrt(5.0f));
                                        ^~~~
                                        sat
/home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp: In function ‘pangolin::GlSlProgram GetShaderProgram()’:
/home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp:146:31: error: ‘GlSlAnnotatedShader’ is not a member of ‘pangolin’
   program.AddShader(pangolin::GlSlAnnotatedShader, shaderText);
                               ^~~~~~~~~~~~~~~~~~~
/home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp:146:31: note: suggested alternative: ‘GlSlComputeShader’
   program.AddShader(pangolin::GlSlAnnotatedShader, shaderText);
                               ^~~~~~~~~~~~~~~~~~~
                               GlSlComputeShader
/home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp: In function ‘pangolin::GlSlProgram GetShaderProgram()’:
/home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp:146:31: error: ‘GlSlAnnotatedShader’ is not a member of ‘pangolin’
   program.AddShader(pangolin::GlSlAnnotatedShader, shaderText);
                               ^~~~~~~~~~~~~~~~~~~
/home/josefkamysek/DeepLocalShapes/src/ShaderProgram.cpp:146:31: note: suggested alternative: ‘GlSlComputeShader’
   program.AddShader(pangolin::GlSlAnnotatedShader, shaderText);

FTR, #17250 changed pangolin configuration.

Since there is a new stable version v0.6 released. We prefer to update to the latest version v0.6 instead of the latest commit on master.

Hi @Kamysek
I submit a PR #19840 to update pangolin to 0.6. Could you please help confirm if this can work for you?


Upgrade to the new cucumber

Current cucumber is 0.9.2, can this project be upgraded to use that version ?

Hi!
Upgraded in 0.0.15: https://www.npmjs.com/package/gulp-cucumber


[BEAM-6110] Avoid unnecessary window configuration for GlobalWindows in BeamCoGBKJoinRel

To ensure correctness, https://github.com/apache/beam/pull/7115 added the Window.configure() step to set timestamp combiner. This change has caused performance regression for some CalciteSQL pipelines. To restrict the impact, this PR makes sure the Window.configure() step is not applied when it is not necessary.
r: @kennknowles
Post-Commit Tests Status (on master branch)

Lang
SDK
Dataflow
Flink
Samza
Spark
Twister2

Go

---

---

---

Java

Python

---

---

XLang
---
---

---
---

Pre-Commit Tests Status (on master branch)

---
Java
Python
Go
Website

Non-portable

Portable
---

---
---

See .test-infra/jenkins/README for trigger phrase, status and link of all Jenkins jobs.

Ah, this change seems to be breaking StreamingSQLTest.testZetaSQLNestedQueryFour.
@amaliujia

Ah the StreamingSQLTest.testZetaSQLNestedQueryFour failed because nothing was emitted from that test pipeline, which doesn't look right.


#25561: apply flex1 to MenuItems titleStyle in MoneyRequestConfirmationList

Details
Pass style.flex1 to MenuItem in MoneyRequestConfirmationList.
A bit dependent on https://github.com/Expensify/App/pull/25449.
Solution similar to what was once done in https://github.com/Expensify/App/issues/21404.
Fixed Issues
$ https://github.com/Expensify/App/issues/25561
Tests

Create a manual money request
Set the date or description to 2023-08-01
Verify that the text doesn't cut

[x] Verify that no errors appear in the JS console

Offline tests

Create a manual money request
Set the date or description to 2023-08-01
Verify that the text doesn't cut

QA Steps

on iphone SE

Create a manual money request
Set the date or description to 2023-08-01
Verify that the text doesn't cut

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/25725586/a4813f85-033c-4664-8753-b3e715fc0b16

Mobile Web - Chrome
https://github.com/Expensify/App/assets/25725586/8a7ef49a-1cbc-4c5c-bde9-697fd99bfcfb

Mobile Web - Safari
https://github.com/Expensify/App/assets/25725586/c580f718-e6ab-47b5-8cdf-89be0f53bb6c

Desktop
https://github.com/Expensify/App/assets/25725586/601359c0-13a9-44a4-b2cd-e6a68017add0

iOS
https://github.com/Expensify/App/assets/25725586/cb6c473b-2c1e-4ede-a15e-dc502f608ed5

Android
https://github.com/Expensify/App/assets/25725586/421c96ac-9c97-4e48-96b3-41d7162c8ae8

I forgot that I'm still missing the Android video, but it's coming (20minutes, I'm hoping it's almost done)

@allroundexperts Updated!

@mountiny You're right, MoneyRequestView had the same issue, applied the fixed there as well.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/mountiny in version: 1.3.57-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/mountiny in version: 1.3.58-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.57-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.58-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Transfer the main repository to the LedgerSMB project

Most other PGObject repositories are in the 'ledgersmb' org.

As soon as pr's are merged will do this.

done


Model reducer state location

The biggest hurdle with RRF I'm trying to understand as I get started is the model reducer: why it's needed, how it can be configured, etc.
In my application, I have a number of reducers already in place which handle actions eg. asynchronously retrieving data.  Let's say I have a page to edit a user which has a form.  When I visit the page, the first thing it does is fire an action to fetch the user record based off an ID in the URL.  Setting an initial state for the corresponding reducer would be useless.  When that async operation completes, it fires a FETCH_USER_SUCCESS action which hits two reducers: one which sets an isFetching state value to FALSE and one that sets the user data state value to the HTTP response payload.
Given RRF's convention, the user data actually needs to be stored in a separate area of the app state from eg. the isFetching value, correct?   I see that the model property on <Form> can take a function. Is there any way to use my existing state location for my form model?.

I think we have a similar question here that I would love to get insight on. I asked the question on StackOveflow:
https://stackoverflow.com/questions/47951142/how-can-i-share-a-reducer-s-initial-state-with-another-reducer?noredirect=1#comment82872787_47951142

I think the thing to realise is that the purpose of the form reducer is to store the state of your form - and that's it. That's not the same purpose as your user profile reducer, which is to store a representation of your user. Although it might look like a duplication of data, this distinction is super useful. Along with your initial form states, theres a $form key that react-redux-form uses to track validation and touched states amongst other things, and the separation means you can replay mutation actions on your form state without affecting anything else.
With that in mind, I think what you both want is to initialise a form with data asynchronously, rather than reusing existing redux state. I solve this problem by dispatching actions.merge(model, <async data>) then actions.setPristine(model) after all my async data has finished loading.
Another thing to experiment with would be the "dynamic" initialisation of a form state. You don't need to create initial states up front - you could just dispatch actions.setInitial(anyModelPathYouLike, <data>) after your user profile has finished loading.


PolicyBrain blog?

In response to this comment by @martinholmer, @hdoupe said:

I think this is another example of a quality teaching or best-practices post. Another one that quickly comes to mind is @talumbau 's post on the requests library and posting data through a user interface to a website. I think it would be useful to have these aggregated in one place as an engineer's blog or something like that. Facebook has one that is fun to check out. These blog posts would be created organically from especially informative comments and threads here. So, the cost wouldn't be much higher than writing the comment itself.

@martinholmer replied:

I think the blog idea is great. See if @MattHJensen agrees and, if so, discuss with him how the blog should be built and maintained.

I think the blog idea sounds good, but I have a couple of questions.
Would the audience only be developers, or would we also target users of the models with content ("how to" posts, etc.)? Here's an example of something that could be turned into a user-targeted blog post, also by @martinholmer.
Who would approve /edit the content. Would the 'editor' be centralized or decentralized?
We do have the infrastructure to host a blog.

With respect to PolicyBrain issue #707, could it be that a FAQ document is better suited for this than a blog?

With respect to PolicyBrain issue #707, could it be that a FAQ document is better suited for this than a blog?

I was thinking that it would be easier to disseminate each concept individually in a blog, but I suppose we could disseminate new additions to a FAQ individually as well. (We could even disseminate new additions to a FAQ in blog form if we wanted to.)

@MattHJensen said:

I was thinking that it would be easier to disseminate each concept individually in a blog, but I suppose we could disseminate new additions to a FAQ individually as well. (We could even disseminate new additions to a FAQ in blog form if we wanted to.)

Not sure what you mean by "disseminate".
A FAQ document typically just answers each question, but if the answer is long the FAQ document simply provides a link to the document with the longer answer.  In this way, there could be a central place (that could grow over time a more FAQ are added) that provides links to issue or pull request comments that are deemed to be "important" or "helpful".
@hdoupe

Not sure what you mean by "disseminate".

I mean that it is nice to be able to 'push' content out to people on a regular basis to keep them interested in our work and keep it on their mind. One way to think about this is that it would be nice to have more content to put in regular OSPC, AEI newsletters, and perhaps in the future, project-specific newsletters.
Blog posts are natural for this, which is why I was initially drawn to the blog idea, but I think we could also, for instance, highlight a new FAQ Q&A in a newsletter.

@MattHJensen asked a couple questions:

Would the audience only be developers, or would we also target users of the models with content ("how to" posts, etc.)? Here's an example of something that could be turned into a user-targeted blog post, also by @martinholmer.

The types of audience that I have in mind are:

Open-Source contributors--People who may be interested in our organizational approach.  For example, more people might be interested in learning about our Release Process.  Perhaps, that's a good model for other projects.
Python developers--People who are trying to building something in Python.  For example, I haven't found a good, up-to-date blog post on how to set up a Pelican blog.
Policy analysts--People who want to see more in-depth explanations of aspects of our models or interesting use cases like @martinholmer's case.

Who would approve /edit the content. Would the 'editor' be centralized or decentralized?

I have never run a blog, and I definitely have not run one with multiple contributors.  So, I'm not sure how this works.  My inclination is that it would be similar to the code contribution approval process.  Someone submits a blog post.  People who are interested in the topic read it and give critiques.  Then, the contributor revises.  We repeat this process until a consensus is reached.  At that point, someone with write-access to the blog merges the post and pushes to the server.
To summarize, I think that everyone should be able to edit and critique, but there should only be one or two people with the final say.

@martinholmer asked:

With respect to PolicyBrain issue #707, could it be that a FAQ document is better suited for this than a blog?

A FAQ would be useful, but I think it would be a complement to a blog not a substitute.  Some questions in a FAQ may point to a blog post for a longer answer.  Some blog-posts may not work well in the FAQ format.  Some items in a FAQ are not long enough to work well in a blog format.

@hdoupe said:

The types of audience that I have in mind are:

Open-Source contributors--People who may be interested in our organizational approach. For example, more people might be interested in learning about our Release Process. Perhaps, that's a good model for other projects.
Python developers--People who are trying to building something in Python. For example, I haven't found a good, up-to-date blog post on how to set up a Pelican blog.
Policy analysts--People who want to see more in-depth explanations of aspects of our models or interesting use cases like @martinholmer's case.

This makes sense to me, although I'd suggest segmenting the policy analysts into technical (PolicyBrain) and non-technical (upstream project). We can tag content based on user. In the policy analyst content, we'll need to be very careful to focus on the "how to" side of things rather than the results themselves.

I have never run a blog, and I definitely have not run one with multiple contributors. So, I'm not sure how this works. My inclination is that it would be similar to the code contribution approval process. Someone submits a blog post. People who are interested in the topic read it and give critiques. Then, the contributor revises. We repeat this process until a consensus is reached. At that point, someone with write-access to the blog merges the post and pushes to the server.
To summarize, I think that everyone should be able to edit and critique, but there should only be one or two people with the final say.

This makes sense to me as well. We'll likely need a different "final say" person depending on the type of content/audience.

Github pages might be a good place to start with. Moving some (all) of the markdown files we currently have to the potential blog page is desirable in my opinion.


Mistype ?

"... servers tp be promoted to the..." TP ? or TO ?

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

ID: ebfd725f-1b77-751c-1948-f8f88d26a9bc
Version Independent ID: 7d9c78d9-7736-8f0a-9636-269125a10d6f
Content: Upgrading to AD FS in Windows Server 2016
Content Source: WindowsServerDocs/identity/ad-fs/deployment/upgrading-to-ad-fs-in-windows-server.md
Product: windows-server-threshold
Technology: identity-adfs
GitHub Login: @billmath
Microsoft Alias: billmath

still not fixed?
Please search the following paragraph and fix "tp" to "to".
Before the FBL can be raised, administrators must remove the AD FS nodes of previous Windows Server versions from the farm. In the case of a WID farm, note that this requires one of the new Windows Server 2019 federation servers tp be promoted to the role of primary node in the farm.

Sorry for not noticing this ticket before. A Pull Request to amend that typo will be available shortly.


Test CI

Codecov Report

Merging #271 into master will decrease coverage by 0.03%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #271      +/-   ##
==========================================
- Coverage   92.94%   92.91%   -0.04%
==========================================
  Files          35       35
  Lines        3204     3204
==========================================
- Hits         2978     2977       -1
- Misses        226      227       +1

Impacted Files
Coverage Δ

databricks/koalas/__init__.py
88.88% <0%> (-3.71%)
:arrow_down:

Continue to review full report at Codecov.

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


NG: extension: basic search functionality

We need to provide basic search as part of the standard registry API.
A couple of words:

this must be usable by docker engine as it is today
in the best of worlds, that would be an extension, that would get notified on PUT manifest and that would expose an additional endpoint (see v1 API)
we want to leave room for concurrent search implementations (batteries included, removable)
re-indexing from scratch should not be part of the extension itself (eg: at start / runtime) but rather handled by a separate script accessing the backend storage
the extension should not need access to the storage at runtime

This should be covered by docker/distribution#113. An microservice accepting notification requests could index repositories.
If not, please re-open.


[BLUEPRINT] Kubecost with Cost and Usage Reporting

To perform cost allocation calculations for your Amazon EKS cluster, Kubecost retrieves the public pricing information of AWS services and AWS resources from the AWS Price List API. You can also integrate Kubecost with AWS Cost and Usage Report to enhance the accuracy of the pricing information specific to your AWS account. This information includes enterprise discount programs, reserved instance usage, savings plans, and spot usage. To learn more about how the AWS Cost and Usage Report integration works, see AWS Cloud Integration in the Kubecost documentation.

Hello @askulkarni2 I am going to work on this blueprint. My company is very interested by the feature. I will raise a PR soon

@florentio that would be awesome! Let us discuss here on what you are planning to do.

Hello @askulkarni2
In my company, we are are running multiple EKS clusters in different accounts different from from the master payer account.
For the blueprint my proposal will be focused on  kubernetes clusters all run in the same account as the master payer account. Having a blueprint for multiple EKS clusters run in different accounts different from the master payer account required more configurations such as terraform for multi account deployment, etc...  which may be too complex for the scope. We can still have a workaround and if it is needed, we can also work on that one and propose all the step to achieve it
The documentation provide by kubecost https://guide.kubecost.com/hc/en-us/articles/4407595928087-AWS-Cloud-Integration is quite difficult to automate with terraform within a single terraform apply.
First I will propose piece of terraform code for each step and we will see how to bundle them together even if there are some them which required manual action before
Step 1: Setting up the CUR
This can be created by aws_cur_report_definition resource. A terraform apply against this configuration in the main.tf file will set up the CUR
locals {
  report_name = "cur-name"                                      # change this or use a variable
  cur_bucket_name = "kubecost-cur-us-west-2"                    # change this or use a variable
}
## CUR Report
resource "aws_cur_report_definition" "cur" {
  report_name                = local.report_name
  time_unit                  = "DAILY"
  format                     = "Parquet"
  compression                = "Parquet"
  additional_schema_elements = ["RESOURCES"]
  s3_bucket                  = module.cur_bucket.s3_bucket_id
  s3_prefix                  = "reports"
  s3_region                  = local.region
  additional_artifacts       = ["ATHENA"]
}

## CUR bucket policy
data "aws_iam_policy_document" "bucket_policy" {
  statement {
    principals {
      type        = "Service"
      identifiers = ["billingreports.amazonaws.com"]
    }
    actions = [
      "s3:GetBucketAcl",
      "s3:GetBucketPolicy"
    ]
    resources = [module.cur_bucket.s3_bucket_arn]
  }
  statement {
    principals {
      type        = "Service"
      identifiers = ["billingreports.amazonaws.com"]
    }
    actions = [
      "s3:PutObject"
    ]
    resources = [
      "${module.cur_bucket.s3_bucket_arn}/*",
    ]
  }
}

## CUR bucket
module "cur_bucket" {
   source  = "terraform-aws-modules/s3-bucket/aws"
   version = "~> 3.0"

   bucket = local.cur_bucket_name
   acl    = "private"

   force_destroy = true

   # Bucket policies
   attach_policy           = true
   policy                  = data.aws_iam_policy_document.bucket_policy.json

   block_public_acls       = true
   block_public_policy     = true
   ignore_public_acls      = true
   restrict_public_buckets = true

   tags = local.tags
 }

We must wait at least 24hours to proceed the next terraform operation because AWS may take several hours to publish data(up to 24 hours) to the bucket and we need to download crawler-cfn.yml which will be generated before moving forward
Step 2: Setting up Athena

Create a folder athena-integration in the root folder at the same level as main.tf (here you can give any name to the folder but let's keep in mind to use the same name later for terraform code)
crawler-cfn.yml generated by AWS has to be downloaded from the cur_bucket bucket and save into the athena-integration folder. The path where to download the file is described in the documentation https://guide.kubecost.com/hc/en-us/articles/4407595928087-AWS-Cloud-Integration#step-2-setting-up-athena
The configuration below can be appended to the main.tf  in order to deploy the athena integration and terraform apply with -target can be used to apply this step

locals {
  athena_bucket_name = "aws-athena-query-results-kubecost-cur"  # change this or use a variable
  athena_stack_name = "athena-integration"                      # change this or use a variable
}

resource "aws_cloudformation_stack" "athena_integration" {
  name = local.athena_stack_name
  template_body = file("athena-integration/crawler-cfn.yml")
  tags = local.tags
}

module "athena_result_bucket" {
   source  = "terraform-aws-modules/s3-bucket/aws"
   version = "~> 3.0"

   bucket = local.athena_bucket_name

   # For example only - please evaluate for your environment
   force_destroy = true

   tags = local.tags
}

There is 3 last action  for that step which, at this moment the only way to achieve them is manual action within the console ( I am opened to any automation solution within terraform or something else) :

Navigate to https://console.aws.amazon.com/athena
Click Settings
Set Query result location to the S3 bucket you just created (bucket which name is module.athena_result_bucket.s3_bucket_id or local.athena_bucket_name)

Step 3: Setting up IAM permissions
Lets' remember here that we are going to focus only on the option My kubernetes clusters all run in the same account as the master payer account
Below is the config to be appended to main.tf and to be apply for setup
# Policy for cur and athena
data "aws_iam_policy_document" "athena_cur_policy" {
  statement {
    sid       = "AthenaAccess"
    effect    = "Allow"
    actions   = ["athena:*"]
    resources = ["*"]
  }
  statement {
    sid    = "ReadAccessToAthenaCurDataViaGlue"
    effect = "Allow"
    actions = [
      "glue:GetDatabase*",
      "glue:GetTable*",
      "glue:GetPartition*",
      "glue:GetUserDefinedFunction",
      "glue:BatchGetPartition"
    ]
    resources = [
      "arn:aws:glue:*:*:catalog",
      "arn:aws:glue:*:*:database/athenacurcfn*",
      "arn:aws:glue:*:*:table/athenacurcfn*/*"
    ]
  }
  statement {
    sid    = "AthenaQueryResultsOutput"
    effect = "Allow"
    actions = [
      "s3:GetBucketLocation",
      "s3:GetObject",
      "s3:ListBucket",
      "s3:ListBucketMultipartUploads",
      "s3:ListMultipartUploadParts",
      "s3:AbortMultipartUpload",
      "s3:CreateBucket",
      "s3:PutObject"
    ]
    resources = [
      "arn:aws:s3:::aws-athena-query-results-*"
    ]
  }

  statement {
    sid    = "S3ReadAccessToAwsBillingData"
    effect = "Allow"
    actions = [
      "s3:Get*",
      "s3:List*"
    ]
    resources = [
      "arn:aws:s3:::${module.cur_bucket.s3_bucket_id}*"
    ]
  }
}

# policy for spot feed
data "aws_iam_policy_document" "spot_feed_policy" {
  statement {
    sid    = "SpotDataAccess"
    effect = "Allow"
    actions = [
      "s3:ListAllMyBuckets",
      "s3:ListBucket",
      "s3:HeadBucket",
      "s3:HeadObject",
      "s3:List*",
      "s3:Get*"
    ]
    resources = [
      "arn:aws:s3:::${local.spot_data_bucket_name}*"
    ]
  }
}

resource "aws_iam_policy" "athena_cur_policy" {
  description = "IAM Policy for IRSA"
  name_prefix = "kubecost-policy"
  policy      = data.aws_iam_policy_document.athena_cur_policy.json
}

resource "aws_iam_policy" "spot_feed_policy" {
  description = "IAM Policy for IRSA"
  name_prefix = "spot-feed-policy"
  policy      = data.aws_iam_policy_document.spot_feed_policy.json
}

Step 4: Attaching IAM permissions to Kubecost
locals {
  namespace        = "kubecost"
  service_account  = "cost-analyzer"
}

# irsa for kubecost
module "kubecost_irsa" {
  source = "../../modules/irsa"

  eks_cluster_id             = module.eks_blueprints.eks_cluster_id
  eks_oidc_provider_arn      = module.eks_blueprints.eks_oidc_provider_arn
  irsa_iam_policies          = [aws_iam_policy.athena_cur_policy.arn, aws_iam_policy.spot_feed_policy.arn]
  kubernetes_namespace       = local.namespace
  kubernetes_service_account = local.service_account
}

Kubecost addons configuration
here is the values file to be used to be save under kubecost-values.yaml file
global:
  grafana:
    enabled: false
    proxy: false

imageVersion: prod-1.96.0
kubecostFrontend:
  image: public.ecr.aws/kubecost/frontend

kubecostModel:
  image: public.ecr.aws/kubecost/cost-model

serviceAccount:
  create: false
  name: ${service-account}
  annotations:
    eks.amazonaws.com/role-arn: ${iam-role-arn}
  # name: kc-test
kubecostMetrics:
  emitPodAnnotations: true
  emitNamespaceAnnotations: true

prometheus:
  server:
    image:
      repository: public.ecr.aws/kubecost/prometheus
      tag: v2.35.0

  configmapReload:
    prometheus:
      image:
        repository: public.ecr.aws/bitnami/configmap-reload
        tag: 0.7.1

reporting:
  productAnalytics: false

kubecostProductConfigs:
  projectID: ${project-id}
  spotLabel: ${spot-label}
  spotLabelValue: ${spot-label-value}
  awsSpotDataRegion: ${spot-region}
  awsSpotDataBucket:  ${spot-bucket}
  awsSpotDataPrefix: ${spot-bucket-prefix}
  athenaProjectID: ${athena-project-id}
  athenaBucketName: s3://${athena-bucket-name}
  athenaRegion: ${athena-region}
  athenaDatabase: ${athena-db-name}
  athenaTable: ${athena-table-name}

then the terrafom code will be

locals {
  spot_label       = "lifecycle"
  spot_label_value = "spot"
  athena_db        = "athenacurcfn_test"
  athena_table     = "athenacurcfn_test_"
}

data "aws_caller_identity" "current" {}

module "eks_blueprints_kubernetes_addons" {
  source = "../../modules/kubernetes-addons"

  eks_cluster_id       = module.eks_blueprints.eks_cluster_id
  eks_cluster_endpoint = module.eks_blueprints.eks_cluster_endpoint
  eks_oidc_provider    = module.eks_blueprints.oidc_provider
  eks_cluster_version  = module.eks_blueprints.eks_cluster_version

  # EKS Managed Add-ons
  enable_amazon_eks_vpc_cni            = true
  enable_amazon_eks_coredns            = true
  enable_amazon_eks_kube_proxy         = true
  enable_amazon_eks_aws_ebs_csi_driver = true

  # Add-ons
  enable_kubecost = true
  kubecost_helm_config = {
    namespace        = local.namespace
    create_namespace = false
    values = [
      templatefile("kubecost-values.yaml", {
        service-account    = local.service_account
        iam-role-arn       = module.kubecost_irsa.irsa_iam_role_arn
        project-id         = data.aws_caller_identity.current.account_id # the Account ID of the AWS Account on which the spot nodes are running.
        spot-label         = local.spot_label                            # optional Kubernetes node label name designating whether a node is a spot node. Used to provide pricing estimates until exact spot data becomes available from the CUR
        spot-label-value   = local.spot_label_value                      # optional Kubernetes node label value designating a spot node. Used to provide pricing estimates until exact spot data becomes available from the CUR
        spot-region        = local.region                                # region of your spot data bucket
        spot-bucket        = local.spot_data_bucket_name                 # the configured bucket for the spot data feed
        bucket-prefix      = local.spot_data_bucket_prefix               # optional configured prefix for your spot data feed bucket
        athena-project-id  = data.aws_caller_identity.current.account_id # The AWS AccountID where the Athena CUR is.
        athena-bucket-name = local.athena_bucket_name                    # The s3 bucket to store Athena query results that you’ve created that Kubecost has permission to access
        athena-region      = local.region                                # The aws region athena is running in
        athena-db-name     = local.athena_db                             # the athena database name is available as the value (physical id) of AWSCURDatabase in the CloudFormation stack created above
        athena-table-name  = local.spot_data_bucket_prefix               # the name of the table created by the Athena setup
      })
    ]
  }

  tags = local.tags
}

What do you think :) ?

Looking forward your inputs in order to elaborate it better and raise a PR. thanks


Please release a new version

Hi,
Thanks for your work on this plugin -- it has been very helpful for us.
For the last few weeks, we've been trying to chase a bug where new login tokens were invalid. It seemed random, we couldn't figure out why.
I think this issue was fixed by https://github.com/kucherenko/strapi-plugin-passwordless/pull/13. I just deployed it installing directly from GitHub, so we're unsure if it actually fixed the error, but it seems likely :pray:
When you have some time, could you release a new bugfix release? We're probably not the only ones facing this issue, so it might save people time going down these rabbit holes.
Thank you!

<EMAIL_ADDRESS>released from current main branch


Remove obsolete websites

FEATURE REQUEST: Remove obsolete websites
A Google search turns up Litmus Chaos-branded websites that are obsolete and/or unexplained.
Remove or archive Litmus Chaos-related websites that are obsolete.
For any related documentation website that cannot be integrated into the existing doc repo, make sure there it has a clear explanation as to its purpose, use, and which version of Litmus Chaos it is compatible with.
Audience:
This issue concerns all users of the documentation.
Type:
This is an infrastructure issue that encompasses all the information on several websites.
Context
This issue tracks recommended changes resulting from an analysis of the Litmus Chaos
documentation commissioned by CNCF. The analysis and supporting documents are
here: https://github.com/cncf/techdocs/tree/main/analyses under 0013-litmuschaos.
Possible Implementation
GraphicQL API
The following API is one of the first hits on a search of "Litmus Chaos API": https://litmuschaos.github.io/litmus/graphql/v2.0.0/api.html.
I'm not even sure where the doc repo is (it might be in the API's repo here: https://github.com/litmuschaos/spectaql). It's clear this is a Litmus Chaos component, but not whether this documetnation is current or what it is for -- there's no introduction or explanation of the API.
Tutorials
The Litmus Chaos Tutorial website (https://litmuschaos.github.io/tutorials/; repo at https://github.com/litmuschaos/tutorials) seems to have been last updated in version 2. The first tutorial, "Getting Started", was last updated in August of 2021.
Having tutorials for the major workflows of Litmus Chaos is a great idea, but this site looks like it's been abandoned and I'd be nervous about trying the tutorials on it. Update the site to reassure readers that it's current, and link to it from the main documentation page. If it's too much work to update the whole thing, cannibalize it for the most useful workflows and delete the rest of the site. Or archive the entire site and move on.
Maintaining the project
It seems as if a lot of the information about Litmus Chaos that's online was either written by contributors not directly affiliated with the project or were initiated by the project and then abandoned. Going forward, we recommend two things:

Maintainers keep tighter control of the Litmus Chaos brand (logo and trademarks) so that obsolete and unofficial information does not look like it's a current part of the project to casual observers. Use CNCF resources to help manage the brand, including website registration.
Keep all documentation about the project up to date.

I would like to work on a PR to include the tutorial under the litmus-docs repo and plan to discuss related details in the upcoming community call.


Here's Way to Watch Usyk vs Fury 2 live streams tv channel 21 December 2024

HERE’S!* WAY TO WATCH Tyson Fury vs Oleksandr Usyk 2 LIVE STREAMS ON TV CHANNEL
Usyk vs Fury 2 is almost here – which means it's time to figure out the best  way to watch the big fight live on Saturday, December 21, from Riyadh.
Go: Fury vs Usyk 2 Live
HD: Tyson Fury vs Oleksandr Usyk 2 Live Free
Go: Fury vs Usyk 2 Live
HD: Tyson Fury vs Oleksandr Usyk 2 Live Free
The hotly-anticipated heavyweight clash between WBA, WBC, WBO, and Ring Magazine champion Oleksandr Usyk and former WBC champion Tyson Fury is expected to sell more than 1 million pay-per-views.
Boxing fans can watch it live on TV thanks to major sports networks such as DAZN, TNT Sports and Sky Sports, as well as online via their respective streaming apps.
Ready for a huge box office showdown? Stick with us for all the latest developments as excitement grows ahead of Usyk vs Fury 2
The Kingdom Arena in Riyadh, Saudi Arabia, will host a historic rematch between Oleksandr Usyk and Tyson Fury on December 21. This highly anticipated boxing showdown will determine the unified heavyweight champion, as the WBA, WBO, and WBC titles are all on the line. The event streams live on DAZN.
The fight follows their May clash, where Usyk handed Fury his first professional loss via a split decision, claiming the WBC title. Fury seeks redemption, while Usyk looks to solidify his legacy as one of the greatest heavyweights of all time.
Usyk vs. Fury 2 will stream live as a PPV event on DAZN. The fight is available for a one-time purchase of $39.99. Fans can witness all the action on a variety of platforms, including Roku, Fire TV, Apple TV, and more.
The PPV package includes a seven-day free trial of DAZN, granting access to its library of fights, commentary options, and additional sports content.
Watching Usyk vs Fury 2: the essentials
Date: Saturday, Dec 21
Main event start time: 5.30pm ET / 10.30 pm GMT
US PPV: DAZN
UK PPV: DAZN, Sky Sports, TNT Sports
Ukraine (no PPV): Megogo
Our FULL GUIDE to Usyk vs Fury 2 live streams

hi

sadsad

🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE
🔴WATCH📺📱👉 Tyson Fury vs. Oleksandr Usyk 2 LIVE

Y


Fix tools

#77

Do we want to update gui.py to import from editors and panels now that they're part of core?

Yeah I think we should.  We should also bang on the panels and editors a bit more, I don't actually use that stuff much so apart from verifying that it works formally i'm not sure I haven't missed something

@bob-white take a look at this one when you get a chance.
I put a recursive version of wrap into mGui.gui so you can do a one-liner to get an mGui-ified version of an existing gui.
very simple example:
cmds_window = cmds.window( menuBar=1 )
cmds.columnLayout()

def test(*_, **__):
    print "button clicked"
cmds.button(c = test)
cmds.rowLayout(nc=2)
cmds.checkBox()
cmds.textField()
cmds.setParent("..")
cmds.setParent("..")
cmds.menu( label='Position' )
cmds.radioMenuItemCollection()
cmds.menuItem( label='Top', radioButton=False )
cmds.menuItem( label='Middle', radioButton=False )
cmds.menuItem( label='Bottom', radioButton=True )
cmds.menu( label='Number' )
cmds.radioMenuItemCollection()
cmds.menuItem( label='One', radioButton=True )
cmds.menuItem( label='Two', radioButton=False )
cmds.menuItem( label='Three', radioButton=False )
cmds.showWindow()

# -------------------------

from mGui.gui import *
w = wrap(cmds_window)
root = w.find(ColumnLayout)[0]
button = root.find(Button)[0]
button.label = 'set by mGui'
for item in root.recurse():
    if isinstance(item, CheckBox):
        item.value = True
    if isinstance(item, TextField):
        item.text = "hello world"

@bob-white I merged in your submenu branch to this. Do you have a good test case I can steal to see it in action?

from mGui import gui

with gui.Window(menuBar=True) as win:
    with gui.Menu(label='TestMenu') as m:
        for v in ('One', 'Two', 'Three'):
            gui.MenuItem(label=v)
        gui.MenuDivider()
        gui.MenuItem(label='Four')
        gui.CheckBoxMenuItem(label='Check')

        with gui.SubMenu(label='sub') as sm:
            for v in ('One', 'Two', 'Three'):
                gui.MenuItem(label=v)
        gui.MenuDivider()
        with gui.SubMenu(label='Radio') as sm:
            with gui.RadioMenuItemCollection():
                for v in ('One', 'Two', 'Three'):
                    gui.RadioMenuItem(label=v)
            gui.MenuDivider()
            for v in ('One', 'Two', 'Three'):
                gui.MenuItem(label=v)

win.show()

Haven't tested it with menu loader at all, but this should show each part working properly.

With this merged here, you want me to close out the other PR?

OK, Added a few things needed to make menus work like GUI items (including nested dot-access).  menu_loader supports submenus properly too.  Take it for a spin and let me know if it looks good!

I'll merge this into main tomorrow just in case something comes up, then I'll check it against the tools at work to see if anything crops up before we call it a release

So I'm seeing that something in this branch is breaking existing menus. The visible symptom is that optionBox  menu items fail if they also include the after key.  And edit menus don't seem to work more than once; i had two different EditMenus that both touched the main mesh edit menu, but under fix_tools the second one comes in as a submenu

Yeah, because they both have cmds.menu set as their CMD attribute, so when we're processing the _type_mappings SubMenu is probably coming up second and overwriting the mapping.
Same thing happens with Window and BindingWindow, and while I haven't checked it, I would guess that ActiveOptionMenu is doing the same thing to OptionMenu
A possible fix is to check if the key already exists and skip it. That way subclasses don't overwrite.

yeah, I'm skipping repeat instances. That makes the menu work again, but the insert-after functionality is broken now. I'll keep poking tonight

insertAfter was working for me in a simple test. Haven't tried it with the menu loader though.
from mGui import gui, forms

with gui.Window(menuBar=True) as win:
    with forms.VerticalForm():
        for i in xrange(5):
            gui.Button()
    with gui.Menu(label='stuff') as m:
        test = gui.MenuItem(label='Option')
        gui.MenuDivider()
        gui.MenuItem(optionBox=True, insertAfter=test)

win.show()

OK, had to re-add item_array and then make sure gui.wrap uses it correctly.  This looks a lot better

# AttributeError: file C:\ul\tools\python\ulMaya\ulMaya\external\mGui\mGui\qt\_properties.py line 36: 'QTextField' object has no attribute 'modal'
it looks like we explicitly check for modal in a lot of places. shouldn't it be a top-level attribute only for windows? we could add a recurse-up 'get top parent' down int the base classes and not have to maintain those flags ...

All the issues I can find are resolved now - anything on your end?

Bumped into a few issues when running through the examples.
Mostly around the shelf_loader, and the primary culprit was PopupMenus

Think we're ready to go?
On Sun, Jul 23, 2017 at 5:03 PM, bob-white<EMAIL_ADDRESS>wrote:

Bumped into a few issues when running through the examples.
Mostly around the shelf_loader, and the primary culprit was PopupMenus
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/theodox/mGui/pull/79#issuecomment-317292030, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AD3mGOVC3qsi2y43Up-_acedAnUmeaviks5sQ99CgaJpZM4NXmoC
.


Could you push a new version to forge?

I would really like to use the repo management, so could you please bump the forge version?

https://forge.puppetlabs.com/jlambert121/curator version 2.2.0 released.


Dietpi

Any plans for supporting dietpi?

No sorry, no plans currently. DietPi is a distribution with a quite special package management that supports many hardware platforms. I cannot support multiple platforms: the scope of this project is to provide a very basic step to transform a dedicated Raspberry Pi and a standard Raspberry Pi OS installation into an audio receiver while staying as close to Debian standards as possible.
I considered using Buildroot for this, however this would involve vast amounts of customization to run Bluetooth, AirPlay and Spotify Connect at all, and providing good support for all Raspberry Pi models and especially Audio HATs is not easy (and, most importantly: there is already HiFiBerry OS which does exactly this and works great).


Store output in sensor

Is it possible to save command output (stdout) in sensor?

I checked the code and I can see that you are storing output into log as info and returning true at the end of the function. It would be very useful to return it back as a value that can be later on used.

Check this https://github.com/AlexxIT/PythonScriptsPro
I have no plans to extend the functionality of this component. But you can solve the problem with my other component


[TASK]: Create Race Progress Tracker Component

Task Summary
Create a component that shows all racers on a horizontal line and their profile pictures above the line
Acceptance criteria

A component should exist that shows a racer's progress and its profile picture
With the use of this component, we should be able to depict all racer's progress and their info.

Any Additional Context
No response

Working on this.


Public IP's PTR record cannot be removed by CLI

I was following this doc to remove a PTR record that set for public IP
https://docs.microsoft.com/en-us/azure/dns/dns-reverse-dns-for-azure-services#azure-cli-3

az network public-ip update --resource-group MyResourceGroup --name PublicIp --reverse-fqdn ""

However, following syntax error was returned.
az network public-ip update --resource-group bootcampdb --name VM01-ip --reverse-fqdn ""
argument --reverse-fqdn: expected one argument

TRY THIS:
az network public-ip update --resource-group MyResourceGroup --name MyIp --dns-name MyLabel --allocation-method Static
Update a public IP resource with a DNS name label and static allocation.

az network public-ip list
List all public IPs in a subscription.

az network public-ip list --resource-group MyResourceGroup
List all public IPs in a resource group.

https://docs.microsoft.com/en-US/cli/azure/network/public-ip#az_network_public_ip_list
Read more about the command in reference docs

I was able to do this using following PowerShell command
https://docs.microsoft.com/en-us/azure/dns/dns-reverse-dns-for-azure-services#azure-cli-3
PS /home/bang> $pip = Get-AzPublicIpAddress -Name "VM01-ip" -ResourceGroupName "bootcampdb"
PS /home/bang> $pip.DnsSettings.ReverseFqdn = ""
PS /home/bang> Set-AzPublicIpAddress -PublicIpAddress $pip

Name                     : VM01-ip
ResourceGroupName        : bootcampdb
Location                 : japaneast
Id                       : /subscriptions/00ad8164-fccc-4682-912a-966610f3d064/resourceGroups/bootcampdb/providers/Microsoft.Network/publicIPAddresses/VM01-ip
Etag                     : W/"8af51b91-cade-45d5-996d-2e69fd4c5db4"
ResourceGuid             : 43a61d14-cd1d-472f-8b36-5a24dcf242aa
ProvisioningState        : Succeeded
Tags                     :
PublicIpAllocationMethod : Static
IpAddress                : <IP_ADDRESS>
PublicIpAddressVersion   : IPv4
IdleTimeoutInMinutes     : 4
IpConfiguration          : {
                             "Id": "/subscriptions/00ad8164-fccc-4682-912a-966610f3d064/resourceGroups/bootcampdb/providers/Microsoft.Network/networkInterfaces/vm01-win2016396/ipConfigurations/ipconfig1"
                           }
DnsSettings              : {
                             "DomainNameLabel": "vm01-bootcampdb",
                             "Fqdn": "vm01-bootcampdb.japaneast.cloudapp.azure.com",
                             "ReverseFqdn": ""
                           }
Zones                    : {}
Sku                      : {
                             "Name": "Basic",
                             "Tier": "Regional"
                           }
IpTags                   : []
ExtendedLocation         : null

So looks like there's either a typo in Doc or bug in CLI, can someone look into this?

network


Have Z-index for Bullets created by BulletSpawner

Hello! When making bullet hell's, I noticed that the important bullets get covered by the less important. An example is here, where the enemy's bullets cover the player's. Ideally, the player's bullets are seen more.

This can be solved if BulletSpawner or BulletType had an attached Z-index for the bullets. That way, it's easy to emphasize the more important bullets.
I think there's a way to do this through having multiple BulletServers then arranging them there, but I think each BulletSpawner having their own Z-index attached to their bullets would be better 😁
What do you think?
Edit: taking a quick look at the code, would adding z to this line work? I'll probably try it out later:
VS::get_singleton()->canvas_item_set_draw_index(bullet->get_ci_rid(), i + (z * 10000));

Actually, if you look at your example screenshot, even there the bullets aren't set on separate layers, the top right player bullet is actually overlapping the enemy bullet directly above it. qurobullet orders all its bullets z levels by creation time to make sure patterns look nice, and I'd imagine this screenshot is using a similar setup.
If multiple layers are required in a game to distinguish player bullets from enemy bullets, my preferred solution there would be to just add another BulletServer instance to your scene, so the player uses one server, and the enemies use another. Bullets are stored as children of the BulletServer, so their layering will honor the ordering of the BulletServers in the scene tree.

Got it! Thank you 😁

Oops I read your original comment wrong, and just realised that you DIDN'T want the enemy bullets to cover player bullets, and I'm now realizing that the screenshot was probably your game with qurobullet and not some other system... At least the same solution applies lol 😅

Yup! It's my game using this module 😁 I'll go set up two BulletServers so the player bullets are always over the enemy bullets 😄


First PoC for solving threading issues in node loader.

Description
Please include a summary of the change and which issue is fixed. List any dependencies that are required for this change.
Fixes #(issue_no)

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Documentation update

Checklist:

[ ] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation.
[ ] My changes generate no new warnings.
[ ] I have added tests/screenshots (if any) that prove my fix is effective or that my feature works.
[ ] I have tested the tests implicated (if any) by my own code and they pass (make test or ctest -VV -R <test-name>).
[ ] If my change is significant or breaking, I have passed all tests with ./docker-compose.sh test &> output and attached the output.
[ ] I have tested my code with OPTION_BUILD_ADDRESS_SANITIZER or ./docker-compose.sh test-address-sanitizer &> output and OPTION_TEST_MEMORYCHECK.
[ ] I have tested my code with OPTION_BUILD_THREAD_SANITIZER or ./docker-compose.sh test-thread-sanitizer &> output.
[ ] I have tested with Helgrind in case my code works with threading.
[ ] I have run make clang-format in order to format my code and my code follows the style guidelines.

If you are unclear about any of the above checks, have a look at our documentation here.

@devraymondsh do you want to close this PR: https://github.com/metacall/core/pull/500 in favor of this one?

@devraymondsh do you want to close this PR: #500 in favor of this one?

Sure.


[gh-pages][ZEPPELIN-2055] Add "What's new in 0.7" and Twitter feed to website main page

What is this PR for?
There are lots of improvement in upcoming release 0.7(as mentioned in #1972 (release note)). To emphasize them to users and make contents enrich Zeppelin official website, I added some description \w gif images. And also added Twitter news feed at the bottom of the main page.
What type of PR is it?
gh-pages | Improvement
Todos

[x] - need to take care of gif images' alignment when screen width is small

What is the Jira issue?
ZEPPELIN-2055
How should this be tested?
Build gh-pages branch as described in here. Or see the below gif sreenshot img :)
Screenshots (if appropriate)

Before

After

Questions:

Does the licenses files need update? no
Is there breaking changes for older versions? no
Does this needs documentation? no

Looks great!
What do you think add things about improvements on Python/pyspark in what's new section?
Matplotlib integration in python/pyspark and conda support in python are something worth to mention IMO.

^^ that should be a per release what's new page, I think?

looks good!

@Leemoonsoo @felixcheung Thanks for your review! As @Leemoonsoo mentioned I added "Improvement in Python" section like below. How about this?

@felixcheung Addressed your comments as well. And it'll be better to update "What's new ~ " section for every major release. Surely I'm willing to do that :)

cool!

@AhyoungRyu Great!
nit:
While this will be seen from not only existing Zeppelin user but also people new to Zeppelin, how about change "Interpreter Per User / Note" to something like "Multi-user support improvement", more general words. And address "Interpreter per user /note" and "interpreter impersonation" in the text below?
And in "Personalized Note Mode", would it be possible to somehow mention 'Collaboration' mode, although it's not really a new feature? Something like "Switch between Collaboration and Personalized mode". So people new to Zeppelin can easily understand that there're two possible modes switchable "Collaboration" and "Personalized". What do you think?

@Leemoonsoo Thanks for the detailed suggestion. So I added some description about "Interpreter impersonation" under "Multi-user Support Improvement" and mentioned about "Collaboration mode"   . How about this?

Feel free to suggest if you have better wording or sentences in your mind :)

LGTM!

LGTM

Will merge into gh-pages if there are no more comments!


Changed KytosEvent into a dataclass with type annotations

Summary
This converts KytosEvent into a dataclass with type annotations. Additionally it changes it so that it is now considered a bug for an event to not have a name set.
Local Tests
Seems to work correctly. Can create evcs and have them interrupted by maintenance windows.
End To End Tests
These seem to fail pretty badly, and I don't understand what's going on here.
kytos-end-to-end-tests-kytos-1  | Starting enhanced syslogd: rsyslogd.
kytos-end-to-end-tests-kytos-1  | /etc/openvswitch/conf.db does not exist ... (warning).
kytos-end-to-end-tests-kytos-1  | Creating empty database /etc/openvswitch/conf.db.
kytos-end-to-end-tests-kytos-1  | Starting ovsdb-server.
kytos-end-to-end-tests-kytos-1  | Configuring Open vSwitch system IDs.
kytos-end-to-end-tests-kytos-1  | Starting ovs-vswitchd.
kytos-end-to-end-tests-kytos-1  | Enabling remote OVSDB managers.
kytos-end-to-end-tests-kytos-1  | + sed -i 's/STATS_INTERVAL = 60/STATS_INTERVAL = 7/g' /var/lib/kytos/napps/kytos/of_core/settings.py
kytos-end-to-end-tests-kytos-1  | + sed -i 's/CONSISTENCY_MIN_VERDICT_INTERVAL =.*/CONSISTENCY_MIN_VERDICT_INTERVAL = 60/g' /var/lib/kytos/napps/kytos/flow_manager/settings.py
kytos-end-to-end-tests-kytos-1  | + sed -i 's/LINK_UP_TIMER = 10/LINK_UP_TIMER = 1/g' /var/lib/kytos/napps/kytos/topology/settings.py
kytos-end-to-end-tests-kytos-1  | + sed -i 's/DEPLOY_EVCS_INTERVAL = 60/DEPLOY_EVCS_INTERVAL = 5/g' /var/lib/kytos/napps/kytos/mef_eline/settings.py
kytos-end-to-end-tests-kytos-1  | + sed -i 's/LLDP_LOOP_ACTIONS = \["log"\]/LLDP_LOOP_ACTIONS = \["disable","log"\]/' /var/lib/kytos/napps/kytos/of_lldp/settings.py
kytos-end-to-end-tests-kytos-1  | + sed -i 's/LLDP_IGNORED_LOOPS = {}/LLDP_IGNORED_LOOPS = {"00:00:00:00:00:00:00:01": \[\[4, 5\]\]}/' /var/lib/kytos/napps/kytos/of_lldp/settings.py
kytos-end-to-end-tests-kytos-1  | + sed -i 's/CONSISTENCY_COOKIE_IGNORED_RANGE =.*/CONSISTENCY_COOKIE_IGNORED_RANGE = [(0xdd00000000000000, 0xdd00000000000009)]/g' /var/lib/kytos/napps/kytos/flow_manager/settings.py
kytos-end-to-end-tests-kytos-1  | + sed -i 's/LIVENESS_DEAD_MULTIPLIER =.*/LIVENESS_DEAD_MULTIPLIER = 3/g' /var/lib/kytos/napps/kytos/of_lldp/settings.py
kytos-end-to-end-tests-kytos-1  | + kytosd --help
kytos-end-to-end-tests-kytos-1  | + sed -i s/WARNING/INFO/g /etc/kytos/logging.ini
kytos-end-to-end-tests-kytos-1  | + test -z ''
kytos-end-to-end-tests-kytos-1  | + TESTS=tests/
kytos-end-to-end-tests-kytos-1  | + test -z ''
kytos-end-to-end-tests-kytos-1  | + RERUNS=2
kytos-end-to-end-tests-kytos-1  | + python3 scripts/wait_for_mongo.py
kytos-end-to-end-tests-kytos-1  | Trying to run hello command on MongoDB...
kytos-end-to-end-tests-kytos-1  | Trying to run 'hello' command on MongoDB...
kytos-end-to-end-tests-kytos-1  | Trying to run 'hello' command on MongoDB...
kytos-end-to-end-tests-kytos-1  | Ran 'hello' command on MongoDB successfully. It's ready!
kytos-end-to-end-tests-kytos-1  | + python3 -m pytest tests/ --reruns 2 -r fEr
kytos-end-to-end-tests-kytos-1  | ============================= test session starts ==============================
kytos-end-to-end-tests-kytos-1  | platform linux -- Python 3.9.2, pytest-7.2.0, pluggy-1.2.0
kytos-end-to-end-tests-kytos-1  | rootdir: /tests
kytos-end-to-end-tests-kytos-1  | plugins: rerunfailures-10.2, timeout-2.1.0, anyio-3.6.2
kytos-end-to-end-tests-kytos-1  | collected 239 items
kytos-end-to-end-tests-kytos-1  |
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_01_kytos_startup.py ..                                    [  0%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_05_topology.py ..RRF.RRF.RRF.RRF.RRFRRFRRFRRF....         [  8%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_10_mef_eline.py .RRFRRFRRFRRFRRFRRFRRFRRFRRFssRRFRRF...x. [ 16%]
kytos-end-to-end-tests-kytos-1  | RRFRRFRRF.xRRFRRFRRFRRF.RRFRRFRRFRRFRRF..RRF...                          [ 25%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_11_mef_eline.py RRFRRFRRFRRF..                            [ 27%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_12_mef_eline.py ....RRFXxRRF                              [ 30%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_13_mef_eline.py .....xs.s......xs.s.xxxxRRFxxxx.RRFXRRF.. [ 45%]
kytos-end-to-end-tests-kytos-1  | .........                                                                [ 49%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_14_mef_eline.py x                                         [ 49%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_15_mef_eline.py RRFRRF                                    [ 50%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_20_flow_manager.py RRFRRFRRF..RRFRRFRRFRRFRRFRRFRRFRRFRRF [ 56%]
kytos-end-to-end-tests-kytos-1  | RRFRRFRRFRRFRRFRRFRRF                                                    [ 59%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_21_flow_manager.py RRFRRFRRF                              [ 60%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_22_flow_manager.py ...............                        [ 66%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_23_flow_manager.py RRFRRFRRFRRFRRFRRFRRFRRFRRFRRFRRFRRFRR [ 72%]
kytos-end-to-end-tests-kytos-1  | FRRF                                                                     [ 72%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_30_of_lldp.py .RRFRRF.                                    [ 74%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_31_of_lldp.py RRFRRFRRF                                   [ 75%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_32_of_lldp.py RRF..                                       [ 76%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_40_sdntrace.py RRERRERRERRERRERRERRERRERRERRERRE          [ 81%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_41_kytos_auth.py ........                                 [ 84%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_50_maintenance.py .RRF....RRF.RRFRRF..RRFRRFRRF.RRF.RRFRR [ 93%]
kytos-end-to-end-tests-kytos-1  | FRRFRRFRRFRRF                                                            [ 94%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_60_of_multi_table.py RRFRRFRRFRRF.                        [ 97%]
kytos-end-to-end-tests-kytos-1  | tests/test_e2e_70_kytos_stats.py RRFRRFRRFRRFRRFRRFR                     [100%]R [100%]F [100%]
kytos-end-to-end-tests-kytos-1  |

@Ktmi, based on what we just discussed on our weekly meeting, the easiest route here is to set it as a draft, until the e2e issue is sorted, OK. I'll go ahead and mark it as a draft.

Gonna close this for now. It's a nice idea, but the strange technical issues that are popping up make it untenable.


Events stopped being submitted to GTM after updating to v0.4.0

I've noticed that none of the events were submitted to GTM anymore after updating to redux-beacon 0.4.0. I tried to find the reason for this, but I didn't get any errors in the console and nothing else helpful so the only way I could fix it is by reverting back to v0.3.0.
Are there any breaking changes that weren't mentioned? Otherwise this is probably a bug. In that case let me know if there's more info I could to provide to help with this.

Sorry about that @DinerIsmail.
Yes there was a breaking change in v0.4.0 (release notes). We added a feature to allow for renamed dataLayer's. So now you need to call the target before passing it to createMiddleware or createMetaReducer.
Before
 const middleware = createMiddleware(eventsMap, GoogleTagManager);
 const metaReducer = createMetaReducer(eventsMap, GoogleTagManager);

Now

 const middleware = createMiddleware(eventsMap, GoogleTagManager());
 const metaReducer = createMetaReducer(eventsMap, GoogleTagManager());

Let me know if that fixes things.
I should have been more explicit about this in the release notes. We'll be using major versions shortly so these kinds of things shouldn't happen anymore.

Yep, that fixes it! Thanks @ttmarek 💯


Azure OpenAI not working

Hi,
After some testing I realized that it's not possible to use magentic with Azure OpenAI.  The reason is that in the following line the OpenAI client is hard coded whereas an AzureOpenAI client would be required.  Same thing with the async versions of course.
https://github.com/jackmpcollins/magentic/blob/main/src/magentic/chat_model/openai_chat_model.py#L103
See the Azure OpenAI example in their repo:
https://github.com/openai/openai-python/blob/f6c2aedfe3dfceeabd551909b572d72c7cef4373/examples/azure.py
What would be the best way to support this in the code base?  There is a OPENAI_API_TYPE env var that could be checked to determine which client to use.  If None or "openai" keep the same behavior, if "azure" then use the Azure client. Is that too much of a hack?
Even better the openai module exposes an api_type constant that is type checked (I think).
https://github.com/openai/openai-python/blob/f6c2aedfe3dfceeabd551909b572d72c7cef4373/src/openai/__init__.py#L120

resolved by #65

Fix released now in https://github.com/jackmpcollins/magentic/releases/tag/v0.11.0


Fix cabal-hie-install in windows azure ci

I forgot to unpack the cache in the correct drive

When you are happy with this branch, merge

Finally i had to use the default CABAL_DIR location to make cabal-hie-install work, not sure the cause though


Fix README and imports

The imports had the case wrong for the organization causing
CI failure.
Added CI status to README
Fixed go get line in README

Problem with the flow for getting the config file. It was being pushed to sooner and sooner and now exists in the init() method but that means that when tests run in CI it tries to read the config first and actually fails.
Going to merge this first since it fixes the issues it intended too and is not a terribly functional change. The other issue should be isolated to its own PR as it will be changing actual logic.


popup example not working on your example website

Popup example not working on your example website/

not sure what you mean there, its working fine for me.

:wave: Hey, I'm having this same issue.
Where is +x more located? Maybe I'm misunderstanding how this is supposed to work?
Thanks!

Thanks for the quick reply! Here's what I'm seeing:

After some digging around, it looks like the css is different from what's in the examples? Could there may be a possibility that github !== npm ?

Also, I'm using Chrome Canary

Setting an explicit height on BigCalendar
eg:
<BigCalendar
  style={{height: 800}}/>

fixes this issue :)

It only shows a link if you can't see all the events for a day. Your screenshot has plenty of room, so there is no more to see.
Shrink the window and you'll see them


Missing link  ' Bicep playground '

Link to Bicep playground is not working.
https://bicepdemo.z22.web.core.windows.net/
Error message
' The requested content does not exist. HttpStatusCode: 404 ErrorCode: WebContentNotFound RequestId : ae381d3f-d01e-0067-141f-e6e754000000 TimeStamp : 2021-11-30T19:24:15.3374743Z '

Closing as dup of #5220


Investigate and implement full TypeScript spec file support

Summar of scope
Although TypeScript is supported at some parts of this plugin, it might need further implementation for a full support.
Solution details

Check inspections, reference contributors, line marker providers, tool window model building and actions, and other VirtualFile and PsiFile related places whether TypeScript is fully functional.
Add unit tests to validate TypeScript spec files too.

Out of scope

N/A

Will not be implemented.


Enhancement to unskript-ctl CLI

Feature Request
Currently unskript-ctl can be used to run a given Runbook or list the existing runbooks that
are avilable in the Awesome docker. This Issue is to request enhancements to the unskript-ctl tool.
Ability  to run checks
unskript-ctl --run-checks [all | connector | failing]
Here the intention is to Run

All available checks
Run all checks for a given connector
Run checks that have failed in the past (Re-run failed checks)

When all option is selected, the unskript-ctl should find out all available checks packaged in the system and run them and report the status against each checks, these result should be logged and the user should be able to display the failed checks
and display the logs from the failed checks.

When a connector is specified, the script should fetch all checks available in the system for  that particular connector and run them/report status and log the results for later use.

When execution_id is specified (we can get the failed execution_id from -df display-failed option), the script should re-run the check corresponding to the the execution_id and report status and log them for later use.

Ability to display failing checks
unskript-ctl --show-faling-checks [ all | connector ]
Here the intention is to show

All checks that have failed since last run
All checks that have failed for a given connector type

When all option is provided, the script should display details like check id, name and timestamp of the last failure run
When a connector is provided, the script should display details like check-id, name and timestamp of the last failure for that connector only.

Ability to display audit logs for check runs
unskript-ctl --show-audit-trail [ all | connector | check-id ]
Here the intention is to show

All Audit trails recorded in the system detailed  passed/failed/errored checks
All Audit trails recorded for a given connector in the system detailing passed/failed/errored checks
Audit trails recorded for a given check-id in the system detailing passed/failed/errored runs for the given check-id

Ability to list all checks
unskript-ctl --list-checks [all | connector ]
Here the intention is to show

All Checks available in the sytem
All Checks for a given connector available to run in the system

Feature Request
Currently unskript-ctl can be used to run a given Runbook or list the existing runbooks that are avilable in the Awesome docker. This Issue is to request enhancements to the unskript-ctl tool.
Ability to run checks
unskript-ctl --run-checks [all | connector | failing]
Here the intention is to Run

All available checks
Run all checks for a given connector
Run checks that have failed in the past (Re-run failed checks)

When all option is selected, the unskript-ctl should find out all available checks packaged in the system and run them and report the status against each checks, these result should be logged and the user should be able to display the failed checks
and display the logs from the failed checks.
When a connector is specified, the script should fetch all checks available in the system for  that particular connector and run them/report status and log the results for later use.
When execution_id is specified (we can get the failed execution_id from -df display-failed option), the script should re-run the check corresponding to the the execution_id and report status and log them for later use.

No execution_id is being provided in the failing case.
We should collect the checks with current status as failing from the DB and run those checks.
Could you provide the implementation summary - what will you be implementing for each of these three? ie a design note.

Ability to display failing checks
unskript-ctl --show-faling-checks [ all | connector ]
Here the intention is to show

All checks that have failed since last run
All checks that have failed for a given connector type

When all option is provided, the script should display details like check id, name and timestamp of the last failure run
When a connector is provided, the script should display details like check-id, name and timestamp of the last failure for that connector only.

Ability to display audit logs for check runs
unskript-ctl --show-audit-trail [ all | connector | check-id ]
Here the intention is to show

All Audit trails recorded in the system detailed  passed/failed/errored checks
All Audit trails recorded for a given connector in the system detailing passed/failed/errored checks
Audit trails recorded for a given check-id in the system detailing passed/failed/errored runs for the given check-id

Ability to list all checks
unskript-ctl --list-checks [all | connector ]
Here the intention is to show

All Checks available in the sytem
All Checks for a given connector available to run in the system

Ability  to run checks
unskript-ctl --run-checks [all | connector | failing]
Here the intention is to Run

All available checks
Run all checks for a given connector
Run checks that have failed in the past (Re-run failed checks)

When all option is selected, the unskript-ctl should find out all available checks packaged and user defined in the system and run them and report the status against each checks, these result should be logged and the user should be able to display the failed checks and display the logs from the failed checks.

Implementation Notes:

[x] Query ZoDB for action_is_check = true This would give all the checks

When a connector is specified, the script should fetch all checks available in the system for  that particular connector and run them/report status and log the results for later use.

Implementation Notes:

[x] Query ZoDB for action_is_check = true for the given connector

When failed is specified, the script should query ZoDB to find out the last-failed checks.  Query would be action_is_check = true && status = failed This would return the failed Check IDs.

Common Implementation

[x] Iterate over each snippet and create a temporary runbook with Frist and Last cell added to the snippet
[ ] Create a mapping of stored connector ID (credential schema id) to connector Name.
1. Create a new collection called default_credential_id
2. Load it with data from credential-save folder
[ ] Need to fill in the task.configure(...) for credentialsJson. The Connector ID stored above will be used to fill in the credentialJson entry for the given connector.
[x] Run the temporary runbook,
[x] capture the execution result in the Audit log.
[ ] Process Audit log and update Checks Status in the checks-status table of ZoDB  and update the failed_checks timestamp in the last_failed table.

PR is in https://github.com/unskript/Awesome-CloudOps-Automation/pull/242


Add some docs for Unique Indexes

Show the examples from #999. I'm only adding this issue as a reminder to myself before kicking out 2.8.

@oskardudycz Got this one in a PR.


different parsing between two versions

Hello,
I am trying to export single database report and I have two versions of pgbadger

export command:
/usr/local/bin/pgbadger --prefix "t=%m p=%p a=%a h=%h db=%d u=%u x=%x " -d test_db -v -a 1 -j 16 -s 2 -T "yzva58_20" -O /var/lib/pgsql --exclude-query="^(COPY|refresh materialized VIEW|VACUUM)" -o tst58_20.html /pg01/mounts/pg12/pg_log/log/yzva_pg12db01-2024.03.20.log.gz
never v. command:
/usr/bin/pgbadger --prefix "t=%m p=%p a=%a h=%h db=%d u=%u x=%x " -d test_db -v -a 1 -j 16 -s 2 -T "yzva58_20" -O /var/lib/pgsql --exclude-query="^(COPY|refresh materialized VIEW|VACUUM)" -o tst58_20.html /pg01/mounts/pg12/pg_log/log/yzva_pg12db01-2024.03.20.log.gz
older version parsing logs but it doesnt work properly in html, some sections doesn't work, sections on the left is ok but after vacuum to the events it doesnt work.

never version evet cant parsing that contain auto_explain log
DEBUG: Unknown stderr log line format:                SubPlan 5
DEBUG: Unknown stderr log line format:                  ->  Nested Loop  (cost=0.83..10.88 rows=1 width=22) (actual time=0.008..0.008 rows=1 loops=702598)
...

why this version differ that much, and how to solve html issue?

Without a part of your log to try to reproduce the issue it will be difficult for me to find the regression. Sorry for the response delay.


Added scrollEnabled prop to dynamically keep scroll on or off

I have added scrollEnabled prop for ScrollView which will allow to scroll autocomplete list as per user preference.
Also I have fixed some build errors from previous pull request comma(,) was missing in GooglePlacesAutocomplete.js file.

@FaridSafi Please review this pull request.

Thanks @tusharkotlapure I need same changes in this package.

@myaskevich @FaridSafi I'm also facing similar problem and changes mentioned in this pull request will resolve those problems. Can you please update us regarding when you can incorporate this changes or any plans for next release. So that I'll update my npm package accordingly.

Check out v1.2.9


Display Version in the Web UI

There's currently no version indication in mitmweb.

I will work on it and will send my PR soon


[AutoPR] eventgrid/resource-manager

Created to accumulate context: eventgrid/resource-manager

(message created by the CI based on PR content)

I will raise a separate PR that includes test changes as well, so we can ignore/close this PR.


Update chart victoria-metrics-k8s-stack to 0.23.5

This PR contains the following updates:

Package
Update
Change

victoria-metrics-k8s-stack
patch
0.23.4 -> 0.23.5

Release Notes

VictoriaMetrics/helm-charts (victoria-metrics-k8s-stack)
v0.23.5
Compare Source
Release notes for version 0.23.5
Release date: 2024-07-04

Support configuring vmalert -notifier.config with .Values.vmalert.additionalNotifierConfigs.

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


oil_level everytime 100%

My Audi App told me to check my oil level, my car needed some. In HA the oil level was 100% all the time.
Car: S4 TFSI

File "/config/custom_components/audiconnect/audi_connect_account.py", line 839, in oil_level
if isinstance(val, bool):
^^^
UnboundLocalError: cannot access local variable 'val' where it is not associated with a value

Can you deliver a debug file?

sure, how long should i run debug? reload audi_connect?

Yes should be enough but if you already filled up oil maybe it doesn't make sense. I would need the data before filling up oil to see why it showed up 100% instead of empty.

Just a comment here -- since I bought the car in December (2019 Q5) the oil sensor has randomly moved 100% <-> 75% <-> 0%. This was before the API changes, but it never seemed to be giving good information (in the car, there is never a problem).
Now the API is different, but maybe this never worked properly?

Yes should be enough but if you already filled up oil maybe it doesn't make sense. I would need the data before filling up oil to see why it showed up 100% instead of empty.

have filled up... but gues not to 100%, i run a debug

home-assistant_audiconnect_2024-03-20T11-33-22.162Z.zip

Just a comment here -- since I bought the car in December (2019 Q5) the oil sensor has randomly moved 100% <-> 75% <-> 0%. This was before the API changes, but it never seemed to be giving good information (in the car, there is never a problem).
Now the API is different, but maybe this never worked properly?

it was always just a rough estimate but I could see it slowly getting less and less

home-assistant_audiconnect_2024-03-20T11-33-22.162Z.zip

From your log:

File "/config/custom_components/audiconnect/audi_connect_account.py", line 839, in oil_level
if isinstance(val, bool):
^^^
UnboundLocalError: cannot access local variable 'val' where it is not associated with a value

Can you provide again a log file with switching on debugging level for this integration?

Unfortunately I have to tell you that it is apparently not solved, in HA 100%, in the car roughly 70% (I only have a bar display and have to estimate).

Sadly your log /api provides currently only True as oil_level:

OIL_LEVEL_DIPSTICKS_PERCENTAGE loc:['oilLevel', 'oilLevelStatus', 'value', 'carCapturedTimestamp']: val:True

That's why you see 100% in HA.

ok, thnx, hoping Audi fix ist.... sometimes...


[GUI] Cookie throws (second and following) fresh installs off the rails.

What kind of request is this (question/bug/enhancement/feature request):
Bug
(I think, b/c Webapps should be aware that a set cookie has been issued by a different host. All others that I know of are. So take this with a grain of salt)
Steps to reproduce (least amount of steps as possible):

deploy rancher once on a machine (for example a VM running docker) and login.
use the same machine / IP for a second deployment / test
(the main takeaway is that the (previously connected) browsers will find the cookie from 1) and stumble across it when 2).

Result:

First visit to the web interface expects you to already have a user account, my finding: because the cookie is found.
As result: the first step, creating a password always throws an error (providing [guessed:] "admin" as previous pw works) - but subsequent workflows in the GUI will fail - with no seeming connection because it's a fresh install.
After changing the password, you will not be redirected anywhere, only reloading the page gives you a GUI. Keeping you thinking, there is no problem.
But problems are present: P.e. creating a workload lets you not pick (the dropdown list is just empty.) an existing namespace even tough the default one has been created. If you create another one, suddenly you see two namespaces. And create a new namespace with the name default would not work, because it throws an error that its already present.

Other details that may be helpful:
I was playing around with cookies / browser profiles, since I block all third party cookies on all browsers and machines by default.
Also played around with disabling Bitdefender on my working machine.
Everything pointed to the cookie since sometimes it would work on clean browser profiles.
Environment information

Rancher version rancher/rancher:v2.4.8 (used :latest at first, switched to tagged for troubleshooting)
Installation option (single install/HA): VM in following configs tested:

Platform: Hyper-V / virtualbox
RancherOS v1.5.6 - Docker 19.03.11 - Linux 4.14.138 (used the hyperv ver. on Hyper-V)
Workaround
Delete all cookies before reinstalling fresh rancher on a machine with the same host(name)/IP.

I Need to Update:
I also had an issue with Bitdefender, as I assumed previously.
I replaced it, and things look differently.
When I have the time, I'll try to reproduce - maybe it was the combination of Cookie + Bitdefender after all.