run performance tests and show the results difference over time

This includes basic setup to run pgbench against arbitrary connection string. Possible targets are our staging environment and local installations. Currently pgbench invocations support two parameters, scale and duration. The question is what other options are possibly needed? Parameters are defined in a "matrix" to test all combinations, for tests I've used small scales and short durations. What scales and durations should we use in CI tests? The suggestion was to use 10 minute duration on every push to main, and one hour duration to run once a day. Thoughts?
This also includes generation of a dead simple html page representing test results. Here is a screenshot:

Here we can see the results. One more question is that which threshold should be used to color the results? Because here the threshold is 0.05 and all the results were taken from the same revision, so it is rather noisy. 5-10% as a threshold? We can use different values for positive and negative thresholds.
TODO:

[x] parametrize matrix via command line something like --durations "5,10,20"
[x] threshold for colors
[x] values for matrix to run in the CI

Note, for simplicity it is supposed to put the results as a json files in a different repo and use guthub pages to serve generated output file. Probably this design wouldn't scale to thousands of revisions, but for now it is reasonable to use just that and do not support some highly available database. Also the page itself probably will be hard to use with large amount of revisions, so different runs should be splitted into tabs/separate pages

Can we do this in a more generic way, for all our performance tests, not just pgbench? All we have at the moment in our performance test suite is test_runner/performance/test_perf_pgbench, but that will grow.

Currently we collect these metrics:
test_pgbench.init: 17.413 s
test_pgbench.pageserver_writes: 466 MB
test_pgbench.5000_xacts: 16.514 s
test_pgbench.size: 163 MB

If we could collect and plot those same metrics here, that'd be great

@hlinnaka test_runner/performance/test_perf_pgbench is tied to local execution environment, and some metrics are not available when tests run against staging, so I decided to make a separate test_runner/performance/test_perf_pgbench_remote.py which doesnt depend on local fixtures (but can be executed against local installation). When running in staging env there is no direct access to page server because of network isolation. So it is not trivial to support a call for gc, storage metrics parsing etc. It is planned that this kind of metrics will be available via our grafana installation.
Sure, this kind of plotting can be extended to be generic, some annotations on the test suite might be required to form a page like that, I'll dig in this direction

++ I like the approach. Some thought:

I would prioritize on running realistic tests on staging over the nice reports for now. If we have json's with test results we can parse/plot them later.

Seems that CircleCI is somewhat problematic to setup self-hosted worker (need to contact sales) and it is quite easy to setup that in GitHub Actions.

Two main thing that are interesting to look at are:

How certain test changes it results from version to version -- I think that should be a Grafana dashboard
How certain test performs compared to pg/aurora

I think with json like that at the end of the test we can later reconstruct everything:
{
   "platform": ("zenith-staging"|"zenith-local"|"pg"|"aurora"|...),
   "commit_id": "$commit_id",
   "platform_size": ~"8gb 4vcpu",
   "test_name": "test_pgbench",
   "test_runtime_sec": 4242,
   "test_params": [""], // set of pytest parameters that were selected for this test
   "test_results": {test-specific json} // here we can add test and platform specific options (like `pageserver_writes` or parsed bgbench output)
}

We can create aurora instances via API like we do with zenith and kill them after the test is done. Probably we can run tests against aurora once in a week or so. No need to run on each commit.

Make sense to try to stick with test_runtime_sec as the main result when possible. E.g. run fixed number of transactions instead of fixed number of seconds.

Reworked this to be compatible with our benchmarking fixtures, produced json looks like this:
{
    "revision": "local",
    "platform": "local",
    "result": [
        {
            "suit": "performance/test_perf_pgbench_remote.py::test_pg_bench[1-1000]",
            "total_duration": 2.0419581459973415,
            "data": [
                {
                    "name": "scale",
                    "value": 1,
                    "unit": "",
                    "higher_is_better": null
                },
                {
                    "name": "number_of_clients",
                    "value": 1,
                    "unit": "",
                    "higher_is_better": null
                },
                {
                    "name": "number_of_threads",
                    "value": 1,
                    "unit": "",
                    "higher_is_better": null
                },
                {
                    "name": "number_of_transactions_actually_processed",
                    "value": 1000,
                    "unit": "",
                    "higher_is_better": true
                },

And it is compatible with simple terminal reporting:

Html generation script is not updated yet, focusing on actual running in CI

Update on the current state.

Now it works in a generic way, benchmark fixtures updated to support that.
Publishes json formatted result to zenith-perf-data
For every benchmark session it creates new user/cluster in our staging environment and shuts it down after the session finishes
It uses self hosted runner located physically close to our staging environment (ec2 box)
Some tweaks of our python dependencies were required to use python 3.7 on that box

Remaining stuff:

[ ] Uses my own token to push to zenith-perf-data. Can be solved via dedicated automation user
[ ] I've realized that currently this is almost useless because we do not have automated deploy of new binaries to the staging environment, so we have to set up it in such a way that benchmark runs after deploy finishes
[ ] Generate simple html report from gathered data and serve it from github pages
[ ] Running simultaneously on push and by schedule with different parameters seems to require dedicated action like in this example. So I'm continuing my exploration in this direction

So I'm asking for a feedback :)

I've increased scale and total transactions in test matrix and some tests begin to fail. Scale 20, 30 are failed for all transaction amounts, test with scale 10 failed only for 10^5 xacts.
Failures were with these error messages:
pgbench: fatal: PQputline failed
and then all tests failed with
pgbench: error: connection to database "benchmark" failed: FATAL:  the database system is in recovery mode

Logs from compute with failure:
Oct 01 08:18:24 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:18:24.710 GMT [6832] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:18:49 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:18:49.310 GMT [1981] ERROR:  could not read relation size of rel 1664/0/1262.0 from page server at lsn 0/426AAAB8
Oct 01 08:18:49 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:18:49.310 GMT [1981] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:19:20 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:20.014 GMT [6830] FATAL:  could not read relation size of rel 1664/0/1260.0 from page server at lsn 0/426AAAB8
Oct 01 08:19:20 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:20.014 GMT [6830] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:19:20 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:20.017 GMT [6833] LOG:  PID 0 in cancel request did not match any process
Oct 01 08:19:24 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:24.712 GMT [6832] ERROR:  could not read relation size of rel 1664/0/6100.0 from page server at lsn 0/426AAAB8
Oct 01 08:19:24 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:24.712 GMT [6832] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:19:24 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:24.713 GMT [1236] LOG:  background worker "logical replication launcher" (PID 6832) exited with exit code 1
Oct 01 08:19:29 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:29.720 GMT [6834] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:19:30 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:30.009 GMT [6835] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:19:50 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:50.312 GMT [1981] ERROR:  could not read relation size of rel 1664/0/1262.0 from page server at lsn 0/426AAAB8
Oct 01 08:19:50 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:19:50.312 GMT [1981] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:20:29 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:29.721 GMT [6834] ERROR:  could not read relation size of rel 1664/0/6100.0 from page server at lsn 0/426AAAB8
Oct 01 08:20:29 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:29.721 GMT [6834] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:20:29 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:29.722 GMT [1236] LOG:  background worker "logical replication launcher" (PID 6834) exited with exit code 1
Oct 01 08:20:30 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:30.010 GMT [6835] FATAL:  could not read relation size of rel 1664/0/1260.0 from page server at lsn 0/426AAAB8
Oct 01 08:20:30 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:30.010 GMT [6835] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:20:30 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:30.012 GMT [6837] LOG:  PID 0 in cancel request did not match any process
Oct 01 08:20:34 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:34.729 GMT [6838] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:20:40 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:40.009 GMT [6839] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:20:51 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:51.314 GMT [1981] ERROR:  could not read relation size of rel 1664/0/1262.0 from page server at lsn 0/426AAAB8
Oct 01 08:20:51 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:20:51.314 GMT [1981] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:21:34 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:34.731 GMT [6838] ERROR:  could not read relation size of rel 1664/0/6100.0 from page server at lsn 0/426AAAB8
Oct 01 08:21:34 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:34.731 GMT [6838] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:21:34 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:34.732 GMT [1236] LOG:  background worker "logical replication launcher" (PID 6838) exited with exit code 1
Oct 01 08:21:39 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:39.740 GMT [6840] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:21:40 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:40.010 GMT [6839] FATAL:  could not read relation size of rel 1664/0/1260.0 from page server at lsn 0/426AAAB8
Oct 01 08:21:40 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:40.010 GMT [6839] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:21:40 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:40.012 GMT [6841] LOG:  PID 0 in cancel request did not match any process
Oct 01 08:21:50 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:50.008 GMT [6842] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:21:52 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:52.316 GMT [1981] ERROR:  could not read relation size of rel 1664/0/1262.0 from page server at lsn 0/426AAAB8
Oct 01 08:21:52 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:21:52.316 GMT [1981] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:22:39 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:39.741 GMT [6840] ERROR:  could not read relation size of rel 1664/0/6100.0 from page server at lsn 0/426AAAB8
Oct 01 08:22:39 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:39.741 GMT [6840] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:22:39 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:39.742 GMT [1236] LOG:  background worker "logical replication launcher" (PID 6840) exited with exit code 1
Oct 01 08:22:44 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:44.749 GMT [6843] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:22:50 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:50.013 GMT [6842] FATAL:  could not read relation size of rel 1664/0/1260.0 from page server at lsn 0/426AAAB8
Oct 01 08:22:50 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:50.013 GMT [6842] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:22:50 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:50.016 GMT [6844] LOG:  PID 0 in cancel request did not match any process
Oct 01 08:22:53 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:53.318 GMT [1981] ERROR:  could not read relation size of rel 1664/0/1262.0 from page server at lsn 0/426AAAB8
Oct 01 08:22:53 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:22:53.318 GMT [1981] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:23:00 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:23:00.007 GMT [6845] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:23:44 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:23:44.751 GMT [6843] ERROR:  could not read relation size of rel 1664/0/6100.0 from page server at lsn 0/426AAAB8
Oct 01 08:23:44 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:23:44.751 GMT [6843] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:23:44 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:23:44.752 GMT [1236] LOG:  background worker "logical replication launcher" (PID 6843) exited with exit code 1
Oct 01 08:23:49 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:23:49.760 GMT [6846] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:23:54 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:23:54.320 GMT [1981] ERROR:  could not read relation size of rel 1664/0/1262.0 from page server at lsn 0/426AAAB8
Oct 01 08:23:54 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:23:54.320 GMT [1981] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:24:00 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:00.009 GMT [6845] FATAL:  could not read relation size of rel 1664/0/1260.0 from page server at lsn 0/426AAAB8
Oct 01 08:24:00 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:00.009 GMT [6845] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:24:00 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:00.012 GMT [6847] LOG:  PID 0 in cancel request did not match any process
Oct 01 08:24:10 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:10.007 GMT [6848] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:24:49 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:49.761 GMT [6846] ERROR:  could not read relation size of rel 1664/0/6100.0 from page server at lsn 0/426AAAB8
Oct 01 08:24:49 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:49.761 GMT [6846] DETAIL:  page server returned error: Timed out while waiting for WAL record at LSN 0/426AAAB8 to arrive
Oct 01 08:24:49 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:49.762 GMT [1236] LOG:  background worker "logical replication launcher" (PID 6846) exited with exit code 1
Oct 01 08:24:54 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:54.770 GMT [6849] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 08:24:55 ip-172-32-22-101 zenith_ctl[1226]: 2021-10-01 08:24:55.322 GMT [1981] ERROR:  could not read relation size of rel 1664/0/1262.0 from page server at lsn 0/426AAAB8

Also this is the output of pgbench:
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.

Looks like the issue should be resolved in #630

got another error, compute logs:
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:35.702 GMT [1157] LOG:  background worker "WAL proposer" (PID 1164) was terminated by signal 9: Killed
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:35.702 GMT [1157] LOG:  terminating any other active server processes
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:35.858 GMT [1157] LOG:  all server processes terminated; reinitializing
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:35.933 GMT [2017] LOG:  database system was interrupted; last known up at 2021-10-01 15:40:48 GMT
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:35.933 GMT [2018] FATAL:  the database system is in recovery mode
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:35.953 GMT [2017] LOG:  database system was not properly shut down; automatic recovery in progress
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:35.957 GMT [2017] LOG:  redo starts at 0/20CA4530
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:36.063 GMT [2017] LOG:  [ZENITH_SMGR] libpqpagestore: connected to 'host=<IP_ADDRESS> port=6400'
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:36.840 GMT [2020] FATAL:  the database system is in recovery mode
Oct 01 15:45:36 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:36.849 GMT [2021] LOG:  PID 0 in cancel request did not match any process
Oct 01 15:45:38 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:38.210 GMT [2017] FATAL:  could not read block 0 in rel 1663/16385/16421.2 from page server at lsn 0/00000000
Oct 01 15:45:38 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:38.210 GMT [2017] DETAIL:  page server returned error: relish 1663/16385/16421_vm not found at 0/4272D3E8
Oct 01 15:45:38 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:38.210 GMT [2017] CONTEXT:  WAL redo at 0/2A4ACBE8 for Heap/UPDATE: off 18 xmax 1761 flags 0x03 ; new off 47 xmax 0; blkref #0: rel 1663/16385/16421, blk 13114 FPW; blkref #1: rel 1663/16385/16421, blk 4552
Oct 01 15:45:38 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:38.215 GMT [1157] LOG:  startup process (PID 2017) exited with exit code 1
Oct 01 15:45:38 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:38.215 GMT [1157] LOG:  aborting startup due to startup process failure
Oct 01 15:45:38 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01 15:45:38.225 GMT [1157] LOG:  database system is shut down
Oct 01 15:45:38 ip-172-32-25-13 zenith_ctl[1149]: 2021-10-01T15:45:38 [INFO] - could not kill postgres process: invalid argument: can't kill an exited process
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]: kill: invalid argument $
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]: Usage:
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:  kill [options] <pid> [...]
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]: Options:
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:  <pid> [...]            send signal to every <pid> listed
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:  -<signal>, -s, --signal <signal>
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:                         specify the <signal> to be sent
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:  -l, --list=[<signal>]  list all signal names, or convert one to a name
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:  -L, --table            list all signal names in a nice table
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:  -h, --help     display this help and exit
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]:  -V, --version  output version information and exit
Oct 01 15:45:38 ip-172-32-25-13 kill[2022]: For more details see kill(1).
Oct 01 15:45:38 ip-172-32-25-13 systemd[1]: postgres.service: Control process exited, code=exited, status=1/FAILURE
Oct 01 15:45:38 ip-172-32-25-13 systemd[1]: postgres.service: Failed with result 'exit-code'.

