[WIP] Enable out-of-service taint in FAR

This PR is adding a new remediation strategy based on https://github.com/kubernetes/enhancements/pull/1116
The following is the new remediation strategy for the out-of-service taint:

One of the nodes failed
FAR adds NoExecute taint to the failed node
=> Ensure that any workloads are not executed after rebooting the failed node
FAR reboots the failed node via the Fence Agent
=>  After rebooting, there are no stateless workloads which were not evicted by the taint in the failed node
FAR sets the out-of-service taint
=> This taint expects that the node is in shutdown or power off state (not in the middle of restarting).
After the failed node becomes healthy, the NoExecute taint in Step 2 and the out-of-service taint in Step 5 are removed and the node becomes schedulable again.

[ToDo]

[ ] Add unit tests
[ ] Add comments to clarify the changes of this patch
[ ] Add e2e test cases

ECOPROJECT-1326

=> This taint expects that the node is in shutdown or power off state (not in the middle of restarting).

Moreover, regarding your comment, I am not sure whether the node will be in a shutdown or power-off state when FAR adds the out-of-service taint. The only supported fencing action that FAR has is reboot which would do power off and then power on. Therefore, the node won't be in your desired state after the fence agent succeeds.

We can use the same approach of SNR we discussed in here.
There are the following cases after the reboot action in FAR:

The failed node is rebooted and it becomes healthy again
=> The out-of-service taint doesn't take effect. The taint is ignored.  The node can report its status to the control plane and the control plane can delete the stateful workload instead of the out-of-service taint.
The failed node is rebooted, but it keeps unhealthy(the node can not report its status to the control plane)
=> The out-of-service taint takes effect.
=> The taint will trigger deleting the stateful workloads.
The failed node is not rebooted due to either failing to do power off or failing to do then power on
=> The out-of-service taint doesn't take effect because it's not added to the failed node.
=> FAR is checking the result of executing the fence agent. If it's failed, the exponential backoff is triggered

One more thing to raise/add is whether we want to do a validation test of the Kubernetes version (similar to what SNR does) since the out-of-service taint is fairly new in the community and not supported in old versions.

I will add this topic to my todo list. Thank you for sharing it.

We can use the same approach of SNR we discussed in https://github.com/medik8s/self-node-remediation/issues/17#issuecomment-1155947689.

SGTM

=> This taint expects that the node is in shutdown or power off state (not in the middle of restarting).

Moreover, regarding your comment, I am not sure whether the node will be in a shutdown or power-off state when FAR adds the out-of-service taint. The only supported fencing action that FAR has is reboot which would do power off and then power on. Therefore, the node won't be in your desired state after the fence agent succeeds.

We can use the same approach of SNR we discussed in here.

I'm not sure if the same arguments as stated on SNR apply for FAR. The timing is different:
SNR:

remediation starts, node reboot is triggered
some time expires
node reboot completed
some more time expires until safeTimeToAssumeNodeRebooted is reached
taint is added only when node is still unhealthy

FAR:

remediation starts, node reboot is triggered
the taint is added immediately
some time expires
node reboot completed
node might be healthy now but has the taint already. I understand this should be avoided.

I'm not sure if the same arguments as stated on SNR apply for FAR. The timing is different:

I may not understand your point correctly. So please let me confirm it just in case.

SNR:

remediation starts, node reboot is triggered
some time expires
node reboot completed
some more time expires until safeTimeToAssumeNodeRebooted is reached
taint is added only when node is still unhealthy

In the current OutOfService remediation in SNR, the out-of-service taint is added to the node who becomes healthy after the node reboot. However the out-of-service taint is deleted right after checking if there is no stateful workload on the node.
So should we avoid adding the out-of-service taint to the healthy node by checking if the SNR CR is being deleted by NHC/MHC?

FAR:

remediation starts, node reboot is triggered
the taint is added immediately
some time expires
node reboot completed
node might be healthy now but has the taint already. I understand this should be avoided.

If the node becomes healthy again, the FAR CR is deleted by NHC/MHC and the recovery action(deleting the out-of-service taint) is also executed. In this case, the healthy node won't have the out-of-service taint. So the node will come back to the cluster again.
So we can avoid the situation that the healthy node will keep having the out-of-service taint after rebooting.

I'm not sure if the same arguments as stated on SNR apply for FAR. The timing is different:

I may not understand your point correctly. So please let me confirm it just in case.

SNR:

remediation starts, node reboot is triggered
some time expires
node reboot completed
some more time expires until safeTimeToAssumeNodeRebooted is reached
taint is added only when node is still unhealthy

In the current OutOfService remediation in SNR, the out-of-service taint is added to the node who becomes healthy after the node reboot. However the out-of-service taint is deleted right after checking if there is no stateful workload on the node.
So should we avoid adding the out-of-service taint to the healthy node by checking if the SNR CR is being deleted by NHC/MHC?

I thought we already do this, but just double checked the code, and we don't.
Yes, I think we should stop any further fencing action when the CR has the deletion timestamp set. We should just do cleanup.
I understood that rebooting already is a grey area for using the taint, because of "This taint expects that the node is in shutdown or power off state (not in the middle of restarting)".
Isn't putting the taint on a node which finished rebooting, and is healthy now, an issue? Even when we remove it afterwards?
/cc @mshitrit fyi

FAR:

remediation starts, node reboot is triggered
the taint is added immediately
some time expires
node reboot completed
node might be healthy now but has the taint already. I understand this should be avoided.

If the node becomes healthy again, the FAR CR is deleted by NHC/MHC and the recovery action(deleting the out-of-service taint) is also executed. In this case, the healthy node won't have the out-of-service taint. So the node will come back to the cluster again. So we can avoid the situation that the healthy node will keep having the out-of-service taint after rebooting.

Yes, I think we should stop any further fencing action when the CR has the deletion timestamp set. We should just do cleanup.
I understood that rebooting already is a grey area for using the taint, because of "This taint expects that the node is in shutdown or power off state (not in the middle of restarting)".

I agree with you. I will fix it to the out-of-service taint remediation and check if there is no side effect by the change.
As for stopping any further fencing action on the healthy node, I think the basic idea here is that the control-plane should handle  the fencing action if the failed node can communicate with the control-plane. So we don't need to do nothing in SNR.
If yes, does the same apply to the Resource Deletion Remediation as well as the OutOfServiceTaint Remediation?

Isn't putting the taint on a node which finished rebooting, and is healthy now, an issue? Even when we remove it afterwards?

As far as I checked the effect of the out-of-service taint, putting the taint is not an issue and has no side effect.
In the "After rebooting" phase of SNR, the failed node has both the normal NoExecute taint and the NoSchedule taint and we expect that there are no stateful workloads on the node. So the out-of-service taint won't do anything.

Yes, I think we should stop any further fencing action when the CR has the deletion timestamp set. We should just do cleanup.
I understood that rebooting already is a grey area for using the taint, because of "This taint expects that the node is in shutdown or power off state (not in the middle of restarting)".

I agree with you. I will fix it to the out-of-service taint remediation and check if there is no side effect by the change. As for stopping any further fencing action on the healthy node, I think the basic idea here is that the control-plane should handle the fencing action if the failed node can communicate with the control-plane. So we don't need to do nothing in SNR. If yes, does the same apply to the Resource Deletion Remediation as well as the OutOfServiceTaint Remediation?

not sure if I understand, what do you mean with "the control-plane should handle the fencing action"?
I think we need to do some "cleanup" in SNR, e.g removing taints which were already set in the pre-reboot phase. Maybe we can just switch to the fencing completed phase directly, it should do everything we need for cleanup?
yes, I think the the same applies for the ResourceDeletion strategy
before changing anything, we should wait for comment of @mshitrit
I will create an issue for SNR to have the discussion at the right place 🙂

Isn't putting the taint on a node which finished rebooting, and is healthy now, an issue? Even when we remove it afterwards?

As far as I checked the effect of the out-of-service taint, putting the taint is not an issue and has no side effect.
In the "After rebooting" phase of SNR, the failed node has both the normal NoExecute taint and the NoSchedule taint and we expect that there are no stateful workloads on the node. So the out-of-service taint won't do anything.

Ok, then my concerns were wrong, and it that makes the SNR topic much less urgent. Sorry for the noise and thanks for the discussion!

for the SNR related discussion let's continue here: https://github.com/medik8s/self-node-remediation/issues/159

I have added some more comments :) Mostly minor nits on phrasing, missing log, consts, and simulating the deletion of pod and VA. Please add a new commit after each review so it will be easier to review the changes between the commits and the last review.

@razo7 Thank you for taking your time and your review.
I reflected your comments. Please check it.
By the way, are my replies to your comments visible?
My replies are noted with the "Pending" tag.

By the way, are my replies to your comments visible?
My replies are noted with the "Pending" tag.

No, I can't see your replies since you haven't submitted your review. Please see here on how to submit them.

@k-keiichi-rh can you rebase again? #119 just added a webhook, so no need to recreate it again :)

/test 4.15-openshift-e2e

/test 4.15-openshift-e2e
/test 4.13-openshift-e2e

Left some nits and some nice/minor improvements. The only thing which is missing is a file like https://github.com/medik8s/self-node-remediation/blob/main/pkg/utils/taints_test.go for testing the out-of-service taint support in setOutOfTaintFlags function

Thank you for your comments and suggestions. I reflected all of your comments and updated my commits.
The following is all of changes from my last commit:
https://github.com/medik8s/fence-agents-remediation/commit/d7b7d32f09f1ad8fc47a9d85a4ca0861b0edbf29

/test 4.14-openshift-e2e

/test 4.13-openshift-e2e
/test 4.14-openshift-e2e

/test 4.13-openshift-e2e
/test 4.14-openshift-e2e

/test 4.13-openshift-e2e

/test 4.13-openshift-e2e

/lgtm

@slintes Thank you for the comments. I totally agree with you and fixed the code with you comments.
The following is all of changes from my last commit: https://github.com/k-keiichi-rh/fence-agents-remediation/commit/f1aa62e497ba817c46b5797a1aecb2435ec303ea

@slintes Thank you for the comments again. I reflected your comments.
The following is all of changes from my last commit: https://github.com/k-keiichi-rh/fence-agents-remediation/commits/ecoproject-1326-with-review/

@k-keiichi-rh fyi, we have a CI outage at the moment, e2e tests are expected to fail until further notice 🙁

/test all

