[material-ui] Add v6 components props and classes deprecations

Add deprecations for v6 that are planned for removal in v7.
Contributing
Feel free to take any components that are not done or in progress. Please mention this issue in your PR so we can link it in the description and keep it up to date.
There are three things that we're deprecating for all components. These three must be addressed in separate PRs:

components and componentsProps props:

This is deprecated in favor of the slot pattern.
If the slots or slotProps props do not exist, they must be implemented in the same PR in which the deprecation is added. they should have the same type as the deprecated prop.

*Component and *Props props used to replace internal components

This is deprecated in favor of the slot pattern.
If the slot does not exist, it must be implemented in the same PR the deprecation is added. It should have the same type as the deprecated prop.
For example, the Accordion's component TransitionComponent and TransitionProps props deprecated in favor of slots.transition and slotProps.transition respectively.

Composed classes that join two or more prop-controlled classes

This is deprecated in favor of composing classes in user-land.
For example, the AccordionSummary's component MuiAccordionSummary-contentGutters is deprecated in favor of combining the .MuiAccordionSummary-gutters and .MuiAccordionSummary-content classes instead.

Any other potential deprecations should be discussed in a separate PR.
Components

[x] Accordion: #40418, 40771, #41006
[ ] Alert: #40681, #40688
[x] ~App Bar~ (no deprecation requires)
[ ] Autocomplete
[ ] Avatar: #40853
[ ] Backdrop: #40677
[ ] Badge
[ ] Bottom Navigation
[ ] Breadcrumbs
[ ] Button: #40675
[ ] Button Group
[ ] Card
[ ] Checkbox
[ ] Chip
[ ] Click-Away Listener
[ ] Container
[ ] Dialog: #40687
[ ] Divider: #40563
[ ] Drawer
[ ] Floating Action Button
[ ] Grid
[ ] Hidden
[ ] Icons
[ ] Image List
[ ] Link
[ ] List
[ ] Masonry
[ ] Menu
[ ] Modal
[ ] Pagination: #40673, #41062
[ ] Paper
[ ] Popover
[ ] Popper
[ ] Portal
[ ] Progress
[ ] Radio Group
[ ] Rating
[ ] Select
[ ] Skeleton
[ ] Slider
[ ] Snackbar
[ ] Speed Dial
[ ] Stack
[ ] Stepper
[ ] Switch
[ ] Table
[ ] Tabs
[ ] Text Field
[ ] Textarea Autosize
[ ] Timeline
[ ] Toggle Button
[ ] Tooltip
[ ] Transitions
[ ] Typography

@DiegoAndai, can I help out with this task? if so where can I find the replacement documentation?

Hey @harry-whorlow, I added contributing instructions in the description 😊
If you're still interested, feel free to take any of the components that are not done or in progress.

Hi @DiegoAndai, awesome man thanks for the heads up... I'll get right onto it

Hi @harry-whorlow! Sorry for not replying earlier, I saw your comment, but I missed the edit.

Is that correct? Or have I gone off on a tangent?

Correct, that's the general idea 🙌🏼. Regarding the details, I'll review the Backdrop PR now and we can continue the discussion there 😊.
I updated the description to move the Backdrop component to in progress.

I updated the description to add another deprecation case: components and componentsProps. These should be addressed in a separate PR.

@DiegoAndai  I would like to pick up, speedDial with regards to the deprecations of components and componentsProps, since I've gotten the gist of what to do.
If you can mark it that would be awesome!🫡

Hey @sai6855, @harry-whorlow
We decided that alongside the deprecations, we'll also add:

Codemods for switching to the new APIs
Migration guide for switching to the new APIs

This is so users can immediately deal with the deprecations when they appear. It will also help avoid users getting nervous with so many deprecations.
We already started working on this. This is the plan:

@siriwatknp will set up the codemods and add the initial codemod for the Accordion's TransitionComponent and TransitionProps
@DiegoAndai will set up the migration guide in the docs and add the initial documentation for the Accordion's TransitionComponent and TransitionProps
After that, each deprecation PR should add their respective codemods and documentation

Does that sound good to you? We'll put the current PRs on hold while we set up the codemods and migration guide. We hope to do this quickly so we can unblock the PRs.

@DiegoAndai Sounds good !! I'll wait for codemods and migration guide and update PRs accordingly

Hey @sai6855 @harry-whorlow @lhilgert9! The initial codemods PR is merged 🎉
You should be able to follow that PR to update your PRs accordingly and add codemods for

components and componentsProps
*Component and *Props props

Feel free to let us know if you need guidance for the codemods, and again, thanks a lot for working on this.
The migration guide PR is also up but has not been merged yet. When we merge that, we'll also have to update the PRs accordingly.
For composed classes, we'll have to wait a bit; I'm working on a POC for that, as I want to cover both style overrides and CSS files. I'll keep you updated.
Thanks @siriwatknp!

Hey everyone! The migration guide is merged 🎉
This means we're ready to move forward with the components, componentsProps, *Component, and *Props props PRs. I'll review the existing PRs and comment on what's missing.
We're missing some codemod details for composed classes. I'll try to have an answer for that this week. I'll keep you updated.

Hey everyone! The first codemod classes codemod PR is merged 🎉
We can now move forward with the composed classes deprecation. We should update the open composed classes PRs.

Hey @DiegoAndai
I am planning to take up the Autocomplete (taking the reference of Avatar)
Saw the docs/pages/material-ui/api/autocomplete.json   I was able to figure out that we have to deprecate the ChipsProps and ComponentsProps (correct me if  i am wrong).
Also I am finding difficult to identify the Composed classes. can you give me some more references on this?
cc: @sai6855  and @harry-whorlow  feel free to share your thoughts

Hi @skmanoj322, I thats the general gist of what were doing... although @DiegoAndai is the source of truth when it comes to this.
I wouldn’t worry about composed classes for now, as these are supposed to be deprecated in different PR's, so you could start on the ComponentsProps whilst you wait for a response.
(I should stress that I'm just a code monkey, so please don't take what I've said as fact. Nor am I responsible for organising people, these are just my thoughts I'm just trying to help.)
But welcome aboard!

Hey @skmanoj322! thanks for the interest!
The Autocomplete is a complex component, the props to deprecate would be: ChipProps, componentsProps, ListboxComponent, ListboxProps, PaperComponent, and PopperComponent 😅
I would recommend starting with another one so you can get the hang of it. That would also give us time to improve the structure to make the work on the Autocomplete easier. I would recommend starting with the Badge's components and componentsProps props. What do you think?

@sai6855, what are we missing for the Pagination components? Are we done after #41145?

sorry missed this, PaginationItem does have components prop that needs to be deprecated. it also has slots prop but doesn't have componentProps and slotProps.
where as Pagination component doesn't have composed classes and *ComponentProps *Component, so i think we can mark Pagination as done but not PaginationItem

Hey Everyone! This issue was getting too big and hard to track, so I converted it into an umbrella issue and split the different deprecation initiatives into their own separate issues.

To be honest, is actually easier to understand whats going on, and what is still required... Thanks!

@harry-whorlow @DiegoAndai i have opened pr for Badge #41364 please provide the feedback


Emit a warning when profiler is stopped and no dump options are specified

It's valid, but rarely useful to stop profiling without dumping the results. Currently async-profiler just writes "Profiling stopped after X seconds", not specifying why it didn't produce any output. I spent quite long time trying to debug this. It would be helpful to emit a message a-la
Warning: no dump options are specified. You may want to specify one or several of "summary", "flat", "traces", "flamegraph"

My mistake was that I thought for some reason that the dump option should be provided long with the "start" command. So it might make sense to emit a warning (or even a error) if any dump option is specified with the start event, indicating that it doesn't make any sense.

I would argue that sole stop is useless - I personally use it pretty often when I need to cease profiling right now and get results lazily some time later.
But there is no problem to extend the message - will do it.


Fails to parse access to import.meta

The import.meta is used to get import.meta.url in JS generated by wasm-pack. Some webpack plugins (like gas-webpack-plugin of @fossamagna) use esprima and can not be added because that error.
Steps to reproduce
esprima.parse(`
f () {
  return import.meta.url;
}
`)

Relevant references

https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#prod-ImportMeta
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import.meta
https://esprima.org/demo/parse.html?code=f () {
  return import.meta.url%3B
}

I found the ´esprima.parseModule´ in the doc, then I move the issue to gas-webpack-plugin.


Update to docs, include notebook w/ source link

The "how to run the model" notebook is now included in the documentation. The "view source" of the notebook correctly links to the notebook which was used to build the documentation. If a user is viewing the stable docs, the notebook + download link will properly reflect the version of the latest stable release.
Additionally
- Added logo to the docs
- Restructured the table of contents
Docs are now built using mkdocs.
The notebooks have been moved to docs/notebooks. The instruction notebook is now visible on the mkdocs build. The notebooks visible on the documentation have a download button, which links to the ipynb file used to generate the docs.
Link to built docs
Closes #61
Note: The md link checker is failing due to the link being updated in the documentation, but not yet being available in main

It's working perfectly locally, but ReadTheDocs is messing it up and adding the useless "Edit on Github" button instead of "view source"...

@BSchilperoort thank you for addressing issue #61 . Please use the new project logo in SharePoint, I will share the link in teams. I updated the github organization avatar.

Thanks for the review! I've updated the documentation, and removed the duplicate part from README.md.


Auto streaming to other platforms

Hi,
I have a question, in this scrips, use streamlink or ffmpeg for coding video, where i can change settings for streaming to RTMP server?
Example:

Select game and stream
Add Streaming code (before, env, config or cli)
Use standard settings for streaming: ffmpeg -re -sseof -5 -i "video/2023-04-23_CAR_at_NYI_(AWAY)_720p_live.mp4" -c:v libx264 -preset veryfast -crf 25 -b:v 2000k -maxrate 2000k -bufsize 4000k -c:a aac -b:a 128k -ar 44100 -f flv -flvflags no_duration_filesize "rtmp://server/<code>"
No need save video, or use download metadata for checking End.

P.S. For example: ffmpeg -i $(streamlink -O <site1_m3u8_url>) -c copy -f flv rtmp://<site2_rtmp_server>/<stream_key>
Thx!

This program was really designed to download the file which allows you to download the highest quality feed that you want without worrying about it downgrading in the middle because of a bad connection. It also allows you to resume the download if it fails in the middle. I guess there could be a new option that it runs a command after the download starts so you don't have to do that manually but I don't think it's worth it to change this program to stop downloading the file.

Yes, agree. Now i have two script, your and for streaming. This is question, only for information. Script working fine. Thx.


python311Packages.whispers: add missing deps, unbreak