Looks like the same issue with backpressure/memory usage

fyi @ololobus I think the latest error has something to do with zenith_ctl

@LizardWizzard, yeah, it is.
It uses a very simple wrapper/guard, which tries to kill postgres if main thread (zenith_ctl) panicked. I did it that way, to protect from the case when we started postgres, but wasn't able to complete its configuration.
With your case I see two problems, which I haven't handled properly:

postgres tries to reinitialise itself after crash, it's not correct as it tries to do wal redo locally. It should exit and after restart by systemd or k8s do a clean startup with basebackup and co. Probably I should just always use restart_after_crash = off everywhere by default. Actually I thought that it tries to do reinit only when is run with pg_ctl, not plain postgres
this kill[2022]: kill: invalid argument $ doesn't look really friendly, but hopefully the control process exited, so it's more less fine :)

strage output from yapf:
        self.record(
            "number_of_transactions_actually_processed",
            pg_bench_result.number_of_transactions_actually_processed,
            '',
            report=MetricReport.  # <---
            TEST_PARAM,  # thats because this is predefined by test matrix and doesnt change across runs
        )

@yeputons I've rewritten reporter script, made a couple of adjustments to make mypy happy and polished some rough corners. Please take a look.

Are the reports already available somewhere?

@hlinnaka reports gathered during testing are available here https://github.com/zenithdb/zenith-perf-data/tree/testing/data/staging. Once this is merged reports will be in that repo in the master branch. Visualisation script is in this pr in scripts directory

@yeputons I've pushed some adjustments. I plan to squash/merge this by the and of the day.


Brings back #3586 (Show underline on Link when hovered or focused)

Brings back https://github.com/primer/react/pull/3586
Had to revert it to make way for a hotfix in release. primer/react#3590

Hi @radglob, sorry I need to cut a hotfix release and didn't want to push this change along with it.
Side note: This feels like a scary change for a patch release? Have we tested this in dotcom for instances where a Link component is used but it does not look like a blue text at all.

@siddharthkp is this still valid? Note that @radglob's contract has ended so we should take ownership of making this call if needed.

Superseded by https://github.com/primer/react/pull/3946


Unable to define logicalplan optimizer outside the package

Hi, I am planning to define my own logical plan optimizer outside the package https://github.com/thanos-community/promql-engine/blob/main/logicalplan/plan.go#L39.
However, I am unable to do so because github.com/thanos-community/promql-engine/internal/prometheus/parser is an internal package.
We should probably still use the promql.parser package here to allow extension.

Yeah this is not ideal, optimizers are a good extension point for the engine. Ideally we can use the prometheus parser, but if that's not possible, we might expose the internal parser as a public package.

@yeya24 should we close this one?

Yes, closing now.


Huber in Regression Evaluation Metrics

Hi, Daniel. Thanks for your great video!
About the Huber in Regression Evauation Metrics:

I found it confusing when you describe Huber in "when to use" as a combination of MAE and MSE because the first impression of mine is let's use Huber to balance the advantage and drawbacks between MAE and MSE since it's a combination.
However, I found the chart here to show that Huber would be much more insensitive anytime if we compare to MAE and MSE no matter what degree it would be.

The link is here: https://www.researchgate.net/figure/Comparison-of-the-MSE-MAE-and-Huber-losses_fig3_340644261
Yes, Huber does show a milder reaction to a larger value by the square. But it seems Huber is not that a "combination".
Perhaps we may say it's an "improvement" or an "alternative" would be not that confusing?
Thanks, Daniel!. You're the best. Learning a lot from your videos. Thanks! - Alvin

@beethofen
the chart you cited is just one of the possible Huber loss' graphs that depends on the value of δ
as you can see from the fomula from your screenshot it's indeed a combination and the main aim of Huber's loss is to "modify" MAE making it differentiable in the vicinity of 0


Publishing as a Wiki for Rapid and Easy Contribution

If anybody tech-minded would know how to make the site editable like a google doc, this could facilitate a lot of combined effort in providing resources, updates, and aid channels.
I know quality is important, but as Wikipedia shows having a lot of people reviewing instead of a limited channel for contribution can be far more effective when there is a huge base of content.
There are projects like https://ikiwiki.info/ but plugging the content straight into a javascript editor might really produce more cooperative contribution.

I think a wiki was not the idea behind this site. From the start, it was part of the intent to have @jmcmurry & her team review every piece of information that gets posted, to avoid spreading misinformation.
There are tons of wikis out there - it's easy to just set that up. And I guess that may even be useful. But it's not what (I understand) this project is or want to be.
Once again, @jmcmurry's take on this would be the one that counts [for me].
I'd close the issue if my guess is correct.

Agreed. I recommend closing this.

Okay.  Mostly I bring it up because I couldn't find any central resource for community supports to organize (things like makerspace ventilator designs, money pools to facilitate self-quarantining, everyone has new ideas and new work to help) and you guys seem to have both legitimate centralization and some technological resources to make a website.

I guess we may want to link to some nice wiki from the Who to follow/How to contribute sections, but we're not aiming at creating that wiki/community ourselves.
I'll close the issue, but please feel free to make a pull request with a link if you find such community 👍

BTW: thanks for the intention, @xloem!


Support for Local (Offline) Translation Engines

Thank you for developing this exceptional application!
Is it possible to add support for local (offline) translation engines? For example, libretranslate.
Alternatively, is it possible to provide an interface that allows users to develop their own plugins for utilizing custom translation engines?

Hi, Thanks for the feedback! Yeah, previously I have received a lot of suggestion to add offline-translation support, so I'm going to start feature development after next update. I haven't decided yet what way (providing interface for plugin or some UI functionality for connectors) to implement the feature though, so any suggestions are welcome