there is duplicated code in the e2e test, but we clean it up in a follow up in order to get this in for the next release...

/retest

/lgtm
/hold
Since we are after Code Freeze, waiting for QE green light before merging

/test 4.15-openshift-e2e

/test 4.14-openshift-e2e

/test 4.15-openshift-e2e

/lgtm

/unhold


Update SystemInfo.js

I'm not sure if anyone else is having trouble with this, but usually on startup I see this warning message:
[RPi] warning: TypeError: Cannot read properties of null (reading '1')
    at Function.parseRpiCpuInfo (/usr/lib/node_modules/homebridge-rpi/node_modules/homebridge-lib/lib/SystemInfo.js:115:57)
    at SystemInfo.getRpiInfo (/usr/lib/node_modules/homebridge-rpi/node_modules/homebridge-lib/lib/SystemInfo.js:212:23)
    at SystemInfo.init (/usr/lib/node_modules/homebridge-rpi/node_modules/homebridge-lib/lib/SystemInfo.js:175:27)
    at RpiPlatform._main (/usr/lib/node_modules/homebridge-rpi/node_modules/homebridge-lib/lib/Platform.js:222:7)

This should hopefully make that message go away, and since hwInfo is  automatically set when it catches an error, this shouldn't behave any differently.

Could you please attach a logfile containing the error?  Does this happen on startup of Homebridge?  What system are you running on?

Hey @ebaauw sorry for the delay.
It seems like you've already figured out a better solution to the issue, but I'll answer your questions anyway.
Yes, this happens on startup of Homebridge, and it is running on a ODROID-N2+ which is running Ubuntu Minimal 20.04 (a custom image provided by odroid). It is getting this error when communicating with a remote Raspberry PI Zero W that is running Raspbian.


[v2] move encoding of IDs to URLencode again

we currently use base64 for encoding IDs within the url -> move that to simple URLencoding again

decided to go with base64 instead, cloding


Ordering by the last column

System information:

Ubuntu 18.04
DBeaver v6.1.1 Community
Java 11

Describe the problem you're observing:
Can not order by the last column when there is a dynamically appearing scrollbar.
Steps to reproduce, if exist:
Open any big table (for the vertical scrollbar to be in the play) with several columns, so that the last column is in the top-right position. Try to click on the small arrows on the title of the last column to change the ordering. I'm attaching a gif for a demonstration.

already fixed


Filename supporting date formatting

Would love for invoice-creator's "filename" setting in config.yml to support date formatting, so that one could set
settings:
  ...
  date_format: "%b %d, %Y"
  filename: "invoice-%Y.%m.pdf"

Hey Mike,
There you go: https://github.com/nicholaspufal/invoice-creator/pull/4
P.S: I need to start thinking about adding some tests to this project

Thank you!
Pulled master, generated invoice - works like a charm.


typo fix

:information_desk_person:

ps. i forgot until today, but a couple months ago we got chirped by a pedant reminding us that s3 is not a CDN.  (ref)
since it doesn't look like we're publishing to npm, something automatic like unpkg isn't an option, so i'm happy to just let sleeping dogs lay.

yeah a real cdn has been on the agenda, hopefully we'll move to cloudflare or something soon


[Enhancement] Metadata selection for dashboard widgets

Allow for customization of dynamic parameters in dashboard widgets. For Satellite, associates will look at results over snaps and not over number of weeks, which is the current implementation.
Examples:
Grouping by Z stream
Pass rate snap over snap, i.e 6.11.1 snap 1 vs 6.11.1 snap 2

Can you explain more about what you want to see? It sounds like you actually want a new widget.

Also, the additional_filters field allows you to add a number of extra filters to help filter down your data. Did you take a look at the documentation for that?

@rsnyman I'll chime in here.
Its possible this would be a separate widget definition instead of a change to the existing run aggregation and result aggregation widgets.
With the current widgets, the additional_filters field doesn't provide the desired functionality, and actually nearly makes them useless if we have multiple snaps in a given week.  For clarity in the discussion, we have two metadata fields we're looking at here, Version and Snap. Version is going to be in an X.Y.Z format, and indicates the major/minor software version. Snap is going to be in an X.Y format, and indicates weekly (ish) builds of a given version.
Taking run aggregation as an example we can create a widget that filters on a major version of satellite - say metadata.SatelliteVersion=6.11.0 - and we can group that based on component. We now have bars indicating component pass rates for all tests for SatelliteVersion 6.11.0.
But, we will get snap 1.0, and snap 2.0, and all of those results will be included in this, because the widget only allows for changing the number of weeks of runs to include.

For our use case, we need a field to be able to provide an additional MetaFilter, instead of only selecting Set weeks to.  This would allow the widget described above to be used to select metadata.Snap values instead of selecting 1-6 weeks, showing aggregate results based on the software version available in metadata, instead of the start date.
There are other metadata filtering use cases that would be available if the aggregation widgets had a Group data by field and a Sub Filter: field instead of Set weeks to.
Maybe this is a separate widget, maybe when creating a Run Aggregation (or result aggregation) widget, you can select between time-based dynamic filters, or MetaFilter based, and you'll have one or the other available in the resulting widget.

@john-dupuy hit the nail on the head - possible with the additionalfilters, but then the widget is only relevant for a few weeks while that z-stream is active.
What I heard:
John Dupuy: I'll write a new widget for you


Cannot launch pypr

Hi I am getting this error when I try to launch pypr from terminal. I installed it manually following aur steps. Also tried using pip to install it. Both show the following error
Traceback (most recent call last):
File "/usr/lib/python3.11/site-packages/pyprland/command.py", line 165, in run_daemon
await manager.load_config()  # ensure sockets are connected first
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/pyprland/command.py", line 39, in load_config
self.config = json.loads(f.read())
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/init.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/decoder.py", line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 14 (char 13)
Exception ignored in: <function StreamWriter.del at 0x7f317ec3d940>
Traceback (most recent call last):
File "/usr/lib/python3.11/asyncio/streams.py", line 396, in del
self.close()
File "/usr/lib/python3.11/asyncio/streams.py", line 344, in close
return self._transport.close()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/selector_events.py", line 860, in close
self._loop.call_soon(self._call_connection_lost, None)
File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
self._check_closed()
File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

I have the same issue it seems :-/

Getting a similar issue, here's the output:
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/pyprland/command.py", line 237, in main
    asyncio.run(run_daemon() if len(sys.argv) <= 1 else run_client())
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pyprland/command.py", line 215, in run_client
    _, writer = await asyncio.open_unix_connection(CONTROL)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/streams.py", line 98, in open_unix_connection
    transport, _ = await loop.create_unix_connection(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/unix_events.py", line 259, in create_unix_connection
    await self.sock_connect(sock, path)
  File "/usr/lib/python3.11/asyncio/selector_events.py", line 634, in sock_connect
    return await fut
           ^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/selector_events.py", line 642, in _sock_connect
    sock.connect(address)
ConnectionRefusedError: [Errno 111] Connection refused

I guess pypr daemon isn't running.
Did you add it to autostart or hyprland config ? Do you see any process running ?
ps axuw |grep pypr
Try running with --debug /tmp/pypr.log see if there is any error output in that file.

I had the same issue after following the steps on the wiki. It seems that the default config provided lacks a comma after one bracket, just before the "unknown" part at the end of the file. Now it works for me.

Hi! Two things:
@zielOS your JSON config file is invalid indeed. Check the first line, character 13:
json.decoder.JSONDecodeError: Extra data: line 1 column 14 (char 13)

@lunigella I can't find the typo, can you point it to help me?
All: would switching to TOML format a good idea ?
Pros: simpler & more flexible syntax, harder to break
Cons: would add two small dependencies to the python project

I was referring to line 26 of the config provided in the Getting started session of the wiki.
...
}, <-
"unknown": "wlrlui"
}
}
I have little to no experience with json, so I'm glad this solution worked for me but I'm not sure this will work with zielOS problem.

I was referring to line 26 of the config provided in the Getting started session of the wiki.

Thank you, just fixed it!

yup that fixed it for me too.


Timeout while executing a shell script.

Hi,
I'm trying to use this script for MS Teams notifications and, I don't know why, the notifications is failuring. I follow all instructions and I'm able to execute the script manually.
My script is on /usr/local/share/zabbix/alertscripts and my variable on zabbix-config is AlertScriptsPath=/usr/local/share/zabbix/alertscripts.
ls -la
-rwxrwxrwx 1 zabbix  zabbix  2074 Jun 19 15:38 teams.sh
When I run: ./teams.sh '#Geral' PROBLEM 'Test' it's ok
When it run by zabbix trigger: Timeout while executing a shell script.
I add zabbix ALL=NOPASSWD: ALL on sudoers too.
I need help...

This repository is for sending alerts from Zabbix to Slack. Slack and Microsoft Teams are completely different communication systems. You might want to try:
https://github.com/spasticate/zabbix-MSTeams-alertscript


Fixing minor punctuation issue 01

Added a full-stop "." at the end of the last line under "What is Electron, exactly?" paragraph.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Congrats @mdhaq001  on your first pull request (PR)! 🎉
Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 📝


stage1: return an error if an app has empty exec

We were assuming that if "exec" is present, it won't be empty. This is
incorrect because the spec lists exec as optional.
Fixes #1841

LFAD.

test! :)

Bah, I really need to print something reminding me to pester everyone about tests and hang it on a wall.


Using nix-sops with buildOnTarget:true fails to activate

With nix-sops, when building on the target, running colmena apply fails activating with the following error:
[ERROR]   stderr) activating the configuration...
[ERROR]   stderr) /nix/store/2hbmmwflqrx7wl3akpxqzxqvx7k07m21-sops-install-secrets-0.0.1/bin/sops-install-secrets: Cannot read keyfile '/home/ME/.config/sops/age/secrets.txt': open /home/ME/.config/sops/age/secrets.txt: no such file or directory

This makes sense because the activation happens on the target directly. Indeed, if I scp the secrets.txt over to the target host, then the apply command works.
But I guess copying the secret file over defeats the purpose of encrypting the secrets in the first place.
Is it possible to activate the system without copying the secrets file over? Am I missing something here or is what I am trying to do not possible?

What does your configuration look like? There's something off here, as I use sops-nix just fine with buildOnTarget.