This one was a doozy to debug. Simply adding semgrep breaks in python311Packages since semgrep was before only built for python312, and would thus propagate the wrong version of setuptools. Many attemps to make an alias for semgrep-core that points at semgrep.passthru.semgrep-core would either not work for allowAliases=true or allowAliases=false due to missing inputs to callPackage or infinite recursions.
fixes https://hydra.nixos.org/build/276680763
fixes https://github.com/NixOS/nixpkgs/issues/354317
zhf https://github.com/NixOS/nixpkgs/issues/352882

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] 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.11 Release Notes (or backporting 23.11 and 24.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

[x] Fits CONTRIBUTING.md.

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

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 354501

aarch64-darwin

:white_check_mark: 12 packages built:

python311Packages.semgrep
python311Packages.semgrep.dist
python311Packages.whispers
python311Packages.whispers.dist
semgrep (python312Packages.semgrep)
semgrep.dist (python312Packages.semgrep.dist)
whispers (python312Packages.whispers)
whispers.dist (python312Packages.whispers.dist)
route-detect
route-detect.dist
swaggerhole
swaggerhole.dist


Problem running on WebAssembly

When I run it in server mode it works ok, but when I switch to WebAssemby mode I get:
An unhandled exception has occurred. See browser dev tools for details. Reload
And in console I get:
System.TypeLoadException: Could not load type of field 'Oqtane.Survey.Index+<LoadSurveyResultsData>d__13:args' (3) due to: Could not load file or assembly 'Radzen.Blazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
Any Idea?
I'm running in last Oqtane Version:

I tried with direct installing from the app and cloning the repo too, I get the same error.

Yeah I did not test it in WebAssemby mode. My bad 😬
I suspect I needed to copy the Radzen.dll to the Client project in the packaging.
Can you tell me  the exact steps you used to get Oqtane to run in WebAssemby mode? I tried and couldn't get it to work and that is why I didn't test in that mode.
Thank You

Not too much steps, only this on server settings:

Darn I tried that. Anyway I will try again this weekend and work on this. Thanks!

Maybe is a problem with my configuration, I tried to figure out what is happening but I couldn't solve it (I'm still learning this technology)

@ADefWebserver the ModuleInfo.cs file in the Client project contains the implementation for IModule which contains a Dependencies property. This should contain a comma delimited list of all assemblies that need to be downloaded to the client when running on WebAssembly. Currently it only specifies the Survey Shared assembly (as it contains the Model). It should also contain Radzen and any other assemblies the Client project depends on.

Yes, I could make it work, this is what you need to change:

Also, I'm having problems reinstalling the Module, when I delete the Module and then I install it again when I post a survey I get a database error, seems the uninstalling is not working ok.

@sbwalker - Thanks!, I'll fix this when I get to my dev computer tomorrow.

@elgransan - I will look at the PR tomorrow. Thanks!

@sbwalker, @elgransan - I put in the fix, but when I run in WebAssembly mode I now get this error:

That is strange as @elgransan indicated that it was working for him after making this modification?

Yes it works for me, it is possible to see the real error? Maybe run in it on kestrel?

@ADefWebserver the 500 error message appears to be indicating that the server-side method being called is having an issue. You can put a breakpoint in the GetClientAssemblies method on the server and use standard debugging to step through the logic.

@sbwalker, @elgransan - Ok the good news is that the Module works in WebAssmebly (that is what is checked in).
The bad news is that, the new .nupkg package (you create this by building the Solution in "Release" mode), will not run the .sql scripts when you install it.
I have tried everything. When I open the package I can't actually see the .sql scripts.
So I am stuck at this point.

Also, I'm having problems reinstalling the Module, when I delete the Module and then I install it again when I post a survey I get a database error, seems the uninstalling is not working ok.

@elgransan - I now see that I am running into the issue you ran into. It appears that adding those assemblies to Dependencies in ModuleInfo.cs prevents the .sql scripts from running when the module is installed. cc: @sbwalker

I alter the code to remove the Dependencies in ModuleInfo.cs, so the only change is that I have increased the version to 1.1.0, and that NuGet package will install, but the .sql scripts still-wont-run :(
I am so stuck.

Sorry today I can't help you, tomorrow I'll give a try. Yesterday I remove the database to reinstall the module, because I get a database error after uninstall and install again, It was the only way

@elgransan - Understood. Thank you for your help.

Version 1.0.0 (on Nuget now) works for me
The uninstall works for me
Installing 1.1.0 will work, but, the .sql database scripts will not run (even if I remove the Dependencies added in ModuleInfo.cs)

Maybe is a bug in Oqtane

@ADefWebserver how did you uninstall the module? Did you do it through the Module Management user interface? And you are running Oqtane V2.0.1 or higher?

@sbwalker -

The orginal issue, where it did not work with WebAssembly was because my development version of Oqtane was not V2.0.1 - upgrading that is what allowed the orginal WebAssembly issue to work :)
So, yes all my testing is using Oqtane version 2.0.1
My current "problem" is that when I increate the version, in the Survey Module, to 1.1.0 - - and create the Oqtane.Survey.1.1.0.nupkg (created using "Release" then Build) , it will install, but, the .sql scripts will not run.
I have downloaded the install version of Oqtane V2.0.1 and manually upload Oqtane.Survey.1.1.0.nupkg and it will install but, the .sql scripts will not run
I then uninstall Oqtane.Survey.1.1.0, restart the Oqtane, then I download Oqtane.Survey.1.0.0.nupkg and manually install it, in the same install version of Oqtane V2.0.1 and the .sql scripts will run

Ok I found a fix (thank you both for your 'mental help')

I set version to 1.0.1 rather than 1.1.0 (not sure if this makes a difference)
In Moduleinfo.cs I set: ReleaseVersions = "1.0.0,1.0.1" (it was: ReleaseVersions = "1.0.0")

because I get a database error after uninstall

@elgransan - I can confirm the uninstall, will remove the Survey database tables, if after uninstalling, you go to System Info (in the Admin Dashboard) then Restart Application.

Excellent!

@sbwalker - I updated the code and added a "Support Oqtane WebAssembly Mode" section to the Oqtane Radzen article at: https://blazorhelpwebsite.com/ViewBlogPost/46


[BUG]Lava planet texture bug

Description

All information in the image
Reproduction

just load any grid onto a planet with Lava and fly over the lava
Screenshots

dupe of #15957


Union 2 mesh ?

Hi,
For my project I would like to use scikitfem on a rpi4 to do FEM of a cantilever on which I'll add a mass to tune its frequency.
To represent what I would like to do here some examples from COMSOL :
Beam only :

Beam + added_mass :

I've done :
from skfem.visuals.matplotlib import draw, show, plot
from skfem.models.elasticity import linear_elasticity, lame_parameters
from skfem.helpers import dot
from skfem import *
import numpy as np

print("import")

# Beam parameter
print("parameters")
w = 0.3
h = 0.05
t = 0.03

# added_mass parameter
w2 = 0.03
h2 = 0.03
t2 = 0.03

x0 = 0.0125
y0 = 0.25
z0 = 0.03

# physics parameters
rho = 1120
E = 2.174e9
nu = 0.35

# Beam Mesh
print("geom_beam")
beam = np.array([[0, 0, 0],
                 [0., 0., t],
                 [0., w, 0.],
                 [h, 0., 0.],
                 [0., w, t],
                 [h, 0, t],
                 [h, w, 0.],
                 [h, w, t]], dtype=np.float64).T

m1 = MeshTet(beam).refined(3)
print(m1)
draw(m1)
show()

# added mass mesh
print("geom_addedmass")

added_mass = np.array([[x0, y0, z0],
                       [x0, y0, z0 + t2],
                       [x0, y0 + w2, z0],
                       [x0 + h2, y0, z0],
                       [x0, y0 + w2, z0 + t2],
                       [x0 + h2, y0, z0 + t2],
                       [x0 + h2, y0 + w2, z0],
                       [x0 + h2, y0 + w2, z0 + t2]], dtype=np.float64).T

print(beam + added_mass)

m2 = MeshTet(added_mass).refined(3)

print(m2)
draw(m2)
show()

m = m1 + m2
draw(m)
show()

# Define FEM elements
print("FEM")
e1 = ElementTetP2()
e = ElementVectorH1(e1)
ib = InteriorBasis(m, e)

# Boundaries ?
print("Boundaries")

test = m.facets_satisfying(lambda x: x[0] == 0)
print(test)
test2 = m.facets_satisfying(lambda x: x[1] == 0)
print(test2)

dofs = {
    'left': ib.get_dofs(lambda x: x[0] == 0.0),
    'left': ib.get_dofs(lambda x: x[1] == 0.0),
}

# Modal Freqs
print("bilinear form definition")

@ BilinearForm
def mass(u, v, w):
    return dot(rho * u, v)

# K, M matrice
print("K,M matrice")

K = asm(linear_elasticity(*lame_parameters(E, nu)), ib)
M = asm(mass, ib)

u = ib.zeros()
I = ib.complement_dofs(dofs)

L, x = solve(*condense(K, M, I=I),
             solver=solver_eigen_scipy_sym(k=6, sigma=0.0))

y = x[:, 1]

Freqs = np.sqrt(L) / (2 * np.pi)
print(Freqs)

if __name__ == "__main__":
    sf = 0.01
    draw(MeshTet(np.array(m.p + sf * x[ib.nodal_dofs, 1]), m.t), colobar=True)
    show()

And I got  :

But then when I try to do the solver, I get this :

I don't think that's the good way to do an "union" between 2 3D mesh. I've tried to look in the documentation or the examples but I found nothing.
Any suggestions ?

If you sum meshes, i.e. m = m1 + m2, you must verify that the nodes match. Otherwise the result is not a valid mesh.
The geometry looks nontrivial so I suggest to use an external mesh generator. For example:

Export mesh from COMSOL to mphtxt, convert to .msh e.g. using FEconv, load to scikit-fem via MeshTet.load("beam.msh")
Generate the mesh using Gmsh, there are several examples under docs/examples/

If you want to do it entirely inside scikit-fem, then you most likely have to use MeshHex.init_tensor to create two meshes where the nodes match and then perform m = m1 + m2. Finally, you can split it to tetrahedra using MeshHex.to_meshtet.

To update you :
I've succeeded to create a 3D mesh with an union between the beam and added_mass with this and it seems to work fine when I import it on scikit-fem.
By curiosity, I'll try to do the entirely inside scikit-fem solution, if I understood i need to create 2 mesh with MeshHex.init_tensor with common nodes for the union part, then I addition them and I do the meshing with MeshHex.to_meshtet.

By curiosity, I'll try to do the entirely inside scikit-fem solution, if I understood i need to create 2 mesh with MeshHex.init_tensor with common nodes for the union part, then I addition them and I do the meshing with MeshHex.to_meshtet.

Yes!


Update MyInspectors to version 1.2.0

not sure if im considered a biased source in this case.

Looks like we both looked at it separately anyway. I didn't even see your approval until Github notified me after.


Keychain issue - desktop environment not detected

Type: Bug
System:
ARM 64 Rapberrry Pi with a fresh installation of Raspberry Pi OS (Debian bookworm).
Reproduction steps:
install dotnet 8.0 sdk
install vs code
install the c sharp devkit plugin
The error then appeared and the troubleshooting guide says to create a new bug here.
My desktop environment is LXDE-pi-wayfire.
I don't know how to correct the issue with the keyring and would appreciate some help.
 It looks like you may be using an old version of VS Code, the latest stable release is 1.84.2. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

Yes it was an older version that I installed yesterday, but I have now updated and still have the same issue.

I was able to identify that I have gnome-keyring (using the command dpkg -l | grep keyring).
I then added it to the launch parameters as per the keyring troubleshooting guide.
While this workaround works - I would much prefer if VSCode would correctly determine and configure this.
That would benefit other users, as well as myself next time I have to install vscode.


use with polymorphic association