Hi, for offline translation you could use argosopentech which can be found here on github.
Or the derivative of LibreTranslate, for windows which is called LibreOnWindows.
Another idea would be to use "firefox translations" which works offline, based on "Project Bergamot" created in collaboration with the University of Edinburgh: you would have to find a way to exploit it outside of firefox or with a portable version.
At the moment I have not tried your program because I would prefer to use it exclusively offline, as an extra you could also introduce output to the native windows TTS.
Thank you and I wish you to improve the program "offline" :P

Hi, Thanks for the feedback! Yeah, previously I have received a lot of suggestions to add offline-translators support, so I'm going to start feature development after next update. I haven't decided yet what way (providing interface for plugin or some UI functionality for connectors) to implement the feature though, so any suggestions are welcome

Hi, I found an ocr with translation called Pyugt , it integrates the ability to translate offline via libretranslate. i tried it with libretranslate installed on docker and it works. Could you integrate this functionality?


Add pip and Homebrew installation instructions to README.md

And probably remove the MacPorts instructions, or at least make it last.

I'll remove the macports instructions


Add com.snowplowanalytics.mobile/application_lifecycle/jsonschema/1-0-0 (close #1131)

As explained in the related issue, here is the schema for application_lifecycle entity.
The entity is attached to all the events by the tracker based on the app state (foreground or background).
For reference iOS PR: snowplow/snowplow-objc-tracker#637

Closing in favor of https://github.com/snowplow/iglu-central/pull/1139


Point or Vector?

We're representing points and vectors in the same exact way - would it be advantageous to define them separately? Should we just have point as an alias to a vector?

so creating a type alias for Vector as Point does make sense. The compiler will still see them interchangeably, but it's good for making it clearer to users.


Authentication key problem with LibreElec

Bug report
Your Environment

Netflix add-on version:
Operating system version/name: LibreElec 10 Beta 1
Device model:  Raspberry Pi 4B

Used Operating system:

[ ] Android
[ ] iOS
[x] Linux
[ ] OSX
[ ] Raspberry-Pi
[ ] Windows

Describe the bug

I can't log in without the Authentication key, so i tried downloading it and i followed the steps. Because I am using LibreElec there is no webbrowser and pip or apt doesnt work.
Expected behavior

I just want to log in again. One way or another.
Actual behavior

Because there is no webbrowser i downloaded the file on my desktop and put it on my rpi via filezila. But the next steps seem to be impossible without pip.
Steps to reproduce the behavior

Possible fix

Debug log

The debug log can be found here:

Additional context or screenshots (if appropriate)
Other information

Screenshots

read the instructions https://github.com/CastagnaIT/plugin.video.netflix/wiki/Login-with-Authentication-key


[Firefox] Non-standard Array/String generics have been deprecated

https://www.fxsitecompat.com/en-CA/docs/2016/non-standard-array-string-generics-have-been-deprecated/

It's unlikely that we use any of these.

We don't, as far as I can see.

I didn't checked all the projet but we use some of them for exemple :

Array.push in : scrollspy.js  (https://github.com/twbs/bootstrap/blob/v4-dev/js/src/scrollspy.js#L148-L149)
Array.join in : scrollspy.js (https://github.com/twbs/bootstrap/blob/v4-dev/js/src/scrollspy.js#L253)
Array.filter in : scrollspy.js (https://github.com/twbs/bootstrap/blob/v4-dev/js/src/scrollspy.js#L145)
Array.forEach in : tooltip.js and scrollspy.js
String.split in : tooltip.js and scrollspy.js

Only static methods were deprecated. The standard, non-static methods aren't affected. Read the original link for details.


MON-2849: Graduate alertingrules and alertrelabelconfigs to v1

This PR is mostly about $title.
I'm not sure if https://github.com/openshift/api/commit/46d922b15972209d1127c528bc844bf67004c158 is the correct usage of .codegen.yaml.
Additionally I added a drive-by typo fix. Please let me know if this is appropriate, happy to drop this or propose separately.

Seems like having the file monitoring/v1alpha1/.codegen.yaml was not the correct choice.

@JoelSpeed Thanks a lot, great input. I added a bunch of cross validations based on whats described in https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config and the subset of what we implement in this API. I also added the suggested requires in order to be explicit.
cc @simonpasquier

/retest

expensive by the validation checker

What does this mean? Where were you seeing an error?

expensive by the validation checker

What does this mean? Where were you seeing an error?

@JoelSpeed When I change the rule like so:
diff --git a/monitoring/v1/0000_50_monitoring_02_alertrelabelconfigs.crd.yaml b/monitoring/v1/0000_50_monitoring_02_alertrelabelconfigs.crd.yaml
index ed3b1784..45b64f91 100644
--- a/monitoring/v1/0000_50_monitoring_02_alertrelabelconfigs.crd.yaml
+++ b/monitoring/v1/0000_50_monitoring_02_alertrelabelconfigs.crd.yaml
@@ -82,7 +82,7 @@ spec:
                         description: targetLabel to which the resulting value is written in a 'Replace' action. It is mandatory for 'Replace' and 'HashMod' actions. Regex capture groups are available.
                         type: string
                     x-kubernetes-validations:
-                      - rule: (self.action == 'LabelDrop' || self.action == 'LabelKeep') || has(self.sourceLabels)
+                      - rule: (self.action == 'LabelDrop' || self.action == 'LabelKeep') || size(self.sourceLabels) > 0
                         message: sourceLabels is required for actions Replace, Keep, Drop, HashMod and LabelMap
                       - rule: (self.action != 'Replace' && self.action != 'HashMod') || has(self.targetLabel)
                         message: targetLabel is required when action is Replace or HashMod
diff --git a/monitoring/v1/types.go b/monitoring/v1/types.go
index 6cd2215f..d3000025 100644
--- a/monitoring/v1/types.go
+++ b/monitoring/v1/types.go
@@ -293,7 +293,7 @@ type LabelName string
 // - https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs
 // - https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
 //
-// +kubebuilder:validation:XValidation:rule="(self.action == 'LabelDrop' || self.action == 'LabelKeep') || has(self.sourceLabels)",message="sourceLabels is required for actions Replace, Keep, Drop, HashMod and LabelMap"
+// +kubebuilder:validation:XValidation:rule="(self.action == 'LabelDrop' || self.action == 'LabelKeep') || size(self.sourceLabels) > 0",message="sourceLabels is required for actions Replace, Keep, Drop, HashMod and LabelMap"
 // +kubebuilder:validation:XValidation:rule="(self.action != 'Replace' && self.action != 'HashMod') || has(self.targetLabel)",message="targetLabel is required when action is Replace or HashMod"
 // +kubebuilder:validation:XValidation:rule="!has(self.modulus) || (has(self.modulus) && size(self.sourceLabels) > 0)",message="modulus requires sourceLabels to be present"
 // +k8s:openapi-gen=true
@@ -303,6 +303,7 @@ type RelabelConfig struct {
        // configured regular expression for the Replace, Keep, and Drop actions.
        //
        // +optional
+       // +kubebuilder:validation:maxItems:=10
        SourceLabels []LabelName `json:"sourceLabels,omitempty"`

        // separator placed between concatenated source label values. When omitted,

and run make update-codegen-crds integration the rule causes this error (abbreviated message):
unable to create CRD instances: unable to create CRD "alertrelabelconfigs.monitoring.openshift.io": CustomResourceDefinition.apiextensions.k8s.io "alertrelabelconfigs.monitoring.openshift.io" is invalid: spec.validation.openAPIV3Schema.properties[spec].properties[configs].items.x-kubernetes-validations[0].rule: Forbidden: estimated rule cost exceeds budget by factor of 1.048576x (try simplifying the rule, or adding maxItems, maxProperties, and maxLength where arrays, maps, and strings are declared)

@JoelSpeed @simonpasquier Thanks a lot for the input, I fixed a couple of issues that you pointed out:

I dropped the default value for replacement since actions LabelKeep and LabelDrop don't allow that field.
I added additional cross validation rules. I mostly implemented the rules that Prometheus itself uses when unmarshaling a relabel rule. I have however skipped rules that call functions in the Prometheus code (like !relabelTarget.MatchString(c.Replacement), which validates a value against a regex). The first seven rules are a result of this. The remaining 3 rules are based on the relabel documentation where some actions require certain field to be present.

I think the last remaining question is whether alert names can be UTF-8 or if they have to be a valid label name. See https://github.com/openshift/api/pull/1406#discussion_r1114480193

I think the last remaining question is whether alert names can be UTF-8 or if they have to be a valid label name. See #1406 (comment)

Alert names can be any UTF-8 strings (see Prometheus validation code). The alert name ends up as a label value (alertname) of the ALERTS metric:

@simonpasquier @jan--f Are you happy with this now? I think if we are good to go, lets squash this down and get it merged, I have no further feedback

@simonpasquier @jan--f Are you happy with this now? I think if we are good to go, lets squash this down and get it merged, I have no further feedback

I think one final ack of the drop of MinItems for Groups above and then we're good to go from my perspective.

PR is reporting a merge conflict, can we make sure it's rebased please

/lgtm

/approve
/hold
@jan--f Have you considered getting QE to review this before merge? Is there any way they can pre-merge validate this in combination with an operator PR to make sure it's working as expected?

Have you considered getting QE to review this before merge? Is there any way they can pre-merge validate this in combination with an operator PR to make sure it's working as expected?

Good questions. I can certainly raise the related CMO PR. @juzhao wdyt?

@JoelSpeed I raised https://github.com/openshift/cluster-monitoring-operator/pull/1945, that pulls in this PR and the related openshift/client-go wip PR.
This will run our existing e2e test for this API. Wdyt?

Good questions. I can certainly raise the related CMO PR. @juzhao wdyt?
will review and test the PR

failed to launch cluster-bot cluster
launch openshift/api#1406 gcp
https://prow.ci.openshift.org/view/gs/origin-ci-test/logs/release-openshift-origin-installer-launch-gcp-modern/1645977177813946368
ERRO[2023-04-12T02:31:12Z] Failed to load arguments.                     error=invalid configuration: you must define at least one test or image build in 'tests' or 'images'

tested along with the CMO PR
launch 4.14-ci,openshift/api#1406,openshift/cluster-monitoring-operator#1945 gcp
https://prow.ci.openshift.org/view/gs/origin-ci-test/logs/release-openshift-origin-installer-launch-gcp-modern/1646048977654648832
still the same error
{  invalid configuration: you must define at least one test or image build in 'tests' or 'images'}

as it's not easy to do pre-merge testing for openshift/api PR, I suggest we merge the openshift/api PR first, then test the CMO PR

the code is LGTM
/lgtm

@JoelSpeed PTAL.
tests in https://github.com/openshift/cluster-monitoring-operator/pull/1945 have also passed.

@juzhao OpenShift API cannot be tested directly as you have tried with cluster bot, and may only be tested by inclusion in PRs in other repositories, so the CMO PR has included these latest changes, please try directly with CMO only and it should show the updated v1 API from this PR

@jan--f see above comment, do we have any change not in PR: https://github.com/openshift/cluster-monitoring-operator/pull/1945, if no changes for CMO PR, I will test the PR with CMO PR only

launched CMO PR alone,
launch 4.14-ci,openshift/cluster-monitoring-operator#1945 no-spot

did not enable TechPreviewNoUpgrade featureSet, no "alertingrules.monitoring.openshift.io" and "alertrelabelconfigs.monitoring.openshift.io" CRDs, so can't create AlertingRule with "apiVersion: monitoring.openshift.io/v1", error is

error: resource mapping not found for name: "example" namespace: "openshift-monitoring" from "STDIN": no matches for kind "AlertingRule" in version "monitoring.openshift.io/v1"
ensure CRDs are installed first

according to @jan--f , should have these CRDs in default cluster, no need to enable TechPreviewNoUpgrade

enabled TechPreviewNoUpgrade featureSet, there are "alertingrules.monitoring.openshift.io" and "alertrelabelconfigs.monitoring.openshift.io" CRDs, but still can't create AlertingRule with "apiVersion: monitoring.openshift.io/v1", error is

EOF
error: resource mapping not found for name: "example" namespace: "openshift-monitoring" from "STDIN": no matches for kind "AlertingRule" in version "monitoring.openshift.io/v1"
ensure CRDs are installed first

API version is still v1alpha1 for alertingrules from "oc explain" and CRD, full info please see from http://pastebin.test.redhat.com/1097396
is this a bug for CMO or we need to merge openshift/api PR first?

should be CMO bug  https://issues.redhat.com/browse/OCPBUGS-11804

OCPBUGS-11804 is fixed, https://github.com/openshift/cluster-monitoring-operator/pull/1945 is LGTM

/hold cancel


Support for Rate Limiter

Here is the rate limiter: https://ktor.io/docs/rate-limit.html
I tried it below
routing {        rateLimit {                     get("/something", {                         summary = "something Endpoint."                         response { ....
Result

URL paths are affected by the rateLimit function.
Are there any plans to support the rate limiter?

Hi,
there is no plan to directly "support" rate limiter or other plugins for this exact use-case, however, this issue can easily be fixed by adding the rate-limiter-part of the route to a list of ignored parts (PluginConfig#ignoredRouteSelectors). See https://github.com/SMILEY4/ktor-swagger-ui/issues/43 for more information.


Limit mutating residues

Adding optional input parameter residues_allowed_to_mutate to PointMutationEngine constructor to address https://github.com/choderalab/perses/issues/112
residues_allowed_to_mutate is a list of strings of residue.ids
Also making max_point_mutants optional, default value = None,  because it is unnecessary if allowed_mutations have been specified (require that they cannot both be None).

Cool!
Can you also document the format for allowed_mutations a bit better, and give some examples and corresponding English descriptions?  I got confused and messed this up a few times.

Test failures are also only https://github.com/choderalab/perses/issues/110 and https://github.com/choderalab/perses/issues/114 -- can wait until completion of https://github.com/choderalab/perses/pull/118

Awesome!  Merge when ready.


feat(splits-kit): use blockies identicon

https://linear.app/splits/issue/PE-1645/update-splitkit-to-use-new-identicons
Not sure why so many changes in pnpm lockfile?

Do we export that icon component from splits kit? Not necessary to do now, seems like it could be nice (I think there are a few helper components below DisplaySplit and CreateSplit that could be nice to export for people at some point. Probably a separate task).


Installation of CAD_to_OpenMC

I am some issues while installing the program. Can you please help me?

Hi @Sabyaro, That's unfortunate that you have problems. I'd be happy to help you out.
Am I right in guessing that you tried to build CAD_to_OpenMC with cmake?
If so - then that is not something we support (at least not yet). CAD_to_OpenMC is written purely in python and can be installed using the python utility pip. We are working on a conda-package as well but that's not done yet.
As such the preferred way of installing CAD_to_OpenMC is to use a python virtual environment:
python -m venv cadToOpenMC source cadToOpenMC/bin/activate pip install CAD_to_OpenMC
This will install version 0.2.5 of CAD_to_OpenMC in the virtual python environment called cadToOpenMC, along with all the necessary dependencies. To step out from the virtual environment simply do deactivate.
If you prefer, you can install the development version by checking out the source code, move to that directory and replace the last line with pip install .
Also there is a new version 0.2.6 out very soon - Most likely Monday in fact. We are running tests right now.

Thanks a lot for reply... I will apply the method

Excellent - please let me know if you run into any other problems.

Great that it worked.
For the latter I am not entirely sure I understand what you mean.
If you have a step-file of the geometry you wish to simulate, CAD_to_OpenMC can help you generate a h5m-description of that geometry, by generating a surface mesh on that geometry.
If you have a tetrahedral mesh description already then you have two options: Either perform a skinning of that description in order to create a surface mesh, or you simply create a h5m-file directly from that mesh.
The second procedure will likely be very slow to do transport calculations on but will work.
But I should say that neither of these two is not what CAD_to_OpenMC is designed to do, and would require quite some work to allow for. It can certainly be done, but not without some effort.

@Sabyaro I will close this issue now - If you need any more help please don't hesitate to reach out.

Thanks a lot. It helps me a lot


Milestone 2: Decorate Class

OOP School Library Milestone 2: Decorate Class
Changes made in this milestone:

Created a class Nameable.
Turned Person class to Nameable
Created BaseDecorator Class Inherited From Nameable
Created CapitalizeDecorator Class Inherited From The BaseDecorator Class
Created TrimmerDecorator Class Inherited From The BaseDecorator Class

Made Changes As Suggested


Improve Pandas dataframes manipulation

Anything specific that would like to know about dataframes in Pandas? data cleaning ? modeling ? ...


Stop requirements at landings need a duration timer

reported by vardicd
"for both the island marker and the KSC marker, the mission no longer requires you to come to a stop before the negotiations at the island start, so the marker for that disappears really fast. I touched down and bounced and it was gone, and same at KSC. I was coming in for a landing and had a touch and go because my plane didn't want to stay on the ground, and the marker disappeared. If I didn't remember where it was, I wouldn't have know where to drive back too."

Added 10 second timer at KSC landing for placement of the "terminal ramp" at all airports. In play-test now

v2.0.2 implements


Headphone or Speaker work with buzz or no sound

If you get into the situation refer to title...

Open System Preference -> Sound -> Input
Then minimize the window, don't close it.
---The function would act normal as soon as doing as below---

If there are other solutions?
-> As far as I know...it's still a bug...Nope !
-> Just sharing the solutions so far I found.

---Photo is Embedded---

Since the bug is solved with solution, Case Closed


Strange wrapping of API text

Problem description
The API docs seem to have a hard wrap for property descriptive text. This makes it hard to read.
Example from https://www.pulumi.com/docs/reference/pkg/nodejs/pulumi/aws/sqs/#Queue-receiveWaitTimeSeconds:

another example at https://www.pulumi.com/docs/reference/pkg/nodejs/pulumi/gcp/cloudfunctions


React Native implementation

UPDATE: I've created a native UI module for iOS (Swift) and Android (Kotlin) myself, check it out here: mrousavy/react-native-blurhash
Hi! The library is really awesome, but I can't seem to find a way to use it in React Native (with the blurhash-typescript library).
The decode(...) function returns a raw pixel array (UInt8ClampedArray), but the <Image> component can't be initialized with a pixel array. (see: react-native Image.source)

I'm happy to help with this, I've been trying by using react-native-canvas but it is not performant at all...
It would be amazing a decodeToBase64 method, it would be quite easy from there to give support for React Native... 📱

@espipj yes, I've thought about using the native APIs aswell by implementing this extra initializing method in the existing, already very fast, fast-image component library. I've also created an issue over there
Unfortunately I don't have the time right now to create such a pull request, from what I understood though it doesn't seem that hard when I looked into the native code of fast-image.

Hey @mrousavy I got something working on iOS using the swift implementation and linking it to React Native

I'm working on it at https://github.com/espipj/react-native-blurhash
I might need some help as my Swift and Kotlin experience is none
cc/ @LuisRodriguezLD

@mrousavy I implemented blurhash using OpenGL so that it can be used in React Native.
The package is available here: https://github.com/schiller-manuel/gl-react-blurhash

@schiller-manuel that looks really interesting! your idea of using this would be to render this GL View as a placeholder until the image (which is a separate, invisible component) has been loaded, to then swap the GL View with the Image view, correct?

yes, that's how I'd use it. In the linked example the onPress event triggers the swapping of placeholder and image, but it could also be the onLoad event of the actual image.

@espipj @schiller-manuel I've just created a native UI module for this. See: https://github.com/mrousavy/react-native-blurhash.

Currently, I've only implemented iOS, working on Android right now. It uses the default Image component, I still need to create extra properties like resizeMethod, resizeMode, and maybe borderRadius. If you could help me out on that and create some PRs, I'd gladly accept them.
In short: It's a lightweight component that just renders the Blurhash Image in react native. No need for react-native-unimodules, gl-react, gl-react-native, buffer, ...

I did it. It's working on Android and iOS. Uses the native Image components, and no dependencies.
Here's the link: https://github.com/mrousavy/react-native-blurhash
It's public on npm: https://www.npmjs.com/package/react-native-blurhash
@woltapp do you want to mention this library in the README in case anyone else is searching for a React Native implementation?

Is there a react-native library that doesn't require native linking?

@siddhatiwari you can use gl-react-blurhash in Expo if this is what you want to do.

@siddhatiwari while the expo library works, you should keep in mind that the performance is not as good as my native module, since it uses the JS thread for decoding, which is slower and blocks any other JS code execution. @schiller-manuel did an awesome job implementing this without native code, but it's just limited performance wise per design. Always choose the right tool for the job.

@mrousavy @schiller-manuel Thanks for the quick response! Will check out gl-react-blurhash.

@woltapp do you want to mention this library in the README in case anyone else is searching for a React Native implementation?

Hi @mrousavy! Firstly, sorry for the super late reply. Secondly, yes let's have it documented in the readme. Would you mind providing a PR for that? 🙂

@jerry-git sure, here you go: https://github.com/woltapp/blurhash/pull/176

Closing, as this is now third-party :)


[Suggestion] A feature that tells you how long it took to load/create a world

Also a config option to enable/disable this

Closing this as this has now been added in the latest commit


lrcget: 0.5.0 -> 0.9.0

Diff: https://github.com/tranxuanthang/lrcget/compare/refs/tags/0.5.0...0.9.0
Changelog: https://github.com/tranxuanthang/lrcget/releases/tag/0.9.0

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

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

x86_64-linux

:white_check_mark: 1 package built:

lrcget

@ofborg build lrcget

nixpkgs-reviewd workflow started
Status and logs: https://github.com/nixosbrasil/nixpkgs-reviewd/actions/runs/12495539693

Can you add a update script?.
passthru.updateScript = gitUpdater { };

Sure! I've opted to use nix-update-script instead of gitUpdater as the former also updates the cargoHash, but they both don't update the fontend's npmDepsHash. Don't know if there is a simple solution to make that work aside from writing a custom update script.

nixpkgs-reviewd workflow finished
Status and logs: https://github.com/nixosbrasil/nixpkgs-reviewd/actions/runs/12495539693
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 368164

x86_64-darwin

:white_check_mark: 1 package built:

lrcget

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

aarch64-darwin

:white_check_mark: 1 package built:

lrcget

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

x86_64-linux

:white_check_mark: 1 package built:

lrcget

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

x86_64-linux

:white_check_mark: 1 package built:

lrcget

x86_64-darwin

:white_check_mark: 1 package built:

lrcget

aarch64-darwin

:white_check_mark: 1 package built:

lrcget


help,Missing Node Types When loading the graph, the following node types were not found:IF_ChatPrompt

[ERROR] An error occurred while retrieving information for the 'IF_ChatPrompt' node.
Traceback (most recent call last):
File "D:\AIGC\ComfyUI\server.py", line 564, in get_object_info
out[x] = node_info(x)
File "D:\AIGC\ComfyUI\server.py", line 531, in node_info
info['input'] = obj_class.INPUT_TYPES()
File "D:\AIGC\ComfyUI\custom_nodes\ComfyUI-IF_AI_tools\IFChatPromptNode.py", line 967, in INPUT_TYPES
node = cls()
File "D:\AIGC\ComfyUI\custom_nodes\ComfyUI-IF_AI_tools\IFChatPromptNode.py", line 383, in init
self.assistants = self.load_presets(self.assistants_file)
File "D:\AIGC\ComfyUI\custom_nodes\ComfyUI-IF_AI_tools\IFChatPromptNode.py", line 424, in load_presets
presets = json.load(f)
File "C:\Users\foxpa\AppData\Local\Programs\Python\Python310\lib\json_init_.py", line 293, in load
return loads(fp.read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xbe in position 5968: illegal multibyte sequence
Error loading presets from D:\AIGC\ComfyUI\custom_nodes\ComfyUI-IF_AI_tools\IF_AI\presets\neg_prompts.json: 'gbk' codec can't decode byte 0x93 in position 198: illegal multibyte sequence

me too!
To see the GUI go to: http://<IP_ADDRESS>:8888
FETCH DATA from: G:\comfyUI+AnimateDiff\ComfyUI\custom_nodes\ComfyUI-Manager\extension-node-map.json [DONE]
[ERROR] An error occurred while retrieving information for the 'IF_ChatPrompt' node.
Traceback (most recent call last):
File "G:\comfyUI+AnimateDiff\ComfyUI\server.py", line 564, in get_object_info
out[x] = node_info(x)
File "G:\comfyUI+AnimateDiff\ComfyUI\server.py", line 531, in node_info
info['input'] = obj_class.INPUT_TYPES()
File "G:\comfyUI+AnimateDiff\ComfyUI\custom_nodes\ComfyUI-IF_AI_tools\IFChatPromptNode.py", line 967, in INPUT_TYPES
node = cls()
File "G:\comfyUI+AnimateDiff\ComfyUI\custom_nodes\ComfyUI-IF_AI_tools\IFChatPromptNode.py", line 383, in init
self.assistants = self.load_presets(self.assistants_file)
File "G:\comfyUI+AnimateDiff\ComfyUI\custom_nodes\ComfyUI-IF_AI_tools\IFChatPromptNode.py", line 424, in load_presets
presets = json.load(f)
File "json_init_.py", line 293, in load
UnicodeDecodeError: 'gbk' codec can't decode byte 0xbe in position 5968: illegal multibyte sequence


Add version information to log for the mixer.

This PR will add a print out of version information to the log for
istio mixer. This should ease debugging, etc., as the version info
will come along with the log.
Example:
$ ./bazel-bin/cmd/server/mixs server
Istio Mixer: version: unknown (build: 2017-03-29-84ea18c, status: Modified)
Starting gRPC server on port 9091

Related to #424

This change is

Jenkins job mixer/presubmit passed

Jenkins job mixer/presubmit passed

Jenkins job mixer/presubmit passed

Jenkins job istio/mixer-pr passed

Jenkins job istio/mixer-pr passed


switch to from_owned_ptr_or_opt in ModelClassValidator

Personally I'd put the conversion from pointers to pyo3 types sooner - see #58.


fix: connecting secure external MQTT to Commands via messaging

Closes #848
Set core-command/ExternalMQTT/AuthMode to usernamepassword and store secret if security enabled.

If your build fails  due to your commit message not passing the build checks, please review the guidelines here: https://github.com/edgexfoundry/edgex-go/blob/main/.github/Contributing.md
PR Checklist
Please check if your PR fulfills the following requirements:

[X] I am not introducing a breaking change (if you are, flag in conventional commit message with BREAKING CHANGE: describing the break)
[X] I am not introducing a new dependency (add notes below if you are)
[ ] I have added unit tests for the new feature or bug fix (if not, why?)
[X] I have fully tested (add details below) this the new feature or bug fix (if not, why?)
[ ] I have opened a PR for the related docs change (if not, why?)

Testing Instructions

New Dependency Instructions (If applicable)

Will open another PR to run the test Set Core-Command Connect Secure External MQTT on edgex-taf-pipeline/integration-test

Waiting for edgexfoundry/app-service-configurable #579.


Add abstract adapter-implemented method to retrieve arbitrary request headers.

Add an abstract adapter-implemented method to retrieve arbitrary HTTP request headers for the purposes of retrieivng the Last-Event-ID header to initialize the lastId field value properly when instanstiating a new session.

Added under the Session#readHeader method.

Added under the Session#readHeader method.


Ability with conditions array behaving strangely for single objects

have a ability
can :manage, StopBlacklist, phone_code: phonecodes
That I know is getting hit for a given user
phonecodes is a list of phone_codes the user can mange stop blacklists for
and phone_code is the column on the table for stop blacklist
when I run accessible_by it returns the array of stop blacklist the user should be able delete as expected

StopBlacklist.accessible_by(current_ability, :delete)

but when I run can? on a specific one in that list it run me false

can? :delete, StopBlacklist.find(##)

I even tried to do the following

can? :delete, StopBlacklist.accessible_by(current_ability, :delete)

and it returned false
I am using Cancancan version (1.17.0)
and Rails 4.0
Is there a reason using an array for the condition breaks checking on a single object?

Please follow the issue template and provide a failing example. Thank you!

I added a more specific example, thanks for the response.

Please follow the template and provide a gist. I copy it here for you. This will help me understand your issue. Thanks.
Steps to reproduce
Please describe accurately how to reproduce the issue and post all necessary code.
If you provide a Gist to reproduce the issue this will make the debug much easier.
Please copy the following Gist and edit it to reproduce your issue: https://gist.github.com/coorasse/3f00f536563249125a37e15a1652648c
Expected behavior
Tell us what should happen
Actual behavior
Tell us what happens instead
System configuration
Rails version:
Ruby version:
CanCanCan version

Okay, while making the gist I think I figured out what is going on. it looks like the issue was that the array was an array of integers [12345, 54321].  but the value on the object was a string "12345", and the comparison wasn't working right, going to re-factor the phonecodes array to be strings
Thanks for your help.

Glad I could help


smth wrong with leftovers / cost_function???

test leftovers more carefully

There was a problem with proper including the last leftover.
It's solved with additional call after the loop
"""
for (int it=0; it<n; it++)
{
if (current_id != material_id[it])
{
leftovers[current_id] = material_length[current_id] - sum;
sum         = 0.0;
current_id += 1;
}
sum += state[it];
}
// NOTE: Loop ends before counting last leftover
// need to find last leftover
leftovers[current_id] = material_length[current_id] - sum;
"""


New http request on conf changes

I like how you architectured your application but, in a real android app. you would't want to waste resources and make new network request every time the user does something as simple as rotating their phone.

This application is an approach of how to implement an android app based on the Uncle Bob's Clean Code architecture. The synchronization depends of the app and is not standard. The example you have exposed, can be done with a few lines of code. IMO this isn't an issue,

Perhaps you are right and this is not an issue. But could someone provide references to articles explaining how to integrate this architure without this small setback. I mean, using this 'as is' on a real application wouldn't be optimal.
Again. I love how this is structured. but this small flaw prevents me from using it in my app.

@feresr Of course, It's not an issue because if you check the code there is the cache store also (you can use whatever you want there like a Database instead of files) in order to store/cache a few things and invalidate them after mins/hours whatever anyway.

@spirosoik thanks!. I took a quick look at the code and I skipped these key lines:
    UserDataStore userDataStore;

    if (!this.userCache.isExpired() && this.userCache.isCached(userId)) {
      userDataStore = new DiskUserDataStore(this.userCache);
    } else {
      userDataStore = createCloudDataStore();
    }```

Now everything falls into place :)
Will close this issue now.

@feresr the only thing which must change is that this demo uses a multiple activity architecture. it will be good to use a single activity architecture with fragments. I mentioned it here https://github.com/android10/Android-CleanArchitecture/issues/32#issuecomment-139189160 and another guy send a detailed pull request for this kind of implementation. check here https://github.com/android10/Android-CleanArchitecture/pull/53
Read carefully the post of @android10 , he mentioned a few things which must be done a little bit different. One of them is the packaging of application's features. @android10 suggests and actually, it's a good idea to use 'Packages by feature', especially if you are in a big team and you want to keep the ownership as a smaller team

Guys, nice discussion. Sorry I was on vacations.
As you have figured out, one of the approach is to use a cache, that's the main value of it, isn't it? We want to avoid connections as much as we can, specially when no data is changed on the server.
On the other hand, another simple approach I used is to retain fragment instances. Although this is not the most effective solution, it is pretty much we need in order to not either hit the api or query the cache.

@android10 :+1: cool


Group result in summary from multiple "run"

Hello,
I can't find a way to made a global summary from multiple run:
#[tokio::main]
async fn main() {
    let result1=World::run("tests/features/readme.feature").await;
    let result2=World2::run("tests/features/readme2.feature").await;
    // cucumber::summarize([result1,result2]);
}

For now, I get 2 summaries in the terminal.
Is there a way to get a final global merged summary ?
Thank you in advance for your answer.

Unfortunately we don't have similar feature right now. Can you share a use case that drove you to use 2 separate cucumber runs?

Ok, I must create a global world...
Thank you +1

Hello! 👋🏻 I have a use case for two separate Cucumber runs.
I'm testing a web application with multiple features, and I'm using Cucumber to make HTTP requests and check the results. I have multiple .feature files, each describing a different resource in the application.
Here's a quick example:
Feature: Users should be able to create new accounts.
  Rule: Users with valid emails and passwords should be allowed to create accounts.
    Example: This email is valid and the password is sufficiently strong.
      Given the user enters the email<EMAIL_ADDRESS>      Given the user enters the password "HelloWor-ld213"
      When she creates an account
      Then the request should succeed

  Rule: Users' emails must be at least four characters long.
    Example: This illegal user email has three characters.
      Given the user enters the email "a@b"
      Given the user enters the password "HelloWor-ld213"
      When she creates an account
      Then the request should fail

Right now, I...

Make an API call for the step When she creates an account
Store the response on the World
Inspect the status code as part of the step Then the request should fail.

#[derive(cucumber::World, Debug, Default)]
pub struct NewUser {
    email: Option<String>,
    password: Option<String>,
    response: Option<Result<UserCreateSuccess, Error<CreateUserError>>>,
}

#[given(expr = "the user enters the email {string}")]
pub async fn provide_email(w: &mut NewUser, email: String) {
    w.email = Some(email);
}

#[given(expr = "the user enters the password {string}")]
pub async fn provide_password(w: &mut NewUser, password: String) {
    w.password = Some(password);
}

#[when(regex = r"^(?:he|she|they) creates an account")]
pub async fn create_account(w: &mut NewUser) {
    w.response = Some(
        create_user(
            &Configuration::default(),
            UserCreateRequest {
                account_name: w.account_name.clone().unwrap(),
                email: w.email.clone().unwrap(),
                password: w.password.clone().unwrap(),
            },
        )
        .await,
    );
}

#[then("the request should succeed")]
pub async fn request_succeeds(w: &mut NewUser) {
    let observed = w.response.as_ref().is_some_and(|resp| resp.is_ok());
    assert!(
        observed,
        "Expected OK status code, found {:?}",
        w.response.as_ref().map(|resp| resp.is_ok())
    );
}

#[then("the request should fail")]
pub async fn request_fails(w: &mut NewUser) {
    let observed = w.response.as_ref().is_some_and(|resp| resp.is_err());
    assert!(
        observed,
        "Expected failed status code, found {:?}",
        w.response.as_ref().map(|resp| resp.is_err())
    );
}

This works well for one type of request, but because the response types are all different (which is good because I want to strongly-type my API calls), the number of fields in my World grows each time I check a new API call. In particular, the field:
struct World {
    response: Option<Result<UserCreateSuccess, Error<CreateUserError>>>,
}

needs to be duplicated for each API response type:
struct World {
    user_create_response: Option<Result<UserCreateSuccess, UserCreateError>>,
    user_read_response: Option<Result<UserReadSuccess, UserReadError>>,
    user_delete_response: Option<Result<UserDeleteSuccess, UserDeleteError>>,
    user_update_response: Option<Result<UserUpdateSuccess, UserUpdateError>>,

    team_create_response: Option<Result<TeamCreateSuccess, TeamCreateError>>,
    /* .... */
}

My solution so far has been to use one world per API call, and also one .feature per API call.
// file tests/user/create.rs
#[derive(cucumber::World)]
struct CreateUserWorld {}

// file tests/user/read.rs
#[derive(cucumber::World)]
struct ReadUserWorld {}
...

However, it'd like to have one summary instead of many. That's why this feature is important to me.
Alternatively, if I could scope the state into smaller chunks (like have one World composed of multiple smaller World, that would work too. However, I noticed almost all of the functions that would allow me to implement this are parameterized by the trait bound W: World (e.g. cucumber::Cucumber, writer::Normalized), which prevents me from easily writing an aggregation function.
A side effect of my design is that it's hard to reuse steps across worlds (which I understand to be an anti-pattern). Any tips or insights would be appreciated. ❤


Menu structure

@seadaisy
Which menu structure do you find intuitive?
In my development version it currently looks like this:

@tischi
If you whant , as you mentioned in our discussion, to have only steps where values are changed in the Process menu, I would move the Aling steps to the Image menu.

But then also Crop... should go to image, no?
Only Bin... and 8-bit change the values.
I am not sure, because even those two are also under Image in ImageJ.
So maybe everything in the main menu, and Save the only submenu?

Let's discuss at 17:00

@tischi
I will write the conclusion of the discussion with Nils via Mail (to keep him in the loop).

@tischi
DP Menu structure
From FIJI
Why do I get all menus if I go via FIJI [Plugins->BigDataProcessor2 -> BDPCalibrate
->Open
->Process
-> Save
Even if there is no open image and therefore nothing to process or to save (it even gives an error massage if you choose something from the Process or Save menu
Insight BDP2
[BigDataProcessor-> Calibrate] Calibrate should be renamed to Properties (because it is doing the same, as the FIJI I[mage -> Properties] dialog
Is t possible to have [BigDataProcessor->Open]?
Include [BigDataProcessor->Process->Align Channels
->Align Channels Split Chip..
Leave the rest as it is (Nils had a strong opinion to leave it, because it is easy to understand from a biologist point of view)
Additional recommendation: If you can foresee, that there will be more options in terms of processing coming in the near future, splitting the Process menu is recommended


[TextField] defaultProps seems to be ignored when React.hydrate is used in SSR setup with Remix

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
I used Remix + MUI example as my base and the only change I did is in the theme part, like this:
import { createTheme } from '@mui/material';

const theme = createTheme({
    MuiInputLabel: {
      defaultProps: {
        shrink: true,
      },
    },
    MuiTextField: {
      defaultProps: {
        InputLabelProps: {
          shrink: true,
        }
      }
    }
  },
});

export default theme;

In my app I then have login form which uses TextField component. When I disable javascript, the form looks correct, the labels are shrunk by default. When I enable javascript and reload the page, the labels are shrunk but when I focus & blur the field(s), it seems that they use the default behavior.
Also there is the following warning in the console:
Warning: Prop `className` did not match. Server: "MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-shrink MuiInputLabel-outlined MuiFormLabel-root MuiFormLabel-colorPrimary Mui-required css-1sumxir-MuiFormLabel-root-MuiInputLabel-root" Client: "MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-outlined MuiFormLabel-root MuiFormLabel-colorPrimary Mui-required css-14s5rfu-MuiFormLabel-root-MuiInputLabel-root"

Expected behavior 🤔
I would expect that defaultProps are correctly hydrated in SSR setup.
Steps to reproduce 🕹
Steps:

clone MUI repo and go to https://github.com/mui-org/material-ui/tree/master/examples/remix-with-typescript
change theme to have the changes from "Current behavior" section, add a login form to the index route
start the project with npm run dev, load the page and check the console

Context 🔦
https://github.com/mui-org/material-ui/tree/master/examples/remix-with-typescript
Your environment 🌎

`npx @mui/envinfo`
  System:
    OS: Linux 5.16 Arch Linux
  Binaries:
    Node: 14.18.0 - ~/.volta/tools/image/node/14.18.0/bin/node
    Yarn: 1.22.17 - ~/.volta/tools/image/yarn/1.22.17/bin/yarn
    npm: 6.14.15 - ~/.volta/tools/image/node/14.18.0/bin/npm
  Browsers:
    Chromium: 98.0.4758.80 (Official Build) Arch Linux (64-bit)
    Firefox: 96.0.3
  npmPackages:
    @emotion/react: ^11.7.1 => 11.7.1
    @emotion/styled: ^11.6.0 => 11.6.0
    @mui/base:  5.0.0-alpha.67
    @mui/icons-material: ^5.3.1 => 5.3.1
    @mui/lab: ^5.0.0-alpha.66 => 5.0.0-alpha.67
    @mui/material: ^5.3.1 => 5.4.0
    @mui/private-theming:  5.3.0
    @mui/styled-engine:  5.3.0
    @mui/system:  5.4.0
    @mui/types:  7.1.0
    @mui/utils:  5.3.0
    @types/react: ^17.0.24 => 17.0.39
    react: ^17.0.2 => 17.0.2
    react-dom: ^17.0.2 => 17.0.2
    typescript: ^4.1.2 => 4.5.5

I can reproduce it. It seems to be a bug indeed.
Would you be interested in looking for a fix?

@michaldudak We are encountering a similar issue where the palette.background is being applied from the theme but not the palette.primary color.
It is quite weird, though to keep in mind, we are using Turborepo as our monorepo manager.
Not sure how we'd create a reproducible sample, but what is interesting is that we tried cloning the MUI Remix sample, and add our theme to it, and that works! 😆


Add a PatternMatcher API (similar to the one in Roslyn) for more advanced matching with features like NavigateTo.

Looks good.  Do we still plan to add additional parameters to the API call, such as an optional max results?  In addition to the max results, we may want flags that can turn on or off match kinds.  For example, a client may only want non-prefix matches when the searchValue is over a threshold length.

@steveluc Hey Steve, https://github.com/Microsoft/TypeScript/pull/2084 tracks the work to limit the amount of data provided by NavigateTo.
Could you explain a bit more what you mean by "For example, a client may only want non-prefix matches when the searchValue is over a threshold length."
I'm not sure why you'd ever want to skip prefix-matches.  Can you give an example?


Stuck in loop if VM doesn't come online

Consider writing a time out for the VM so that if it can't connect it adds the job back to the todo list.

Fixed with #27


AMarchingChunk::Generate2DHeightMap strange terrain

Using Generate2DHeightMap instead of Generate3DHeightMap leads to strange terrain.
The Xpos/Ypos calculation should probably changed from:
const float Xpos = x * Position.X;
const float Ypos = y * Position.Y;
To:
const float Xpos = x + Position.X;
const float Ypos = y + Position.Y;

right it needs to be
const float Xpos = x * 100 + Position.X;
const float Ypos = y * 100 + Position.Y;

To count for unreal engine unit scaling


[Bug]: Map in the View tab not working

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
The map in the view tab is showing error.
Expected behavior
On clicking the view tab the map should be visible which will enable users to navigate to places in the map and plan their trip accordingly.
Add ScreenShots

On which device are you experiencing this bug?
No response
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[ ] I'm a VSOC'24 contributor
[X] I have starred the repository

Hey @DevNandini02, Please complete the other assigned issues first

@DevNandini02 please don't raise more than 2 issues at a time . it's simply violating the rules of GSSOC'24 & also the rules of the repo . please try to follow the rules mentioned in CONTRIBUTING.md file from next time please.

@apu52 please assign this issue to me

@apu52 assign me this issue.

Hello, I would like to work upon this issue. Please assign it to me. Thank You

@Atharvverma1234 this issue has already been solved , don't worry , u can still make new issues on which u want to work on


Versions in DataDog/integrations-core are not found

https://github.com/seqsense/datadog-agent-alpine/blob/9b02a2048545e333b03ab47c115b86412b722432/renovate.json#L17-L27
Versions in DataDog/datadog-agent are found, but DataDog/integrations-core are not.
Renovate log:
DEBUG: Found no results from datasource that look like a version (DataDog/integrations-core)(dependency="DataDog/integrations-core")
{
  "result": {
    "sourceUrl": "https://github.com/DataDog/integrations-core",
    "releases": []
  }
}

integrations-core actually has tags in the same format as datadog-agent.
https://github.com/DataDog/integrations-core/tags
https://github.com/DataDog/datadog-agent/tags

The behavior is not changed by swapping the order of regexManagers.

The behavior is not changed by swapping the order of regexManagers.

It seems like a bug in renovate bot. It can be worked around by using git-tags datasource instead of github-tags.

It seems like a bug in renovate bot. It can be worked around by using git-tags datasource instead of github-tags.


Make Attackby (etc) parameters use event args.

Quality Work


SWDEV-421983: Fix the computation of U and V matrices in gesvda

Fixes SWDEV-421983
Per specification of cusolverDngesvdaStridedBatched:

jobz = CUSOLVER_EIG_MODE_NOVECTOR : Compute singular values only; jobz = CUSOLVER_EIG_MODE_VECTOR : Compute singular values and singular vectors.

and
rocblas_svect

enumerator rocblas_svect_all
+ The entire associated orthogonal/unitary matrix is computed.
enumerator rocblas_svect_singular
+ Only the singular vectors are computed and stored in output array.
enumerator rocblas_svect_overwrite
+ Only the singular vectors are computed and overwrite the input matrix.
enumerator rocblas_svect_none
+  No singular vectors are computed

This means

jobz = CUSOLVER_EIG_MODE_NOVECTOR, hip2rocblas_evect2svect(jobz, xxx) should return rocblas_svect_singular
jobz = CUSOLVER_EIG_MODE_VECTOR, hip2rocblas_evect2svect(jobz, xxx) should return rocblas_svect_all

Consequently the xxx above should be the constant 0

Additionally, hip2rocblas_evect2svect(jobz, econ) should return rocblas_svect_none when econ=1, because the in _bufferSize functions no pointer is provided and no computation should be performed.

jobz = CUSOLVER_EIG_MODE_NOVECTOR, hip2rocblas_evect2svect(jobz, xxx) should return rocblas_svect_singular

rocblas_svect_none will compute the singular values, and no singular vectors will be computed. This matches the stated behaviour of  CUSOLVER_EIG_MODE_NOVECTOR.

jobz = CUSOLVER_EIG_MODE_VECTOR, hip2rocblas_evect2svect(jobz, xxx) should return rocblas_svect_all

rocblas_svect_all will compute the full mm matrix U and nn matrix V. According to the cuSOLVER documentation, U is an m*n matrix (with m>n), which means that only the singular vectors (not the full matrix) are being computed. This behaviour is provided by rocblas_svect_singular.

Additionally, hip2rocblas_evect2svect(jobz, econ) should return rocblas_svect_none when econ=1, because the in _bufferSize functions no pointer is provided and no computation should be performed.

The calls to rocblas_start_device_memory_size_query ensure that the _bufferSize functions do not perform any computations. rocblas_svect_none does not prevent computations from being performed - as stated above, it indicates that all of the singular values, and none of the singular vectors, are to be computed.
It should be noted that gesvda with the rocSOLVER backend requires larger arrays than cuSOLVER does (see https://hipsolver.readthedocs.io/en/latest/userguide/usage.html#different-minimum-array-lengths). It's possible that this is the cause of SWDEV-421983.

Invalid, the problem is at rocSOLVER


Rule CloudFormation dynamodb_with_aws_owned_cmk. Problem with SSEType

Hello,
We are using Kics v1.5.5.
We are using AWS CDK to create the cloudFormation template.
The description rule says that we should be encrypting using AWS Managed CDK instead of AWS owned CDK.
CDK example code (create dynamodb table):
const table = new dynamodb.Table(this, tableName, {
tableName: tableName,
billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
removalPolicy: RemovalPolicy.RETAIN,
partitionKey: {
   name: 'testId', type: dynamodb.AttributeType.NUMBER
},
stream: StreamViewType.NEW_IMAGE,
pointInTimeRecovery: true,
encryption: TableEncryption.AWS_MANAGED

Cloudformation output If we set encryption: TableEncryption.AWS_MANAGED:
"Resources": {
    "ddbdevpushnotificationsusersA2AD2302": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
           "SSESpecification": {
                 "SSEEnabled": true
            },
           "TableName": "ddb-test-table"
           ...
      }
}

This rule checks properties.SSESpecification.SSEType == "KMS" (line 10 and 43), but when encryption is AWS_MANAGED the SSEType doesn't exists in CF output.
Actual Behavior
DynamoDB With Aws Owned CMK, Severity: HIGH, Results: 5
Description: AWS DynamoDb should be encrypted using AWS Managed CMK, instead of AWS-owned CMK. To verify this, SSEEnabled must be verified if false for AWS-owned CMK or true for AWS-Managed CMK. Default value is false.
Platform: CloudFormation

Expected Behavior
Successful result. We use AWS MANAGED table encryption.
Thanks.

Hi @uripb !
Thank you for your input.
Hope #5210 addresses this issue.


Read Description from dpkg status files

There are a number of fields that might appear in the status file for a Debian package. This PR adds the Description field to the set of fields parsed when cataloging Debian operating systems. This change does not include the addition of this field in any of the SBOM output formats (as far as I can tell), and is initially meant for consumption via library users taking advantage of Syft's package cataloging features. I'm not sure whether it makes sense to include it in SBOM output in the future. I don't specifically have a need for it, but I would like to see it parsed and returned within the sbom.SBOM object.

Thanks for the PR @ryanmoran! Would you be able to merge the latest changes from main and push to your branch? We recently fixed a CI test and those changes are not present in this PR which is why I think the validations are failing.

🟢 Thanks for adding the field will merge this now. If there are test issues I will jump in to try and resolve them


issue with training/testing partition

hey! I've been following your code, great work!
I assume you run all cells in order.
The only mistake I see is that, first, you apply the data augmentation technique, then, you split your data in train and test. This means that you may be adding an example on train set and its augmented version to the test set. This may lead to overestimated performance on your test set. You need to make sure that Train and Test sets are as independent as possible.
The easy fix is, fist split in train test, and then apply augmentation on both datasets.

Thank you @rola93  for pointing out the error point . Ill fix it and update the repo soon.


implement Vision API

Fixes #1144
The Vision API. Which has one endpoint.
Docs
http://stephenplusplus.github.io/gcloud-node/#/docs/master/vision
To Dos

[x] Docs

[x] Add beta warning
[x] JSDocs
[x] Write overview
[x] Update manifest.json
[x] Update readme

[x] Support IMAGE_PROPERTIES
[x] Tests

[x] System

[x] Test single image
[x] Test multiple image
[x] Test verbose mode

[x] Unit

[x] vision/index.js
[x] index.js

Examples
All Vision methods take a single or multiple images, which may be File objects or file paths. Therefore, these are all acceptable...
var input = './path/to/image.jpg';
var input = gcs.file('image.jpg');
var input = [
  './path/to/image.jpg',
  gcs.file('image.jpg')
];

To detect text from an image...
vision.detectText('./path/to/image.jpg', function(err, text) {
  text = [
    'This was text from the image',
    'This was more text found in the image'
  ]
});

To detect faces in an image... (this one returns a super long object)
vision.detectFaces(gcs.file('image.jpg'), function(err, faces) {
  faces = [
    {
      "angles": {
        "pan": -8.1090336,
        "roll": -5.0002542,
        "tilt": 18.012161
      },
      "bounds": {
        "head": [
          {
            "x": 1
          },
          {
            "x": 295
          },
          {
            "x": 295,
            "y": 301
          },
          {
            "x": 1,
            "y": 301
          }
        ],
        "face": [
          {
            "x": 28,
            "y": 40
          },
          {
            "x": 250,
            "y": 40
          },
          {
            "x": 250,
            "y": 262
          },
          {
            "x": 28,
            "y": 262
          }
        ]
      },
      "features": {
        "confidence": 0.34489909,
        "chin": {
          "center": {
            "x": 143.34183,
            "y": 262.22998,
            "z": -57.388493
          },
          "left": {
            "x": 63.102425,
            "y": 248.99081,
            "z": 44.207638
          },
          "right": {
            "x": 241.72728,
            "y": 225.53488,
            "z": 19.758242
          }
        },
        "ears": {
          "left": {
            "x": 54.872219,
            "y": 207.23712,
            "z": 97.030685
          },
          "right": {
            "x": 252.67567,
            "y": 180.43124,
            "z": 70.15992
          }
        },
        "eyebrows": {
          "left": {
            "left": {
              "x": 58.790176,
              "y": 113.28249,
              "z": 17.89735
            },
            "right": {
              "x": 106.14151,
              "y": 98.593758,
              "z": -13.116687
            },
            "top": {
              "x": 80.248711,
              "y": 94.04303,
              "z": 0.21131183
            }
          },
          "right": {
            "left": {
              "x": 148.61565,
              "y": 92.294594,
              "z": -18.804882
            },
            "right": {
              "x": 204.40808,
              "y": 94.300117,
              "z": -2.0009689
            },
            "top": {
              "x": 174.70135,
              "y": 81.580917,
              "z": -12.702137
            }
          }
        },
        "eyes": {
          "left": {
            "bottom": {
              "x": 84.883934,
              "y": 134.59479,
              "z": -2.8677137
            },
            "center": {
              "x": 83.707092,
              "y": 128.34,
              "z": -0.00013388535
            },
            "left": {
              "x": 72.213913,
              "y": 132.04138,
              "z": 9.6985674
            },
            "pupil": {
              "x": 86.531624,
              "y": 126.49807,
              "z": -2.2496929
            },
            "right": {
              "x": 105.28892,
              "y": 125.57655,
              "z": -2.51554
            },
            "top": {
              "x": 86.706947,
              "y": 119.47144,
              "z": -4.1606765
            }
          },
          "right": {
            "bottom": {
              "x": 179.30353,
              "y": 121.03307,
              "z": -14.843414
            },
            "center": {
              "x": 181.17694,
              "y": 115.16437,
              "z": -12.82961
            },
            "left": {
              "x": 158.2863,
              "y": 118.491,
              "z": -9.723031
            },
            "pupil": {
              "x": 175.99976,
              "y": 114.64407,
              "z": -14.53744
            },
            "right": {
              "x": 194.59413,
              "y": 115.91954,
              "z": -6.952745
            },
            "top": {
              "x": 173.99446,
              "y": 107.94287,
              "z": -16.050705
            }
          }
        },
        "forehead": {
          "x": 126.53813,
          "y": 93.812057,
          "z": -18.863352
        },
        "lips": {
          "bottom": {
            "x": 137.28528,
            "y": 219.23564,
            "z": -56.663128
          },
          "top": {
            "x": 134.74164,
            "y": 192.50438,
            "z": -53.876408
          }
        },
        "mouth": {
          "center": {
            "x": 136.43481,
            "y": 204.37952,
            "z": -51.620205
          },
          "left": {
            "x": 104.53558,
            "y": 214.05037,
            "z": -30.056231
          },
          "right": {
            "x": 173.79134,
            "y": 204.99333,
            "z": -39.725758
          }
        },
        "nose": {
          "bottom": {
            "center": {
              "x": 133.81947,
              "y": 173.16437,
              "z": -48.287724
            },
            "left": {
              "x": 110.98372,
              "y": 173.61331,
              "z": -29.7784
            },
            "right": {
              "x": 161.31354,
              "y": 168.24527,
              "z": -36.1628
            }
          },
          "tip": {
            "x": 128.14919,
            "y": 153.68129,
            "z": -63.198204
          },
          "top": {
            "x": 127.83745,
            "y": 110.17557,
            "z": -22.650913
          }
        }
      },
      "confidence": 0.56748849,
      "blurry": false,
      "dark": false,
      "happy": false,
      "hat": false,
      "mad": false,
      "sad": false,
      "surprised": false
    }
  ]
});

All methods also accept an object to activate "verbose" mode...
// Without verbose mode (default):
vision.detectLabels('./image.jpg', function(err, labels) {
  labels = [
    'classical sculpture',
    'statue',
    'landmark',
    'ancient history',
    'artwork'
  ];
});

// With verbose mode:
vision.detectLabels('./image.jpg', { verbose: true }, function(err, labels) {
  labels = [
    {
      id: '/m/095yjj',
      desc: 'classical sculpture',
      score: 0.98092282
    },
    {
      id: '/m/013_1c',
      desc: 'statue',
      score: 0.906611
    },
    {
      id: '/m/05_5t0l',
      desc: 'landmark',
      score: 0.85323846
    },
    {
      id: '/m/0djmp',
      desc: 'ancient history',
      score: 0.71385759
    },
    {
      id: '/m/0dgsmq8',
      desc: 'artwork',
      score: 0.69560623
    }
  ]
});

Fancy! :rainbow:

@callmehiphop I'm going to work on locking this up with tests. Should I wait a tick for you to check out the API?
@dhermes :dog::heart:

@stephenplusplus sure, I'll take a peak!

I like it, the convenience methods look great! Do we know if there's a common use case where a user might want to leverage more than one feature on a given image (e.g. face + text)? If there is, it might be nice to make the annotate() options a little bit easier to work with? Thoughts?

Wow, I totally misread the API and thought only a single type of annotation could be requested at a time. I will definitely make it easier.

Docs are up! http://stephenplusplus.github.io/gcloud-node/#/docs/master/vision

Awesome!  @bradabrams I think you were using this too, right?

don't merge lifted!

Thank you @stephenplusplus for implementing the vision API in nodejs.
I used the code of your fork (git://github.com/stephenplusplus/gcloud-node.git#spp--vision), Is this the latest version? because I noticed that the face detect function does not return the original response
Looks like the splice line 334 removes the objects from it. To fix this I cloned the original response object in the Vision.prototype.annotate function, like this:
var respClone = extend(true, {}, resp);
callback(null, resp.responses, respClone);
I also wondered why the vision API always told me that I was not happy when analyzing my picture, so I tried to smile even more but this did not help, it always told me happy = false ... finally I noticed that line 1134 the likehood was not transformed into a value before the comparison, I changed it to this:
var value = Vision.likelihood[object[prop]];

Thank you very much for catching this stuff. I will fix this up so you will be happy in no time!

@chrisweb fixed! Feel free to give it another try.

All the checks look to be checked :)  Is this ready to go?

@JustinBeckwith giving this a final review right now!

@stephenplusplus works perfectly now, well done and thank you

@chrisweb great, thanks again for testing this out!

woo :+1:


opsgenie: propagate label k/v to opsgenie details

See discussion in: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/prometheus-users/Jmpxr8O5fXI/JTdlyfjBDAAJ
By default map k/v labels to the details in opsgenie alert api: https://www.opsgenie.com/docs/web-api/alert-api#createAlertRequest
It makes sense to use this part of the api as the k/v style of labels maps nicely over to their API, as well as leaving more room for data (8k, vs tags which is max 20 tags, each 50 char = 20x50=1000).
The more/better data is structured to opsgenie messages, the easier it is to route, and the richer the  semantics of the messages will be.

It makes sense to use this part of the api as the k/v style of labels maps nicely over to their API, as well as leaving more room for data (8k, vs tags which is max 20 tags, each 50 char = 20x50=1000).

This may make sense for you, does it make sense for all potential users?
I don't think it's safe to assume that a random label added by a developer to some /metrics should automatically appear here, as that label name may have special semantics in how that organisation uses opsgenie.

It does not necessarily match all users - but could at least match severals (as you see in the thread there was at least one picking up on it) - so having it as an option (a flag to activate it) would be nice - I can's see that it breaks anything at least.

@juliusv thoughts?

I think it makes sense.
Or if we (@brian-brazil) are concerned that we don't want to populate the OpsGenie details field with random labels coming from alerts because they might have special semantics within an organization's context, we could still put the entire labelset under a top-level labels property in there: "details": { "labels": {"foo": "bar", "biz": "buz"} }. So it wouldn't pollute the entire details object with random properties. Really, as long as this is overrideable, I don't care too much either way...

It'll be pretty cool to have something like:
    - name: opsgenie-general
      opsgenie_configs:
      - api_key: xxxxx
        message: XXX
        description: XXX
        teams: XXX
        priority: XXX
        labels_to_details: ['dashboard', 'action', 'system', 'service', 'server_role']

instead of:
    - name: opsgenie-general
      opsgenie_configs:
      - api_key: xxxxx
        message: XXX
        description: XXX
        teams: XXX
        priority: XXX
        details:
          dashboard: '{{- if .CommonLabels.dashboard -}}{{- .CommonLabels.dashboard -}}{{- end -}}'
          action: '{{- if .CommonLabels.action -}}{{- .CommonLabels.action -}}{{- end -}}'
          system: '{{- if .CommonLabels.system -}}{{- .CommonLabels.system -}}{{- end -}}'
          service: '{{- if .CommonLabels.service -}}{{- .CommonLabels.service -}}{{- end -}}'
          server_role: '{{- if .CommonLabels.server_role -}}{{- .CommonLabels.server_role -}}{{- end -}}'

@juliusv Is there any update on this?

I stand by my opinion https://github.com/prometheus/alertmanager/issues/682#issuecomment-310246499, but I'm not an Alertmanager maintainer. /cc @simonpasquier @stuartnelson3

I see how it can be useful but I'm not sure what's the best way to handle it in the configuration.
So far it seems that we have 2 slightly different requests:

append all of the common labels to the details field.
append a subset of the common labels.

Is this still open or closed fellas?
Also
Is there some sort of documentation on how to achieve this (Labels in prometheus to tags in Opsgenie)? I am trying to set it up in my environment and I dont find any sort of documentation available online.