I had the same problem as @ibizaman. My host configuration was referencing ./secrets/secret1.age and I got this message:
[ERROR]   stderr) error: getting status of '/nix/store/rkb8n1wn2c7wwgvscy6fj73iqc2ari49-source/hosts/secrets': No such file or directory

This makes sense. My host configuration is defined ina subdirectory hosts/<hostname>.nix, and my secrets are in a sibling directory secrets/.
I changed the path reference to ../secrets/secret1.age and the build completed successfully.

Closing because it's been a long time I don't have this issue anymore.
Also, I was using buildOnTarget because I was deploying to a raspberry pi. But since then I discovered we can cross-compile with colmena like so https://colmena.cli.rs/unstable/examples/multi-arch.html
Thanks for taking the time to answer!

I'm running into this issue too.
# relative path to my secrets sops file
sops.defaultSopsFile = ../../secrets/secrets.yaml;
# path to the keys file on my mac
sops.age.keyFile = "/Users/szeth/.config/sops/age/keys.txt";
sops.secrets.CLOUDFLARED_TOKEN = { };

I get this error:
[ERROR]   stderr) /nix/store/sd6zilxyib9hm4326wfzs7az5z2xx5sc-sops-install-secrets-0.0.1/bin/sops-install-secrets: cannot read keyfile '/Users/szeth/.config/sops/age/keys.txt': open /Users/szeth/.config/sops/age/keys.txt: no such file or directory

Obviously I can either copy my private key or my ~/.config/sops/age/keys.txt file over to my remote machine, but as said by @ibizaman it defeats the purpose of using secrets.
I could also add the remote host's key to my .sops.yaml file so that it can also decrypt the secrets, but then every host could access all secrets. I'd rather have only my laptop be able to do that.
I am using buildOnTarget since I am on a mac and deploying to NixOS hosts.
Does anyone know a fix to this problem?

managed to get it to work by using deployment.keys:
# this copies over my keys.txt file as a secret
deployment.keys = {
  age = {
    keyFile = "/Users/szeth/.config/sops/age/keys.txt";
  };
};

...

sops.defaultSopsFile = ../../secrets/secrets.yaml;
# we reference it here so sops can decrypt our secrets.yaml
sops.age.keyFile = "${config.deployment.keys.age.destDir}/age";


Please add an Open Source license to the project

Would you consider adding a license file to this project? This would be consistent with good community practices and would allow others to build upon your work with a clear set of rules for what is acceptable.
For maximum compatibility with other free software projects, please consider using MIT license, such as expressed here:
https://opensource.org/licenses/MIT
(replace the copyright statement with your copyright, of course)

@rprieto Pretty please with sugar on top adopt the MIT license?

Thank you! I'll check out https://github.com/thumbsup/aws-private-gallery too. I have an app that I've been incubating that needs a similar stack to protect its resources...


Any work update on Waymo dataset

@tianweiy
Do you have any update on the workside relevant to waymo dataset? Can you update if any

Thanks for the interest. I am working on it right now. But there is not an estimated timeline yet.

It will be out in a few weeks.

We now support Waymo. It is in active development and let me know if you face any problems.

Thanks tianwei. Your models works well even on other datasets like KITTI. Hopefully you will release single model which handles all the classes like Vehicle,Pedestrian and Cyclist classes also in near future. Awaiting for your next models

Yeah, we will support more classes and have some major updates for the models in the fall. Close this issue for now.

@tianweiy Thanks

@chowkamlee81 @DeepakVellampalli  I fix a NMS threshold bug and it is now close to SOTA single model on the benchmark for car detection. I am training all three classes but we plan to opensource them after we get to top on Waymo / nuScenes. I guess this will be done next month. I will keep this issue open until then

@tianweiy , Thanks for your update and hope for the best


Feature/phpunit

As mentioned in https://github.com/rcarriga/vim-ultest/issues/94 there is no parser for phpunit. This PR adds one.
My python is quite rusty. I've found out most of the stuff that needed to be done by looking around in the code. Only one thing that's unclear to me is that the namespaces array of the ParseResult is empty, while i've added a capturing group for it in the regex. I might have overlooked something. @rcarriga can you help out with this?

Thanks for the PR :grin: Just the one comment/question, looks great!

@rcarriga What do you think so far?

Actually just looking at the vim-test code, it seems like vim-test doesn't use namespaces for phpunit so actually I believe the namespaces shouldn't be added. Otherwise the results won't be matched to the tests.
So then the pattern should be
    "php#phpunit": OutputPatterns(
        failed_test=r"\s*\d\) .*::(?P<name>.*)",
    ),

I don't have a php environment to use so I'll have to ask you to verify,


Antiforgery : API misleading

IAntiforgery - Task<bool> IsRequestValidAsync(HttpContext httpContext);
If you setup Antiforgery with header name Foo and on the client set this value and try a POST/PUT, all is well.
On the client then add the header again.
What you end up with is a header with that key with two values.
Agreed, not what you should do but lets look over that.
Send a request and you get:
System.InvalidOperationException: The antiforgery token could not be decrypted. ---> System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

This is because https://github.com/aspnet/Antiforgery/blob/dev/src/Microsoft.AspNetCore.Antiforgery/Internal/DefaultAntiforgeryTokenStore.cs#L41 pulls out the header as StringValues which will have a 2 values. Then passes this to the constructor of AntiforgeryTokenSet whose first argument is a string. Converting a StringValues to string implicitly with more than one value will pull out the first value.  In our case the incorrect value.
Further down the stack where it takes this value and calls IAntiforgeryTokenSerializer.Deserialize it blows up with the exception not return an expected false.

Well don't do that :) But yes, we could be clearer here.
What do you think the right thing to do would be if we encounter multiple headers? Throw an exception? Try each one?

Hi. Thanks for contacting us.
We're closing this issue as there was not much community interest in this ask for quite a while now.


[Bug]: Fix the barista icons URL

Description
The URL as moved to https://raw.githubusercontent.com/dynatrace-oss/barista/master/docs/barista-icons/icons.json so we should also adapt to enable autocomplete again
Steps to reproduce
Can't load barista icons if you are not in the dynatrace VPN
Support information

[ ] Screenshots
[ ] Extension manifest file
[ ] YAML snippets
[X] Support archive (see here)

Damn you are quick


Fix upload ordering

Codecov Report

Merging #94 (8048195) into master (d527e4f) will decrease coverage by 0.31%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #94      +/-   ##
==========================================
- Coverage   89.22%   88.90%   -0.32%
==========================================
  Files          16       16
  Lines         594      595       +1
==========================================
- Hits          530      529       -1
- Misses         64       66       +2

Impacted Files
Coverage Δ

pyns/models/analysis.py
78.63% <100.00%> (ø)

tests/test_analysis.py
100.00% <100.00%> (ø)

pyns/models/user.py
66.66% <0.00%> (-16.67%)
:arrow_down:

Continue to review full report at Codecov.

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


Allow Rails 5.2.+

Security issues mean Rails 5.2 point release is now <IP_ADDRESS>
Change the dependencies to be more permissive about Rails versions
[CVE-2018-16476] Broken Access Control vulnerability in Active Job
[CVE-2018-16477] Bypass vulnerability in Active Storage

@Xymist is this ok? I think this needs to be merged before I can reference in my PR for auction


Use fnmatch for --exclude.

Alternative to https://github.com/AFPy/Potodo/pull/108

Could you update/create some tests accordingly?

Could you update/create some tests accordingly?

Did it a bit fast, if it goes to be merged, we first need to speak about the exact semantic we want for it.
For exemple, currently, --exclude a would exclude all directories and all files containing an a, it's probably a tad too wide.

Did it a bit fast, if it goes to be merged, we first need to speak about the exact semantic we want for it.
For exemple, currently, --exclude a would exclude all directories and all files containing an a, it's probably a tad too wide.

For exemple, currently, --exclude a would exclude all directories and all files containing an a, it's probably a tad too wide.

What I originally had in mind for --exclude was --exclude c-api or --exclude c-api/ or -exclude /some/path/to/c-api would all exclude the c-api folder. Same for files I suppose ?

For exemple, currently, --exclude a would exclude all directories and all files containing an a, it's probably a tad too wide.

What I originally had in mind for --exclude was --exclude c-api or --exclude c-api/ or -exclude /some/path/to/c-api would all exclude the c-api folder. Same for files I suppose ?

SIGMIAM, I think I have something that pleases me (semantically), I'll push later after further proofreading.

SIGMIAM, I think I have something that pleases me (semantically), I'll push later after further proofreading.

I added some tests, and doodled around the semantics to have something neat. Even found a cpython segfault during my dodling :P
I still have to add some docs, don't merge.

I added some tests, and doodled around the semantics to have something neat. Even found a cpython segfault during my dodling :P
I still have to add some docs, don't merge.

Thanks for the feedback @awecx!

Thanks for the feedback @awecx!

Closing an issue, adding 4 tests, and yet only 3 lines added! Rock'n Roll!
$ git diff --stat master HEAD
 potodo/arguments_handling.py      |  2 +-
 potodo/interactive.py             | 12 +++++-------
 potodo/po_file.py                 |  9 ++-------
 potodo/potodo.py                  |  6 +++---
 tests/conftest.py                 | 30 ++++++++++++++++++++++++++++++
 tests/test_exclude.py             | 44 ++++++++++++++++++++++++++++++++++++++++++++
 tests/test_potodo.py              | 43 +++++++++++--------------------------------
 tests/test_potodo_args_errors.py  | 25 -------------------------
 tests/test_potodo_default_args.py | 40 +++++++++++-----------------------------
 9 files changed, 107 insertions(+), 104 deletions(-)

Closing an issue, adding 4 tests, and yet only 3 lines added! Rock'n Roll!
$ git diff --stat master HEAD
 potodo/arguments_handling.py      |  2 +-
 potodo/interactive.py             | 12 +++++-------
 potodo/po_file.py                 |  9 ++-------
 potodo/potodo.py                  |  6 +++---
 tests/conftest.py                 | 30 ++++++++++++++++++++++++++++++
 tests/test_exclude.py             | 44 ++++++++++++++++++++++++++++++++++++++++++++
 tests/test_potodo.py              | 43 +++++++++++--------------------------------
 tests/test_potodo_args_errors.py  | 25 -------------------------
 tests/test_potodo_default_args.py | 40 +++++++++++-----------------------------
 9 files changed, 107 insertions(+), 104 deletions(-)

is this good ? because...

is this good ? because...

is this good ? because...

is this good ? because...