We have a model 'Place' and a model 'Domain'.
Each 'Place' has a 'parent_id' and a 'parent_type'. A place can have a domain ID and 'parent_type' will be 'Domain'. closure_tree correctly detects this as the root (because it has a nil parent_id) in that case.
Unfortunately, if I grab a place and ask for its root, the generated SQL assumes it can only be looking for a place, which means it returns nil for the 'root'. Is there an option I can pass to 'closure_tree' to make this work, or should I just add a 'root_domain' has_one to the 'Place' model that uses the same SQL but checks for a domain with that ID?
The currently generated SQL that returns nil is
SELECT  "places".*  Could you provide a sample app that reproduce the bug ?

Definitely non-orthodox, and not a bug in CT at all. I just wanted to know if you thought there might be a cleaner way than adding my own has_one through

Yeah, nope, there isn't multi table polymorphism support in closure_tree. Only STI.


country blocking

if a user visit the app from a country that is not allowed based on the terms and conditions, we would like to prevent access to the site.
IP to country
as soon as the user tries to load the site, we want to trigger this call from the client and receive the country details.
https://api.ipgeolocation.io/ipgeo?apiKey=58b9513c2c8a48a3951026739e6ecc7b&fields=country_code3
response format:
{"ip":"<IP_ADDRESS>","country_code3":"AUS"}
if there is no response (rate limit, etc) proceed to app.
Display/ what to show
IF country_code3 = [list]
trigger a popup that cannot be closed by the user.
optionals: redirect to a new page with the same message instead of a popup
title: Restricted Country
text: According to the terms and conditions of the site, your country is restricted from accessing the site.
List of countries
Belarus, Burundi, Central African Republic, Congo, DPRK (North Korea), Guinea, Guinea-Bissau, Iran, Iraq, Lebanon, Libya, Mali, Myanmar(Burma), Republic of South Sudan, Somalia, Sudan, Syria, Ukraine, Venezuela, Yemen, Zimbabwe
country to code3:
BLR, BDI, CAF, COD, COG, PRK, GIN, GNB, IRN, IRQ, LBN, LBY, MLI, MMR, SSD, SDN, SOM, SYR, UKR, VEN, YEM, ZWE
https://www.iban.com/country-codes

fixed using cloudflare firewall rule


Added parent_experiment_id for all experiments: Added MIROC and WACCM

Hi Ag. A few more straight-forward changes to the _CV.json file. Thanks.

@charliepascoe as discussed, I'm assigning this to you.


Check and expand Ci tests

I added some new tests with already existing data and changed some input sample sheets to have the following test:
without NCBI credentials:

test_full
test_assembly_only
test_bins_only
test_coassembly
test_mouse_allow_all_pep_lengths
test_model_information
test_mhcflurry
test_mhcnuggets_1
test_mhcnuggets_2

with NCBI credentials:

test
test_taxa_only
test_mouse
test_tiny -> I'm not quite sure if we should keep this test, I would personally delete it, as it doesn't give any more information compared to the other tests (@skrakau)

I also opened a PR on test-datasets (https://github.com/nf-core/test-datasets/pull/982) to add the new sample sheets.
PR checklist

[x] This comment contains a description of changes (with reason).
[x] If you've fixed a bug or added code that should be tested, add tests!
[ ] If you've added a new tool - have you followed the pipeline conventions in the contribution docs
[x] If necessary, also make a PR on the nf-core/metapep branch on the nf-core/test-datasets repository.
[ ] Make sure your code lints (nf-core lint).
[ ] Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
[x] Usage Documentation in docs/usage.md is updated.
[ ] Output Documentation in docs/output.md is updated.
[x] CHANGELOG.md is updated.
[ ] README.md is updated (including new tool citations and authors/contributors).

@nf-core-bot fix linting

I added the versioning directory on test-datasets, so all tests will fail until this is merged.

@nf-core-bot fix linting

@skrakau linting is still failing due to template update, but it still expects test_bins! I will change it when this PR is merged or would you first change the expected tests for branch protection before merging?

@skrakau Maybe different question: Which tests should I make required? All of the new/old ones? :)

would there be a reason for any of the tests to not make them required? Otherwise I would make them required

@skrakau linting is still failing due to template update, but it still expects test_bins! I will change it when this PR is merged or would you first change the expected tests for branch protection before merging?

it's fine to do it afterwards

would there be a reason for any of the tests to not make them required? Otherwise I would make them required

No not really, okay I will make them required! They should all pass if one makes a PR! :)


🐛 BUG: No clean shutdown possible as child_process, results in workerd zombie proccesses

Which Cloudflare product(s) does this pertain to?
Wrangler core
What version(s) of the tool(s) are you using?
3.11.0
What version of Node are you using?
No response
What operating system are you using?
Mac
Describe the Bug
At Astro we are using the following code to run wrangler in our test suite. We do have issues with the teardown. The only way we see is to kill the child_process, however this does not work, because https://github.com/cloudflare/workers-sdk/blob/main/packages/wrangler/src/pages/dev.ts#L662 does not return, and therefore the CLEANUP does not work. This is also seen in the logs below, where I added a bunch of console logs after each line
This is our debug script:
const wranglerPath = fileURLToPath(new URL('../node_modules/wrangler/bin/wrangler.js', import.meta.url));
/** Returns a process running the Astro CLI. */
export function wranglerCli(cwd) {
	const spawned = execa(wranglerPath, ['pages',
		'dev',
		'dist',
		'--port',
		'8788',
		'--log-level',
		'debug'], {
		env: { CI: 1, CF_PAGES: 1 },
		cwd: cwd
	});

	spawned.stdout.setEncoding('utf8');

	return spawned;
}

let wrangler
wrangler = wranglerCli(process.cwd());
wrangler.stdout.on("data", (data) => {
  console.log(data);
});

setTimeout(() => {
  console.log("KILLING")
  wrangler.kill("SIGINT")
  console.log("DONE")
}, 10000);

Please provide a link to a minimal reproduction
No response
Please provide any relevant error logs
Logs using wrangler directly
❯ NO_COLOR=1 CI=1 CF_PAGES=1 "/Users/alexanderniebuhr/Developer/Projects/withastro_adapters/packages/cloudflare/node_modules/.bin/wrangler" pages dev dist --log-level debug
▲ [WARNING] No compatibility_date was specified. Using today's date: 2023-10-06.

  Pass it in your terminal:
  --compatibility-date=2023-10-06
  See https://developers.cloudflare.com/workers/platform/compatibility-dates/ for more information.

✨ Compiled Worker successfully
 ⛅ wrangler 3.11.0
-------------------
▲ [WARNING] --local is no longer required and will be removed in a future version.

  `wrangler dev` now uses the local Cloudflare Workers runtime by default. 🎉

Metrics dispatcher: Posting data {"type":"event","name":"run dev","properties":{"local":true,"usesTypeScript":false}}
Using vars defined in .dev.vars
Your worker has access to the following bindings:
- Vars:
  - COOL: "ME"
  - DATABASE_URL: "(hidden)"
⎔ Starting local server...
[mf:wrn] The latest compatibility date supported by the installed Cloudflare Workers Runtime is "2023-10-02",
but you've requested "2023-10-06". Falling back to "2023-10-02"...
workerd/server/server.c++:2624: info: Inspector is listening
[mf:inf] Ready on http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
DEBUG
Metrics dispatcher: Posting data {"type":"event","name":"run pages dev","properties":{}}
[ [AsyncFunction: stop] ]
BEFORE_PROCESS
BEFORE_WAIT
workerd/server/server.c++:1099: info: Inspector client attaching [core:user:test]
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ [b] open a browser, [d] open Devtools, [c] clear console, [x] to exit                                                                                │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
WAITED
CLEANING
CLEANED
CLEANING
⎔ Shutting down local server...

Logs using wrangler as child_process
❯ node trial.mjs
✨ Compiled Worker successfully

 ⛅ wrangler 3.11.0
-------------------

Metrics dispatcher: Posting data {"type":"event","name":"run dev","properties":{"local":true,"usesTypeScript":false}}

Using vars defined in .dev.vars

Your worker has access to the following bindings:
- Vars:
  - COOL: "ME"
  - DATABASE_URL: "(hidden)"

⎔ Starting local server...

[mf:wrn] The latest compatibility date supported by the installed Cloudflare Workers Runtime is "2023-10-02",
but you've requested "2023-10-06". Falling back to "2023-10-02"...

[mf:inf] Ready on http://<IP_ADDRESS>:8788

[mf:inf] - http://<IP_ADDRESS>:8788

