Steph

to: @airbnb/binaryalert-maintainers
cc:
size: small|medium|large
resolves #
Background
This Creates an SNS topic for files that get loaded to the s3 bucket that are safe.
This was for a project where files are loaded to an s3 and if they are safe they move through the process if not we get notified and an alternate process happens.
Changes
updated analyzer_ to add publish to safe
updated binary info alter files that are safe
updated main.py to give an alternate route to safe file
added new sns for safe and that to lambda file
added permisson to push to sns topic
Testing
tested using your tester to check alters work
tested manually usings s3 and normal text document

@austinbyers thank you for changes i have updated as requested however for the optional part for the safe alerts for sns I have not added this in the manage.py file so it wont come as an option.

@austinbyers have you had a chance to have a look?

@goochi1 unit tests are still failing (which you should be able to see by clicking the "x" next to your most recent commit). I'm not sure exactly why they're failing, there may be an issue with the mocks.
After the unit tests pass, the best way to test the optional safe topic ARN is to do a test deploy without the safe topic, and then deploy again after adding it. This will show a few more changes we need - in particular, the analyzer Lambda code needs to check whether a safe topic is defined before trying to send to it.
Sometime within the next few weeks I should have time to help finish this PR if you need it

So when I test it it doesn’t have a x come up :/ will have a look tomorrow or Wednesday
Get Outlook for iOShttps://aka.ms/o0ukef

From: Austin Byers<EMAIL_ADDRESS>Sent: Monday, May 14, 2018 6:29:30 PM
To: airbnb/binaryalert
Cc: goochi1; Mention
Subject: Re: [airbnb/binaryalert] Steph (#118)
@goochi1https://github.com/goochi1 unit tests are still failing (which you should be able to see by clicking the "x" next to your most recent commit). I'm not sure exactly why they're failing, there may be an issue with the mocks.
After the unit tests pass, the best way to test the optional safe topic ARN is to do a test deploy without the safe topic, and then deploy again after adding it. This will show a few more changes we need - in particular, the analyzer Lambda code needs to check whether a safe topic is defined before trying to send to it.
Sometime within the next few weeks I should have time to help finish this PR if you need it
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/airbnb/binaryalert/pull/118#issuecomment-388898431, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AQuzPnjN4qkHYFquZCwBKprQPmI94VPwks5tyb75gaJpZM4TxeYW.

You should be able to see it in the GitHub UI:

@austinbyers ahh i see and i know what it was, the default region was missing, my bad. Put back now.
Also i have tested with safe documents to ensure it worked. :)
Can you review, thanks for your help with this btw

@austinbyers hey, can't figure out what is causing the x let me know when you get a chance to have a look

So my unit test works, not sure whats happening

@austinbyers changed a few things that i believe were causing issues but i don't understand the new reason it is failing. Can you elaborate?

@austinbyers  cleared it up :)

@goochi1 nice job on getting CI to pass! But I'm fairly certain this will still break if the option to enable safe alerts is disabled. Can you do a test deploy both with and without negative alerting?
Otherwise, I might be able to address it when I get a chance

@austinbyers  added in some changed to accept 0 for no safe alters. Let me know if you have anymore feedback :)

@austinbyers did you try running mine? weirdly it seems to fail with the following error now

module.binaryalert_analyzer.aws_lambda_function.function: 1 error(s) occurred:

aws_lambda_function.function: Error creating Lambda function: timeout while waiting for state to become 'success' (timeout: 1m0s)


Stop forcing Vulkan on Windows

Until now we forced using the Vulkan adapter backend on Windows, because DX12 was less well support in the early days of wgpu-core.

[x] Remove code that explicitly selects Vulkan for Windows.
[x] Avoid raising exceptions in ffi callbacks.
[x] Add ability to select fallback adapter in wgpu.request_adapter().

Motivation for selecting Vulkan

Without drivers installed, Vulkan cannot be used.
I found that without drivers installed, not forcing the Vukan adapter runs (using D3D12), but not without flaws. At least better than Vulkan.
At wgpu-core D3D12 is listed as having first class support, but ...
The D3D12 backend (also with drivers installed) still has flaws, but that's ok, because ...
I found that with drivers installed, auto-selection picks Vulkan.
Eventually wgpu can also use D3D11 on older Windows versions that don't support Vulkan or Dx12.
The situation around honoring the Nvidia panel settings are the same for all backends.

In summary, I think its fine to let wgpu select the backend on Windows from hereon.
Experiments on a clean Windows install

With a clean Windows install (no Nvidia drivers installed yet):
* Vulkan (forced) crashes when it tries to display a window.
* Did not test D3D12 (missed that opportunity)
With Nvidia drivers uninstalled:
* Vulkan reports "no available adapter".
* D3d12 kinda works. It runs some/most examples, but fails the 3D tests in test_rs_compute_tex.py, produces an error for the Naga-generated DX shader code on the volume rendering example, and buffer mapping (e.g. in pygfx picking) seems iffy too.
With NVidia drivers:

When letting wgpu select a backend, it picks Vulkan.
Vulkan work as expected, passing all tests (unit and examples) in wgpu-py and pygfx.
Forcing D3D12 creates the same glitches as mentioned above.
Forcing D3D11 reports no available adapter.
Forcing the fallback adapter (software rendering, with D3D12) is not flawless, but seems to have less issues than D3D12 on hardware.

Experiments on reacting to Nvidia control panel

Both with Vulkan and D3D12 (and also with auto-select, i.e. Vulkan), the Nvidia control panel setting is ignored.
It simply selects the Nvidia GPU or Integrated Graphics only based on the value of power_reference in wgpu.request_adapter().

How about the graphics preference in Windows Control Panel? As far as I am aware that has superseded the Nvidia settings thing.

How about the graphics preference in Windows Control Panel?

This one seems also to be ignored 🤷


[Drained] App not restoring settings when passing threshold percentage

Affected hardware version
Bangle 2
Your firmware version
2v24
The bug
The drained application overrides the main clock, and various other settings when the watch battery goes below threshold A, then restores these settings at threshold B. A and B are set via drained app settings.
In my case, this is 5% and 15% respectively.
While the watch does swap to drained at 5%, it fails to then restore at 15%, currently requiring me to manually restore via drained's in-app settings, or rebooting the watch itself.
I've not seen this issue reported elsewhere, so I'm not sure if it's one of my other listed apps below interacting with the app causing a problem.
Installed apps
alarm (0.49), sched (0.27), clock_info (0.12), cprassist (0.02), files (0.08), fileman (0.03), loadingscreen (0.01), dclock (0.10), ptlaunch (0.15), widbt (0.09), qmsched (0.10), wid_edit (0.05), messages (0.62), oxofocus (0.02), notifyfs (0.12), weather (0.26), spotrem (0.11), dragboard (0.10), widadjust (0.03), about (0.15), widalarm (0.02), themesetter (0.05), 2047pp (0.04), diceroll (0.02), dtlaunch (0.25), poweroff (0.04), a_dndtoggle (0.02), lightswitch (0.10), icons (0.02), timerclk (0.07), acmaze (0.05), rebbleagenda (0.02), score (0.02), widmessages (0.06), autoreset (0.02), widdst (0.06), boot (0.63), setting (0.74), powermanager (0.11), widbatpc (0.19), messageicons (0.08), drained (0.06), setuichange (0.03), fontext (0.03), android (0.38), messagegui (0.81), reply (0.03), popconlaunch (0.05)

Thanks for the detailed report - it was in fact a bug in drained, fixed in #3626


new(blog): add entry for falco 0.31.1

Signed-off-by: Luca Guerra<EMAIL_ADDRESS>
What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind user-interface

/kind content

/kind translation

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area blog

/area documentation

/area videos

What this PR does / why we need it:
Falco 0.31.1 has been released this week. This PR adds a blog post to highlight the recent changes.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: LucaGuerra
To complete the pull request process, please assign radhikapc after the PR has been reviewed.
You can assign the PR to them by writing /assign @radhikapc in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: jasondellaluce, LucaGuerra
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [jasondellaluce]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: 6ab3809e405dcff6d7865cb16106314b4f65eaf0


Unable to parse numbers in scientific notation

Input:

[com/github/wwmm/easyeffects/streamoutputs/bassenhancer]
amount=-6.9388939039072284e-16
blend=0.0
listen=true

(valid config for easyeffects)
Output:
dconf2nix: "<stdin>" (line 74, column 27):
unexpected "e"
expecting digit or new-line
CallStack (from HasCallStack):
  error, called at src/DConf2Nix.hs:35:16 in dconf2nix-0.0.8-ADjdFpOZHMDCBz9zkj4k3n:DConf2Nix

Fixed in 7aea3b5, thanks for reporting the issue!

Thank you for fixing it so quickly! :heart:


Upgrade to<EMAIL_ADDRESS>

I have just started to use pino directly in addition to hapi-pino, and noticed that hapi-pino depends on an older version of<EMAIL_ADDRESS>Now I have two versions of pino in my node_modules, a situation I’d prefer to avoid.
Would it make sense to upgrade hapi-pino to use<EMAIL_ADDRESS>

Thanks!


basic parsing working

DO NOT PUSH PROJECT SOLUTIONS PUBLICLY.
And especially do NOT open pull requests with project solutions!
Please be considerate of this free educational resource.

Moved to #11


 This is what's in the terminal :
chronos@localhost / $ sudo startunity
Password:
Entering /mnt/stateful_partition/crouton/chroots/precise...
Xephyr cannot open host display. Is DISPLAY set?
/usr/bin/xinit: giving up
/usr/bin/xinit: unable to connect to X server: No such file or directory
/usr/bin/xinit: server error
Not unmounting /mnt/stateful_partition/crouton/chroots/precise as another instance is using it.
If someone can help me... thanks !