Yes it now matches from right to left so you have to exclude c-api/* or c-api/*.po.
sadly there's no ** here so --exclude .git/**/* won't do 1. Maybe we're not in the right path :(

So should we merge it ?

So should we merge it ?

If it work as you expect it to work. Your previous --exclude c-api should work now, and it's probably easier for the user to understand it as a gitignore-like pattern than a fnmatch pattern anchored at the right with no glob star.


Update sample-test-analytics-test-summary

Correct syntax for Power BI query in sample-test-analytics-test-summary

@Anubhav-gangwal : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"


Fix for duplicate in k8s when using configmap

This fixes the main issue described here which is not related to Helm or
k8s per say but a side-effect of how kubernetes mounts a configMap into
a path: https://github.com/tremor-rs/tremor-k8s-helm/issues/8
Pull request
Description

Related

RFC
Related Issues: fixes #000, closed #000
Related docs PR

Checklist

[ ] The RFC, if required, has been submitted and approved
[ ] Any user-facing impact of the changes is reflected in docs.tremor.rs
[ ] The code is tested
[ ] Use of unsafe code is reasoned about in a comment
[ ] Update CHANGELOG.md appropriately, recording any changes, bug fixes, or other observable changes in behavior
[ ] The performance impact of the change is measured (see below)

Performance

I think we can remove these generated folders via the helm charts:
https://stackoverflow.com/questions/68331724/kubernetes-volumemount-path-contains-timestamp
I'm going to try the above suggestion

Perhaps an option would be to ignore any hidden files? It's less arbitrary then "whatever k8s decided to name it on Monday".

Tried to update it to look for botjh File and for Link:
find /etc/tremor/config/ -not -path '/.' (-type l -o type f) -name '.troy' -print 2>/dev/null | sort
find /etc/tremor/config/ -not -path '/.' -type l -o type f -name '.troy' -print 2>/dev/null | sort
But none of them are returning anyhing
https://www.unix.com/shell-programming-and-scripting/176162-bash-find-multiple-types-solved.html

Tried to update it to look for botjh File and for Link:
find /etc/tremor/config/ -not -path '_/._' (-type l -o type f) -name '_.troy' -print 2>/dev/null | sort
find /etc/tremor/config/ -not -path '_/._' -type l -o type f -name '_.troy' -print 2>/dev/null | sort

But none of them are returning anyhing https://www.unix.com/shell-programming-and-scripting/176162-bash-find-multiple-types-solved.html

there seem to be some odd _ in there, have you given this a try:
find /etc/tremor/config/ -not -path '*/.*' -type f,l -name '*.troy' -print 2>/dev/null | sort


Ideation and Design Peer Grading

Implementations:
Ideas (Binary features)? (0.3)
Planning? (0.3)
Presentation Skills/Organization? (0.3)
Rough Draft Code? (0.1)
Out of 1 point!

1/1
Very creative idea

I would start the ticket ticket with link: https://davidl0914.github.io/TheIdealGam/2023/11/15/binary_overview_IPYNB_2_.html
I really like that you blogged your ideas.   It is a little technical to understand.  The demo was hard for me to now if I got anything write, start 1 binary number 201.   Does that mean I am supposed to do 200 in binary?

Scoring above is not acceptable as there is now reference to specifics.


DNS logs are spammy

2024-04-03T21:26:23.872731Z  INFO hickory_server::server::server_future: request:8504 src:UDP://<IP_ADDRESS>#58719 QUERY:waypoint.echo-4-12380.svc.cluster.local.echo-4-12380.svc.cluster.local.:A:IN qflags:RD response:NXDomain rr:0/0/0 rflags:RD
2024-04-03T21:26:23.872762Z  INFO hickory_server::server::server_future: request:1806 src:UDP://<IP_ADDRESS>#46816 QUERY:waypoint.echo-4-12380.svc.cluster.local.echo-4-12380.svc.cluster.local.:AAAA:IN qflags:RD response:NXDomain rr:0/0/0 rflags:RD

We get a log for every request. We should drop this off by default. Either make it DEBUG level somehow, or default hickory_server to warn

you beat me to it :)


Add Community Questions to the FAQ

How can I contribute? and How can I add LInkedIn?

Thanks @rqtaylor for the pull request!
Per the CONTRIBUTING.md file displayed when you created this pull request, we need to add you to the list of approved contributors for the Mattermost project.
Please help complete the Mattermost contribution license agreement?
This is a standard procedure for many open source projects. Your form should be processed within 24 hours and reviewers for your pull request will be able to proceed.
Please let us know if you have any questions.
We are very happy to have you join our growing community! If you're not yet a member, please consider joining our Contributors community channel to meet other contributors and discuss new opportunities with the core team.


feat: Allow MSK configuration changes on running clusters

Description

Motivation and Context

For the latest version of this module v2.3.0, an operator cannot change the MSK configuration for a cluster which has already been created with this module. As pointed out by @ascpikmin in issue #16, the aws_msk_configuration resource requires a lifecycle block with create_before_destroy = true set. This in turn requires the name attribute of the aws_msk_configuration resource to be unique.

This pull-request aims to resolve issue #16.
Breaking Changes

This change preserves backwards compatibility with the current major version.

How Has This Been Tested?
This has been tested by executing a terraform apply using the following module declaration:
module "complete_mks_cluster_test" {
  source = "github.com/GreggSchofield/terraform-aws-msk-kafka-cluster" # Head of fork

  name                   = format("%s-test-cluster", terraform.workspace)
  kafka_version          = "3.6.0"
  number_of_broker_nodes = 3

  broker_node_client_subnets  = data.aws_subnets.subnets.ids
  broker_node_instance_type   = "kafka.m7g.large"
  broker_node_security_groups = [module.complete_security_group.security_group_id]

  broker_node_storage_info = {
    ebs_storage_info = {
      volume_size = 100
    }
  }
  scaling_max_capacity = 200
  scaling_target_value = 80

  encryption_at_rest_kms_key_arn = try(data.aws_kms_key.id_env_kms_key.arn, null)

  encryption_in_transit_client_broker = "TLS"
  encryption_in_transit_in_cluster    = true

  configuration_name              = format("%s-test-configuration", terraform.workspace)
  configuration_server_properties = {}

then setting the configuration_server_properties attribute to {"auto.create.topics.enable" = true} to force a new MSK Cluster configuration version to be created :
module "complete_mks_cluster_test" {
  source = "github.com/GreggSchofield/terraform-aws-msk-kafka-cluster" # Head of fork

  name                   = format("%s-test-cluster", terraform.workspace)
  kafka_version          = "3.6.0"
  number_of_broker_nodes = 3

  broker_node_client_subnets  = data.aws_subnets.subnets.ids
  broker_node_instance_type   = "kafka.m7g.large"
  broker_node_security_groups = [module.complete_security_group.security_group_id]

  broker_node_storage_info = {
    ebs_storage_info = {
      volume_size = 100
    }
  }
  scaling_max_capacity = 200
  scaling_target_value = 80

  encryption_at_rest_kms_key_arn = try(data.aws_kms_key.id_env_kms_key.arn, null)

  encryption_in_transit_client_broker = "TLS"
  encryption_in_transit_in_cluster    = true

  configuration_name              = format("%s-test-configuration", terraform.workspace)
  configuration_server_properties = {"auto.create.topics.enable" = true}

Given the current composition of this module, in particular the fact that the aws_msk_configuration resource is created within the module scope, executing terraform plan will yield a single in-place update:
Terraform will perform the following actions:

  # module.complete_mks_cluster_test.aws_msk_configuration.this[0] will be updated in-place
  ~ resource "aws_msk_configuration" "this" {
        id                = "arn:aws:kafka:eu-west-1:account-id:configuration/data-streaming-eu-west-1-stable-int-test-configuration-4909326019387697745/cluster-id"
      ~ latest_revision   = 1 -> (known after apply)
        name              = "data-streaming-eu-west-1-stable-int-test-configuration-4909326019387697745"
      + server_properties = "auto.create.topics.enable = true"
        # (2 unchanged attributes hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

Only once this has been applied, can the operator then execute terraform plan again to yield the desired in-place update for the cluster itself:
Terraform will perform the following actions:

  # module.complete_mks_cluster_test.aws_msk_cluster.this[0] will be updated in-place
  ~ resource "aws_msk_cluster" "this" {
        id                           = "arn:aws:kafka:eu-west-1:account-id:cluster/data-streaming-eu-west-1-stable-int-test-cluster/cluster-id"
        tags                         = {}
        # (12 unchanged attributes hidden)

      ~ configuration_info {
          ~ revision = 1 -> 2
            # (1 unchanged attribute hidden)
        }

        # (5 unchanged blocks hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

[ ] I have updated at least one of the examples/* to demonstrate and validate my change(s)
[ ] I have tested and validated these changes using one or more of the provided examples/* projects

[X] I have executed pre-commit run -a on my pull request

https://github.com/terraform-aws-modules/terraform-aws-msk-kafka-cluster/assets/28576265/1c35263e-ea3e-4081-b5cc-36efa80fb5e2

Note that when upgrading an existing cluster from v2.3.0 to the head of my fork it will result in a plan like the following:
Terraform will perform the following actions:

  # module.complete_mks_cluster.aws_msk_cluster.this[0] will be updated in-place
  ~ resource "aws_msk_cluster" "this" {
        id                           = "arn:aws:kafka:eu-west-1:968779167221:cluster/data-streaming-eu-west-1-stable-int-cluster/eee0710e-109c-4f9f-9418-57dd71dfc88d-8"
        tags                         = {}
        # (13 unchanged attributes hidden)

      ~ configuration_info {
          ~ arn      = "arn:aws:kafka:eu-west-1:968779167221:configuration/data-streaming-eu-west-1-stable-int-configuration/89f1e362-f4e0-4964-ae38-12fae754a66c-8" -> (known after apply)
            # (1 unchanged attribute hidden)
        }

        # (6 unchanged blocks hidden)
    }

  # module.complete_mks_cluster.aws_msk_configuration.this[0] must be replaced
+/- resource "aws_msk_configuration" "this" {
      ~ arn             = "arn:aws:kafka:eu-west-1:968779167221:configuration/data-streaming-eu-west-1-stable-int-configuration/89f1e362-f4e0-4964-ae38-12fae754a66c-8" -> (known after apply)
      ~ id              = "arn:aws:kafka:eu-west-1:968779167221:configuration/data-streaming-eu-west-1-stable-int-configuration/89f1e362-f4e0-4964-ae38-12fae754a66c-8" -> (known after apply)
      ~ latest_revision = 1 -> (known after apply)
      ~ name            = "data-streaming-eu-west-1-stable-int-configuration" # forces replacement -> (known after apply) # forces replacement
        # (1 unchanged attribute hidden)
    }

  # module.complete_mks_cluster.random_id.this will be created
  + resource "random_id" "this" {
      + b64_std     = (known after apply)
      + b64_url     = (known after apply)
      + byte_length = 8
      + dec         = (known after apply)
      + hex         = (known after apply)
      + id          = (known after apply)
    }

Plan: 2 to add, 1 to change, 1 to destroy.

Whilst this shouldn't constitute a breaking change in the module API, let me know if you want this documented somewhere.

When this PR can be merged?

@antonbabenko why does no one review this PR?

@GreggSchofield welcome to the club) https://github.com/terraform-aws-modules/terraform-aws-msk-kafka-cluster/pull/12
@bryantbiggs @nawarajshahi I hope you now have evidence that the configuration should change the version.

This seems to be a reasonable solution to the problem that a lot of us have faced, as specified on the PR description.
Do we have an ongoing discussion somewhere else or are we waiting for something else?
@GreggSchofield @mvoitko @bryantbiggs

This PR is included in version 2.5.0 :tada:

Are there issues when upgrading MSK clusters with this module that result in naming conflicts similar to what this PR was intended to solve? - #40


[wip][added] Routing middlewares

TODO: Add docs if we like this feature
Closes #2088
I decided to get this out there for visibility before spending time adding explicit docs. The new test case shows this in action, including a bit of an unavoidable quirk.
There's a few things behind this idea:

createElement is not ideal as a point for general customizability because it's not composable - a user doesn't get anything to allow e.g. using both ReactRouterRelay.createElement and some other custom createElement function
It's possible to inject additional root components with createElement, but it's fairly annoying to do so: https://github.com/relay-tools/react-router-relay/blob/v0.7.0/src/Container.js#L20-L23 (i.e. expose something on child context, and check whether that thing is there - if not, you must be on the root)
This allows the routing middleware to access more data about the current router state (i.e. both components and routes), while not forcing us to expose those as props to all route components, which shouldn't need access to all of those (i.e. we could revert the commit fixing https://github.com/rackt/react-router/issues/1788 and remove routes from the props injected to route components again)

Let me know what y'all think.

@ryanflorence If this PR is accepted, I would like to drop routes from the props injected into route components. Would that break you for doing async props, or would you be able to model those with one of these middlewares?

I think this should be held to post-1.0. We keep breaking APIs on a release candidate, so we're never going to actually release something. I know there are folks waiting on a 1.0 stable.

This isn't a breaking API change, though - this is purely additive, so it would be a minor version bump per  semver.
The reason I care is that this or something like it that allows access to the array of components is a pre-requisite for https://github.com/relay-tools/react-router-relay/issues/12.

In general I think asking people to provide a middlewares array is a worse pattern than asking them to do function/component composition. I've implemented the middleware pattern in the history library using the use* functions. Could what you're doing here be accomplished using this pattern?

Thinking about this a bit more, the middlewares array is not ideal. Maybe a better API could be:
<Router history={history}>
  <Middleware1>
    <Middleware2>
      {routes}
    </Middleware2>
  </Middleware1>
</Router>

With RoutingContext this might look like:
<RoutingContext {...renderProps}>
  <Middleware1>
    <Middleware2 />
  </Middleware1>
</RoutingContext>

I don't think I can get all of what I want with a history enhancer. The issue for react-router-relay and generally anything that wants to manage data fetching at the top-level is that it needs to do a couple of different things:

Add a top-level "root" component that receives props like the full list of routes and components to figure out all the data dependencies for all the loaded routes (and e.g. dispatch them all at once)
Modify the createElement currently in RoutingContext to add a container around each of the route components to inject in the relevant data props

I believe both react-router-relay and @ryanflorence's async props prototypes work in a similar way.
It might be possible to get something like (1) via a history enhancer, but I think getting (2) requires something like this (for modifying createElement).

The other motivation here is to move away from the createElement API for libraries extending React Router - while a user who only wants to use e.g. ReactRouterRelay.createElement can do so, a user who wants to use two such libraries seems like he or she would largely be out of luck.
Something like a composable middleware pattern for modifying element rendering would address that concern and offer a better entry point for libraries.

Correction - the server-side example should perhaps be:
<Middleware1 {...renderProps}>
  <Middleware2>
    <RoutingContext />
  </Middleware2>
</Middleware1>

This approach is dumb. I'm dropping this PR and taking a different approach.

I think the core problem is trying represent a functional concept like middleware with JSX. There are some similarities in terms of nesting, but significant differences in how you might code something like that.
I think what you're looking for is something closer to redux's version of middleware, which is just an enhancer. So you would end up with something like this:
import { Router, applyMiddleware } from 'react-router'
import someMiddleware from 'react-really-cool-shit'
import someOtherMiddleware from 'react-quite-neat-thing'

const RouterPlus = applyMiddleware([
  someMiddleware,
  someOtherMiddleware({ option: 123 })
], Router)

React.render(
  <RouterPlus>
    <Route path="/" component={App} />
  </RouterPlus>,
  rootDOM
)

The issue in some sense, and the difficulty around all of this is that I'm trying to apply middleware to the <RoutingContext>, not the router.
Short of doing something really nasty with ES6 inheritance, I can't meaningfully get what I need by modifying the <Router> component itself.
I'm going to submit another, simpler PR shortly.

I built this a bit ago, I really dig it, haven't had a chance for show and tell to get people's feedback on it though:
https://github.com/ryanflorence/react-router-apply-middleware

@ryanflorence That's pretty cool. Why don't we have that in core? :smile:

I really like the API – it's much cleaner than the fiddly stuff I have in e.g. react-router-relay, and avoids an issue with route handler containers getting applied in the opposite order.
Maybe we should discuss this on a new issue instead of a closed, half-year-old PR though :laugh:

Maybe we should discuss this on a new issue instead of a closed, half-year-old PR though 😆

Or even better, a PR to add it :+1:


Use tree-kill to properly stop the whole process tree

ChildProcess.kill() doesn't stop forked subprocesses. This commit uses tree-kill to properly handle forked subprocesses on all platforms.

Shouldn't the OS be reaping subprocesses? Can you show a scenario where the forked subprocesses remain around as zombies?

Hi @lsegal,
yes, there are plenty of situations where subprocesses won't get killed by child_process. The ones I am struggling with are more complex python scripts using asyncio.
A simple one would be a basic go server like this.
package main

import (
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello World!"))
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}


BatchNorm tensor size issue

🐛 Bug
I've been running a number of comparisons between reference implementations of PointNet++ and DGCNN. What I've noticed is that the PyG implementation is considerably slower than the original works. I've timed each step and found that PyG is faster in many of the steps (e.g., FPS, knn-graph, radius-graph, scatter functions), but is much slower when applying the MLP. I've found that this is due to the tensor shape that is provided to the torch.nn.BatchNorm1d function. BatchNorm1d expects a Tensor of size: (N, C, L) or (N, C), where N is the number of batches, C is the number of channels and L is the size of each image/graph. By default, PyG feeds a tensor of size (N * L, C) to the BatchNorm module.
I've written my own BatchNorm1d wrapper that first reshapes the (N * L, C) tensor into a (N, C, L) tensor and then feeds it to the BatchNorm module. This speeds up the computation significantly:
class GraphBatchNorm1d(torch.nn.Module):
    r"""Applies batch normalization to a graph signal.
    """
    def __init__(self, in_channels, num_points=None, eps=1e-5, momentum=0.1, affine=True,
                 track_running_stats=True):
        super(GraphBatchNorm1d, self).__init__()
        self.num_points = num_points
        self.bn = torch.nn.BatchNorm1d(in_channels, eps, momentum, affine,
                              track_running_stats)
        self.reset_parameters()

    def reset_parameters(self):
        self.bn.reset_parameters()

    def forward(self, x: Tensor) -> Tensor:
        if self.num_points is None:
            return self.bn(x)

        sh = x.size()
        x = x.view(-1, self.num_points, sh[1]).transpose(2, 1)
        x = self.bn(x)
        return x.transpose(2, 1).reshape(sh).contiguous()

    def __repr__(self):
        return f'{self.__class__.__name__}({self.bn.num_features})'

I was wondering: have others noticed this problem as well? Are there better solutions to this?
One challenge with PointNet++ is that it works on radius graphs, which means the number of neighbors is different for each point. The consequence is that x_j and x_i cannot be reshaped into a 'rectangular' size. Other implementations solve this by truncating the neighborhoods to a maximum of k neighbors and repeating the center point for neighboorhods with < k neighbors.
A sub-optimal implementation of that solution:
def batched_radius(pos_x, pos_y, r, batch_x, batch_y, max_num_neighbors=32, sample_idx=None):
    row, col = knn(pos_x, pos_y, max_num_neighbors, batch_x, batch_y)
    radius_squared = (pos_y[row] - pos_x[col]).pow(2).sum(dim=-1)

    # Replace edges to points further than r with self-loops
    # If pos_y is a sub-graph of pos_x, sampled with sample_idx, map indices correctly
    self_loop = row
    if sample_idx is not None:
        idx_lookup = torch.arange(pos_x.size(0), device=pos_x.device)[sample_idx]
        self_loop = idx_lookup[self_loop]
    col = torch.where(radius_squared > (r ** 2), self_loop, col)
    return row, col

This solution can be improved by using torch_cluster's radius function (it's faster than knn) and adding self loops to the result.
Update: The posted solution provides a 2x speedup.

Those are some interesting findings. I always wondered why BatchNorm is so slow. I will do some investigations and come back to you.

I personally think this is a bug in PyTorch. I'm reaching out to the PyTorch team to get some more information.

A short update: We are looking into ways to fix this directly in PyTorch.

Awesome! Thanks for digging into this and getting in touch with the PyTorch team!

This issue can be tracked here: https://github.com/pytorch/pytorch/issues/38915


Guard against case where no plugins are available to html format link

Addresses issue #40, caused by some git hosts not implementing the html_link method. In the case where no plugins are available which support this functionality, the path is formatted without HTML.

Yeah, I'll rollback those changes. It looks like danger in general doesn't have too much Bitbucket Cloud support, and the formatting looks really bad in its current state. I really should have kept it all in a different branch than the one attached to this PR.
I will clean it up and update the branch with the suggestions you've made. If I can, later I'll fix the formatting for Bibucket Cloud in a better way, perhaps by adding a formatting_style?

👍 formatting_style seems to be a good idea.

It'd be good to add a test for this.

We already have a failing test for html_link issue. It seems to be that some change in Danger caused this.
Regarding formatting_style, I agree that we need more tests.

I meant a case for when the plugin is not available.

That's what I mean.

Any advice on how to make that testable? So far I have an outline of a test that looks like
        it 'should use path if html_link not available' do
          # Somehow create an env where no plugins available?
          @dangerfile.essential_plugin_classes = []
          path = @xcode_summary.send(:format_path, 'lib/xcode_summary/plugin.rb#L3')
          expect(path).to eq "lib/xcode_summary/plugin.rb#L3"
        end

but I can't figure out how to set either the Plugin.all_plugins or Dangerfile.essential_plugin_classes from the tests.

I would change this code:
https://github.com/diogot/danger-xcode_summary/blob/661bd0318e4dc719267422331def569088dde7bd/spec/xcode_summary_spec.rb#L205-L211
to this:
describe 'where request source' do
  it 'should be bitbucket' do
    path = @xcode_summary.send(:format_path, 'lib/xcode_summary/plugin.rb:3')
    # rubocop:disable LineLength
    expect(path).to eq "lib/xcode_summary/plugin.rb:3"
    # rubocop:enable LineLength
  end
end


[FEATURE] Changelog page

Description
Latest changes to the app page

click the version number in nav to get to page
Tailwind component https://tailwindui.com/components/application-ui/lists/stacked-lists#component-c187391f0695c533982505d225cacfb3

Screenshots

Additional information
Code for component
import { CalendarIcon, MapPinIcon, UsersIcon } from '@heroicons/react/20/solid'

const positions = [
  {
    id: 1,
    title: 'Back End Developer',
    type: 'Full-time',
    location: 'Remote',
    department: 'Engineering',
    closeDate: '2020-01-07',
    closeDateFull: 'January 7, 2020',
  },
  {
    id: 2,
    title: 'Front End Developer',
    type: 'Full-time',
    location: 'Remote',
    department: 'Engineering',
    closeDate: '2020-01-07',
    closeDateFull: 'January 7, 2020',
  },
  {
    id: 3,
    title: 'User Interface Designer',
    type: 'Full-time',
    location: 'Remote',
    department: 'Design',
    closeDate: '2020-01-14',
    closeDateFull: 'January 14, 2020',
  },
]

export default function Example() {
  return (

        {positions.map((position) => (

{position.title}

                      {position.type}

                      <UsersIcon className="mr-1.5 h-5 w-5 flex-shrink-0 text-gray-400" aria-hidden="true" />
                      {position.department}

                      <MapPinIcon className="mr-1.5 h-5 w-5 flex-shrink-0 text-gray-400" aria-hidden="true" />
                      {position.location}

                    <CalendarIcon className="mr-1.5 h-5 w-5 flex-shrink-0 text-gray-400" aria-hidden="true" />

                      Closing on <time dateTime={position.closeDate}>{position.closeDateFull}</time>

        ))}

  )
}

Looks good

So do we have to make a page for every changelog?
Or the link will redirect to repo's changelog file?

So do we have to make a page for every changelog?
Or the link will redirect to repo's changelog file?

I think it needs a new page, that has the most recent changes at the top - similar to the changelog but higher level

Q: Wouldn't it just make sense to show the CHANGELOG.md file, the one generated by the action, this just sounds like we would have to redo the work 🤔 :

similar to the changelog but higher level

The changelog file is too detailed, this will be very high level and done manually

👍 My two sessions, it make sense for there to be a JSON file so that adding new things could be no-code contributors


M1 chip docker image

Hello!
Would you mind making another docker image compatible with the new Apple M1 chip?
thank you so much!

Certainly - I will work on that!

@mdenolle an M1 image should be available now. If you have any problems getting it, let me know.

Closing this issue. If there are further problems, please reopen.


Entity reverting to previous state

Describe the bug
A clear and concise description of what the bug is.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Home Assistant Version

e.g. 2021.5.1

Device info (please complete the following information, which can be found in log):
like this:
{
"active_time":<PHONE_NUMBER>,
"biz_type": 18,
"category": "cz",
"create_time":<PHONE_NUMBER>,
"icon": "smart/product_icon/cz.png",
"id": "aaaaaaaaaaa",
"ip": "xxxxxxxxxxxxxxxx",
"lat": "30.30286857361191",
"local_key": "xxxxxxxxxxxxx",
"lon": "120.0639743842656",
"model": "",
"name": "Living Room Socket",
"online": false,
"owner_id": "34794909",
"product_id": "yfemiswbgjhddhcf",
"product_name": "Switch Product",
"status": [
{
"code": "switch",
"value": false
},
{
"code": "countdown_1",
"value": 0
},
{
"code": "cur_current",
"value": 0
},
{
"code": "cur_power",
"value": 0
},
{
"code": "cur_voltage",
"value": 2343
}
],
"sub": false,
"time_zone": "+08:00",
"uid": "xxxxxxxxxxxxxxxxxxx",
"update_time":<PHONE_NUMBER>,
"uuid": "xxxxxxxxxxxxxxxxxx"
}
Device specifications (please complete the following information, which can be found in log):
Same device's id, like this:
[2021-07-01 10:18:01,351] [tuya-openapi] Request: method = GET, url = https://openapi.tuyacn.com/v1.0/devices/aaaaaaaaaaa/specifications, params = None, body = None, headers = {'client_id': 'xxxxxxxxxxxx', 'sign': 'xxxxxxxxxxxx', 'sign_method': 'HMAC-SHA256', 'access_token': '213e2d4af5e8d217abc0b104462a9f72', 't': '1625105881351', 'lang': 'en'}
2021-07-01 10:18:01 DEBUG (SyncWorker_1) [tuya iot] Response: {
"result": {
"category": "cz",
"functions": [
{
"code": "countdown_1",
"type": "Integer",
"values": "{"unit":"s","min":0,"max":86400,"scale":0,"step":1}"
},
{
"code": "switch",
"type": "Boolean",
"values": "{}"
}
],
"status": [
{
"code": "cur_voltage",
"type": "Integer",
"values": "{"unit":"V","min":0,"max":2500,"scale":0,"step":1}"
},
{
"code": "cur_current",
"type": "Integer",
"values": "{"unit":"mA","min":0,"max":30000,"scale":0,"step":1}"
},
{
"code": "switch",
"type": "Boolean",
"values": "{}"
},
{
"code": "cur_power",
"type": "Integer",
"values": "{"unit":"W","min":0,"max":50000,"scale":0,"step":1}"
},
{
"code": "countdown_1",
"type": "Integer",
"values": "{"unit":"s","min":0,"max":86400,"scale":0,"step":1}"
}
]
},
"success": true,
"t":<PHONE_NUMBER>348
}
Additional context
Add any other context or logs about the problem here.
I recently installed Tuya v2, when trying to set up switches, they revert to their previous state, almost instantly. ie, switch is ON, switch off in HA,    reverts to ON, and vice versa.

OK with the caveat that I don't really know what I'm talking about, up to about an hour ago I had what I think was the same problem with a Zigbee light switch connected via an Aldi Zigbee Gateway.
I've no idea how it got fixed, but immediately before it started working I did two things - I tried adding some additional Tuya APIs to my project and i did a full reboot of my HA server.
The APIs I added were:

Beta APIs
Device Log Query
Device status notification

I suspect one or more of these might be specified as a requirement somewhere in some documentation I didn't read - I had a tuya dev project set up already from trying to extract device info for a Local Tuya setup, so i just reused that for the v2 integration. This may have been a mistake.
Anyway after a week of switches not responding through the HA interface (or rather turning on then back off again, with nothing happening on the physical switch) it just started working... Previously I'd been seeing what I assumed were successful API calls in the debug log, but now that it's actually working i can see tons more activity.

hahaaaa oops always RTFM I guess....
https://developer.tuya.com/en/docs/iot/Platform_Configuration_smarthome?id=Kamcgamwoevrx

@petethumped I was one of the first trying this integration, before that guide existed. thanks to your post I found out I need to register that API. Thanks 😄
@StevenDavidWillimas configuring the device status notifcation api solved this problem for me, can you verify it works for you too and close this?

Tried adding device notification Aliexpress, now none of the v2 devices are visible.

When I make a new project that API doesn't even show...

I'm now having trouble with one of my lights in LOCAL TUYA reverting to previous state.

Found it: You have to specifically look for the API and subscribe to it and enable it for the projects you want

I'm now having trouble with one of my lights in LOCAL TUYA reverting to previous state.

Getting a similar issue. Except its triggering the same state at random intervals. E.g.  I am getting multiple 'off's without ever touching the switch.

I've now updated to 1.4, to see if this would work, and removed integration from HA, now getting "Invalid Authentication", when I try to integrate tuya V2. Wondering if I should even bother with this beta version!

Maybe you should be more accurate when setting it up.. It's tricky but when it's set up, it works great. Delete the whole thing and start over. Make sure you follow the youtube video of Mark Watt Tech

I've tried doing it from scratch, and was extra careful, followed to the letter. The problem is the config that worked when I  originally installed it does not now work. Used same ID and secret, all other parameters as before but get "Invald Authentication".

Now working.

Not working for Bluetooth pir arlec.
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: Steven Williams @.>
Sent: Saturday, October 22, 2022 12:08:36 AM
To: tuya/tuya-home-assistant @.>
Cc: iotinkognito @.>; Comment @.>
Subject: Re: [tuya/tuya-home-assistant] Entity reverting to previous state (#121)
Now working.
—
Reply to this email directly, view it on GitHubhttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftuya%2Ftuya-home-assistant%2Fissues%2F121%23issuecomment-1287166910&data=05|01||b8b0d9b1984a4f8cb91208dab381dbce|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|638019667578361228|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=kT6JDx2eneDatDPhpBj9T%2BPeczlJq4UkvCeF2C%2F1p5U%3D&reserved=0, or unsubscribehttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FATTKFEOXT4VB6RQLJNAWYVDWEK5YJANCNFSM5ADPN6IQ&data=05|01||b8b0d9b1984a4f8cb91208dab381dbce|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|638019667578517778|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=tdzFsi3uZPTTGNoLHqkuhMgnYidrX5%2BlNyhakmWBPBg%3D&reserved=0.
You are receiving this because you commented.Message ID: @.***>


Binary State Pins

Natively support pins of type bool

Can't you use addIN<bool>? Have I missed something?

More the connection filter portion. This currently seems to fall under "Custom"

ohh yeah right, I'll add a filter for bool

Closed by commit c1b1c51c0a7710430beee4e8ceadc9d3a264ddfa


TTI LEAKED SOURCE CODE NOW HERE https://github.com/craigy109/Toontown-Infinite-Leak.

TTI LEAKED SOURCE CODE NOW HERE https://github.com/craigy109/Toontown-Infinite-Leak.

lol

lol


Legion: Regions considered escaping from non-toplevel replicated tasks even if destroyed

The attached testcase escape.zip, when compiled against latest control_replication on sapling and invoked with:
mpirun -H n0000,n0001 --bind-to none ./escape -level mapper=2

produces the error:
[0 - 7fb9e9c0c800]    0.047134 {6}{runtime}: [fatal 2009] LEGION FATAL: Returnable privileges are not currently supported for control replicated tasks that are are not the top-level task such as task task_foo (UID 8) (from file /home/manolis/legion/runtime/legion/legion_context.cc:11109)
For more information see:
http://legion.stanford.edu/messages/fatal_code.html#fatal_code_2009

CC @gshipman

@manopapad @lightsighter , I refactored my code to only replicate the TLT.  I'm still seeing the error about Logical regions escaping non-top-level replicated task..
Region LogicalRegion(1,IndexSpace(1,1),FieldSpace(1)) is escaping from non-top-level replicated task```

@manopapad, @lightsighter After chasing down an unrelated bug I can confirm that I do not end up with the LEGION FATAL above after refactoring to only replicate the TLT and doing all index launches from the TLT. I'm now running in parallel across multiple nodes and GPUs.  I think I can use this as a workaround for a bit.

If you run this against the neweq branch can confirm that it works (it does for me)? If so, I'm likely not to fix it since I'm expecting that neweq will merge into control_replication sometime in the next month.

The example works on neweq for me as well.

Ok, I'm going to recommend that you use the neweq branch for now and close this issue. If there's a reason we need to fix it immediately in the control_replication branch then you can reopen it.


Fastnlight: Watch provideoads.com

Fastnlight requests the watch of the watch_keyword provideoads\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

provideoads\.com has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Approved by Jeff Schaller in Charcoal HQ


Query Template for Filters

The purpose of this issue is to discuss how filters (i.e. specialized NNs used as stand-ins for more expensive object detection models, as described in papers like NoScope and BlazeIt) should fit into EVA's queries.

We are no longer planning to use filters.


Getting error when trying to commit

I linked gethub and made a new branch then i pressed the save button and selected the branch and when i commit i get the error
Error
[object Object]

Same problem here


NIFI-9538: Add C2 heartbeat capability to minifi-c2-service

Thank you for submitting a contribution to Apache NiFi.
Please provide a short description of the PR here:
Description of PR
minifi-c2-service isn't really a C2 Server reference implementation, it exists as an endpoint for the PullHttpChangeIngestor which does not follow the C2 spec. This PR adds C2 heartbeat/acknowledge capabilities so it is more like a real C2 server. This work is being done in advance of NIFI-9666 and NIFI-9667 to provide C2 client capabilities to MiNiFi Java
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[x] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[x] Has your PR been rebased against the latest commit within the target branch (typically main)?

[x] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[ ] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[ ] Have you written or updated unit tests to verify your changes?
[ ] Have you verified that the full build is successful on JDK 8?
[x] Have you verified that the full build is successful on JDK 11?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.

+1 LGTM


"icons" folder is a system folder name in Linux and not usable

Hello,
unfortunately the (generated) folder name "icons" is a system folder name in Linux and therefore cannot be used. How can the name of the folder be changed in the settings in order to be able to use the Astro package?
Thank you in advance!
Best regards

I'm not very busy anymore. If it's still relevant, we could discuss

hello,
how can i change the folder name "icons"?


Fails to Install due to changes in PnP Management Shell

Since PnP Management Shell has been deleted from Entra as of 9 Sept 2024, how do we go forward to deploy Teams EOC? See issue here .

@erikhedges , thanks for reporting this issue.
We're aware of the issue within the PNP Management Shell and are currently investigating it. Rest assured; we will update you as soon as possible.

@erikhedges ,
The issue has been resolved in the latest 3.2 release. Please refer to the wiki for more details. As this matter has been addressed with the new update, I'm closing this issue. Should you have any further questions or concerns, don't hesitate to post your comments here.


Develop ri support

Implemented as a single file push to develop branch as there seems to be some inconsistencies with history timeline for only needing to modify a single file.
Update to hs_core/templates/pages/help.html


Lint uncomment exported objects (functions, types, ...)

Closes #267

Close and reopen to trigger DCO.

Addressed your comment.


[GUI] Design update

This took a while but I got it down 😄
GUI Design Overhaul
Here is a brand new look for Codoc!

Details of the GUI update is explained below.
1. Overall Theme:
First thing you notice is the old dark theme being turned into a bright pastel color themed GUI.

Old design
New design

Various color hex codes and font-family can be referred from the CSS file, which would soon be documented in the Developer Guide.
Font has been updated too, instead of using the default system's Segoe UI which is not monospaced, Roboto is used. Roboto a font developed by google that brings the minimal yet professional look. It is Apache Licensed, or basically free to use for any purpose. Because new fonts are added, the application will attempt to load them stored in the resource/font folder.
public class MainApp extends Application {
    ...
    public void init() throws Exception {
        ...
        Font rbtBold = Font.loadFont(getClass().getResourceAsStream("/font/Roboto_Bold.ttf"), 10);
        Font rbtReg = Font.loadFont(getClass().getResourceAsStream("/font/Roboto_Medium.ttf"), 10);
        Font rbtLight = Font.loadFont(getClass().getResourceAsStream("/font/Roboto_Light.ttf"), 10);
        Font rbtmBold = Font.loadFont(getClass().getResourceAsStream("/font/RobotoMono_Bold.ttf"), 10);
        Font rbtmReg = Font.loadFont(getClass().getResourceAsStream("/font/RobotoMono_Regular.ttf"), 10);
        Font rbtmLight = Font.loadFont(getClass().getResourceAsStream("/font/RobotoMono_Light.ttf"), 10);
        ....

Please do not modify these lines as it would break the theme and cause unwanted fonts to be used.
Module/Skill list uses monospaced version of Roboto, which allows them to be aligned better.

Old alignment
New alignment

Off by a bit
All aligned

2. Name wrap feature:
There are cases where the person's name is too long and is unable to be contained in the label. This has been worked in the InfoTab.fxml to handle wrapping of names, and allowing the main VBox to grow.
Below is an example of this feature in action:

Short name
Long name

3. Growing list of Modules/Skills with minimum height
Probably the most notable feature of this update.
If you see the PersonListPanel, it grows as much as it can within its container. If we allow list of modules and list of skills to follow a similar style, the screen becomes too full which could be unappealing. Thus, the ListView of their list has now a minHeight of 340, with its parent node's constructor assigning its maxHeight based on the number of items in the list.
Here is a code snippet for list of modules.
moduleListView.setPrefHeight((52 * modules.size()) + 2);

Note that value 52 is used because each ModuleListCard has a height of 50, with top and bottom borders of thickness 1. The addition of 2 at the back is a buffer. As you can tell, the values are hard coded and should be changed to take reference off the ModuleListCard directly, which would be fixed in upcoming updates.
If the size of the main window becomes too small to contain the full list, it will become a scrollable one automatically (existing feature).
Here is a screenshot of the feature in action:

Short list
Long list
Short window

4. Show year/course of study
With #70, Person now holds additional attributes, year and course of study.
InfoPanel has been updated to reflect this change and show them.
To work on:

Fix hard coded values for maxHeight of ListView.
Click feature to view index or tabs with clicks.
Improve theme of HelpWindow and menu.
Add hyperlinks to urls (GitHub, LinkedIn). -> v1.5
Clicking email copies it to clipboard. -> v1.5

Just tested on the built .jar file. Font is successfully hosted locally without any errors, meaning it will show the intended design without having needed fonts installed in the system.

We can update the Ui.png with the actual UI of the program too.


Auto Registration for Private DNS Zone is not limited to single VNET.

The page memtions the following limits:
- Auto Registration for Private DNS Zone is limited to single VNET.
But when you enable auto registration on multiple VNets (Virtual Network Links) they de DNS records are automatically registerd on all VNets. Is this limit still valid?
- DNS records are created automatically only if the primary virtual machine NIC is using DHCP. If you're using static IPs, such a configuration with multiple IP addresses in Azure), auto registration won't create records for that virtual machine.
Maybe this descriptions somewhat misleading. Azure VM's with a static IP Address on a vNIC are automatically registered in the Private DNS Zone. This descriptions should mention static IP configurations from within the Operating System or something like that.

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

ID: 49cac13a-f868-1c40-da67-488c1ee1fb13
Version Independent ID: f038ceb8-d065-3f91-fb92-346a93e8e9f3
Content: What is auto registration feature in Azure DNS private zones?
Content Source: articles/dns/private-dns-autoregistration.md
Service: dns
GitHub Login: @rohinkoul
Microsoft Alias: rohink

Hello @wbplomp
Thank you for your feedback! We will review and update as appropriate.

Hello @wbplomp, Thank you for reaching out.

The limitation mentioned in the document is still valid. You can find the limitation mentioned here as well. . The number of Private DNS zones  a virtual network can get linked to with auto-registration enabled is One.

The private zone's records are populated by the Azure DHCP service. As mentioned in the limitation if the VM is assigned static IP addresses, auto registration won't create records for that virtual machine. Please have a look at the FAQ document for additional details.

We will now proceed to close this issue out, please tag me in your response if there are any additional concerns. Thank you!

Hey @ChaitanyaNaykodi-MSFT
As for 1. it seems like auto-registration works for me for multiple vnets. And the limitation you cited doesn't seem to be regarding the question @wbplomp asked. A Vnet can be linked to only one private DNS zone with auto-registration but it looks like there can be multiple vnets with this option linked to the same private zone.


NaN p-values in ligand-receptor interaction results

Hi
I have been playing around with the squidpy.gr.ligrec() function and noticed you get a lot of NaN p-values returned. The code is a bit beyond me but I think this should only happen when interactions are filtered because of the threshold value but even after setting threshold = 0.0 I see some NaN p-values when there is a calculated mean greater than zero. Any thoughts about what is going on here?
I also noticed that turning on multiple testing correcting (for example with corr_method = "fdr_bh") results in more NaNs. I think that is because of this line:
https://github.com/theislab/squidpy/blob/c0220c907577196db5f0dd18ff572648a1450612/squidpy/gr/_ligrec.py#L152
What is the motivation for this? Seems a bit strange to me but maybe there is a technical reason to not return these values?

I think this should only happen when interactions are filtered because of the threshold value but even after setting threshold = 0.0

NaN values can happen in 2 cases (should be also in the docs):

when mean expression of 1 interacting cluster is 0
or 1 of the interacting components didn't pass the threshold

However, I've noticed a bug which was converting 0s to NaN, so this might also be an issue (+ there was 1 another bug when plotting p-value of 0). Both of them should be fixed in #362, which will be merged into dev.

What is the motivation for this? Seems a bit strange to me but maybe there is a technical reason to not return these values?

You're right, should be qvals[np.isnan(pvals)] = np.nan

👍🏻 Thanks for the clarification and bug fixes!

Great! I think this can be closed (feel free to reopen).
closed via #362


Update Tailwind to latest

@galligan - Looks like there are merge conflicts. Would you like to take a look? I think they might have come up after the Docusaurus update PR was merged?

@jhaaaa should be resolved!


Some google material Icons are strangely loading other icons.

the bathing person is Icons.handshake

the shopping bag is Icons.abc

Duplicate of https://github.com/flutter/flutter/issues/97767


Enhance the library to enable custom error message.

The interface scope provider can add a new method to that takes in the required details and return a customized message
 String createErrorMessage(RedactionContext redactionContext);

I can take this


Testing Digi app version 1.1.26

What is the issue ?

Following the instructions whenever an end user has a taxon name without author name added, it can escape the matches by adding the asterisk and then pressing escape. the app is supposed to bypass autosuggest and submit the typed name directly to the taxonomic_name field. This does not happen - instead the taxonomic name field is left blank!

The title of the Digi app after installation reads Version 1.1.24 while the installation file says "DaSSCoSetup.v1.1.26.exe"

Though not part of this round of testing: NHMA taxon identifier input crashes the app.

Estimate level of effort required.
?
How to approach it?
Check if the correct app version was compiled and packaged.

Duplicate of #476


Running unit tests in Python kernel

Hi,
Is it possible to run Python's unittest.main() in Hydrogen? I haven't found any info, so I don't know if it is a bug or a limitation.
The test runs in the IPython shell.
ERROR: /run/user/1000/jupyter/kernel-9871a573-6183-41d6-b478-ee33edba7173 (unittest.loader._FailedTest)
----------------------------------------------------------------------
AttributeError: module '__main__' has no attribute '/run/user/1000/jupyter/kernel-9871a573-6183-41d6-b478-ee33edba7173'

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)
An exception has occurred, use %tb to see the full traceback.

SystemExit: True
/usr/lib/python3.6/site-packages/IPython/core/interactiveshell.py:2889: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

Do the tests work inside the jupyter notebook?

Well, it doesn't work in Jupyter when using
if __name__ == '__main__':
    unittest.main()

but works with something like
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(TestStringMethods))
runner=unittest.TextTestRunner()
runner.run(test_suite)

So, not a Hydrogen problem, I believe.

This version of the .main() call:
if __name__ == '__main__':
    unittest.main(argv=['first-arg-is-ignored'], exit=False)

works fine for me. (Source.)

Closing since a solution seems to have been found! :tada:


Tests: mock network calls

The tests are quite slow and test against the live Last.fm site.
If two tests run at the same time, they might fail because one test has changed the state of an object under test (eg number of tags for a test artist).
It would be good to mock the network calls.
Perhaps the results of a test run could be cached. If there are no cache results for a given run, they could be saved. That way new tests would be run against the live site and the network response cached for next time and included in the test suite.

vcrpy could work as a simple drop in solution for this https://github.com/kevin1024/vcrpy
Would you mind if I added vcrpy testing

@IvanMalison Hi, did you ever get a chance to look into adding vcpr?


Request: Export types

Would it be possible to have the types exported? Right now I have to do the following to wrap toast():

It would be nice to import them all in the same import.
Here's my usage:

Yeah.

Those types are now available with https://github.com/timolins/react-hot-toast/releases/tag/v2.2.0. 🙌

Woohoo!!! Thank you!!


Windows CI: Another reliability fix

Signed-off-by: John Howard<EMAIL_ADDRESS>Adding another reliability fix which seems to be hitting on a few CI runs. @icecrime

Job: Docker-PRs FAILED:

---
er daemon 5.014 MB
Sending build context to Docker daemon 5.571 MB
Sending build context to Docker daemon 6.128 MB
Sending build context to Docker daemon 6.685 MB
Sending build context to Docker daemon 7.242 MB
Sending build context to Docker daemon 7.799 MB
Sending build context to Docker daemon 8.356 MB
Sending build context to Docker daemon 8.913 MB
Sending build context to Docker daemon  9.47 MB
Sending build context to Docker daemon 10.03 MB
Sending build context to Docker daemon 10.58 MB
[PostBuildScript] - Execution post build scripts.
Sending build context to Docker daemon 11.14 MB
Sending build context to Docker daemon  11.7 MB
Sending build context to Docker daemon 12.26 MB
Sending build context to Docker daemon 12.81 MB
Sending build context to Docker daemon 13.37 MB
Sending build context to Docker daemon 13.93 MB
Sending build context to Docker daemon 14.48 MB
Sending build context to Docker daemon 15.04 MB
Sending build context to Docker daemon  15.6 MB
Sending build context to Docker daemon 16.15 MB
Sending build contex
---

LGTM if green!

Not 100% sure if this one is going to work on a retry loop though. It seems on one box (currently offline), when it hits, it hits 100% until a reboot. But no harm retrying just in case.

Job: Docker-PRs-gccgo FAILED:

---
est.go:1041: TestDockerNetworkDisconnectFromHost.pN59_github_com_docker_docker_integration_cli.DockerNetworkSuite	1.097s
PASS: docker_cli_network_unix_test.go:653: TestDockerNetworkDriverOptions.pN59_github_com_docker_docker_integration_cli.DockerNetworkSuite	0.758s
PASS: docker_cli_network_unix_test.go:850: TestDockerNetworkDriverUngracefulRestart.pN59_github_com_docker_docker_integration_cli.DockerNetworkSuite	4.812s

----------------------------------------------------------------------
FAIL: docker_cli_network_unix_test.go:1006: TestDockerNetworkHostModeUngracefulDaemonRestart.pN59_github_com_docker_docker_integration_cli.DockerNetworkSuite

[d3232000] waiting for daemon to start
[d3232000] daemon started
[d3232000] exiting daemon
[d3232000] waiting for daemon to start
[d3232000] daemon started
docker_cli_network_unix_test.go:1028:
    c.Assert(err, checker.IsNil)
... value *exec.ExitError = &exec.ExitError{ProcessState:(*os.ProcessState)(0xc20c0d40e0)} ("exit status 1")

[d3232000] exiting daemon

----------------------------------------------------------------------
PASS: docker_cli_network_unix_test.go:1069: TestDo
---

LGTM


[Android] Add onUserLeaveHint support to ReactActivityDelegate

Summary:
This PR adds onUserLeaveHint support into the ReactActivityDelegate. It allows modules to receive an event every time user moves the app into the background. This is slightly different than onPause - it's called only when the user intentionally moves the app into the background, e.g. when receiving a call onPause should be called but onUserLeaveHint shouldn't.
This feature is especially useful for libraries implementing features like Picture in Picture (PiP), where using onUserLeaveHint is the recommended way of auto-entering PiP for android < 12.
This is a re-submission of https://github.com/facebook/react-native/pull/42741. The problematic assert has been changed to an if - it's not a problem if onUserLeaveHint is received from an activity different to the current one, but in that case we shouldn't emit the event.
Changelog:
[ANDROID] [ADDED] - Added onUserLeaveHint support into ReactActivityDelegate
Test Plan:
Tested in the rn-tester app - callbacks are correctly called on both old and new architecture.

@behenate sadly this had to be reverted once more due to a crash on one of our internal products. I'll get back to you on Monday with more details and we'll see what are the next steps

@cortinico Interesting, I'm not sure what could be causing a crash in this code since it's pretty straightforward. Waiting for more info!

@behenate so the app gets stuck on the loading screen with this stacktrace:
E  Handling exception for crash
java.lang.AssertionError
	at com.facebook.infer.annotation.Assertions.assertCondition(Assertions.java:82)
	at com.facebook.react.ReactInstanceManager.onUserLeaveHint(ReactInstanceManager.java:596)
	at com.facebook.react.ReactDelegate.onUserLeaveHint(ReactDelegate.java:105)
	at com.facebook.react.ReactActivityDelegate.onUserLeaveHint(ReactActivityDelegate.java:129)
	at com.facebook.react.ReactActivity.onUserLeaveHint(ReactActivity.java:111)
	at android.app.Activity.performUserLeaving(Activity.java:9167)
	at android.app.Instrumentation.callActivityOnUserLeaving(Instrumentation.java:1667)
	at android.app.ActivityThread.performUserLeavingActivity(ActivityThread.java:5693)
	at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5673)
	at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:48)
	at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
	at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:180)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loopOnce(Looper.java:230)
	at android.os.Looper.loop(Looper.java:319)
	at android.app.ActivityThread.main(ActivityThread.java:8893)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

@cortinico I'm also not sure why onUserLeaveHint is called this early in the app, but it should be safe to ignore it. I will make another PR tomorrow. Hopefully third time's the charm 🙃

Sadly we have to revert this once more as it's causing a couple of internal apps to fail. Here the stacktrace:
https://github.com/facebook/react-native/pull/43642


Add development dependency on rdoc

When I tried to run "bundle exec rake spec" I got an error because
Rakefile requires a file from rdoc.

Thanks @caboteria - I'll hold off releasing the gem because it's only a dev fix.