[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788
[mf:inf] - http://<IP_ADDRESS>:8788

DEBUG

Metrics dispatcher: Posting data {"type":"event","name":"run pages dev","properties":{}}

[ [AsyncFunction: stop] ]
BEFORE_PROCESS

BEFORE_WAIT

KILLING
DONE

I see this on Windows as well. I end up leaving Task Manager up to kill the process before I can run wrangler again.

Same issue with my worker, irrelevant if I use unstable_dev or spawn a child via wrangler dev. My worker has a few resources (queue, durable object etc) and I see quite a few workerd processes remaining after killing/stopping the worker after my tests. Also need to use my activity monitor / task manager to kill them.


Remove check against deprecated property is_xhr

This eliminates the deprecation warning fired by werkzeug's Request.is_xhr property for older versions of Flask by removing the check.
https://github.com/pallets/werkzeug/blob/da57cd54c97909856e05f490418000f9ab851358/werkzeug/wrappers.py#L696-L702

Use Flask 1.0, it is already changed there.

Easier said than done. It would involve migrating a large codebase to a new major version. Not sure that's the right solution here.

you could subclass Request and use a version of the property that doesn't show the warning.
but fwiw, chances are good that switching to 1.0 would be pretty painless!

We could do that. What I'm trying to understand is why you're against putting into the maintenance branch.

Because 0.12 is only getting security fixes at this point.
Silence the warning if you don't want to see the warning. Python's warning module describes how to do this.

Or better yet, pay attention to the warning and stop using request.is_xhr since it's unreliable.


fix failing tests

Should fix https://github.com/StatCan/kubeflow/issues/20

The code is now handling the rejected promise. But this caused another test to fail:
Chrome Headless 85.0.4183.121 (Linux x86_64) Registration Page Should work when API DB is not consistent (use polling) FAILED
	Error: Expected spy Flow Completion Event to have been called.
	    at <Jasmine>
	    at UserContext.<anonymous> (webpack://centraldashboard/public/components/registration-page_test.js:115:30 <- public/index_test.js:87847:26)


Anyway to retrieve response headers?

I'm building a project which relies on receiving the response headers from an upload. Is there any way to get access to them?

+1

The core idea of Resumable is to shoot of A LOT of requests for the same file -- and to make each of these chunk requests fairly disposable. If they fail, let's retry. Etc.
This also means that there isn't a lot of utility built into the system around the chunks themselves. If you want to, however, you can find header through the file object that's being pushed in event. Specifically, file.chunks is an array of all file chunks; and each item in the array will have a .xhr property which should let you .getAllResponseHeaders() or whatever you need.


Re-order build pipeline build stages prio to AQA-tests

Fixes #1086
Re-order the build stages to before AQA-tests, and gate running AQA-tests on the successful completetion of all the build stages.

run tests


Fix checkstyle issues

Some checkstyle issues were found by Travis. See here.

This is invalid; the errors are from branch 36 which is not yet merged into master


Why is this version incompatible with<EMAIL_ADDRESS>

Hello, I am unable to build due to a conflict with the @grammyjs/types library. Your library only uses<EMAIL_ADDRESS>while Grammy itself uses<EMAIL_ADDRESS>When I program on my computer everything is fine, but when I try to build I get a library version conflict error.
Specifically, I am using your library which depends on<EMAIL_ADDRESS>but Grammy requires<EMAIL_ADDRESS>So when I build, it tries to install both versions at the same time and fails.
This is likely happening because your library has not yet been updated to support the latest version of @grammyjs/types. Library dependencies can be tricky when version ranges do not overlap.
Do you have any suggestions on how I can resolve this situation? I need to build my project but cannot have conflicting versions of @grammyjs/types installed simultaneously. Please advise if there is a workaround or if I should wait for your library to release a new version supporting<EMAIL_ADDRESS>Thank you!

Which library are you talking about? This repository contains grammY itself. There is not much we can do.


attachOutsideOnClick doesn't work on the first time after clickoutside

first of all, thank you for making this library. I'm having an issue with event clickOutside. After (clickOutside)="resetNotification($event)" was clicked, I tried to change attachOutsideOnClick to true inside the function resetNotification(event: any).
notification.html
<div class="m-dropdown__wrapper" [attachOutsideOnClick]="attachOutsideOnClick" (clickOutside)="resetNotification($event)">
notification.ts
resetNotification(event: any) { 		this.attachOutsideOnClick = true; }
What happen was after i click outside of that div, [attachOutsideOnClick] does not change to true. If I click on outside once more (clickOutside) will still be triggered. After that, I click on outside again, (clickOutside) will finally not trigger anymore.

For those who facing the same problem. I'm able to solve it by adding ChangeDetectRef.detectChanges() to resetNotification. Thanks


dynamic webpage title

@normanjaeckel @emanuelschuetze new idea: Giving each state the possibility to set data.title. In most cases the parent state just needs to serve the information, because child states inherit the information, but each state could override this (e.g. current list of speakers).

Sounds good.

@normanjaeckel @emanuelschuetze ping

Rest looks good.
@normanjaeckel Please start your review.

@normanjaeckel Ready for review and merge.

@normanjaeckel ping.

@normanjaeckel OK :-)

Ok


Submission mode doesn't work

MLPerf mobile open app. Submission mode doesn't work. The app can't access the ground truth file from the server.

from the configuration file
https://github.com/mlcommons/mobile_models/raw/main/v1_0/assets/tasks_v2.pbtxt
The ground truth is of language processing is pointed to
https://github.com/mlcommons/mobile_models/raw/main/v1_0/assets/squad_groundtruth.tfrecord
In https://github.com/mlcommons/mobile_app_open/blob/master/android/java/org/mlperf/inference/Benchmark.java, it tries to open the URL link as File directly.
public boolean checkGroundtruthFile() {
DatasetConfig cfg = taskConfig.getDataset();
String fileName = cfg.getGroundtruthSrc();
return new File(fileName).canRead();
}
This should be the root cause of this error.


Change route dynamically

Is there any way to modify a route's properties after the initial render?
I want to dynamically add/remove buttons to the navbar (by changing the rightTitle and onRight props of <Route>).

@bodhi - I'm having a similar issue. I proposed a solution here: https://github.com/aksonov/react-native-router-flux/issues/158#issuecomment-181618505 - would something like this help you solve your problem?

@bodhi Have you tried to do it with Actions.ROUTE({rightTitle:..., onRight:....}) where ROUTE is your new route?

No I haven't. Is this the correct/preferred way to deal with this? Maybe I missed it in the docs.

Closing it for now.

@aksonov I'm trying to do something with this now, where I call the current route with Replace and a new rightTitle, but it doesn't work.
    const rightTitle = getState().currentStack.editMode ? 'Edit' : 'Done'
    Actions.stackstab_stackview({ type: ActionConst.REPLACE, rightTitle})

running RN 0.30 and RNRF 3.30.1

@erdostom did you get this it to work ?
TIA

Yes, I got the code above to work ultimately.


Come up with a friendlier name

shallot, scallion, and even horse25519 are more memorable names than "make proposal 224 onion".
Please come up with a friendlier name. Suggestions: conch or seashell

Personally, I find mkp224o to be perfectly memorable, and mk prefix pretty intuitive..
Quick github search of "seashell" brought quite much results, and I don't want name clashes.
Same with "conch".
And they also don't seem to have clear association with onions shallot and scallion have.
Someone else complained about this too, with suggestion of onionater, which is pretty OK for project name tbh though I'd still like to keep mkp224o as tool name.
What you think about this?

Hmm I guess I see what you mean about seashell and conch not being related to onions. But "seashell tor" returns no results, and "conch tor" returns just 1 unrelated one. Considering I found shallot by searching for "shallot tor" on DuckDuckGo, I think one of those could work. Honestly I had no idea shallots and scallions were onions though lol. In that case we could go with like "walla walla",  "triploid", "diploid", or "leek".
I'm not much of a fan of onionater though.

hrm. after thinking about it a bit I don't really think it's a good idea to change it.
It's very unique (try googling it), and already included in ianix.com like that.
At this point it would only cause confusion to give it more generic name.


Feature request: Make current cursor in scrollbar blink

The scrollbar can display a wide variety of different colored bars to indicate significant lines in the code.
One of these bars always follows the line the keyboard cursor is currently active in.
To make it more obvious that this bar is not a hint in the code (e.g. a line that could be refactored) - the bar(s) representing the keyboard cursors position should blink.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


🐱👤Enemy AI

Where are we on this? Did this get committed and never tracked?

I'm waiting on combat to get a bit more defined before I start really working on hooking up the attacks to it. Once we have that, we'll have a simple placeholder AI good enough for MVP, but as more systems come online, development will continue on this. (eg. pathfinding, attack selection, etc.)

Eh, you could always hardcode attacks for now and then we can perform surgery when we merge #56

Since we have our basic AI implemented. I'm closing this issue. Further enhancements should have their own issues created.


Fork implementation not working

It seems that fork() was added as of native_client's PR#6, but it isn't currently working.
Compiled programs that contain fork() yield the error:
 warning: warning: fork is not implemented and will always fail

This may be due to the libc versioning issue documented in issue #6.
If an older version is being used, this could be why the newer fork implementation fails.

This is fixed by #6 since we build the correct version with the fork() implementation.


dev mode with containers creates duplicate lines

After running mvn liberty:devc a few times you will see that the file target/liberty/wlp/usr/servers/defaultServer/server.env contains
WLP_DEBUG_SUSPEND=n
WLP_DEBUG_ADDRESS=7777
WLP_DEBUG_SUSPEND=n
WLP_DEBUG_ADDRESS=7777
WLP_DEBUG_SUSPEND=n
WLP_DEBUG_ADDRESS=7777
WLP_DEBUG_SUSPEND=n
WLP_DEBUG_ADDRESS=7777
WLP_DEBUG_SUSPEND=n
WLP_DEBUG_ADDRESS=7777
WLP_DEBUG_SUSPEND=n
WLP_DEBUG_ADDRESS=7777
WLP_DEBUG_SUSPEND=n
WLP_DEBUG_ADDRESS=7777

Two thoughts on this...

Is the server.env backed up and replaced when dev mode ends? If so, this should not happen.
Is the mergeServerEnv parameter set to true? It defaults to false.

Eric and Paul were not able to reproduce this.


🚀 [Feature] Gradido Button

:rocket: Feature

A Gradido Button similar to the Paypal button.
User Problem

Define all User stories relevant for the Gradido button:

user generates the button
user embeds the button
user clicks the button to pay
user deletes button (?)
...

 (A link is pointing to a button configuration which can be changed by the user later, so he does not have to change the embeded links)
-> Please consider this for the Design & Layout questions aswell
Do we allow to attach a predefined amount to the button? Is that reflected in the button in any way?
Design & Layout

What should be the design?
Which button sizes should we offer?
How is the process to generate this Button?
How is the design of the button generation interface?
Where does the User generate the button? (e.g. Main Menu or User Profile)

Validation

What would be a good and realistic test scenario to cover most user stories all at once for a fullstack test?

Additional context

How doe we handle the users privacy?

Do we expose the users email?

Do we expose the users name?

Will we allow a simple link as well?

How would such a link look like?

 Wir können da sicher sehr von deiner Vorarbeit profitieren und auf deine Überlegungen zurückgreifen, um den Planungs- & Designprozess schnellstmöglich hinter uns zu lassen und das alsbald in the Umsetzung einzuplanen.

Design & Layout

What should be the design? QR-Code with Gradido-Logo, contains Gradido-Link

Which button sizes should we offer? Large enough to be scanned by the camera

How is the process to generate this Button? Automatically generated for each user

How is the design of the button generation interface? No interface necessary

Where does the User generate the button? (e.g. Main Menu or User Profile) Displayed in the user profile
Validation

What would be a good and realistic test scenario to cover most user stories all at once for a fullstack test?
Additional context

How doe we handle the users privacy? We only show Gradido-Link

Do we expose the users email? No

Do we expose the users name? No real name

Will we allow a simple link as well? Yes

How would such a link look like? community.tld/username or community.tld/u/username


Furo: adjust "Scroll to top" button for Qiskit top nav bar

Check qiskit-sphinx-theme.js -- we probably need to tweak some values to account for the top nav bar.

Make sure these changes don't break the Ecosystem theme.

This is no longer a priority. We care more about the Ecosystem Theme, which already is good to go.


Cannot auto failover

Hello Shlomi,I simulated failover based on the Failure detection method, but the failover failed.
Here are some of my configurations
MySQL:
CHANGE` MASTER TO
  MASTER_HOST='<IP_ADDRESS>',
  MASTER_USER='repl',
  MASTER_PASSWORD='123',
  MASTER_PORT=3306,
  MASTER_AUTO_POSITION=1,
  MASTER_CONNECT_RETRY=10;

slave_net_timeout = 2
log_bin=on
log_slave_updates=on
The database is an empty instance and there are no operations, so there is no delay in the problem
orchestrator:
"RecoverMasterClusterFilters":  ["*" ]
"RecoverIntermediateMasterClusterFilters": ["*"]
no downtime configuration
global recovery is on
Confirmed the last failover（by kill mysqld）
deployment：
superma-60-62：master
superma-60-63：slave
superma-65-6：orchestrator

step：
I used the iptables command to isolate the superma-60-62, I executed the following command on superma-60-62.
iptables -A INPUT -s <IP_ADDRESS> -j DROP
iptables -A OUTPUT -s <IP_ADDRESS> -j DROP
iptables -A INPUT -s <IP_ADDRESS> -j DROP
iptables -A OUTPUT -s <IP_ADDRESS> -j DROP
The failover did not work as expected.
During failover,  nohup continuously print
> WARNING: NamedStopwatch.Stop("instance") IsRunning is false
2019-03-01 14:34:10 ERROR dial tcp <IP_ADDRESS>:3306: i/o timeout
2019-03-01 14:34:10 INFO auditType:emergently-read-topology-instance instance:superma-60-62:3306 cluster:superma-60-62:3306 message:FirstTierSlaveFailingToConnectToMaster
2019-03-01 14:34:11 ERROR dial tcp <IP_ADDRESS>:3306: i/o timeout
2019-03-01 14:34:11 INFO auditType:emergently-read-topology-instance instance:superma-60-62:3306 cluster:superma-60-62:3306 message:FirstTierSlaveFailingToConnectToMaster
2019-03-01 14:34:13 ERROR dial tcp <IP_ADDRESS>:3306: i/o timeout
2019-03-01 14:34:13 INFO auditType:emergently-read-topology-instance instance:superma-60-62:3306 cluster:superma-60-62:3306 message:FirstTierSlaveFailingToConnectToMaster
2019-03-01 14:34:14 ERROR dial tcp <IP_ADDRESS>:3306: i/o timeout
2019-03-01 14:34:14 INFO auditType:emergently-read-topology-instance instance:superma-60-62:3306 cluster:superma-60-62:3306 message:FirstTierSlaveFailingToConnectToMaster
2019-03-01 14:34:15 ERROR dial tcp <IP_ADDRESS>:3306: i/o timeout

I don't know where the problem is. Can you help me with this question?

pro tip: use three backtips for multi-line code quotes. See how I've edited your original comment.

Can you please run with --debug and paste the entire log that relates to detection + recovery?

Hi,shlomi-noach. This is the log I got using the below command.
grep "2019-03-01" nohup.out > failover.log
failover.log

Please, I'd like to help you, but can you kindly provide less than 24 hours of log?

I see a lot of Access Denied message; for example:
2019-03-01 05:25:03 ERROR ExpireAvailableNodes: failed to remove old entries: Error 1045: Access denied for user<EMAIL_ADDRESS>(using password: YES)

..
2019-03-01 05:27:03 ERROR Error 1045: Access denied for user<EMAIL_ADDRESS>(using password: YES)
2019-03-01 05:27:03 ERROR Error 1045: Access denied for user<EMAIL_ADDRESS>(using password: YES)
...

Can you look into credentials?

According to:
iptables -A INPUT -s <IP_ADDRESS> -j DROP
iptables -A OUTPUT -s <IP_ADDRESS> -j DROP
iptables -A INPUT -s <IP_ADDRESS> -j DROP
iptables -A OUTPUT -s <IP_ADDRESS> -j DROP

I don't know what <IP_ADDRESS> IP is, I'd need more details please.
But <IP_ADDRESS> seems like you also isolated the replica, no? In which case orchestrator is unable to see any server, and so cannot failover.

Again, I'm trying to read a 24 hour long log, but here's a successful failover:
2019-03-01 15:09:02 INFO CommandRun(echo 'Detected DeadMaster on superma-60-62:3306. Affected replicas: 1' >> /tmp/recovery.log,[])
2019-03-01 15:09:02 INFO CommandRun/running: bash /tmp/orchestrator-process-cmd-089172111
2019-03-01 15:09:02 INFO CommandRun:
2019-03-01 15:09:02 INFO CommandRun successful. exit status 0
2019-03-01 15:09:02 INFO topology_recovery: Completed OnFailureDetectionProcesses hook 1 of 1 in 1.936506ms
2019-03-01 15:09:02 INFO topology_recovery: done running OnFailureDetectionProcesses hooks
2019-03-01 15:09:02 INFO executeCheckAndRecoverFunction: proceeding with DeadMaster recovery on superma-60-62:3306; isRecoverable?: true; skipProcesses: false
2019-03-01 15:09:02 INFO topology_recovery: will handle DeadMaster event on superma-60-62:3306
2019-03-01 15:09:02 INFO auditType:recover-dead-master instance:superma-60-62:3306 cluster:superma-60-62:3306 message:problem found; will recover
2019-03-01 15:09:02 INFO topology_recovery: Running 1 PreFailoverProcesses hooks
2019-03-01 15:09:02 INFO topology_recovery: Running PreFailoverProcesses hook 1 of 1: echo 'Will recover from DeadMaster on superma-60-62:3306' >> /tmp/recovery.log
2019-03-01 15:09:02 INFO CommandRun(echo 'Will recover from DeadMaster on superma-60-62:3306' >> /tmp/recovery.log,[])
2019-03-01 15:09:02 INFO CommandRun/running: bash /tmp/orchestrator-process-cmd-447184034
2019-03-01 15:09:02 INFO CommandRun:
2019-03-01 15:09:02 INFO CommandRun successful. exit status 0
2019-03-01 15:09:02 INFO topology_recovery: Completed PreFailoverProcesses hook 1 of 1 in 1.726858ms
2019-03-01 15:09:02 INFO topology_recovery: done running PreFailoverProcesses hooks
2019-03-01 15:09:02 INFO topology_recovery: RecoverDeadMaster: will recover superma-60-62:3306
2019-03-01 15:09:02 INFO topology_recovery: RecoverDeadMaster: masterRecoveryType=MasterRecoveryGTID
2019-03-01 15:09:02 INFO topology_recovery: RecoverDeadMaster: regrouping replicas via GTID
2019-03-01 15:09:02 DEBUG Stopping 1 replicas via StopReplicationNicely
2019-03-01 15:09:02 INFO Stopped slave nicely on superma-60-63:3306, Self:mysql-bin.000033:234, Exec:mysql-bin.000047:234
2019-03-01 15:09:02 INFO Stopped replication on superma-60-63:3306, Self:mysql-bin.000033:234, Exec:mysql-bin.000047:234
2019-03-01 15:09:02 DEBUG - sorted replica: superma-60-63:3306 mysql-bin.000047:234
2019-03-01 15:09:02 DEBUG GetCandidateReplica: candidate: superma-60-63:3306, ahead: 0, equal: 0, late: 0, break: 0
2019-03-01 15:09:02 INFO topology_recovery: RecoverDeadMaster: promotedReplicaIsIdeal(superma-60-63:3306)
2019-03-01 15:09:02 DEBUG RegroupReplicasGTID: working on 0 replicas
2019-03-01 15:09:02 INFO Started replication on superma-60-63:3306
2019-03-01 15:09:03 DEBUG RegroupReplicasGTID: done
2019-03-01 15:09:03 INFO auditType:regroup-replicas-gtid instance:superma-60-62:3306 cluster:superma-60-62:3306 message:regrouped replicas of superma-60-62:3306 via GTID; promoted superma-60-63:3306
2019-03-01 15:09:03 INFO auditType:begin-downtime instance:superma-60-62:3306 cluster:superma-60-62:3306 message:owner: superma-65-6, reason: lost-in-recovery
2019-03-01 15:09:03 INFO topology_recovery: RecoverDeadMaster: 0 postponed functions
2019-03-01 15:09:03 INFO topology_recovery: checking if should replace promoted replica with a better candidate
2019-03-01 15:09:03 INFO topology_recovery: + checking if promoted replica is the ideal candidate
2019-03-01 15:09:03 INFO topology_recovery: + searching for an ideal candidate
2019-03-01 15:09:03 INFO topology_recovery: + checking if promoted replica is an OK candidate
2019-03-01 15:09:03 INFO topology_recovery: + searching for a candidate
2019-03-01 15:09:03 INFO topology_recovery: + searching for a candidate
2019-03-01 15:09:03 INFO topology_recovery: + found no server to promote on top promoted replica
2019-03-01 15:09:03 INFO topology_recovery: replace-promoted-replica-with-candidate: promoted instance superma-60-63:3306 requires no further action
2019-03-01 15:09:03 INFO topology_recovery: promoted replica: superma-60-63:3306
2019-03-01 15:09:03 INFO auditType:recover-dead-master instance:superma-60-62:3306 cluster:superma-60-62:3306 message:promoted replica: superma-60-63:3306
2019-03-01 15:09:03 INFO topology_recovery: RecoverDeadMaster: successfully promoted superma-60-63:3306
2019-03-01 15:09:03 INFO topology_recovery: - RecoverDeadMaster: promoted server coordinates: mysql-bin.000033:234
2019-03-01 15:09:03 INFO topology_recovery: - RecoverDeadMaster: will apply MySQL changes to promoted master
2019-03-01 15:09:03 INFO Will reset replica on superma-60-63:3306
2019-03-01 15:09:03 INFO auditType:begin-maintenance instance:superma-60-63:3306 cluster:superma-60-62:3306 message:maintenanceToken: 85, owner: superma-65-6, reason: reset replica
2019-03-01 15:09:03 INFO Stopped replication on superma-60-63:3306, Self:mysql-bin.000033:234, Exec:mysql-bin.000047:234
2019-03-01 15:09:03 INFO Reset slave superma-60-63:3306
2019-03-01 15:09:03 INFO auditType:reset-slave instance:superma-60-63:3306 cluster:superma-60-62:3306 message:superma-60-63:3306 replication reset
2019-03-01 15:09:03 INFO auditType:end-maintenance instance:superma-60-63:3306 cluster:superma-60-62:3306 message:maintenanceToken: 85
2019-03-01 15:09:03 INFO topology_recovery: - RecoverDeadMaster: applying RESET SLAVE ALL on promoted master: success=true
2019-03-01 15:09:03 INFO instance superma-60-63:3306 read_only: false
2019-03-01 15:09:03 INFO auditType:read-only instance:superma-60-63:3306 cluster:superma-60-62:3306 message:set as false
2019-03-01 15:09:03 INFO topology_recovery: - RecoverDeadMaster: applying read-only=0 on promoted master: success=true
2019-03-01 15:09:03 INFO topology_recovery: Writing KV [mysql/master/superma-60-62:superma-60-63:3306 mysql/master/superma-60-62/hostname:superma-60-63 mysql/master/superma-60-62/port:3306 mysql/master/superma-60-62/ipv4:<IP_ADDRESS> mysql/master/superma-60-62/ipv6:]
2019-03-01 15:09:03 ERROR dial tcp <IP_ADDRESS>:3306: connect: connection refused
2019-03-01 15:09:03 ERROR dial tcp <IP_ADDRESS>:3306: connect: connection refused
2019-03-01 15:09:03 INFO topology_recovery: - RecoverDeadMaster: applying read-only=1 on demoted master: success=false
2019-03-01 15:09:03 INFO topology_recovery: Running 1 PostMasterFailoverProcesses hooks
2019-03-01 15:09:03 INFO topology_recovery: Running PostMasterFailoverProcesses hook 1 of 1: echo 'Recovered from DeadMaster on superma-60-62:3306. Failed: superma-60-62:3306; Promoted: superma-60-63:3306' >> /tmp/recovery.log
2019-03-01 15:09:03 INFO CommandRun(echo 'Recovered from DeadMaster on superma-60-62:3306. Failed: superma-60-62:3306; Promoted: superma-60-63:3306' >> /tmp/recovery.log,[])
2019-03-01 15:09:03 INFO CommandRun/running: bash /tmp/orchestrator-process-cmd-120930201
2019-03-01 15:09:03 INFO CommandRun:
2019-03-01 15:09:03 INFO CommandRun successful. exit status 0
2019-03-01 15:09:03 INFO topology_recovery: Completed PostMasterFailoverProcesses hook 1 of 1 in 1.79457ms
2019-03-01 15:09:03 INFO topology_recovery: done running PostMasterFailoverProcesses hooks
2019-03-01 15:09:03 INFO topology_recovery: - RecoverDeadMaster: updating cluster_alias: superma-60-62:3306 -> superma-60-63:3306
2019-03-01 15:09:03 INFO Topology recovery: {"Id":38,"UID":"1551424142677818722:fea9984e1380d7458941c3f8b388571012ed682a8599a17119d1773531ebf1c0","AnalysisEntry":{"AnalyzedInstanceKey":{"Hostname":"superma-60-62","Port":3306},"AnalyzedInstanceMasterKey":{"Hostname":"","Port":0},"ClusterDetails":{"ClusterName":"superma-60-62:3306","ClusterAlias":"superma-60-62","ClusterDomain":"","CountInstances":0,"HeuristicLag":0,"HasAutomatedMasterRecovery":true,"HasAutomatedIntermediateMasterRecovery":true},"AnalyzedInstanceDataCenter":"","AnalyzedInstancePhysicalEnvironment":"","IsMaster":true,"IsCoMaster":false,"LastCheckValid":false,"LastCheckPartialSuccess":false,"CountReplicas":1,"CountValidReplicas":1,"CountValidReplicatingReplicas":0,"CountReplicasFailingToConnectToMaster":1,"CountDowntimedReplicas":0,"ReplicationDepth":0,"SlaveHosts":[{"Hostname":"superma-60-63","Port":3306}],"IsFailingToConnectToMaster":false,"Analysis":"DeadMaster","Description":"Master cannot be reached by orchestrator and none of its replicas is replicating","StructureAnalysis":null,"IsDowntimed":false,"IsReplicasDowntimed":false,"DowntimeEndTimestamp":"","DowntimeRemainingSeconds":0,"IsBinlogServer":false,"PseudoGTIDImmediateTopology":false,"OracleGTIDImmediateTopology":true,"MariaDBGTIDImmediateTopology":false,"BinlogServerImmediateTopology":false,"CountStatementBasedLoggingReplicas":0,"CountMixedBasedLoggingReplicas":0,"CountRowBasedLoggingReplicas":1,"CountDistinctMajorVersionsLoggingReplicas":1,"CountDelayedReplicas":0,"CountLaggingReplicas":0,"IsActionableRecovery":true,"ProcessingNodeHostname":"superma-65-6","ProcessingNodeToken":"2739914f3651eedfbf3be23990dbcb05585f90a1fe32c51ed67a923c42ac7782","CountAdditionalAgreeingNodes":0,"StartActivePeriod":"","SkippableDueToDowntime":false,"GTIDMode":"ON","MinReplicaGTIDMode":"ON","MaxReplicaGTIDMode":"ON","MaxReplicaGTIDErrant":"","CommandHint":""},"SuccessorKey":{"Hostname":"superma-60-63","Port":3306},"SuccessorAlias":"","IsActive":false,"IsSuccessful":true,"LostReplicas":[],"ParticipatingInstanceKeys":[],"AllErrors":[],"RecoveryStartTimestamp":"","RecoveryEndTimestamp":"","ProcessingNodeHostname":"","ProcessingNodeToken":"","Acknowledged":false,"AcknowledgedAt":"","AcknowledgedBy":"","AcknowledgedComment":"","LastDetectionId":0,"RelatedRecoveryId":0,"Type":"MasterRecovery","RecoveryType":"MasterRecoveryGTID"}
2019-03-01 15:09:03 INFO topology_recovery: Running 1 PostFailoverProcesses hooks
2019-03-01 15:09:03 INFO topology_recovery: Running PostFailoverProcesses hook 1 of 1: echo '(for all types) Recovered from DeadMaster on superma-60-62:3306. Failed: superma-60-62:3306; Successor: superma-60-63:3306' >> /tmp/recovery.log
2019-03-01 15:09:03 INFO CommandRun(echo '(for all types) Recovered from DeadMaster on superma-60-62:3306. Failed: superma-60-62:3306; Successor: superma-60-63:3306' >> /tmp/recovery.log,[])
2019-03-01 15:09:03 INFO CommandRun/running: bash /tmp/orchestrator-process-cmd-793463332
2019-03-01 15:09:03 INFO CommandRun:
2019-03-01 15:09:03 INFO CommandRun successful. exit status 0
2019-03-01 15:09:03 INFO topology_recovery: Completed PostFailoverProcesses hook 1 of 1 in 1.584334ms
2019-03-01 15:09:03 INFO topology_recovery: done running PostFailoverProcesses hooks
2019-03-01 15:09:03 INFO topology_recovery: Waiting for 0 postponed functions
2019-03-01 15:09:03 DEBUG PostponedFunctionsContainer: waiting on 0 postponed functions
2019-03-01 15:09:03 DEBUG PostponedFunctionsContainer: done waiting
2019-03-01 15:09:03 INFO topology_recovery: Executed 0 postponed functions

I'd really appreciate it if you pinpointed when you ran the network isolation, on which servers, and give me the logs from the relevant time.

I am very sorry, it is my fault.


Add general comprehensive parameters and occupants

Hi @bponleitner,

) For some coverages, we require a parameter that's valid for comprehensive packages without either partial or comprehensive being specified.
) Does "product.motor.coverage.passenger-cover.passenger-protection" corresponds to "Insassenunfallversicherung" including passengers and the driver? If not I would propose to add "product.motor.coverage.passenger-cover.occupants-protection.is-included" that includes passengers and driver

Let me know if I can provide more information.
Best,
Felippe

Hi @felippewi ,

For some coverages, we require a parameter that's valid for comprehensive packages without either partial or comprehensive being specified.

Is gross-negligence the only coverage for which you need a general comprehensive-parameter?

Hi Bettina,
For our current use case it would also be appreciated for the following
coverages. We may have to extend it to others in the future.

product.motor.coverage.comprehensive.partial.compensation-new-value.is-included
product.motor.coverage.comprehensive.partial.glass-damage-extended.is-included
Best,
Felippe
On Mon, 15 Mar 2021 at 11:11, bponleitner @.***> wrote:

Hi @felippewi https://github.com/felippewi ,
For some coverages, we require a parameter that's valid for comprehensive
packages without either partial or comprehensive being specified.
Is gross-negligence the only coverage for which you need a general
comprehensive-parameter?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/riskine/ontology/pull/18#issuecomment-799295124, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AQMCKASJKRAKV5N4IGWFYZDTDXMN3ANCNFSM4Y3NCL5Q
.


Relationship create() method does not pass constructor arguments to Model

Laravel Version: 5.6.2
PHP Version: 7.2
Database Driver & Version: mysql (latest)

Description:
Having implemented:
// User.php

...

public function tokens() {
    return $this->hasMany(Token::class);
}

// Token.php

public function __construct(string $label) {
    parent::__construct();

    $this->label = $label;
}

...

public function user() {
    return $this->belongsTo(User::class);
}

I should be able to call $user->tokens()->create('My Token Label');, however I'm greeted with
Too few arguments to function App\Token::__construct(), 0 passed in /var/www/html/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php on line 656 and exactly 1 expected

Looking into this, it seems the issue lies here on Line 656 of HasRelationships.php

Steps To Reproduce:
Create Models as described above and try $user->tokens()->create('My Token Label');

Looking at this, I get the same error even when trying
$token = new Token('My Token Label');
$user->tokens()->save($token);

Overriding the constructor on a model, you need to pass the attributes to the parent constructor.
parent::__construct($this->attributes);

Even modifying my Token __construct() method as such:
public function __construct(string $label, $attributes = []) {
    parent::__construct($attributes);

    $this->label = $label;
}

fails with the same error.


Define playback ID (public stream identifier)

Mist has two options to make separate URLs for streaming and playing back.

In stream configuration add 'password'. Without password urls looks like these:

rtmp://mist.host/live/stream_name
http://mist.host/hls/stream_name/index.m3u8
When password added, URLs looks like:
rtmp://mist.host/password/stream_name
http://mist.host/hls/stream_name/index.m3u8

Use Mist trigger that allows us to check and rewrite (for internal purposes) RTMP url - allows us to write any logic around RTMP URLs we want

Will be implementing first option as it requires less work.
Currently, when stream object created through API, user gives name to the stream, and automatically generated ID assigned to the stream. name field currently not used anywhere and id is used as stream_name in URLs.
For example, user creates steam using this request:
{ "name": "test_stream", "presets": ["P240p30fps16x9"] }

and in response gets:
{ "id": "fa644ea8-fa66-4285-83af-7e030b92ee51"}

So now URLs will be:
- rtmp://mist.host/live/fa644ea8-fa66-4285-83af-7e030b92ee51
- http://mist.host/hls/fa644ea8-fa66-4285-83af-7e030b92ee51/index.m3u8
My proposal is to use user-provided stream name as playback ID and stream object's id as password, so URLs will be:
- rtmp://mist.host/fa644ea8-fa66-4285-83af-7e030b92ee51/test_stream
- http://mist.host/hls/test_steam/index.m3u8

Implementation tasks:

[ ] Check that stream name is unique upon creation
[ ] Show stream name in streams list in UI
[ ] Change mist-controller to create proper configuration in Mist when creating streams inside Mist server

@darkdarkdragon  I like this! One additional checkbox: I think the existing definition of name allows for any string at all to be used. If we're going to use that name in URLs, we should probably verify that name is URL-safe... I feel like allowing people to name their streams something like "😬😆🛳" will be trouble — even if we handle it correctly, we'd need us, Mist, and the TLS terminator (nginx/traefik) to all handle the URLs in the same way, and that sounds messy.

I like how you are thinking of this. A couple notes/questions.

In the existing http workflow, the user provides the stream name. In the UI for the rtmp ingest workflow, is anything stopping us from providing the stream name string for them? That would obviate the need to check for duplicates and URL safe characters.

I like using the password as part of authenticating for ingest. In the UI and UX, let's refer to that as the stream key instead of the password. There is still the requirement that we have a single ingest URL for all users in a given region (one for US and one for EU). I can't tell if you proposal misses that requirement.

In the UX for the rtmp ingest workflow, I'd like what we are now calling the stream name to be the a live stream id. For more context, the related endpoints and responses could be something like this for the user:
/live-stream-ids
GET: all live stream ids created by this user (or maybe should it be for a given API key?)
/stream-status
GET: a list of stream statuses based on the list of live-stream-ids
/stream
GET: the properties of a stream (playback id, playback url, stream-status, ingest URL, stream key, created)

Thoughts / feedback? @iameli @darkdarkdragon

@wohlner

Can you elaborate on that? I'm not sure I understand.
It was called password in Mist's documentation - and here I'm describing how our internals will connect to Mist's internal. But surely, let's call it stream key for us.

here is still the requirement that we have a single ingest URL for all users in a given region

This one lives on a different level from this proposal. This proposal describes authentication mechanism for each Mist instance, and given that we have global database each instance will authenticate against same data. And it doesn't matter at which actual URL Mist serves - we're checking only stream key/stream id part of the URL.

For now I don't see any need for separate /live-stream-ids and /stream-status endpoints. Stream status currently is just three field of the stream object.  We do have endpoint that returns all user's streams and endpoint that returns stream by id. That's all the information we have now, don't see need to divided it.

(or maybe should it be for a given API key?)

Good question. Right now we don't track by what key stream was created. Maybe we should?

Thanks for explaining.

Instead of users defining their stream name, let's generate and give them a string. Let's tell them what the name is instead of letting them pick. The playback URL won't be pretty, but that's fine.

Cool, makes sense.

Yes, we should have the ability to get all streams of an api key. It's ok if we don't do that yet. It's out of scope for this proposal. But we should do it soon.

Let’s say the RTMP ingest URL for is rtmp://theingesturl/
And the let’s say the stream key (you referred to it as password in your PR) is mystreamkey123
The Livepeer API product should accept a user sending a video to rtmp://theingesturl/mystreamkey123 or sending it to rtmp://theingesturl/ and inputting their stream key, mystreamkey123, like how it is done in the OBS UI.
I don't understand why you are suggesting the name in the ingest URL.

We have two technical options to implement this (I've described them in beginning).
URL structure rtmp://host/password/name is what Mist gives us for first option.
If we go with second option then we can make URL to look like anything we want.
Initially I've thought that implementing first option will require less work, but after looking into it more thoroughly - amount of work will be same, so I'll proceed with the second option.

Sounds good. Thanks @darkdarkdragon for writing this up and explaining everything to make sure we are picking the right implementation. I'm glad option 2 is the same amount of work and not more.

@wohlner Another UX question - do we want ability to change stream key? If we're using internal steam object id field as stream key - then user can't change it, only delete stream and create new one. If we want ability to change stream key without deleting stream - then we need to add new field to database.

Good question. No, we do not need the ability to change a stream key in the UI. It will be a string we provide to the user.

@darkdarkdragon, @iameli and I are talking on a call. When you are back from the Ukraine holiday, check in with us before continuing to build this out.

For what it's worth, we've had a similar thought process in go-livepeer around attempting to improve how we present and communicate certain concepts to users. Example: https://github.com/livepeer/go-livepeer/issues/871

My proposal is to use user-provided stream name as playback ID and stream object's id as password, so URLs will be:

My two cents on this, following the line of thinking outlined in https://github.com/livepeer/go-livepeer/issues/871. For user supplied values, it might help to refer to them as "names" . So in this case, for a user-provided stream name it  might be a "playback name" rather than a "playback ID". If a value is supplied by us, especially auto-generated values, then calling it an "ID" makes more sense.
I see that we're leaning towards supplying the name now, so "playback ID" would be fine in that case. Anyway, that's just my thought process here with respect to nomenclature.

@wohlner I've finished adding changes to mist connector - now it works with multiple bitrates (with latest Mist server) and handles stream key/id as was described here.
I've also commited my changes API (https://github.com/livepeer/livepeerjs/pull/688) - it works, just misses unit tests and some UI improvements.

Ok great! That's awesome. We will talk when you get back, just minor possible tweaks


Duel is bugged

Sometimes duelers get stuck at duel arena after killing each other. The duel never ends then.

I tried do something and it's fine, if your opponent die you will respawn in lobby or in a main-spawn. But can't found that error: http://i.imgur.com/38e3cpn.png, i think its a problem with getplayerpos or cordinates correlated with x y and z i guess.

i continue investigate

*find

Your tests were on a home server? I think it only happens on real hosted servers.

I tested it on a home server and in a real hosted server, same thing

\Bulletproof-Gamemode\pawno\include\modules\src\duel.inc i think there are a problem with getplayerpos

maybe.


Simulation doesn't work with hello-rust

Hi,
If I try to compile helloworld in SW mode it works but if I try hello-rust I get this error:
[+] Home dir is /root
[+] Open token file success!
[+] Token file valid!
[-] Init Enclave Failed SGX_ERROR_MODE_INCOMPATIBLE!

Steps to reproduce :
$ docker pull baiduxlab/sgx-rust:latest
$ git clone https://github.com/baidu/rust-sgx-sdk.git
$ docker run -v $(pwd)/rust-sgx-sdk:/root/sgx -ti baiduxlab/sgx-rust:latest
$ cd sgx/samplecode/hello-rust
$ export SGX_MODE=SW # editing the Makefile gives the same effect
$ make
$ cd bin && ./app

Thanks!

I encountered the same issue. @dingelish can help on that. It seems to be an issue with an import or the build.rs missing something.
in app/build.rs
you can try to:
-        "SW" => println!("cargo:rustc-link-lib=dylib=sgx_urts_sim"),
-        "HW" => println!("cargo:rustc-link-lib=dylib=sgx_urts"),
-        _    => println!("cargo:rustc-link-lib=dylib=sgx_urts"), // Treat undefined as HW
+        "SW" => {
+            println!("cargo:rustc-link-lib=dylib=sgx_urts_sim");
+            println!("cargo:rustc-link-lib=dylib=sgx_uae_service_sim");
+        },
+        _    => { // HW by default
+            println!("cargo:rustc-link-lib=dylib=sgx_urts");
+            println!("cargo:rustc-link-lib=dylib=sgx_uae_service");
+        },```

Thanks @davidp94 ! I'll update it!

Hi @elichai , I can't reproduce the bug.
Resolving deltas: 100% (2585/2585), done.
Checking connectivity... done.
ding@xlab-node17:~$ docker run --rm -v $(pwd)/rust-sgx-sdk:/root/sgx -ti baiduxlab/sgx-rust:latest
root@cf65e390e709:~# cd sgx/samplecode/hello-rust/
root@cf65e390e709:~/sgx/samplecode/hello-rust# export SGX_MODE=SW
root@cf65e390e709:~/sgx/samplecode/hello-rust# make
/opt/sgxsdk/bin/x64/sgx_edger8r --trusted enclave/Enclave.edl --search-path /opt/sgxsdk/include --search-path ../../edl --trusted-dir enclave
/opt/sgxsdk/bin/x64/sgx_edger8r --untrusted enclave/Enclave.edl --search-path /opt/sgxsdk/include --search-path ../../edl --untrusted-dir app
GEN  =>  enclave/Enclave_t.c enclave/Enclave_t.h app/Enclave_u.c app/Enclave_u.h
CC   <=  enclave/Enclave_t.c
ar rcsD app/libEnclave_u.a app/Enclave_u.o
cp app/libEnclave_u.a ./lib
    Updating registry `https://github.com/rust-lang/crates.io-index`
 Downloading dirs v1.0.2
   Compiling libc v0.2.42
   Compiling sgx_types v1.0.1 (file:///root/sgx/sgx_types)
   Compiling app v1.0.0 (file:///root/sgx/samplecode/hello-rust/app)
   Compiling sgx_urts v1.0.1 (file:///root/sgx/sgx_urts)
   Compiling dirs v1.0.2
    Finished release [optimized] target(s) in 5.81s
Cargo  =>  bin/app
cp ./app/target/release/app ./bin
make -C ./enclave/
make[1]: Entering directory '/root/sgx/samplecode/hello-rust/enclave'
cargo build --release
   Compiling sgx_types v1.0.1 (file:///root/sgx/sgx_types)
   Compiling sgx_unwind v0.0.1 (file:///root/sgx/sgx_unwind)
   Compiling sgx_build_helper v0.1.0 (file:///root/sgx/build_helper)
   Compiling sgx_trts v1.0.1 (file:///root/sgx/sgx_trts)
   Compiling sgx_tstd v1.0.1 (file:///root/sgx/sgx_tstd)
   Compiling sgx_tprotected_fs v1.0.1 (file:///root/sgx/sgx_tprotected_fs)
   Compiling sgx_alloc v1.0.1 (file:///root/sgx/sgx_alloc)
   Compiling Helloworldsampleenclave v1.0.0 (file:///root/sgx/samplecode/hello-rust/enclave)
    Finished release [optimized] target(s) in 7.04s
cp ./target/release/libhelloworldsampleenclave.a ../lib/libenclave.a
make[1]: Leaving directory '/root/sgx/samplecode/hello-rust/enclave'
make -C ../../compiler-rt/ 2> /dev/null
make[1]: Entering directory '/root/sgx/compiler-rt'
cc -c -Wjump-misses-init -Wstrict-prototypes -Wunsuffixed-float-constants -fstack-protector -O2   -UDEBUG -DNDEBUG -Wall -Wextra -Winit-self -Wpointer-arith -Wreturn-type -Waddress -Wsequence-point -Wformat-security -Wmissing-include-dirs -Wfloat-equal -Wundef -Wshadow -Wcast-align -Wconversion -Wredundant-decls -DITT_ARCH_IA64 -ffreestanding -nostdinc -fvisibility=hidden -fpie -O2  -I../common/inc/ muloti4.c -o muloti4.o
ar rcsD libcompiler-rt-patch.a muloti4.o
make[1]: Leaving directory '/root/sgx/compiler-rt'
CC   <=  enclave/Enclave_t.c
cp ../../compiler-rt/libcompiler-rt-patch.a ./lib
LINK =>  enclave/enclave.so
<!-- Please refer to User's Guide for the explanation of each field -->
<EnclaveConfiguration>
    <ProdID>0</ProdID>
    <ISVSVN>0</ISVSVN>
    <StackMaxSize>0x40000</StackMaxSize>
    <HeapMaxSize>0x100000</HeapMaxSize>
    <TCSNum>1</TCSNum>
    <TCSPolicy>1</TCSPolicy>
    <DisableDebug>0</DisableDebug>
    <MiscSelect>0</MiscSelect>
    <MiscMask>0xFFFFFFFF</MiscMask>
</EnclaveConfiguration>
tcs_num 1, tcs_max_num 1, tcs_min_pool 1
The required memory is 1675264B.
Succeed.
SIGN =>  bin/enclave.signed.so
root@cf65e390e709:~/sgx/samplecode/hello-rust# cd bin/
root@cf65e390e709:~/sgx/samplecode/hello-rust/bin# ./app
[+] Home dir is /root
[-] Open token file /root/enclave.token error! Will create one.
[+] Saved updated launch token!
[+] Init Enclave Successful<PHONE_NUMBER>618!
This is a normal world string passed into Enclave!
This is a in-Enclave Rust string!
[+] say_something success...
root@cf65e390e709:~/sgx/samplec

Your errorcode is explained in sgx_error.h as follows:
SGX_ERROR_MODE_INCOMPATIBLE  = SGX_MK_ERROR(0x200e),      /* The target enclave 32/64 bit mode or sim/hw mode is incompatible with the mode of current uRTS. */

It's pretty much weird. The entire docker environment should be 64bit-only. Could you please double check your enclave.signed.so is compiled in 64-bit mode? Thanks!

Hi @elichai ,
I wonder if you had done make before set SGX_MODE=SW, and then SGX_MODE=SW make without make clean at first? make cannot detect the mode change and won't re-compile the untrusted app without make clean.

It looks like I had the issue because the Makefile was not setting the
SGX_MODE to SW as it was already set.
So once I explicitly set export SGX_MODE=SW in the terminal, it worked.
The readelf -a was returning that it was not using urts in simulation mode.
2018-07-27 22:20 GMT+02:00 Yu Ding<EMAIL_ADDRESS>
Hi @elichai https://github.com/elichai ,
I wonder if you had done make before set SGX_MODE=SW, and then SGX_MODE=SW
make without make clean at first? make cannot detect the mode change and
won't re-compile the untrusted app without make clean.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/baidu/rust-sgx-sdk/issues/26#issuecomment-408528514,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AYtbNdVAUu6FnpS0eWcXKwxYK3tb2XVlks5uK3XxgaJpZM4VheST
.

@davidp94 yeah that's might be the problem. Makefile set SGX_MODE ?= HW which means it only initiates SGX_MODE when its empty.

Ok, exporting the SGX_MODE var was crucial. even on a new vm, new docker and everything, editing the Makefile isn't enough.
I'm not sure if the Makefile doesn't assign that var or if it's not being passed to the build.rs
(I tried putting a panic!() in the HW option in build.rs and it panics unless I do the export)
I still have problems doing this to an already exists big project. but I'll try using readelf -d to debug it.
Thanks!

So it looks like even though I added println!("cargo:rustc-link-lib=dylib=sgx_uae_service_sim"); to the build.rs file it doesn't use the simulation library of sgx_uae_service, here is readelf -d:
Dynamic section at offset 0xb28f0 contains 32 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libsgx_uae_service.so]
 0x0000000000000001 (NEEDED)             Shared library: [libsgx_urts_sim.so]
 0x0000000000000001 (NEEDED)             Shared library: [libzmq.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]
 0x000000000000000c (INIT)               0x8788
 0x000000000000000d (FINI)               0x885e0
 0x0000000000000019 (INIT_ARRAY)         0x2adfd8
 0x000000000000001b (INIT_ARRAYSZ)       16 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x2adfe8
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x2d0
 0x0000000000000005 (STRTAB)             0x1330
 0x0000000000000006 (SYMTAB)             0x388
 0x000000000000000a (STRSZ)              2481 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0x2b2b30
 0x0000000000000007 (RELA)               0x1f90
 0x0000000000000008 (RELASZ)             26616 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x0000000000000018 (BIND_NOW)
 0x000000006ffffffb (FLAGS_1)            Flags: NOW PIE
 0x000000006ffffffe (VERNEED)            0x1e30
 0x000000006fffffff (VERNEEDNUM)         6
 0x000000006ffffff0 (VERSYM)             0x1ce2
 0x000000006ffffff9 (RELACOUNT)          963
 0x0000000000000000 (NULL)               0x0

Ok.
So it turns out I had #[link(name = "sgx_uae_service")] in my code so it compiled with this instead of the simulation one.
Now everything works.
Thanks!


(feature): Support loglevel for production/ci builds.

Issue:
In order to better support various ci and package management workflows, it would be nice to have the ability to suppress some (or all) of build-storybook's logging output. Given Storybook uses npmLog, and npmLog has a feature to support this functionality, it's simple to surface that functionality to the cli through the addition of a --loglevel argument.
What I did
Surfaced cli argument --loglevel for build-storybook to hook into npmlog's level setting.
How to test

Does this need a new example in the kitchen sink apps?
Maybe? Does Storybook show examples for all build options? It wasn't immediately clear to me.
Does this need an update to the documentation?
Yes. The cli-options index.md is updated in this PR to reflect the change.

Thanks @kaidjohnson!


Only hear when mentioned?

Its possible to only hear when the bot is mentioned unless in its own chat? This would only affect responders. I would be much nicer in slack to write @bot help instead of bot help.

I'm not at my computer so I can't confirm but, it might be possible by setting the aka to the pattern that slack uses for mentions: <@id|name>. The bot's id is currently stored in the adapter's state. I will be making some changes so that you'll have access to those things very easily. So stay tuned... :wink:

Ok, was just able to verify this works:
config :alfred, Alfred.Robot,
  adapter: Hedwig.Adapters.Slack,
  token: System.get_env("SLACK_TOKEN"),
  name: "alfred",
  aka: "!|<@U2FC3P1PH>",
  responders: [...]

Now my bot will respond to alfred, !, or @alfred.
Hope that helps!

Thank you @scrogson. Is the id of the slackbot always the same? Would it be ok to hardcode it?
What do you think about making this behaviour a standard? Maybe we could replace the <@BOTID> with the name of the bot, so the hedwig-im library would parse it as responder? I haven't looked how hedwig-im works, just over the slack adapter.

@philipgiuliani as far as I know, the bot's id doesn't change, so hardcoding in your config should be fine.
I've recently (yesterday) pushed code to Hedwig master that makes all responders into GenServers so I think it will be totally possible to send a message to all responders to rewrite the regexes with the new aka value.

Hi guys, I was thinking about the same. What would be the correct solution for now?
Should I grab bot id somehow, or something have changed and there is more convenient method?

Re. the other part of the earlier question, is there a way to make the bot respond to unprefixed commands over DM but require the prefix otherwise?


update packages for msvc

Hi,
This PR contains several trivial patches to get torch compile for msvc. Since all the patches have been merged to corresponding master branches, most changes in this PR will be reverted after distro is updated to point to the patched versions of those packages: torch, cutorch, cunn, trepl.
Thanks,

thanks!


Use an empty constructor in ActivatorUtilities.CreateInstance if none matches parameters

Is your feature request related to a problem? Please describe.
Although it may be an antipattern, some projects use service providers to resolve dependencies. I had a project where two constructors existed in a class, one with arguments and another one without arguments. The empty constructor would use the service locator to provide dependencies to the other one.
public class Foo
{
   private readonly IDependency _dependency;

   public Foo(IDependency dependency)
   {
      _dependency = dependency;
   }

   public Foo() : this(ServiceLocator.GetService<IDependency>())
   {
   }
}

Some external libraries like Hangfire seem to use ActivatorUtilities.CreateInstance to create instances of custom types, with their custom service provider. In this case, _IDependency _ won't be registered on Hangfire's service provider, but it will registered on ServiceLocator.
In the case above, CreateInstance will find 0 argument matches for both constructors, so it will use the first one and try to resolve IDependency from the service provider passed by Hangfire, throwing an exception.
Describe the solution you'd like
Use the first empty constructor if all the constructors have 0 argument matches.
Describe alternatives you've considered
Tag empty constructors with ActivatorUtilitiesConstructorAttribute.
Additional context
N/A

One option is to apply the (somewhat obscure) ActivatorUtilitiesConstructorAttribute to the constructor in question which will cause ActivatorUtilities to prefer that constructor over all the others.
My understanding is that we very explicitly don't select constructors based on the availability of their arguments in the DI container. Instead, we take the "provided" arguments (the ones passed directly in to ActivatorUtilities.CreateInstance) and just find the longest constructor that can accept those. Then the remaining arguments are expected to be present. This behavior is designed to make things clear and deterministic and avoid issues like behavior changing because a DI service is removed from the container (meaning a different constructor would be selected). The attribute is there so that you can override that behavior. I may be wrong here though (cc @pakrym @davidfowl).
I would be interested in where we could improve the docs here. Are there places on docs.microsoft.com that you looked at and weren't able to find that information? Perhaps we could add it somewhere to help find the right resources.

Hi @anurse, thanks a lot for your reply. I think the docs are quite clear, I did understood the behaviour you're explaining. What I think is that in this scenario:

We don't provide any arguments to ActivatorUtilities.CreateInstance
There's a constructor with no arguments and others with different arguments
Wouldn't it make sense to use the constructor with no arguments? I'd trust that constructor to be able to initialize the object state without needing any dependency.

That’s too big of a breaking change. It would need to be opt in or another method completely.
Are you sure hangfire is using activator utilities? Seems like if you’re trying to solve this specific problem then you should file an issue on hang fire. We can’t change which constructor gets selected as that would impact so many other pieces of code that expect it to behave the way it does now


Update triton commit up to 5df9042

according to latest nightly test
UT: https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/5751742916
E2E: https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/5751721842 (AMP_bf16 inference has 1 more failure cased by network issue)

In the first run e2e test https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/5758735761/attempts/1?pr=70, there is a new AMP_BF16 inference accuracy check failure of model DebertaV2ForQuestionAnswering
Test amp with dt: torch.bfloat16
xpu  eval  DebertaV2ForQuestionAnswering       [2023-08-04 06:33:47,686] torch._dynamo.utils: [ERROR] RMSE (res-fp64): 0.00730, (ref-fp64): 0.00003 and shape=torch.Size([])
[2023-08-04 06:33:47,686] torch._dynamo.utils: [ERROR] Accuracy failed for key name loss
FAIL

Retest in https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/5758735761?pr=70

@chuanqi129 , I checked the CI history. This PR passed the E2E CI - https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/5758735761/job/15614141392. Does it mean DebertaV2ForQuestionAnswering works normally?

@chuanqi129 , I checked the CI history. This PR passed the E2E CI - https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/5758735761/job/15614141392. Does it mean DebertaV2ForQuestionAnswering works normally?

It's a random issue. I can reproduce it in local env with low frequency (about 1/60)


fix: Delayed exit after successful clone

By adding the Connection: close header, the HTTP client cleans up the connection after the request is completed.
This drasticly improves the speed of tiged when run with --disable-cache or when there is no cached version available.
Fixes #79

this fix is great, would we be able to get this patch via npm soon? @nake89

Sorry for delay. Done :)


Support read-only mode

Bazel remote caching has issues with files updating during build. To avoid them I would like to disable writing to remote cache for desktop machines and only allow the CI server to do the writing. There is a bazel flag build --remote_upload_local_results=false that can help me, but developers can still accidentally write to the remote cache. Hence it's best to have two instances of the cache over the same data directory and make one of them read-only to be used by developers and another one read-write for the CI server to cache the "master" branch.
I propose adding a -read-only flag that will allow starting a read-only cache instance that will discard PUT requests.

Sounds like a great idea! Would you like to work on it @Monnoroch?

I'm not quite sure on the details. The key thing is that it should not cause bazel to crash or abort the build.
Right now I have implemented this by mounting the data volume as read-only. I didn't expect it, but it just works, despite getting errors on os.Open-s. Good job on robustness! However this means that the flag is more of a convenience, and is thus deprioritised for me. Maybe I'll get to it some day though.

Upd: unfortunately, this setup doesn't work in a not easily discoverable way. The server stores the list of cache entries in memory, thus it's not possible to write to one instance and read from another. This is very unfortunate and also stops this server to be scaled horizontally.
@buchgr do you have any ideas on what would be the best fix for that?

@Monnoroch that's just an optimization. on startup the server reads metadata from disk and keeps them in memory, but all the information should be stored on disk too.

Yep IIRC, the server looks up a key in the LRU cache before serving a request, so even if the file exists on disk (because it's been uploaded through a different instance), the file can't be served. The server only indexes the disk on startup (and even that gets quite slow). I guess you can add some code that does an os.Stat if the key is not found in the LRU. If the file exists, add it to the front of the LRU, and serve it.

We should also create subdirectories by the first two letters of the shasum, since filesystems don't like having so many files in a single directory.

I don't think the in-memory cache is a good idea for RO instances. I can see that it's important for writing as it ensures maximum size, but for reading it's not crucial. Maybe even harmful: os.Stat will do a kernel call that will probably hit a page cache anyway. Above I hacked together a --read_only flag that discards writes and disables the in-memory cache completely. Not sending a PR as the code is a bit dirty, but so far it works great.

@Monnoroch but you will clean it up and send us a PR right? :stuck_out_tongue:

@buchgr I'd love to, but I'm afraid I am missing some corner cases. Could you first take a look at my commit and give high-level feedback on my approach and help me identify possible pitfalls I just didn't think about?

Related: https://github.com/buchgr/bazel-remote/pull/76

bazel-remote has an --allow_unauthenticated_reads flag which I think covers this use-case now. You can configure CI to authenticate with bazel-remote via basic auth or mTLS, and let untrusted users have readonly access.

Is it possible to require authentication for all users to read from the cache and only allow specific users (E.g CI) to write to the cache? I’d rather not expose my remote cache containing build artefacts to unauthenticated access, yet I don’t want all authenticated users being able to write to the cache

@jheaff1: I don't think bazel-remote has a good solution for this at the moment. Would you like to open a new issue with a description of this feature request?
In the meantime, you might be able to setup a small proxy that allows authenticated read-only access. There might be some off-the-shelf http solutions that you could use (with some configuration), or you could implement a fairly small gRPC proxy yourself.