Maybe ChromeOS updated itself and now you might need to update crouton and your chroot. I disable ChromeOS updates w/ sudo  initctl stop update-engine so I never updated crouton or my chroot. You might find [this topic] (https://github.com/dnschneid/crouton#a-new-version-of-crouton-came-out-my-chroot-is-therefore-obsolete-and-sad) on croutons "homepage" useful.
Good luck... :smile:

Thx, i hope there will be à good update soon ! And thank you for the tip to
stop chromeOS update !
Le 1 août 2015 3:42 PM, "MeneerJansen"<EMAIL_ADDRESS>a écrit :

Maybe ChromeOS updated itself and now you might need to update crouton and
your chroot. I disable ChromeOS updates w/ sudo initctl stop update-engine
so I never updated crouton or my chroot. You might find this topic
https://github.com/dnschneid/crouton#a-new-version-of-crouton-came-out-my-chroot-is-therefore-obsolete-and-sad
on croutons "homepage" useful.
Good luck... [image: :smile:]
—
Reply to this email directly or view it on GitHub
https://github.com/dnschneid/crouton/issues/1971#issuecomment-126916819.

Generally updating the chroot fixes these issues.


rsyslog: remove dependency on libmongo-client

Description of changes
libmongo-client no longer exists on github and because of that nix-build with --check fails

Things done

Built on platform(s)

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

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

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

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

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

[ ] Fits CONTRIBUTING.md.

Closing as 23.05 is EOL in one day.


NER task added

The word embeddings can be evaluated on the POS and NER tasks now. The task has to be specified in the config.yaml file.

Coverage remained the same at 43.363% when pulling 53cc74026180c3276ee2df2a397d5a30e232370b on shashwath94:shashwath into 278b9e972d0fda814f5485ad680c15bee037831c on undertherain:master.


Add files via upload

All necessary files are in the directory finish_the_song_lyric

finish_the_song_lyric prompt, graphics, and code


Font Size does not match default Windows File Explorer. Too large and looks cluttered.

Description
The default font size (and I'm not sure if there's a way to change it) is larger than the default font size from Windows File Explorer, leading to UI elements seeming cluttered. On top of that, the text rendering is very alised and not smooth, like in Windows File Explorer.
See below: Left is Windows, Right is Files

Steps To Reproduce
Open the files app and look at any of the text.
Steps to fix
Changing the default font size to 12pt (as opposed to what looks to be the default of 14pt from the image) would fix this issue.
Files Version
<IP_ADDRESS>
Windows Version
10.0.22621.1265
Log file
debug.log

Files uses the new XAML styles which are a little different than what File Explorer has today, but you'll start to see File Explorer adopt these as well.
We don't have built-in support for changing the font size but there are options in the Windows Settings app that'll work for not just Files but for all XAML apps.

What about the text rendering? It seems like there is far less aliasing in the default windows File Explorer compared to Files.

Text rendering depends on whatever system XAML and WinUI uses under the hood. We have support for overriding the font (instructions on https://files.community) so you can play around there and see if a different font works better.


[SP-3334][PDI-15989]   Problem saving "Streaming source step" and "St…

…reaming target step" properties on "ETL Metadata Injection" step (7.0 Suite)

Saving streamSourceStepname from UI

Build Completed
:x: This pull request has errors. They will need to be addressed before it can be accepted. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
mvn -B -fn -f plugins/meta-inject-plugin/pom.xml clean install && mvn -B -f plugins/meta-inject-plugin/pom.xml site

Cleanup Commands
mvn -B -f plugins/meta-inject-plugin/pom.xml build-helper:remove-project-artifact

Changed files
  plugins/meta-inject-plugin/src/main/java/org/pentaho/di/ui/trans/steps/metainject/MetaInjectDialog.java

License header violations

:heavy_exclamation_mark: Copyright year is not the current year on plugins/meta-inject-plugin/src/main/java/org/pentaho/di/ui/trans/steps/metainject/MetaInjectDialog.java. Found 2016. Was expecting 2017

Double-checked locally.
Looks OK.
Merging.


Some images are not being saved to gallery

Description
After creating a grid, when the 'Post to Instagram' button is pressed, some of the images don't appear on the 'Post to Instagram' page and are not saved to the gallery.
Steps to Reproduce

Log in to the app
Go the Explore page and tap on a frame
Press the 'Add Photos' button
Add up to 9 images to be overlayed on the frame
Press the 'Finish' button
Press the 'Post to Instagram' button
Wait till the 'Post to Instagram' page appears

Expected Behaviour
Once the 'Post to Instagram' button is pressed, all the images should be saved to gallery and should appear on the 'Post to Instagram' page.
Actual Behaviour
Some images are not saved to the gallery and don't appear on the ''Post to Instagram' page. For example, if the user adds 9 images to the grid and presses the 'Post to Instagram' button, sometimes only 7 or 8 images are saved.

Resolved
The issue was due the nature of the forEach implementation in the dart. Changing the parameter of the forEach callback function has no effect outside of that function call, it's just changing a local variable. This resulted in some images not being saved.
We fixed it by changing to a for loop.


New version: DG0JBJ.HDSDR version 2.81-b9

Pull request has been created with komac v2.3.0 :rocket:

Resolves #164736

Microsoft Reviewers: Open in CodeFlow

/azp run


WIP: Kubelet: recreate mirror pod if the static pod changes

If a static pod changes, delete the corresponding mirror pod. When kubelet
could not see mirror pod from the API server update, it'd attemp to create a
new mirror pod with up-to-date specs.

Part of #6580

Is this a #6607 or #6604 kinda thing?

This LGTM overall and I prefer over #6604

@vmarmol, I prefer this RP over #6604 as well; reasons stated in #6580. And removed the logging message used for debugging. Will run e2e just in case.

e2e passed.

Thanks @yujuhong! Merging.


Missing German translations proposed for release 4.0.8.

See #319

Fixed in https://github.com/malcommac/SwiftDate/commit/a7c41006ea9425d49f3fa0b0a6a8cbbb266ea77c.
Planned for 4.0.9.


No way to set mode with no-config webpack 4

There currently seems to be no way to set the mode property Webpack requires when not using a webpack.config.js file. As of version 4, webpack doesn't require any configuration, but, if no configuration file is present, webpack-serve always works in production mode and produces a warning.

Operating System: Windows
Node Version: 10.1.0
NPM Version: 5.5.1
webpack Version: 4.16.0
webpack-serve Version: 2.0.2

This issue is for a:

[ ] bug
[X] feature request
[ ] modification request

Code
CLI Command
  $ webpack-serve

webpack.config.js
webpack.config.js does not exist
Expected Behavior
You should be able to set mode without having to create a configuration file with the sole purpose of setting the mode.
Actual Behavior
There is no way to set the mode apart from creating a configuration file. When running webpack-serve, you always get a production build with the following warning printed in the console:
WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/

How Do We Reproduce?
Follow the Webpack Getting Started guide up until Creating a Bundle. Then install the webpack-serve package and run it.
New Feature Use Case

One possible solution is to add a --mode argument like webpack-cli. Another option could be to use an environment variable or to default mode to either production or development when no config file is present (development seems to make the most sense).

Happy to review a PR that implements either solution. Both seem reasonable to me.

On it

Webpack supports returning a function as its module exports config value.
see
@cilliemalan  Can the --mode flag be redirected to the argv?

DEPRECATED. Please use webpack-dev-server (he is in support and update mode again). Feel free to create a issue if some features are not implemented in webpack-dev-server.
Why deprecated webpack-serve ?

The author stopped developing the package.
Two development servers are misleading for developers.
Hard to maintain two packages with same purpose.
Some dependencies are not available to fixes/implement new features/etc (https://www.npmjs.com/package/webpack-hot-client and https://github.com/shellscape/koa-static) and there's nothing we can do here.
webpack-dev-server is stable.

Thanks for using webpack! We apologize for the inconvenience. In the future, we will avoid such situations.


Complete --newest feature, add some cleanups

two major fixes for --newest:

rewrite the /tmp yaml file that holds base_config when base_config is finally done (backtracking rewrites this info)
make sure that the copy of the job configuration doesn't share refs with the base_config dict so that it doesn't corrupt base_config while backtracking

The other two commits are cleanup in arg processing.

rebased after #893

flake8

'nanagement'? :)

Other than the above comments, LGTM


[WIP] Refactor and support encoding to timestamp and decoding to date

I'd like to keep the model clean, without any dependency from firestore, which limits us to use Date, and not Timestamp. This PR adds an ability of it.
I also refactor and clean the code a bit.
I haven't use and test other types. gonna work on them later...

FirestoreEncoder(userInfo: [
            CodingUserInfoKey.dateEncodingStrategy:
                DateEncodingStrategy.deferredToTimestamp({ Timestamp(date: $0) })
            ])

FirestoreDecoder(userInfo: [
            CodingUserInfoKey.dateDecodingStrategy:
                DateDecodingStrategy.deferredToTimestamp
            ])

CAN WE GET THIS INTO MASTER?

This looks awesome. Any chance we could get this merged?
It's not that long, considering most of it is pretty boilerplate-y

Bump


Localization

Hey, wouldnt be best use a common resource File to all strings?
Because like this will be a lot of repeated strings.
Also maybe replace the resx with json/xml

Resx is a good choice, from my point of you.
If you use an extensions like RESX Manager (https://marketplace.visualstudio.com/items?itemName=TomEnglert.ResXManager) you can manage all the language translation in one place.
RESX Manager can use Azure Translation engine to auto translate in a lot (lot) of languages for you, but there are other engines:

in Azure the Translator Service is free of charge for 2M chars per month.


maintainability updates

Various updates incl:

group objects by type (for transparency)
replace SuffixedNumber helper with contract-bounded service
add IDE helper comments
code cleanup

Closing in favour of https://github.com/cnvs/canvas/pull/462


Added About Us tab in the Navbar as well as Sidebar

Description
I have added the About Us tab/link in the Navbar as well as Sidebar. It is responsive.

Issue Ticket Number
Fixes #268

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[X] 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

Checklist:

[X] I have followed the contributing guidelines of this project as mentioned in CONTRIBUTING.md
[X] I have checked to ensure there aren't other open Pull Requests for the same update/change?
[X] 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 needed to the documentation

Screenshots 👇

My Profile URL - https://www.clueless.tech/profile/103863839958922066506
PR merged by - @Debajyoti14


Multiple progress bar appearing on refreshing

Is it a ?

[x] Bug Report

[ ] Feature Request

[ ] Chore

Bug Report
Actual Behaviour
While refreshing the profile of the organizer multiple progress bars can be seen.
Expected Behaviour
Single progress bar (circle) should be shown.
Screenshots of the issue

Would you like to work on the issue?
Yes!

@iamareebjamal I would like to work on this issue.

There was an issue similar to this. Please find that and mention me, I'll open it


Rendering backticks with trailing s not closing monospace block

Looks like the new site renderer (as does GH's adoc renderer) has trouble with things like plural references, `VkImageView`s in the example. This works just fine in GitHub where the monospace is properly closed before s: VkImageViews - but not on the new site nor when GH renders the adoc:

https://registry.khronos.org/vulkan/site/guide/latest/extensions/VK_KHR_imageless_framebuffer.html
https://github.com/KhronosGroup/Vulkan-Guide/blob/main/chapters/extensions/VK_KHR_imageless_framebuffer.adoc

Oh, I wasn't aware of the double-backticks to allow this, thanks! Indeed GH in messages is using a different renderer.


Generate JWT token with associated key pair

Describe the pull request:

[x] Functional change
[x] New feature
[x] Documentation change

Pull request long description:
This generates a JWT Token as well as the associated key pair and add the token to trace.yml and the token.key and token.pub to the config directory.
Changes made:

Added generate_token function
moved keys_password to config
updated documentation
Updated dependencies

Related issues:
Fixes #14
Additional information:
Not yet tested with ega-data-api DataEdge.
Documentation change:
Update information on files generated.

Tested, seems to work, well at least the token gets validated, I am not able to fully tested as my cluster seems to be a bit weirdly set up


Placeholder Control not working in Teams theme

Hi,
I have created SPFx webpart with Placeholder Control and added webpart in Teams application as  a Teams Tab.
Issue Description : If I change the Teams Theme to High contrast then Placeholder Control not looking properly. Please find the below image for your reference

and same type of theme issue i am facing in other control as well .
Version :
SPFX version : 1.12.1
"@pnp/spfx-controls-react": "3.2.1"
"@pnp/spfx-property-controls": "^3.2.0",
Thank you in advance

Hi @DJoshi23, many thanks for reporting this issue. Would you be interested in submitting a PR?
If so, please keep in mind that the solution has been upgraded to SPFx 1.14.0, which introduces some changes to themes
https://docs.microsoft.com/en-us/sharepoint/dev/spfx/release-1.14#web-part-lifecycle-method-for-theme-changes

Hi @DJoshi23 and @joelfmrodrigues, I tried by using the latest public version of the library (3.7.2) and for me the result is this one (using a SPFx 1.14.0 solution with a standard Web Part deployed as a Teams Tab):

So, my advice is to update both this library and the whole SPFx project to the latest version.
However, the classic problem remains, namely the fact that a solution deployed in this way loses some styles such as the font and the real Teams theme applied (a problem that has been well known for a long time).
@joelfmrodrigues what do you think? Is it time for a check to manage the Fluent theme if you are within Teams? Some kind of
ThemeProvider that applies the Teams theme automatically if you are in Teams and systems finally the question of fonts?
I had already scheduled this type of control since the problem is common.
In this case I can work on a check like that 🙂

Hi @DJoshi23 and @joelfmrodrigues, I tried by using the latest public version of the library (3.7.2) and for me the result is this one (using a SPFx 1.14.0 solution with a standard Web Part deployed as a Teams Tab):

So, my advice is to update both this library and the whole SPFx project to the latest version.
However, the classic problem remains, namely the fact that a solution deployed in this way loses some styles such as the font and the real Teams theme applied (a problem that has been well known for a long time).
@joelfmrodrigues what do you think? Is it time for a check to manage the Fluent theme if you are within Teams? Some kind of
ThemeProvider that applies the Teams theme automatically if you are in Teams and systems finally the question of fonts?
I had already scheduled this type of control since the problem is common.
In this case I can work on a check like that 🙂

@fabiofranzini are you referring to a control/helper that would be responsible for the theme on it's own and could be used with any other control to address the issue?

@fabiofranzini are you referring to a control/helper that would be responsible for the theme on it's own and could be used with any other control to address the issue?

Exactly! The same problem exists for the isolated web parts, it could be solved in this way, by wrapping the controls to be used as children of this "new control". This solves the problem universally, even for all fluent controls.

Yup, that would be amazing to have 🙂 it's definitely one of the pain points with SPFx in my opinion as it's always complex to handle and test across all scenarios.
I will assign this issue to you 🙂 Many thanks!

First implementation done:

As you can see, the theme colors are applied based on the selected Teams theme, the same thing for fonts too.
The problem with Placeholder control (and many others) is that they don't have direct Themes support.
@joelfmrodrigues do you prefer that we leave this issue for the Placeholder control and create a new one for the new control I called "EnhancedThemeProvider"?

Ok, I checked the code of the Placeholder control and I realized that sass was used for the style part.
This ensures that the style change is not applied until the page is reloaded, and in fact the behavior is just that. What is best done is:

add the 'theme' property to the control`s properties
rewrite the sass part using @fluentui/merge-styles
use the theme property correcly

@joelfmrodrigues If you tell me it's ok, I can start tweaking the control

Here is an early version

@fabiofranzini sorry for the late reply...
It's looking great! 👏

Hi all, just an update: https://github.com/pnp/sp-dev-fx-controls-react/issues/1202#issuecomment-1117124176

Hi @DJoshi23,
Following amazing work done by @fabiofranzini, did you had the chance to retry with the EnhancedThemeProvider which is available since 3.9.0?


functional-tester: different hash after compaction

2016-03-30 23:40:14.676027 I | etcd-tester: [round#4] compacting storage at 721759 (current revision 731759)
2016-03-30 23:40:19.125544 I | etcd-tester: <IP_ADDRESS>:2379 is already compacted with 721759 (rpc error: code = 11 desc = "etcdserver: storage: required revision has been compacted")
2016-03-30 23:40:19.167118 I | etcd-tester: <IP_ADDRESS>:2379 is already compacted with 721759 (rpc error: code = 11 desc = "etcdserver: storage: required revision has been compacted")
2016-03-30 23:40:19.167192 I | etcd-tester: [round#4] compacted storage
2016-03-30 23:40:19.167206 I | etcd-tester: [round#4] check compaction at 721759
2016-03-30 23:40:19.268869 I | etcd-tester: [round#4] confirmed compaction at 721759
2016-03-30 23:40:19.419253 I | etcd-tester: [round#5 case#0] start failure kill all members
2016-03-30 23:40:19.419289 I | etcd-tester: [round#5 case#0] start injecting failure...
2016-03-30 23:40:19.483197 I | etcd-tester: [round#5 case#0] injected failure
2016-03-30 23:40:19.483234 I | etcd-tester: [round#5 case#0] start recovering failure...
2016-03-30 23:40:22.165048 I | etcd-tester: [round#5 case#0] recovered failure
2016-03-30 23:40:22.165099 I | etcd-tester: [round#5 case#0] canceling the stressers...
2016-03-30 23:40:22.166190 I | etcd-tester: [round#5 case#0] canceled stressers
2016-03-30 23:40:22.166217 I | etcd-tester: [round#5 case#0] checking current revisions...
2016-03-30 23:40:23.280842 I | etcd-tester: [round#5 case#0] all members are consistent with current revisions
2016-03-30 23:40:23.280894 I | etcd-tester: [round#5 case#0] checking current storage hashes...
2016-03-30 23:40:23.280936 I | etcd-tester: [round#5 case#0] checking current storage hashes failed (map[<IP_ADDRESS>:2379:403078244 <IP_ADDRESS>:2379:403078244 <IP_ADDRESS>:2379:2058040325])
2016-03-30 23:40:23.280961 I | etcd-tester: [round#5 case#0] cleaning up...

Data and logs: https://console.cloud.google.com/storage/browser/etcd-issues-4914
Investigating.
/cc @heyitsanthony @xiang90

2016-03-30 23:40:20.081387 I | storage: restore compact to 580785
2016-03-30 23:40:21.657399 I | storage: resume scheduled compaction at 721759
2016-03-30 23:40:21.665451 I | etcdserver: starting server... [version: 2.3.0+git, cluster version: 2.3]

Looks like it's restoring from snapshot and then compacting.

Just confirmed that compaction was still going:
2016-03-31 06:20:55.289762 I | etcd-tester: [round#4] compacted storage
2016-03-31 06:20:55.289776 I | etcd-tester: [round#4] check compaction at 876916
2016-03-31 06:20:55.654681 I | etcd-tester: [round#4] confirmed compaction at 876916

2016-03-31 06:21:00.009631 I | etcd-tester: [round#5 case#0] checking current storage hashes...
2016-03-31 06:21:00.009672 I | etcd-tester: [round#5 case#0] checking current storage hashes failed (map[<IP_ADDRESS>:2379:3264962273 <IP_ADDRESS>:2379:2349845451 <IP_ADDRESS>:2379:3608711073])
2016-03-31 06:21:00.009695 I | etcd-tester: [round#5 case#0] cleaning up...

Agent1:
2016-03-31 06:20:57 scheduleCompaction started at 876916
2016-03-31 06:20:59 scheduleCompaction done at 876916

Will see if we can sync these.

@heyitsanthony @xiang90 I tried https://github.com/coreos/etcd/pull/4915 but doesn't seem to resolve the issue:
2016-04-01 01:21:38.398972 I | etcd-tester: [round#5] compacting storage at 979028 (current revision 989028)
2016-04-01 01:21:38.398978 I | etcd-tester: compactKV to <IP_ADDRESS>:2379
2016-04-01 01:21:43.400950 I | etcd-tester: compactKV to <IP_ADDRESS>:2379
2016-04-01 01:21:43.452291 I | etcd-tester: <IP_ADDRESS>:2379 is already compacted with 979028 (rpc error: code = 11 desc = "etcdserver: storage: required revision has been compacted")
2016-04-01 01:21:43.452330 I | etcd-tester: [round#5] compacted storage
2016-04-01 01:21:43.452345 I | etcd-tester: [round#5] check compaction at 979028

2016-04-01 01:21:43.549737 I | etcd-tester: [round#5] confirmed compaction at 979028

2016-04-01 01:21:43.738419 I | etcd-tester: [round#6 case#0] start failure kill all members
2016-04-01 01:21:43.738458 I | etcd-tester: [round#6 case#0] start injecting failure...
2016-04-01 01:21:43.802894 I | etcd-tester: [round#6 case#0] injected failure
2016-04-01 01:21:43.802929 I | etcd-tester: [round#6 case#0] start recovering failure...
2016-04-01 01:21:46.824220 I | etcd-tester: [round#6 case#0] recovered failure
2016-04-01 01:21:46.824262 I | etcd-tester: [round#6 case#0] canceling the stressers...
2016-04-01 01:21:46.826008 I | etcd-tester: [round#6 case#0] canceled stressers
2016-04-01 01:21:46.826044 I | etcd-tester: [round#6 case#0] checking current revisions...
2016-04-01 01:21:47.955767 I | etcd-tester: [round#6 case#0] all members are consistent with current revisions
2016-04-01 01:21:47.955800 I | etcd-tester: [round#6 case#0] checking current storage hashes...
2016-04-01 01:21:47.955827 I | etcd-tester: [round#6 case#0] checking current storage hashes failed (map[<IP_ADDRESS>:2379:1322550403 <IP_ADDRESS>:2379:913219447 <IP_ADDRESS>:2379:2631645262])
2016-04-01 01:21:47.955846 I | etcd-tester: [round#6 case#0] cleaning up...

# AGENT1

2016-04-01 01:21:38.403770 I | store.index: compact 979028
2016-04-01 01:21:38.557044755 +0000 UTC scheduleCompaction started at 979028
2016-04-01 01:21:45.252641 I | store.index: compact 979028
2016-04-01 01:21:45.413445 I | storage: resume scheduled compaction at 979028
2016-04-01 01:21:45.413649387 +0000 UTC scheduleCompaction started at 979028
2016-04-01 01:21:47.930330666 +0000 UTC scheduleCompaction done at 979028

# AGENT2

2016-04-01 01:21:38.433747 I | store.index: compact 979028
2016-04-01 01:21:38.583915861 +0000 UTC scheduleCompaction started at 979028
2016-04-01 01:21:43.779307182 +0000 UTC scheduleCompaction done at 979028

2016-04-01 01:21:43.980724 I | storage: restore compact to 979028

# AGENT3

2016-04-01 01:21:38.402919 I | store.index: compact 979028
2016-04-01 01:21:38.635380414 +0000 UTC scheduleCompaction started at 979028
2016-04-01 01:21:45.163397 I | store.index: compact 979028
2016-04-01 01:21:45.386101 I | storage: resume scheduled compaction at 979028
2016-04-01 01:21:45.386323638 +0000 UTC scheduleCompaction started at 979028
2016-04-01 01:21:47.921488588 +0000 UTC scheduleCompaction done at 979028

Why don't we add an interface like this to directly query the backend?

// getCompactMainRev returns the last compact main revision.
func (s *store) getCompactMainRev() int64 {
	tx := s.b.BatchTx()
	tx.Lock()
	_, values := tx.UnsafeRange(metaBucketName, finishedCompactKeyName, nil, 1)
	for _, val := range values {
		rev := bytesToRev(val)
		tx.Unlock()
		return rev.main
	}
	tx.Unlock()
	return -1
}

Or could we fix the checkCompact function?
Thanks!
(Btw, the code that got this error was this branch https://github.com/gyuho/etcd/commit/13543fbc246ec40f5c48400c942b791b55ebd733)

@gyuho that branch doesn't seem to have https://github.com/heyitsanthony/etcd/commit/5017f157f33e93b3fac0250e08edf79673b8c623 which I believe will fix the problem.
I don't understand what that direct query achieves-- how does it guarantee the compact is physically complete?

@heyitsanthony Oh I missed that patch. Sorry! Let me retry.

@heyitsanthony Nvm. You are right. I thought just querying backend of each machine.
But getting compact revision from Watch and doing the force commit seem like the correct way.

@heyitsanthony @xiang90 We are getting much less of this failures now but I still see the same pattern:

checkCompaction thinks the compaction is done
But still compaction is in progress
Compare hash and gets the inconsistent hash values

2016-04-01 06:11:58.502771 I | etcd-tester: [round#26] compacting storage at 6538640 (current revision 6548640)
2016-04-01 06:12:05.206707 I | etcd-tester: <IP_ADDRESS>:2379 is already compacted with 6538640 (rpc error: code = 11 desc = "etcdserver: storage: required revision has been compacted")
2016-04-01 06:12:05.229450 I | etcd-tester: <IP_ADDRESS>:2379 is already compacted with 6538640 (rpc error: code = 11 desc = "etcdserver: storage: required revision has been compacted")
2016-04-01 06:12:05.229490 I | etcd-tester: [round#26] compacted storage
2016-04-01 06:12:05.229501 I | etcd-tester: [round#26] check compaction at 6538640

2016-04-01 06:12:05.386005 I | etcd-tester: [round#26] confirmed compaction at 6538640

2016-04-01 06:12:05.436721 I | etcd-tester: [round#27 case#0] start failure kill all members

2016-04-01 06:12:05.436774 I | etcd-tester: [round#27 case#0] start injecting failure...
2016-04-01 06:12:05.488071 I | etcd-tester: [round#27 case#0] injected failure
2016-04-01 06:12:05.488106 I | etcd-tester: [round#27 case#0] start recovering failure...
2016-04-01 06:12:07.558630 I | etcd-tester: [round#27 case#0] recovered failure
2016-04-01 06:12:07.561366 I | etcd-tester: [round#27 case#0] canceling the stressers...
2016-04-01 06:12:07.567095 I | etcd-tester: [round#27 case#0] canceled stressers
2016-04-01 06:12:07.567122 I | etcd-tester: [round#27 case#0] checking current revisions...
2016-04-01 06:12:08.702859 I | etcd-tester: [round#27 case#0] all members are consistent with current revisions
2016-04-01 06:12:08.702905 I | etcd-tester: [round#27 case#0] checking current storage hashes...
2016-04-01 06:12:08.702937 I | etcd-tester: [round#27 case#0] checking current storage hashes failed (map[<IP_ADDRESS>:2379:3700642058 <IP_ADDRESS>:2379:3700642058 <IP_ADDRESS>:2379:3613485073])
2016-04-01 06:12:08.702970 I | etcd-tester: [round#27 case#0] cleaning up...

AGENT1
2016-04-01 06:11:58.556978 I | store.index: compact 6538640
2016-04-01 06:11:58.71211 compactMainRev started for 6538640
2016-04-01 06:12:05.16579 compactMainRev done for 6538640 = took 6.453629728s
2016-04-01 06:12:05.926897 I | storage: restore compact to 6538640

AGENT2
2016-04-01 06:11:58.620397 I | store.index: compact 6538640
2016-04-01 06:11:58.77704 compactMainRev started for 6538640
2016-04-01 06:12:05.19740 compactMainRev done for 6538640 = took 6.420343129s
2016-04-01 06:12:06.039147 I | storage: restore compact to 6538640

AGENT3
2016-04-01 06:11:58.529688 I | store.index: compact 6538640
2016-04-01 06:11:58.68739 compactMainRev started for 6538640
2016-04-01 06:12:06.865892 I | store.index: compact 6538640
2016-04-01 06:12:07.032407 I | storage: resume scheduled compaction at 6538640
2016-04-01 06:12:07.03265 compactMainRev started for 6538640

AGENT1 and AGENT2 are fine, but AGENT3 hasn't finished the compaction yet.

I think we should update compact revision when we actually finish the compaction:
https://github.com/coreos/etcd/blob/master/storage/kvstore.go#L248
// storage/kvstore.go
func (s *store) Compact(rev int64) (<-chan struct{}, error) {
	s.mu.Lock()
	defer s.mu.Unlock()
	if rev <= s.compactMainRev {
		ch := make(chan struct{})
		s.fifoSched.Schedule(func(context.Context) { close(ch) })
		return ch, ErrCompacted
	}
	if rev > s.currentRev.main {
		return nil, ErrFutureRev
	}

	start := time.Now()

	s.compactMainRev = rev
       ...

Instead, how about:
https://github.com/coreos/etcd/blob/master/storage/kvstore_compaction.go#L46-L52
// kvstore_compaction.go
		if len(keys) < int(batchsize) {
			rbytes := make([]byte, 8+1+8)
			revToBytes(revision{main: compactMainRev}, rbytes)
			tx.UnsafePut(metaBucketName, finishedCompactKeyName, rbytes)
			tx.Unlock()
			s.compactMainRev = compactMainRev
			return
		}

I think we should update compact revision when we actually finish the compaction:

No. We should not. Compact is a barrier, it should be set as long as the index is compacted. It should not wait for the background cleaning up to finish.

@xiang90 You are right.

Full logs with snapshot parts:
AGENT1
2016-04-01 06:11:58.556978 I | store.index: compact 6538640
2016-04-01 06:11:58.71211 compactMainRev started for 6538640
2016-04-01 06:12:02.861603 I | fileutil: purged file agent.etcd/member/snap/0000000000000085-0000000000605fce.snap successfully
2016-04-01 06:12:02.861685 I | fileutil: purged file agent.etcd/member/snap/0000000000000085-000000000060871e.snap successfully
2016-04-01 06:12:02.861755 I | fileutil: purged file agent.etcd/member/snap/0000000000000085-000000000060ae31.snap successfully
2016-04-01 06:12:02.861853 I | fileutil: purged file agent.etcd/member/snap/0000000000000087-000000000060d550.snap successfully
2016-04-01 06:12:02.862993 I | fileutil: purged file agent.etcd/member/snap/0000000000000087-000000000060fc97.snap successfully
2016-04-01 06:12:02.863040 I | fileutil: purged file agent.etcd/member/snap/0000000000000087-000000000061b91c.snap successfully
2016-04-01 06:12:02.863079 I | fileutil: purged file agent.etcd/member/snap/0000000000000088-000000000061e06a.snap successfully
2016-04-01 06:12:02.863120 I | fileutil: purged file agent.etcd/member/snap/0000000000000088-00000000006207c1.snap successfully
2016-04-01 06:12:02.863159 I | fileutil: purged file agent.etcd/member/snap/0000000000000088-0000000000622f12.snap successfully
2016-04-01 06:12:02.863201 I | fileutil: purged file agent.etcd/member/snap/0000000000000088-0000000000625647.snap successfully
2016-04-01 06:12:02.863241 I | fileutil: purged file agent.etcd/member/snap/0000000000000088-0000000000627da1.snap successfully
2016-04-01 06:12:02.863278 I | fileutil: purged file agent.etcd/member/snap/0000000000000088-000000000062a4b9.snap successfully
2016-04-01 06:12:05.16579 compactMainRev done for 6538640 = took 6.453629728s

AGENT2
2016-04-01 06:11:58.620397 I | store.index: compact 6538640
2016-04-01 06:11:58.77704 compactMainRev started for 6538640
2016-04-01 06:11:59.465328 I | etcdserver: start to snapshot (applied: 6556523, lastsnap: 6546499)
2016-04-01 06:11:59.496045 I | etcdserver: saved snapshot at index 6556523
2016-04-01 06:11:59.496235 I | etcdserver: compacted raft log at 6551523
2016-04-01 06:12:00.683526 I | etcdserver: start to snapshot (applied: 6566532, lastsnap: 6556523)
2016-04-01 06:12:00.704273 I | etcdserver: saved snapshot at index 6566532
2016-04-01 06:12:00.704456 I | etcdserver: compacted raft log at 6561532
2016-04-01 06:12:01.837983 I | etcdserver: start to snapshot (applied: 6576616, lastsnap: 6566532)
2016-04-01 06:12:01.870111 I | etcdserver: saved snapshot at index 6576616
2016-04-01 06:12:01.870314 I | etcdserver: compacted raft log at 6571616
2016-04-01 06:12:02.942801 I | etcdserver: start to snapshot (applied: 6586850, lastsnap: 6576616)
2016-04-01 06:12:02.949867 I | etcdserver: saved snapshot at index 6586850
2016-04-01 06:12:02.950033 I | etcdserver: compacted raft log at 6581850
2016-04-01 06:12:03.880659 I | etcdserver: start to snapshot (applied: 6596862, lastsnap: 6586850)
2016-04-01 06:12:03.898253 I | etcdserver: saved snapshot at index 6596862
2016-04-01 06:12:03.898444 I | etcdserver: compacted raft log at 6591862
2016-04-01 06:12:04.883628 I | etcdserver: start to snapshot (applied: 6606900, lastsnap: 6596862)
2016-04-01 06:12:04.906506 I | etcdserver: saved snapshot at index 6606900
2016-04-01 06:12:04.906657 I | etcdserver: compacted raft log at 6601900
2016-04-01 06:12:05.19740 compactMainRev done for 6538640 = took 6.420343129s

AGENT3
2016-04-01 06:11:58.529688 I | store.index: compact 6538640
2016-04-01 06:11:58.68739 compactMainRev started for 6538640
2016-04-01 06:11:59.669527 I | etcdserver: start to snapshot (applied: 6558396, lastsnap: 6548375)
2016-04-01 06:11:59.708530 I | etcdserver: saved snapshot at index 6558396
2016-04-01 06:11:59.708707 I | etcdserver: compacted raft log at 6553396
2016-04-01 06:12:00.897911 I | etcdserver: start to snapshot (applied: 6568398, lastsnap: 6558396)
2016-04-01 06:12:00.927406 I | etcdserver: saved snapshot at index 6568398
2016-04-01 06:12:00.927579 I | etcdserver: compacted raft log at 6563398
2016-04-01 06:12:01.940082 I | etcdserver: start to snapshot (applied: 6578440, lastsnap: 6568398)
2016-04-01 06:12:01.959195 I | etcdserver: saved snapshot at index 6578440
2016-04-01 06:12:01.959359 I | etcdserver: compacted raft log at 6573440
2016-04-01 06:12:02.954716 I | etcdserver: start to snapshot (applied: 6588482, lastsnap: 6578440)
2016-04-01 06:12:02.961548 I | etcdserver: saved snapshot at index 6588482
2016-04-01 06:12:02.961704 I | etcdserver: compacted raft log at 6583482
2016-04-01 06:12:03.907322 I | etcdserver: start to snapshot (applied: 6598485, lastsnap: 6588482)
2016-04-01 06:12:03.916077 I | etcdserver: saved snapshot at index 6598485
2016-04-01 06:12:03.916268 I | etcdserver: compacted raft log at 6593485
2016-04-01 06:12:04.057579 I | wal: segmented wal file agent.etcd/member/wal/000000000000000f-000000000064b47d.wal is created
2016-04-01 06:12:04.900570 I | etcdserver: start to snapshot (applied: 6608516, lastsnap: 6598485)
2016-04-01 06:12:04.919677 I | etcdserver: saved snapshot at index 6608516
2016-04-01 06:12:04.919883 I | etcdserver: compacted raft log at 6603516
2016-04-01 06:12:05.428044 N | osutil: received terminated signal, shutting down...
2016-04-01 06:12:05.467113 I | etcdmain: etcd Version: 2.3.0+git

Tried @heyitsanthony 's patch https://github.com/coreos/etcd/compare/master...heyitsanthony:compact-barrier-restore and got two more failures:
2016-04-01 19:11:44.520125 I | etcd-tester: [round#60] compacting storage at 14241563 (current revision 14251563)
2016-04-01 19:11:50.625468 I | etcd-tester: <IP_ADDRESS>:2379 is already compacted with 14241563 (rpc error: code = 11 desc = etcdserver: storage: required revision has been compacted)
2016-04-01 19:11:50.664434 I | etcd-tester: <IP_ADDRESS>:2379 is already compacted with 14241563 (rpc error: code = 11 desc = etcdserver: storage: required revision has been compacted)
2016-04-01 19:11:50.664475 I | etcd-tester: [round#60] compacted storage
2016-04-01 19:11:50.664488 I | etcd-tester: [round#60] check compaction at 14241563
2016-04-01 19:11:50.876080 I | etcd-tester: [round#60] confirmed compaction at 14241563
2016-04-01 19:11:51.006131 I | etcd-tester: [round#61 case#0] start failure kill all members
2016-04-01 19:11:51.006172 I | etcd-tester: [round#61 case#0] start injecting failure...
2016-04-01 19:11:51.072275 I | etcd-tester: [round#61 case#0] injected failure
2016-04-01 19:11:51.072315 I | etcd-tester: [round#61 case#0] start recovering failure...
2016-04-01 19:11:53.154416 I | etcd-tester: [round#61 case#0] recovered failure
2016-04-01 19:11:53.154462 I | etcd-tester: [round#61 case#0] canceling the stressers...
2016-04-01 19:11:53.158901 I | etcd-tester: [round#61 case#0] canceled stressers
2016-04-01 19:11:53.158920 I | etcd-tester: [round#61 case#0] checking current revisions...
2016-04-01 19:11:54.291646 I | etcd-tester: [round#61 case#0] all members are consistent with current revisions
2016-04-01 19:11:54.291681 I | etcd-tester: [round#61 case#0] checking current storage hashes...
2016-04-01 19:11:54.291717 I | etcd-tester: [round#61 case#0] checking current storage hashes failed (map[<IP_ADDRESS>:2379:793214826 <IP_ADDRESS>:2379:1675228693 <IP_ADDRESS>:2379:793214826])
2016-04-01 19:11:54.291744 I | etcd-tester: [round#61 case#0] cleaning up...
2016-04-01 19:11:56.969149 I | etcd-tester: [round#61 case#1] start failure kill majority of the cluster
2016-04-01 19:11:56.969189 I | etcd-tester: [round#61 case#1] start injecting failure...
2016-04-01 19:11:56.997935 I | etcd-tester: [round#61 case#1] injected failure

AGENT1
2016-04-01 19:11:44.466881 I | store.index: compact 14241563
2016-04-01 19:11:44.67156 compactMainRev started for 14241563
2016-04-01 19:11:45.500889 I | etcdserver: start to snapshot (applied: 14264338, lastsnap: 14254326)
2016-04-01 19:11:45.533238 I | etcdserver: saved snapshot at index 14264338
2016-04-01 19:11:45.533393 I | etcdserver: compacted raft log at 14259338
2016-04-01 19:11:46.835094 I | etcdserver: start to snapshot (applied: 14274351, lastsnap: 14264338)
2016-04-01 19:11:46.855916 I | etcdserver: saved snapshot at index 14274351
2016-04-01 19:11:46.856148 I | etcdserver: compacted raft log at 14269351
2016-04-01 19:11:48.034693 I | etcdserver: start to snapshot (applied: 14284356, lastsnap: 14274351)
2016-04-01 19:11:48.058866 I | etcdserver: saved snapshot at index 14284356
2016-04-01 19:11:48.059177 I | etcdserver: compacted raft log at 14279356
2016-04-01 19:11:49.121388 I | etcdserver: start to snapshot (applied: 14294401, lastsnap: 14284356)
2016-04-01 19:11:49.131894 I | etcdserver: saved snapshot at index 14294401
2016-04-01 19:11:49.132094 I | etcdserver: compacted raft log at 14289401
2016-04-01 19:11:50.180214 I | etcdserver: start to snapshot (applied: 14304429, lastsnap: 14294401)
2016-04-01 19:11:50.198723 I | etcdserver: saved snapshot at index 14304429
2016-04-01 19:11:50.199137 I | etcdserver: compacted raft log at 14299429
2016-04-01 19:11:50.52823 compactMainRev done for 14241563 = took 5.856620403s
2016-04-01 19:11:50.528292 I | storage: acknowledging compaction on Compact 14241563
2016-04-01 19:11:50.555797 I | storage: init compactBarrier 14241563
2016-04-01 19:11:50.556278 I | storage: acknowledging compaction on compactBarrier 14241563
2016-04-01 19:11:50.572014 I | storage: init compactBarrier 14241563
2016-04-01 19:11:50.572567 I | storage: acknowledging compaction on compactBarrier 14241563
2016-04-01 19:11:50.933142 N | osutil: received terminated signal, shutting down...
2016-04-01 19:11:50.936344 E | rafthttp: failed to read a47b7c2cb25ebdeb on stream MsgApp v2 (net/http: request canceled)
2016-04-01 19:11:50.936382 I | rafthttp: the connection with a47b7c2cb25ebdeb became inactive
2016-04-01 19:11:50.937054 E | rafthttp: failed to read bbea13b12cce02cd on stream MsgApp v2 (net/http: request canceled)
2016-04-01 19:11:50.937078 I | rafthttp: the connection with bbea13b12cce02cd became inactive

AGENT2
2016-04-01 19:11:44.559100 I | store.index: compact 14241563
2016-04-01 19:11:44.77229 compactMainRev started for 14241563
2016-04-01 19:11:49.284896 I | fileutil: purged file agent.etcd/member/snap/000000000000014a-0000000000d665ed.snap successfully
2016-04-01 19:11:49.284980 I | fileutil: purged file agent.etcd/member/snap/000000000000014a-0000000000d68d00.snap successfully
2016-04-01 19:11:49.285063 I | fileutil: purged file agent.etcd/member/snap/000000000000014a-0000000000d6b424.snap successfully
2016-04-01 19:11:49.285123 I | fileutil: purged file agent.etcd/member/snap/000000000000014a-0000000000d6db35.snap successfully
2016-04-01 19:11:49.285178 I | fileutil: purged file agent.etcd/member/snap/000000000000014c-0000000000d7024e.snap successfully
2016-04-01 19:11:49.285236 I | fileutil: purged file agent.etcd/member/snap/000000000000014e-0000000000d72988.snap successfully
2016-04-01 19:11:49.285294 I | fileutil: purged file agent.etcd/member/snap/000000000000014e-0000000000d7509c.snap successfully
2016-04-01 19:11:49.285350 I | fileutil: purged file agent.etcd/member/snap/000000000000014e-0000000000d777fe.snap successfully
2016-04-01 19:11:49.285407 I | fileutil: purged file agent.etcd/member/snap/000000000000014e-0000000000d79f1f.snap successfully
2016-04-01 19:11:49.285462 I | fileutil: purged file agent.etcd/member/snap/000000000000014e-0000000000d7c63e.snap successfully
2016-04-01 19:11:49.285524 I | fileutil: purged file agent.etcd/member/snap/000000000000014e-0000000000d7ed85.snap successfully
2016-04-01 19:11:49.285578 I | fileutil: purged file agent.etcd/member/snap/000000000000014e-0000000000d814b3.snap successfully
2016-04-01 19:11:50.646012 I | storage: init compactBarrier 14241563
2016-04-01 19:11:50.666550 I | storage: init compactBarrier 14241563
2016-04-01 19:11:51.033670 E | rafthttp: failed to write 1eedd56b875de77b on stream MsgApp v2 (write tcp <IP_ADDRESS>:2380-><IP_ADDRESS>:55153: write: connection reset by peer)
2016-04-01 19:11:51.033710 I | rafthttp: the connection with 1eedd56b875de77b became inactive
2016-04-01 19:11:51.057960 N | osutil: received terminated signal, shutting down...
2016-04-01 19:11:51.058619 W | rafthttp: failed to process raft message (raft: stopped)
2016-04-01 19:11:51.058642 W | rafthttp: failed to process raft message (raft: stopped)
2016-04-01 19:11:51.058674 W | rafthttp: failed to process raft message (raft: stopped)
2016-04-01 19:11:51.058691 W | rafthttp: failed to process raft message (raft: stopped)
2016-04-01 19:11:51.058703 W | rafthttp: failed to process raft message (raft: stopped)
2016-04-01 19:11:51.059276 E | rafthttp: failed to read bbea13b12cce02cd on stream MsgApp v2 (net/http: request canceled)
2016-04-01 19:11:51.059293 I | rafthttp: the connection with bbea13b12cce02cd became inactive
2016-04-01 19:11:51.059749 I | storage: resched compactBarrier 14241563
2016-04-01 19:11:51.059785 I | storage: stopped
2016-04-01 19:11:51.059797 I | storage: resched compactBarrier 14241563
2016-04-01 19:11:51.059805 I | storage: stopped
2016-04-01 19:11:51.059814 I | storage: resched compactBarrier 14241563
2016-04-01 19:11:51.059825 I | storage: stopped

AGENT3
2016-04-01 19:11:44.494049 I | store.index: compact 14241563
2016-04-01 19:11:44.73378 compactMainRev started for 14241563
2016-04-01 19:11:44.763739 I | etcdserver: start to snapshot (applied: 14258177, lastsnap: 14248152)
2016-04-01 19:11:44.821346 I | etcdserver: saved snapshot at index 14258177
2016-04-01 19:11:44.822773 I | etcdserver: compacted raft log at 14253177
2016-04-01 19:11:46.031539 I | etcdserver: start to snapshot (applied: 14268182, lastsnap: 14258177)
2016-04-01 19:11:46.057736 I | etcdserver: saved snapshot at index 14268182
2016-04-01 19:11:46.057909 I | etcdserver: compacted raft log at 14263182
2016-04-01 19:11:47.280384 I | etcdserver: start to snapshot (applied: 14278273, lastsnap: 14268182)
2016-04-01 19:11:47.300753 I | etcdserver: saved snapshot at index 14278273
2016-04-01 19:11:47.300891 I | etcdserver: compacted raft log at 14273273
2016-04-01 19:11:48.451399 I | etcdserver: start to snapshot (applied: 14288313, lastsnap: 14278273)
2016-04-01 19:11:48.469618 I | etcdserver: saved snapshot at index 14288313
2016-04-01 19:11:48.469806 I | etcdserver: compacted raft log at 14283313
2016-04-01 19:11:49.510274 I | etcdserver: start to snapshot (applied: 14298329, lastsnap: 14288313)
2016-04-01 19:11:49.526698 I | etcdserver: saved snapshot at index 14298329
2016-04-01 19:11:49.526881 I | etcdserver: compacted raft log at 14293329
2016-04-01 19:11:50.583890 I | storage: init compactBarrier 14241563
2016-04-01 19:11:50.619244 I | storage: init compactBarrier 14241563
2016-04-01 19:11:50.626537 I | etcdserver: start to snapshot (applied: 14308334, lastsnap: 14298329)
2016-04-01 19:11:50.638105 I | etcdserver: saved snapshot at index 14308334
2016-04-01 19:11:50.638329 I | etcdserver: compacted raft log at 14303334
2016-04-01 19:11:50.81812 compactMainRev done for 14241563 = took 6.084309811s
2016-04-01 19:11:50.818163 I | storage: acknowledging compaction on Compact 14241563
2016-04-01 19:11:50.818180 I | storage: acknowledging compaction on compactBarrier 14241563
2016-04-01 19:11:50.818191 I | storage: acknowledging compaction on compactBarrier 14241563

What's happening is storage: init compactBarrier 14241563 gets called but we check hash before this gets finished. Could you push the PR later from that branch with comments?
Currently I do not understand well enough about what the patch does. But still a lot less failures than before.
Thanks!

Data and logs https://console.cloud.google.com/storage/browser/etcd-issues-4914

@gyuho I found a bug in that branch (now fixed) but it seems unrelated to the failures.
Judging by the logs, the tester is receiving a compaction ack from agent-2 but the agent-2 etcd doesn't have a message about acknowledging the compaction. If there's no ack message, agent-2 etcd must not be closing the channel. If the channel doesn't close, then the RPC shouldn't ack. Not sure what is going on with that...

Oops. I see what's happening... Compaction is eating the channel.


Colliding issue with some files.

I have synced the repo once again recently and their are two file which are conflicting with each other, one is 'tushar.md' and another one is 'TUSHAR.md' below is the terminal snap to show the error.

And when I am trying to update one file another one gets automatically updated too and in local machine only one file is visible

You can see only one file is present.

'Possible solution to solve this issue would be using a file naming like 'Firstname_lastname.md'

@johnjacobkenny Please check this.

Can you remame the upper case file and raise a PR

@proful I renamed the upper case file to solve this issue.

I am closing this issue as it is solved now.

Thanks @pranavgoel29 for helping out. I'm guessing that you are on windows. Windows treats files with the same characters as one file. It is not case sensitive. However on *nix machines these are two separate files. That is what happened here.
@piratelicorne Could add this example for our FAQ 🙂

@johnjacobkenny It happened for Mac users too.

Oh, then I must be wrong about the reason. 😂 If anyone else knows what happened, please comment so that it's documented.

The reason is right but Windows and Mac both do that because they both are case insensitive.

I thought it was a Windows issue too, but when I clone it in a Mac, the message of "files collided" appeared, I honestly don't know why. 🧐 it's true that in a Mac you can have 2 different files with the same name but with a difference of upper and lower case, but for some reason when it's downloaded from github, it doesn't recognize as 2 diff files 🤷🏽♀
So it's better to avoid it.


racket: 7.9 -> 8.0

Motivation for this change
Things done
Note: The wrapped binary mzscheme does not work (aborts with a core dump): It tries to read a certain portion of $0, but this fails because $0 points to the much shorter wrapper script instead of the larger true binary (and even if the wrapper script would be longer, the bytes it would read from the wrapper script would probably not be what mzscheme is expecting). This problem is not a regression, but occurs also with the current nixpkgs version of racket. A solution is to change exec -a "$0" in the wrapper script to exec "$0". Does anyone know how to do this in a non-hacky way? The binaries racket and drracket work just fine.

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

mzscheme tries to read some bytes from the binary in $0 which in our case does not match the real binary name. If we remove the -a then the binary name is wrong. I think this is an upstream bug which needs some patching. The file is https://github.com/racket/racket/blob/v8.0/racket/src/bc/main.c or some included file but I don't know where it tries to read it. It would be cool if we could replace the read of $0 with a better way or just hardcode the binary instead of removing the exec -a.

Thank you for the analysis, @SuperSandro2000! I opened an upstream issue: https://github.com/racket/racket/issues/3685
And thank you for the confirmation, @mohe2015 :-)

@GrahamcOfBorg build racket-minimal

My c is terrible but I think we can just patch https://github.com/racket/racket/blob/master/racket/src/cs/c/main.c#L434 from   char *exec_file = argv[0], *run_file = NULL; to   char *exec_file = "mzscheme", *run_file = NULL;

I thought so too, but the problem is that not only mzscheme, but also mzred is impacted from the problem. So hardcoding mzscheme is not going to work...


Compare Tikhonet to SCORE

Goal : establish a comparison between Tikhonet vs Tikhonet+Shape Constraint vs Sparse Deconvolution vs Sparse Deconvolution+Shape Constraint (SCORE)

[x] extract a data set for the test.
[ ] run tests on each method.
[ ] set metrics.
[ ] analyse results.

As a first approach, we can start by extracting 2048 images (by ideally setting seeds for Numpy and TensorFlow random generators) and saving them. However, on the long run, it would be better to have more galaxies.
By doing so, we would be able to compare different approaches on the exact same objects.

For the time being the dataset that is generated has been filtered by removing the galaxies which window estimation failed. These galaxies usually correspond to unresolved galaxies which shape study is not relevant (for more details see issue 12). The filtering processing removes 33-40% of the galaxies.
In this notebook, an initial batch of 128*24 = 3072 is generated. 40% of the galaxies have a window failure which give a finale size of roughly 1840 galaxy.


edited to use Persona

@nearlyjuly, submitted a PR to your branch. Please review and approve!

Merged separately: https://github.com/TBD54566975/dwn-sdk-js/commit/3d6b8106172f83a0c5216dc5571f46d0ff096336


MudSplashScreen: Displays a Splash Screen On Initial Page Load

This update adds a new MudSplashScreen component which displays custom content while the actual page loads in the background.  Then, after a delay specified via the DelaySeconds property, the splash screen is smoothly transitioned into the fully loaded page.
Description
This component is typically used in the MainLayout.razor component and can be used as a wrapper around existing MudLayout components.  Use the DelaySeconds to control how long the splash screen is displayed before smoothly fading into the actual page.  Use the SplashContent fragment to display a full-screen SVG or other content, then use the ChildContent element to contain your MudLayout and other layout content, like this:
<MudSplashScreen DelaySeconds="2">
    <SplashContent>
        <svg height="80%" viewBox="0 0 1404 1404" class="docs-mudblazor-logo" xmlns="http://www.w3.org/2000/svg">
            <path d="M406.89,219.14c-51.85,6.86-134.7-55.37-142.65-115.43-7.95-60.07,62.01-95.23,113.86-102.09,51.85-6.86,112.62,11.94,120.57,72.01,7.95,60.07-39.93,138.66-91.78,145.52Z" style="fill:#7e6fff;"></path>
        </svg>
    </SplashContent>
    <ChildContent>
        <MudLayout>
            @Body
        </MudLayout>
    </ChildContent>
</MudSplashScreen>

How Has This Been Tested?
This is currently a draft Pull Request to collect feedback from MudBlazor contributors.
Types of changes

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

TODO: High-quality GIF of splash screen transition to page content.

Checklist:

[X] The PR is submitted to the correct branch (dev).
[X] My code follows the code style of this project.
[ ] I've added relevant tests.

@henon @ScarletKuro Here's a draft PR continuing Discussion 8408 about a new MudSplashScreen component.  I'd like some guidance on how best to document this component since it's a bit outside of regular components.   I had some questions when you get a chance:

Does it make sense that this is more of a "layout component" than a "regular component"?   It seemed so to me, so I added documentation to LayoutsPage.razor, but I can document it differently if you prefer.
A working example is a bit of a challenge since the component is designed to display on the initial page load, which makes it difficult to show in a classic example page that people navigate to.  Would an animated GIF of a page transition be enough?

Thanks in advance for your feedback!

2. Would an animated GIF of a page transition be enough?

Sure.

Does it make sense that this is more of a "layout component" than a "regular component"?   It seemed so to me, so I added documentation to LayoutsPage.razor, but I can document it differently if you prefer.

I am undecided on that, but I have no arguments against your choice so let's leave it like that. Just make sure it will be found when searching the docs via the search box.

Code wise looking good to me, maybe the suppressed VSTHRD110 is little annoying,
I wonder if we just do _ = Task.Run(...) showing the intentions to discard, will it still complain and require VSTHRD110 pragma?

Code wise looking good to me, maybe the suppressed VSTHRD110 is little annoying, I wonder if we just do _ = Task.Run(...) showing the intentions to discard, will it still complain and require VSTHRD110 pragma?

Sounds good, I changed that to a discard.

Perhaps MudSplashScreen can be applied to the Docs at start-up, showing the MudBlazor icon?

Perhaps MudSplashScreen can be applied to the Docs at start-up, showing the MudBlazor icon?

Good call!  It looks like the splash screen is currently done via code in docs.js with a couple custom divs in _Host.cshtml.  I'll take a crack at refactoring it into MainLayout.razor soon.

Perhaps MudSplashScreen can be applied to the Docs at start-up, showing the MudBlazor icon?

Good call! It looks like the splash screen is currently done via code in docs.js with a couple custom divs in _Host.cshtml. I'll take a crack at refactoring it into MainLayout.razor soon.

I think youre misunderstanding how the blazor app is booted.  docs.js is nothing to do with the load.
Here is where the app boots.
https://github.com/MudBlazor/MudBlazor/blob/27e54b366ee54eca8b703b5a9e3468669b7a7c59/src/MudBlazor.Docs.WasmHost/Pages/_Host.cshtml#L91
Its a div with id 'app' that the framework replaces with the app after all the resources have been downloaded.
Your splash screen will come after the logo and app has already loaded just further delaying the docs starting

Yeah, you can't use components in the WASM loading screen, since your application is not even initialized.

I am concerned there is a fundamental misunderstanding of how things work with this component.
Therefore, in order to get this merged I would like to see a sample app with it in operation.  I personally dont see a need as once the app is loaded page load is in the order of ms.  The best way to load resources that might delay a page loading in in OnInitialisedAsync where you can kick off a long running job have the page render straight away and it will rerender when the long running job changes the app state

Thanks for sharing your concerns.   I did a commit just now to implement the splash screen (wrapped around <MudLayout>) for the main layout pages so you can see it in action and make a decision.   What you should see is a splash on the initial load but not on any navigation after the transition completes.

Perhaps MudSplashScreen can be applied to the Docs at start-up, showing the MudBlazor icon?

Good call! It looks like the splash screen is currently done via code in docs.js with a couple custom divs in _Host.cshtml. I'll take a crack at refactoring it into MainLayout.razor soon.

I think youre misunderstanding how the blazor app is booted. docs.js is nothing to do with the load. Here is where the app boots.
https://github.com/MudBlazor/MudBlazor/blob/27e54b366ee54eca8b703b5a9e3468669b7a7c59/src/MudBlazor.Docs.WasmHost/Pages/_Host.cshtml#L91
Its a div with id 'app' that the framework replaces with the app after all the resources have been downloaded.
Your splash screen will come after the logo and app has already loaded just further delaying the docs starting

I think I understand what you're saying, that my approach wouldn't display until later, and that the current way allows the logo to be showed immediately for WASM apps.   I'm happy to roll that back; perhaps the Server project is the only one which could benefit from it.

I think I understand what you're saying, that my approach wouldn't display until later, and that the current way allows the logo to be showed immediately for WASM apps. I'm happy to roll that back; perhaps the Server project is the only one which could benefit from it.

The https://mudblazor.com/ is a WASM project, we do not use Server. The Server is only for test purpose locally.

Too bad regarding WASM. Please make sure to mention this in the Docs, to prevent users reporting it as a bug or so.

I think I understand what you're saying, that my approach wouldn't display until later, and that the current way allows the logo to be showed immediately for WASM apps. I'm happy to roll that back; perhaps the Server project is the only one which could benefit from it.

The https://mudblazor.com/ is a WASM project, we do not use Server. The Server is only for test purpose locally.

I understand now.  Alright, well, I've rolled back all WASM changes.  Thanks again for setting me straight.

I downloaded the PR and it ran the docs via the hostedwasm project.
As expected, there is now a blank screen while loading followed by a logo from MudSplashScreen for 2s which delays viewing the docs. edit (now removed)
For Server the page load is pretty instantaneous anyway so MudSplashScreen also injects a 2s delay.

@jperson2000 Could you also remove it from Server project please.  We use it for debugging and MudSplashScreen is injecting a 2s delay which slows down the inner dev loop. 🙏

And src/MudBlazor.Docs/Shared/DocsLayout.razor is shared by both server and wasm so can you revert that aswell

Same for src/MudBlazor.Docs/Shared/LandingLayout.razor

And src/MudBlazor.Docs/Shared/DocsLayout.razor is shared by both server and wasm so can you revert that aswell

Ok, thanks for taking the time to pull the branch down and kick the tires.  I'll get that reverted when I'm back at my desk tomorrow morning.
Does this PR have any value at this point, given that the component would only work for Server-based projects, and would probably only cause confusion for WASM projects?  It doesn't seem as good an idea to me now as I initially thought.
I see that there's a "MudExtensions" project in the works, so perhaps this effort might be better suited there vs. the core library, as a shared snippet of Blazor code.

And src/MudBlazor.Docs/Shared/DocsLayout.razor is shared by both server and wasm so can you revert that aswell

Ok, thanks for taking the time to pull the branch down and kick the tires. I'll get that reverted when I'm back at my desk tomorrow morning.
Does this PR have any value at this point, given that the component would only work for Server-based projects, and would probably only cause confusion for WASM projects? It doesn't seem as good an idea to me now as I initially thought.
I see that there's a "MudExtensions" project in the works, so perhaps this effort might be better suited there vs. the core library, as a shared snippet of Blazor code.

@jperson2000  I'm still open to seeing the use case. Is it more of a marketing type splash or is it designed to allow work to complete?  I particularly want to dig into can work be done while the splash screen is showing or is it just a screen for 2s followed by the actual page.  I probably need to brush up on my blazor lifecycle methods or maybe @ScarletKuro can answer that.

And src/MudBlazor.Docs/Shared/DocsLayout.razor is shared by both server and wasm so can you revert that aswell

Ok, thanks for taking the time to pull the branch down and kick the tires. I'll get that reverted when I'm back at my desk tomorrow morning.
Does this PR have any value at this point, given that the component would only work for Server-based projects, and would probably only cause confusion for WASM projects? It doesn't seem as good an idea to me now as I initially thought.
I see that there's a "MudExtensions" project in the works, so perhaps this effort might be better suited there vs. the core library, as a shared snippet of Blazor code.

@jperson2000 I'm still open to seeing the use case. Is it more of a marketing type splash or is it designed to allow work to complete? I particularly want to dig into can work be done while the splash screen is showing or is it just a screen for 2s followed by the actual page. I probably need to brush up on my blazor lifecycle methods or maybe @ScarletKuro can answer that.

Yes, it would most likely be a marketing-type splash to show an organization's logo.  I currently use this code in a Blazor Server project where some API calls are made to populate a dashboard, and the splash allows a smooth transition into a fully loaded page.  The actual page initialization currently does complete in the background by way of the OnAfterRenderAsync method starting -- but not awaiting -- a task to wait the two seconds before performing the CSS page transition.  If that task were awaited, then the splash would wait two seconds and then start initializing the actual page, which wouldn't be as smooth.
If you run the MudBlazor.Docs.Server project then you can see it in action as a demo.  Try running the project, navigating to any component, then F5 to reload the page to see the transition effect.

Ok so your starting your api calls in OnInitializedAsync but you dont want the layout shifting as it loads?

Ok so your starting your api calls in OnInitializedAsync but you dont want the layout shifting as it loads?

That's exactly right; the splash hides the brief moment where MudChart and MudTables are waiting for data via API calls made during OnInitializedAsync.  So, to me, the value is 50% the smoothness of fading into a fully loaded page, and 50% the branding of our company logo when people first enter the site.

OK I think we need to be careful about advocating this in a shared layout. Sounds more like a page specific requirement but maybe I need to sleep on it :-)

I feel like this would fit much better as an extension instead of in the core library

I feel like this would fit much better as an extension instead of in the core library like you mentioned

Agreed.  I sure appreciate everyone taking the time to look everything over and review!  I'll work on adding an extension as suggested, and will close this PR.

Thanks a lot for the work, great to see new ideas!

@jperson2000 Thank you for offering nonetheless. And once you made it available as an extension you may post a link here so people can find it if they stumble on this PR.


Measuring forces in tendons

Hello,
I want to measure the tension in a tendon attached to an otherwise free body. In lieu of a tendonfrc sensor, I'm trying to use force sensors at the tendon attachment sites, with dummy bodies containing the sites.
I expect to see the same force reading from both sensors, with opposite signs, but I'm getting 0 output. I've tried a few configurations and cannot manage to read tendon forces at all by this method. I have obviously misunderstood something.

<mujoco>
    <option>
        <flag gravity="enable"/>
    </option>

    <default>
        <site type="sphere" rgba="1 0 0 1" size="0.005"/>
        <tendon rgba="0 1 0 1" stiffness="500" damping="10"/>
    </default>

    <visual>
        <headlight diffuse=".7 .7 .7"/>
    </visual>

    <worldbody>
        <body name="slidebody" pos ="0 0 0">
            <joint name="slide" type="slide" axis="0 0 1" armature="1" damping="100" range="-0.2 0.2" limited="true"/>
            <inertial mass="0.01" pos="0 0 0" diaginertia="1 1 1"/>
            <body name="originbody" pos="0 0 0">
                <site name="origin0" pos="0 0 0"/>
            </body>
        </body>
        <body name="massbody" pos="0 0 -0.3">
            <freejoint/>
            <geom name="massgeom" type="box" size="0.05 0.05 0.05" pos="0 0 0" mass="1"/>
            <body name="insertionbody" pos="0 0 0">
                <site name="insertion0" pos="0 0 0.05"/>
            </body>
        </body>
    </worldbody>

    <tendon>
        <spatial name="rope0" springlength="0 0.25">
            <site site="origin0"/>
            <site site="insertion0"/>
        </spatial>
    </tendon>

    <sensor>
        <force name="tension0" site="origin0"/>
        <force name="tension1" site="insertion0"/>
    </sensor>

    <actuator>
        <position name="verticalpos" joint="slide" kp="10000" />
    </actuator>

</mujoco>

The nesting works as expected in the following example with no tendon:
<mujoco>

    <visual>
            <headlight diffuse=".7 .7 .7"/>
    </visual>

    <worldbody>
        <body name="fixed body">
            <body name="dummy body">
                <site name="force1"/>
                <body name="heavybody">
                    <inertial mass="1" diaginertia="1 1 1" pos="0 0 0"/>
                    <site name="force2"/>
                </body>
            </body>
        </body>
    </worldbody>

    <sensor>
        <force name="f1" site="force1"/>
        <force name="f2" site="force2"/>
    </sensor>

</mujoco>

Thanks for your reply - be good to hear what you conclude.

You have no misunderstanding and your expectations are valid.

^ I'm going to get this on a teeshirt

Still not fixed, but the documentation at least acknowledges the bug.
Hopefully we'll get to this soon.

@yuvaltassa, thanks for the update. Do you know when we might expect a fix? In the meantime, I have a workaround that others may find useful. Does this workaround look reasonable?
Rather than attaching a tendon endpoint directly to a body B, I attach it instead to a "mounting body" M, which is a free body that gets welded to B. Now when you measure the forces acting on B, you measure the force due to the weld constraint, rather than (trying to) measure the force from the tendon.
You have to tune the inertial properties of the free bodies and the solver parameters of the weld, but otherwise it seems to work fine. Note that, in the example below, sensordata[2] == 9.996 but sensordata[5] == -9.8. This is because the two mounting bodies each have mass 0.01.
<mujoco>
    <option gravity="0 0 -9.8">
        <flag gravity="enable"/>
    </option>

    <default>
        <site type="sphere" rgba="1 0 0 1" size="0.005"/>
        <tendon rgba="0 1 0 1" stiffness="500" damping="10"/>
    </default>

    <visual>
        <headlight diffuse=".7 .7 .7"/>
    </visual>

    <worldbody>
        <body name="slidebody" pos ="0 0 0">
            <joint name="slide" type="slide" axis="0 0 1" armature="1" damping="100" range="-0.2 0.2" limited="true"/>
            <inertial mass="0.1" pos="0 0 0" diaginertia="1 1 1"/>
            <body name="originbody" pos="0 0 0">
                <site name="origin0" pos="0 0 0"/>
            </body>
        </body>
        <body name="massbody" pos="0 0 -0.3">
            <freejoint/>
            <geom name="massgeom" type="box" size="0.05 0.05 0.05" pos="0 0 0" mass="1" rgba="0.5 0.5 0.5 0.3"/>
            <body name="insertionbody" pos="0 0 0">
                <site name="insertion0" pos="0 0 0.05"/>
            </body>
        </body>

        <body name="tendon_mount_0" pos="0 0 0">
            <freejoint/>
            <inertial mass="0.01" pos="0 0 0" diaginertia="1 1 1"/>
            <site name="tendon_mount_site_0" rgba="0.3 0.6 0.9 0.6" size="0.008"/>
        </body>

        <body name="tendon_mount_1" pos="0 0 -0.25">
            <freejoint/>
            <inertial mass="0.01" pos="0 0 0" diaginertia="1 1 1"/>
            <site name="tendon_mount_site_1" rgba="0.3 0.6 0.9 0.6" size="0.008"/>
        </body>

    </worldbody>

    <tendon>
        <spatial name="rope0" limited="true" range="0 0.25">
            <site site="tendon_mount_site_0"/>
            <site site="tendon_mount_site_1"/>
        </spatial>
    </tendon>

    <equality>
        <weld body1="originbody" body2="tendon_mount_0"/>
        <weld body1="insertionbody" body2="tendon_mount_1"/>
    </equality>

    <sensor>
        <force name="tension0" site="origin0"/>
        <force name="tension1" site="insertion0"/>
    </sensor>

    <actuator>
        <position name="verticalpos" joint="slide" kp="10000" />
    </actuator>

</mujoco>

@thowell and I looked at this again recently. It's surprisingly tricky to implement, but at least we have a workplan 🙂

I tried the approach mentioned above:

"""Rather than attaching a tendon endpoint directly to a body B, I attach it instead to a "mounting body" M, which is a free body that gets welded to B."""

However, this results in some weird behaviour. I can now see my tendons stretching (acting like a spring).
This did not happen earlier when the tendons were directly attached to the body (B).
In my environment, I am making two cylinders pull the big (red) cylinder using a string (Spatial tendon). I have set limited=True for the tendons.
Here is a video of the behaviour. Expected behaviour is that there should be no relative motion between welded bodies (For eg. the blue sphere on the red cylinder). The tendon's must not stretch either. It may be that tendon is not stretching but the weld is stretching a lot.
https://github.com/user-attachments/assets/43a10166-b509-4a2a-b629-6e99791622d3
Here is my XML file:
<mujoco>
  <asset>
    <texture name="grid" type="2d" builtin="checker" rgb1=".1 .2 .3"
     rgb2=".2 .3 .4" width="300" height="300" mark="none"/>
    <material name="grid" texture="grid" texrepeat="1 1"
     texuniform="true" reflectance=".2"/>
  </asset>

  <worldbody>
    <light name="light1" pos="5 5 20"/>
    <light name="light2" pos="-5 5 20"/>
    <light name="light3" pos="-5 -5 20"/>
    <light name="light4" pos="5 -5 20"/>

    <geom name="floor" type="plane" pos="0 0 0" size="8 8 .1" friction="0.5 0.005 0.0001" material="grid"/>
    <geom name="wall1" type="box" pos="8 0 0" size="0.1 11 2" rgba="0.5 0.5 0.5 1"/>
    <geom name="wall2" type="box" pos="-8 0 0" size="0.1 11 2" rgba="0.5 0.5 0.5 1"/>
    <geom name="wall3" type="box" pos="0 8 0" size="11 0.1 2" rgba="0.5 0.5 0.5 1"/>
    <geom name="wall4" type="box" pos="0 -8 0" size="11 0.1 2" rgba="0.5 0.5 0.5 1"/>
    <camera name="fixed" pos="0 0 25" xyaxes="1 0 0 0 1 0"/>

  <body name="goal_body">
		<joint name="goal_x_prism" type="slide" axis="1 0 0"/>
		<joint name="goal_y_prism" type="slide" axis="0 1 0"/>
    <geom name="goal_geom" type="sphere" pos="0 0 1" size="0.1" rgba="1 0.84 0 1"/>
  </body>

	<body name="square_body" pos="1 1 0">
		<joint name="square_x_prism" type="slide" axis="1 0 0"/>
		<joint name="square_y_prism" type="slide" axis="0 1 0"/>
    <joint name="square_z_prism" type="slide" axis="0 0 1"/>
		<joint name="square_z_rotat" type="hinge" axis="0 0 1"/>
		<geom name="square_geom" type="cylinder" size="0.3 0.1" pos="0 0 0.3" rgba="1 0 0 1"/>
	</body>

	<body name="circle1_body" pos="2 2 0">
		<joint name="circle1_x_prism" type="slide" axis="1 0 0"/>
		<joint name="circle1_y_prism" type="slide" axis="0 1 0"/>
		<joint name="circle1_z_prism" type="slide" axis="0 0 1"/>
		<geom name="circle1_geom" type="cylinder" size="0.1 0.3" pos="0 0 0.6" rgba="0 1 1 1"/>
	</body>

	<body name="circle2_body" pos="0 0 0">
		<joint name="circle2_x_prism" type="slide" axis="1 0 0"/>
		<joint name="circle2_y_prism" type="slide" axis="0 1 0"/>
		<joint name="circle2_z_prism" type="slide" axis="0 0 1"/>
		<geom name="circle2_geom" type="cylinder" size="0.1 0.3" pos="0 0 0.6" rgba="0 1 0 1"/>
	</body>

  <body name = "square_tendonbody" pos="1 1 0">
    <joint name="square_tendonjoint" type="free" stiffness="0" damping="0" frictionloss="0" armature="0"/>
    <geom name = "square_tendongeom" type="sphere" size="0.05" pos="0 0 0.4" rgba="0 1 1 0.5"/>
		<site name="IMU" pos="0 0 0"/>
  </body>

  <body name = "circle1_tendonbody" pos="2 2 0">
    <freejoint/>
    <inertial mass="0.01" pos="0 0 0" diaginertia="1 1 1"/>
    <site name="circle1_site" rgba="0.3 0.6 0.9 0.6" size="0.008"/>
  </body>

  <body name = "circle2_tendonbody" pos="0 0 0">
    <freejoint/>
    <inertial mass="0.01" pos="0 0 0" diaginertia="1 1 1"/>
    <site name="circle2_site" rgba="0.3 0.6 0.9 0.6" size="0.008"/>
  </body>
  </worldbody>

 <tendon>
    <spatial name="wire1" limited="true" range="0 1.5" width="0.003">
      <site site="IMU"/>
      <site site="circle1_site"/>
    </spatial>
  </tendon>
  <tendon>
    <spatial name="wire2" limited="true" range="0 1.5" width="0.003">
      <site site="IMU"/>
      <site site="circle2_site"/>
    </spatial>
  </tendon>

   <equality>
        <weld body1="square_body" body2="square_tendonbody"/>
        <weld body1="circle1_body" body2="circle1_tendonbody"/>
        <weld body1="circle2_body" body2="circle2_tendonbody"/>
  </equality>

  <actuator>
    <motor name="circle1_x_actuator" joint="circle1_x_prism" gear="500" ctrllimited="true" ctrlrange="-1.0 1.0"/>
    <motor name="circle1_y_actuator" joint="circle1_y_prism" gear="500" ctrllimited="true" ctrlrange="-1.0 1.0"/>
    <motor name="circle2_x_actuator" joint="circle2_x_prism" gear="500" ctrllimited="true" ctrlrange="-1.0 1.0"/>
    <motor name="circle2_y_actuator" joint="circle2_y_prism" gear="500" ctrllimited="true" ctrlrange="-1.0 1.0"/>
  </actuator>

  <sensor>
    <accelerometer name="accelerometer" site="IMU"/>
  </sensor>
</mujoco>

This issue of stretching is solvable to some extent by using the solver constraints.
This issue is also a good reference: https://github.com/google-deepmind/mujoco/issues/278
  <equality>
        <weld solref="0.0002 1" body1="square_sec_body" body2="square_tendonbody"/>
        <weld solref="0.0002 1" body1="circle1_sec_body" body2="circle1_tendonbody"/>
        <weld solref="0.0002 1" body1="circle2_sec_body" body2="circle2_tendonbody"/>
  </equality>


emit ts definitions

Reproduce:
// Using typescript:
const MyTextareaAutoSize = React.forwardRef<HTMLTextAreaElement>((props, ref) => {
    return (<TextareaAutoSize {...props} inputRef={ref} />);
})

The above code fails to compile because @types/react-textarea-autosize is old and does not declare support for null. Currently, I have to work around this with:
    return (<TextareaAutoSize {...props} inputRef={ref || undefined} />);

Since this is a TS project, could we package definition files into the release?

Well - this package was not written in TS. I had an unpublished rewrite to TS available on master though 😅 and you have pushed me to finish the work and release v8: https://github.com/Andarist/react-textarea-autosize/releases/tag/react-textarea-autosize%408.0.0 . Enjoy 🎉

@Andarist I believe you also need to add types to package.json. When I added "types": "dist/declarations/src/index.d.ts" IntelliJ now recognizes the package.
Also it appears TextareaAutoSize type is not emitted anywhere.

@Andarist I believe you also need to add types to package.json. When I added "types": "dist/declarations/src/index.d.ts" IntelliJ now recognizes the package.

It seems like IntelliJ's problem - this is both recognizable by TypeScript itself and some of the other editors.

Also it appears TextareaAutoSize type is not emitted anywhere.

It's not a type - it's a component. Not sure how you would like to use it - you can probably do smth like React.FC< TextareaAutosizeProps>


An info bar prompts when attaching one secondary blob container which SAS URL is created by 'User delegation key'

Storage Explorer Version: 1.26.0-dev
Build Number: 20220904.1
Branch: main
Platform/OS: Windows 10/Linux Ubuntu 20.04/MacOS Monterey 12.5 (Apple M1 Pro)
Architecture: ia32/x64
How Found: From running test cases
Regression From: Not a regression
Steps to Reproduce

Select one storage account -> Give the account with 'Storage Blob Data Contributor' rbac role.
Expand the storage account -> Blob Containers.
Create one blob container -> Right click it -> Click 'Open Secondary Location'.
Right click the secondary blob container -> Click 'Get Shared Access Signature...'.
Select 'User delegation key' -> Click 'Create'.
Copy the SAS URL -> Try to attach the secondary blob container via the SAS URL.
Check whether no info bar prompts.

Expected Experience
No info bar prompts.
Actual Experience
An info bar prompts indicating "Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature".

Additional Context

This issue doesn't reproduce when attaching via Azure AD.
This issue doesn't reproduce when attaching via Anonymously.

Verified this issue on the build main/20220914.3. Fixed, so we are going to close it.


Install two sonoff component

Hey Alexx
Sorry for my newbie question,I have a problem with the installation the folder sonoff already exist from a previous custom component . I want to install yours without deleting the other one . For testing and migrating slowly without losing some automatons and so on is there anyway I can do that ?
Thank you

You should:

rename the folder to sonoff2
rename line in __init__.py => DOMAIN = 'sonoff2'
raname line in configuration.yaml => sonoff2:

oooooh. That's interesting. Wish I'd seen that earlier

Well Thanks Alex for your quick reply. My old component was https://github.com/peterbuga/HASS-sonoff-ewelink I only changed the folder name of the old component for backup. Your component is using the same device IDs and param.. so I had to do minor changes and now I am using only your component.

Peterbuga also has a cool component

When I change your Sonoff domain to Sonoff2, so stop receiving update messages. How do I keep the alert going? Thanks.


Document does not directly ask user to add purposes and PII.

Document: https://docs.wso2.com/display/IS550/Consent+Management+for+Self+Sign+Up
In order to display the consent, it needs to add a purpose. Otherwise this does not get displayed to the user.
But as presented in the document, it does not directly ask the user to add a purpose. It just says 'The identity admin can add purposes and PII (Personal Identifiable Information) categories in the super tenant domain that define the reasons for collecting user information', which does not give a clear idea that adding purposes and PII is essential. Therefore In step1, say straightforwardly to add purposes and PII.
Type/Docs
Affected/5.5.0-Alpha
Severity/Major
Priority/Normal

Above guidelines mentioned in the doc page is correct, users who sign-up through self-care portal should not be worried about adding/removing purposes, if there are purposes shown in the sing-up page they can select/deselect them, that's the only functionality related to them. It's a job for Identity Admin to add/remove purposes for the organization.


Update build status badge to use GitHub Actions instead of Travis

Addresses #788
Switched the last remaining mention of Travis to GitHub Actions.

nice, good catch!


stats: 2.10.7 -> 2.10.10

Description of changes
Diff: https://github.com/exelban/stats/compare/v2.10.7...v2.10.10
Changelog: https://github.com/exelban/stats/releases/tag/v2.10.10
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[x] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

Result of nixpkgs-review pr 305731 run on aarch64-darwin 1

1 package built:

stats


FYI Admins

I locked a couple of branches for time being to protect what we have and disabled force pushing, prevent branches from being deleted, and require status checks before merging. However, if you have the admin permission to unlock it for a reason, then you can, just be sure to relock it back afterwords if there are any complications. Again, do not leave it unlocked.

What's the point of locking the branches ?

Because we have a coupe of others who were interested in using this and i dont want it to mess ujp the main or backup branches

Anybody can clone down the repo all they want, it's a public repo. But that doesn't mean they can push changes, they aren't a contributor to the repo. If they are wanting to do so, then they create a pull request that seeks permission to merge their changes. So there isn't a need to protect the branches. The protection you are thinking of is already part of the nature of how github functions.

I keep forgetting that :8ball:

I'll close this then

hmm. ok, just a few changes and good.


VaultPropertySource fails on null ApplicationContext

I use VaultPropertySource to implement PropertySource API programmatically. The code looks like this (in Kotlin)
class VaultProcessor : EnvironmentPostProcessor {
    override fun postProcessEnvironment(environment: ConfigurableEnvironment, application: SpringApplication) {
        ...
        val template = VaultSecretStore(...).vaultTemplate() // VaultSecretStore extends AbstractVaultConfiguration
        val source = VaultPropertySource(template, path)
        environment.propertySources.addFirst(source)
    }
}

This class/method is invoked when ApplicationContext is not available yet. And it works in spring-vault-core:2.2.2.RELEASE for example, i.e. one can call AbstractVaultConfiguration.vaultTemplate() before ApplicationContext is set.
But spring-vault-core:2.3.1 expects ApplicationContext to be set
SpringApplication.reportFailure(856) : Application run failed java.lang.IllegalStateException: ApplicationContext must be set before accessing getBeanFactory()
    at org.springframework.util.Assert.state(Assert.java:76)
    at org.springframework.vault.config.AbstractVaultConfiguration.getBeanFactory(AbstractVaultConfiguration.java:276)
    at org.springframework.vault.config.AbstractVaultConfiguration.getClientFactoryWrapper(AbstractVaultConfiguration.java:283)
    at org.springframework.vault.config.AbstractVaultConfiguration.vaultTemplate(AbstractVaultConfiguration.java:131)

If it's not a bug, then my implementation needs to be re-written. Can you please provide pointers to/examples of how to populate Spring Boot environment using VaultPropertySource programmatically in spring-vault version 2.3.x?

Subclasses of AbstractVaultConfiguration must be initialized by calling setApplicationContext(…) as we're obtaining beans from the context, specifically:

ClientFactoryWrapper
RestTemplateFactory
RestTemplateCustomizer,
SessionManager
VaultTemplate
TaskSchedulerWrapper

Since Spring Cloud Vault 3.0, we integrate with Spring Boot's ConfigData API for easier bootstrapping.
If you want to fully programmatically obtain a VaultPropertySource without using managed beans, then I'd suggest spinning up VaultTemplate yourself using a VaultEndpoint and SessionManager/ClientAuthentication. These may require additional components such as a ThreadPoolTaskScheduler if you want to periodically renew the session token.


Need Support NoteBlockAPI For Bukkit

Need Support NoteBlockAPI For Bukkit!!!!!
Because OpenNoteBlockStudio's NBS File not Support NoteBlockAPI!!

It's up to the developers of NoteBlockAPI to offer support to the newer versions of the format. This GitHub project only covers Open Note Block Studio, so issues about NoteBlockAPI must be reported here.
Keep in mind that, while the original plugin has never been updated, there is a fork of the project that offers compatibility with all NBS versions released so far. Here's a link to it.


Need E2E test cases for target level certificate verification

@sigsbee, please update the test case steps and add robot cases.

done