General speed performance

Hi RSpec team,
Many thanks for making the RSpec 3 to be the best release ever!
Recently I have found that RSpec performance has degraded for me when running test suite for finite_machine. Obviously the times are relative to my machine and the size of test suite but  they consistently vary between versions. Version 3.1.0 of rspec runs the whole test suite in under 1.4s (files load in 0.3s), whereas v3.3.0 on average takes 1.6s (files load in 0.32s). Though it may seems like splitting hairs but I try hard to keep my code as well as tests running relatively fast. Thus following questions:

Did certain parts of the public api got slower during minor releases?
Does RSpec codebase have any benchmark suite to ensure performance of the api stays at certain level?
What is RSpec team view on speed performance measuring for the rspec library? (happy to contribute given guidance)

Did certain parts of the public api got slower during minor releases?

That's certainly possible, but no users have reported slowness before now.  The one thing we added that we're aware made things slightly slower is #1749 -- but note that we did lots of benchmarking/optimization in that PR such that affects of the changes in that PR would be minimal for those who are not using the features that PR enables.  Also, that change was first included in 3.2, and the 3.2 release also included a number of performance improvements.  By our calculation the perf improvements in 3.2 were far greater than the minor degredation caused by #1749 and in fact my benchmark showed that 3.2 has 30% fewer object allocations than 3.1 and ran noticeably faster than 3.1 (1.33 seconds vs 1.59 seconds in that benchmark).  We reported perf improvements as being notable in the 3.2 release and the reports we got from users was that 3.2 was in fact faster for them.
It would be interesting to use git bisect against your suite between 3.1 and 3.3 to see if the slowness was introduced by any particular commit.

Does RSpec codebase have any benchmark suite to ensure performance of the api stays at certain level?

We have lots of benchmarks -- and the other repos have benchmarks, too -- but we just use these as micro-benchmarks to make one-off decisions about what implementations to go with for particular things.  We don't run them on an ongoing basis and we don't have anything holistic that benchmarks RSpec from it's API.  We've talked about wanting something like that, though (rspec/rspec-dev#45).

What is RSpec team view on speed performance measuring for the rspec library? (happy to contribute given guidance)

We definitely want RSpec to get faster and stay fast.  Contributions for the purpose of perf improvements generally need benchmarks included in the PRs.  If you have any ideas for improvements or for improving our process/tooling around this, we're all ears!

I just remembered -- there was also a change in 3.3 (#1858) that made let and subject slightly slower but we didn't believe it would be noticeable.  Still, you can try setting config.threadsafe = false to disable that feature and see if it makes your suite faster.

Thank you for quick reply!

We definitely want RSpec to get faster and stay fast. Contributions for the purpose of perf     improvements generally need benchmarks included in the PRs.

I will look through the current benchmarks more thoroughly but having had a quick look it appears that it would be beneficial to have a benchmark that puts majority of the features rspec supports into one benchmark, for example, a simple tiny library of some coupled objects.
The v3.2.0 and v3.3.0 seem to show equal times on average. It is only when I switch to v3.1.0 I get around 0.2s boost for the test suite without any changes. This implies to me that the potentially performance degrading changes have been part of v3.2.0. I'm running tests on ruby 2.0.0. I was wondering if there is certain abundance of certain features that I overuse in my tests that may cause the slowdown. I'm using let and subject sparingly and have been recently replacing them with just repeated code to localise their usage.

The slowdown is definitely surprising in your case.  Would you be interested in running git bisect from v3.1.0 to v3.2.0 to see if you can pinpoint where the slowness comes from?

Sure thing, I will try to zero in on this, but it will definitely have to wait till tomorrow as I'm currently preparing a library release and this takes precedence.

I'm going to try bisecting this now.

I cloned  the finite machine gem and ran its suite against various RSpec versions. Measuring 5 runs of RSpec v3.1.0 vs v3.4.0 gives:
v3.4.0: [1.615, 1.556, 1.512, 1.544, 1.483], mean 1.542
v3.1.0: [1.765, 1.504, 1.477, 1.480, 1.488], mean 1.543

So... I'm not convinced this affect exists.
@peter-murach if you can provide a specific commit where your suite becomes significantly slower against ruby 2.0.0 at the latest patchlevel? I'm going to close this issue for now until we have a specific commit and a reproducible benchmark.


RMC dont compile on version 4.18

Error in compile on:
SelectedObjectsList = DetailBuilder.GetDetailsView()->GetSelectedObjects();

me too
.GetSelectedObjects   had some error

I created a patch for this. I'll submit a pull request after I finish fixing the other compilation bugs I'm running into, but for now if you'd like to fix this line, you can change it to:
SelectedObjectsList = DetailBuilder.GetDetailsView().GetSelectedObjects();

@the-nerdery-dot-info Any update on a PR? Was this the only line that needed to be changed to make 4.18 work with RMC?

SelectedObjectsList = DetailBuilder.GetDetailsView()->GetSelectedObjects();
It works for me on 4.18

Fantastic, this worked for me. The file you need to change is listed in this pull request here: https://github.com/Koderz/RuntimeMeshComponent/pull/71/files

In case the above link ever changes, it's:
Line 28 in Source/RuntimeMeshComponentEditor/Private/RuntimeMeshComponentDetails.cpp

emmmm,Build: 2 succeeded, 0 failed.

Hello,
All existing issues for RMCv2 are being closed as RMCv2 is no longer being supported.  RMCv3 is in beta here : https://github.com/Koderz/RuntimeMeshComponent/tree/Version3Dev
If you encounter this or any new issues in v3 please feel free to open a new issue!
Thanks!
-Koderz


exhausted cpu and memory usage.

Here is the usage of orientdb for linux 2 core processcors and 512 MB RAM.
This report is taken for orientdb 2.1-rc3
CPU : 190% usage.
Ram: 50% usage .
Is it normal for this load average? i feel orientdb eat up a lot of resource. any idea how to solve it?

What kind of operation are you executing? Could you please copy here the first line of log when OrientDB starts? I'd need DiskCache memory settings reported on it.

i think these are quite common operation like select and update only. I couldn't copy the log for you as i have flushed it away. i will do it if i have this issue next time. the DiskCache memory settings  should be MAXHEAP=-Xmx512m for this issue. Yet, it seems like working ok after i set it to  MAXHEAP=-Xmx128m and MAXDISKCACHE="-Dstorage.diskCache.bufferSize=4192"

4GB of DiskCache is to high if you have only half GB. Try these settings with 512MB RAM:
MAXHEAP=-Xmx128m and MAXDISKCACHE="-Dstorage.diskCache.bufferSize=200"

will try it and see how well it work for this coming wednesday..

@lvca have this usage for this setting as follows:
MAXHEAP=-Xmx128m and MAXDISKCACHE="-Dstorage.diskCache.bufferSize=200"
PID   USER      PR  NI    VIRT          RES    SHR S  %CPU %MEM     TIME+   COMMAND
176   orientdb  20   0    1530148 164224    732  S   200.0   31.3        28:28.45   java

here is the log when start orientdb server.
2015-06-22 13:24:36:674 INFO  Loading configuration from: /opt/orientdb/config/orientdb-server-config.xml... [OServerConfigurationLoaderXml]
2015-06-22 13:24:37:089 INFO  OrientDB Server v2.1-rc3 (build 0) is starting up... [OServer]
2015-06-22 13:24:37:123 INFO  Databases directory: /var/lib/orientdb [OServer]
2015-06-22 13:24:37:207 INFO  Listening binary connections on <IP_ADDRESS>:2424 (protocol v.30, socket=default) [OServerNetworkListener]
2015-06-22 13:24:37:217 INFO  Listening http connections on <IP_ADDRESS>:2480 (protocol v.10, socket=default) [OServerNetworkListener]
2015-06-22 13:24:37:262 INFO  Installing dynamic plugin 'studio-2.0.zip'... [OServerPluginManager]
2015-06-22 13:24:37:417 INFO  Installing dynamic plugin 'orientdb-lucene-2.1-rc3-dist.jar'... [OServerPluginManager]
2015-06-22 13:24:37:523 INFO  Lucene index plugin installed and active. Lucene version: LUCENE_47 [OLuceneIndexPlugin]
2015-06-22 13:24:37:576 INFO  Installing GREMLIN language v.2.6.0 - graph.pool.max=50 [OGraphServerHandler]
2015-06-22 13:24:37:576 INFO  [OVariableParser.resolveVariables] Error on resolving property: distributed [orientechnologies]
2015-06-22 13:24:37:583 INFO  Automatic backup plugin installed and active: delay=604800000ms, firstTime=null, targetDirectory=/var/backup/orientdb/ [OAutomaticBackup]
2015-06-22 13:24:37:587 INFO  Installing Script interpreter. WARN: authenticated clients can execute any kind of code into the server by using the following allowed languages: [sql] [OServerSideScriptInterpreter]
2015-06-22 13:24:37:588 INFO  OrientDB Server v2.1-rc3 (build 0) is active. [OServer]

it cause server down again and again. i feel strange about orientdb can't handle this simple website that have less than 1k records.

@martingg88
do you have some log?

Running OrientDB on a server with just 0,5 GB is possible, but you should make room as much as you can. For example, do you need Lucene (full-text-indexes) ? If not, just remove the Lucene plugin from the plugin folder. Do the same with ETL and other dependencies you have. If you can tell more about what API are you using, I can be more precise.

@maggiolo00  i don't have any log about this issue. very hard to track this issue now.
@lvca.. it's just a simple node web application.
i though orientdb shouldn't go beyond 128 ram based on following setting ? but now it hit 256mb and it fully occupy my cpu. any idea how to solve this issue?
MAXHEAP=-Xmx128m and MAXDISKCACHE="-Dstorage.diskCache.bufferSize=200"

@lvca. i set this at server.sh.
MAXHEAP=-Xmx128m and MAXDISKCACHE="-Dstorage.diskCache.bufferSize=200"
but i manually shutdown the server and it gives me this warning.
WARNING: Not enough physical memory available for DISKCACHE: 512MB (heap=247MB). Set lower Maximum Heap (-Xmx setting on JVM) and restart OrientDB. Now running with DISKCACHE=256MB

I have a question,
Why do you think that high CPU utilization is bad ? It means that database
is able to use your resources.
Do you have performance problems ? Or you performance expectations do not
match CPU utilization numbers ?
On Wed, Jun 24, 2015 at 2:58 PM martingg88<EMAIL_ADDRESS>wrote:

@maggiolo00 https://github.com/maggiolo00 i don't have any log about
this issue. very hard to track this issue now.
@lvca https://github.com/lvca.. it's just a simple node web
application.
i though orientdb shouldn't go beyond 128 ram based on following setting ?
but now it hit 256mb and it fully occupy my cpu. any idea how to solve this
issue?
MAXHEAP=-Xmx128m and MAXDISKCACHE="-Dstorage.diskCache.bufferSize=200"
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/4412#issuecomment-114843832
.

I mean what is bad that application design allows to effectively use
current CPU resources, some applications are not able to use even 25% of
CPU on high load and as result have small numbers on benchmarks.
On Wed, Jun 24, 2015 at 3:03 PM Andrey Lomakin<EMAIL_ADDRESS>wrote:

I have a question,
Why do you think that high CPU utilization is bad ? It means that database
is able to use your resources.
Do you have performance problems ? Or you performance expectations do not
match CPU utilization numbers ?
On Wed, Jun 24, 2015 at 2:58 PM martingg88<EMAIL_ADDRESS>wrote:

@maggiolo00 https://github.com/maggiolo00 i don't have any log about
this issue. very hard to track this issue now.
@lvca https://github.com/lvca.. it's just a simple node web
application.
i though orientdb shouldn't go beyond 128 ram based on following setting
? but now it hit 256mb and it fully occupy my cpu. any idea how to solve
this issue?
MAXHEAP=-Xmx128m and MAXDISKCACHE="-Dstorage.diskCache.bufferSize=200"
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/4412#issuecomment-114843832
.

it cause my server have higher load average.
FYI. it cause cpu hit  at 190% of 2 core cpus and this higher number stay there quite some times and doesn't goes down. feel strange.

I think this is due to the extreme low resources of RAM you have.

What is bad with this ? If we need low latency we need to do everything as
quick as possible. So we consume CPU resources, we may consume less and
make all things slow.
What target do you want to achieve ?
On Wed, Jun 24, 2015 at 3:07 PM martingg88<EMAIL_ADDRESS>wrote:

it cause my server have higher load average.
FYI. it cause cpu hit at 190% of 2 core cpus and this higher number stay
there quite some times and doesn't goes down. feel strange.
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/4412#issuecomment-114845368
.

ofcourse. i hope it provide better performance while consume less resources lolx.
Anyway. what the basic requirement for running orientdb
here is the spec i have
512MB Memory
2 Core Processor

Hi, you see our target is consume as much of resources as possible to
provide quick response on requests.
How much requests per second do you have ? What is your CPU
characteristics.  I mean is it Intel or AMD, what generation it is ? What
is CPU frequency ?
On Wed, Jun 24, 2015 at 3:13 PM martingg88<EMAIL_ADDRESS>wrote:

ofcourse. i hope it provide better performance while consume less
resources lolx.
Anyway. what the basic requirement for running orientdb
here is the spec i have
512MB Memory
2 Core Processor
—
Reply to this email directly or view it on GitHub
https://github.com/orientechnologies/orientdb/issues/4412#issuecomment-114846310
.

@laa i think it's about not more than 2 requests per seconds. it's just a simple select and update query.
for cpu characteristics, i have to check with my VPS provider first.

@laa confirm with you that.
if i set MAXHEAP=-Xmx128m  then my orientdb process shouldn't use that more 128 RAM. is that right?

@laa here is the spec for my VPS.
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU L5630 @ 2.13GHz
stepping : 2
microcode : 19
cpu MHz : 2133.391
cache size : 12288 KB

@Lvca && @laa,
I have tries to run load test and purposely to make orientdb to fully occupy my system resource.

will have this result during the test.
cpu : 191.9 %
memory: 32.4

I have wait for 5 minute after load test and i still have very higher usage for orientdb process. Don't you think it should decrease system usage since there is not any loading taken.
cpu : 192.9 %
memory: 32.4

You help is much more appreciated. Please.

any update on this issue?

any update on this issue. this is really a very critical issue here that cause the server down for many times. Please help on this issue. thanks.

FYI. there are few orientdb process running more than half hours even there is no any load on web application itself. It means orientdb never release CPU resources even no any load running on web application itself. This issue is really strange. Please help on this. Thanks.
PID   USER       PR    NI  VIRT          RES          SHR   S   %CPU  %MEM  TIME+  COMMAND
1584 orientdb  20   0 1437468 114164   4240 R 49.6 21.8  29:36.69 java
1549 orientdb  20   0 1437468 114164   4240 R 49.3 21.8  29:12.21 java
1547 orientdb  20   0 1437468 114164   4240 R 32.6 21.8  27:40.17 java
1548 orientdb  20   0 1437468 114164   4240 R 32.6 21.8  27:59.72 java
1550 orientdb  20   0 1437468 114164   4240 R 32.6 21.8  32:15.88 java

How do you use OrientDB? direct HTTP, any Binary driver?

i'm using orientdbjs driver now.

what should i do to track down this issue that have few threads keep running for no reason?

@martingg88 why do you have 5 OrientDB processes running?

no. There is only one process that have may have many threads running at background.
The process info i have shared with you is about  threads running at background.
FYI. i have configured pool to 5.

How can one process have 5 different PIDs? If you execute this command, what's the output?
ps -ef|grep java

here is the output:
orientdb   165     1  1 Jul01 ?        00:22:18 /usr/lib/jvm/java-openjdk/bin/java -server -Xmx128m -Djna.nosys=true -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -Dfile.encoding=UTF8 -Drhino.opt.level=9 -Dprofiler.enabled=true -Dstorage.diskCache.bufferSize=200 -Djava.util.logging.config.file=/opt/orientdb/config/orientdb-server-log.properties -Dorientdb.config.file=/opt/orientdb/config/orientdb-server-config.xml -Dorientdb.www.path=/opt/orientdb/www -Dorientdb.build.number=0 -cp /opt/orientdb/lib/orientdb-server-2.1-rc3.jar:/opt/orientdb/lib/* com.orientechnologies.orient.server.OServerMain

FYI. the list i gave you is generated by following command.
top -H

What version of OpenJDK are you using? Could you try Oracle JVM? We saw in most of the cases is faster and requires less resources (specially before version 8).

sure..i will try oracle JVM and see how is work out.
But can you explain to me why these threads are running at longer time and never release CPU resources?

i have tried install oracle java with version "1.7.0_79". lets see how it work then.

@lvca...
this orientdb really drive me crazy and cause my server down frequently.
I tried to follow your advice to update the java to Oracle, but it doesn't help at all.
The issue here is orientdb try to run few threads and these threads can hold CPU resources and never release it after use. The following can prove that isssue. i hope you guys can solve this as soon as possible.
The following list is retrieved by this command top -H
try to focus the following list and you can see some of threads can stay there for more than few hours. this issue is really terrible.
167 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:00.00 java
192 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:00.83 java
214 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   2:34.53 java
216 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:03.19 java
217 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:00.00 java
224 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:00.00 java
225 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:06.89 java
226 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:06.31 java
227 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:00.00 java
228 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   1:46.87 java
289 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:14.48 java
367 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:00.01 java
375 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:00.00 java
1365 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   3:49.56 java
1366 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   3:58.57 java
1367 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   3:58.67 java
1368 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   0:08.12 java
1369 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   1:12.63 java
1370 orientdb  20   0 1382340 100160   3892 S  0.0 19.1   3:35.02 java

can we update this to critical issue? we hope this issue can be solved soon. otherwise the sever will down frequently.

@martingg88 I reopened the issue (and also changed the name to be more precise). In order to understand why OrientDB server is eating so much CPU (even if OrientDB is IP bound, not CPU bound), I'd need more information about what are you doing. What kind of query are you executing? Are they using indices or are you doing a full-scan every time?

it's just a simple query like select and update only.
using simple indices like unique and link...
no full-scan involved.

well. what should i do in order to track about thread eating too much CPU and never release resource?

Please could you post here the results of profile of your query? If you install OrientDB 2.1-rc5 Enterprise Edition (download it form the web site, it's free for development only) and in Studio you click on "SQL Profiler", could you print here the result after few minutes your app is running?

i have experienced this issue from production server. can i go ahead download the OrientDB 2.1-rc5 Enterprise Edition?

sure.

i do have java.lang.NullPointerException when i hit the profiler page ( OrientDB 2.1-rc5 Enterprise Edition)

Do you have the full log?

not...i have  java.lang.NullPointerException when i click profiler.

so what can i do now?

any update on this issue?

@martingg88 any chance to share your database in pvt so we can see what's going on?

no..i can't. what is the alternative solution for now?

Could you send us the output of profiling of the JVM? You can use YourKit.

I'd use Dynatrace.

can we have the requirement specification (etc: memory, cpu and other) in documentation for using orientdb?


Verifying MCXN947 E thernet + DHCP

Setup this repo/west manifest as normal:
1.) project setup
west init -m https://github.com/wavenumber-eng/mcxn-iot --mr main
(the readme.me was copied from another project, but is mostly correct)
2.)   build
There is a sample in samples/dhcpv4_client
This was just a copy of the sample in the zephyr samples/net folder except that I added the ozone config.
This sample will trying to get an ipaddress from your router.   It worked ok on mine.    We can use this to test your setup.
Build as normal:
west build -b frdm_mcxn947/mcxn947/cpu0 --pristine
3.)   test/Demo
here you can see it waiting for the DHCP server in the router to return an ip.
I then to a DNS query to get google's IP and then ping.
Note:  most of the time, your router will have DNS setup by default.
I then ping the MCXN board from my computer.

This should get you setup for ethernet testing.

It was an ethernet cable problem (:
Working well now :D

good news!


Bump up rk-logger version to v1.2.9

Codecov Report

Merging #19 (8080c4a) into master (e8ecbc0) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master      #19   +/-   ##
=======================================
  Coverage   85.35%   85.35%
=======================================
  Files          33       33
  Lines        4479     4479
=======================================
  Hits         3823     3823
  Misses        518      518
  Partials      138      138

Impacted Files
Coverage Δ

entry/zap_logger_entry.go
81.95% <100.00%> (ø)

Continue to review full report at Codecov.

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


Frequently High CPU Usage

Bug Description:
Having the program just sitting idly by (which is pretty much what it is supposed to do anyways), will cause it to frequently spike higher in CPU usage % than many other active programs (even beyond 10% under some circumstances). This is odd, because all this program should do is start and stop WSA and nothing else.
Expected Behaviour:
The program shouldn't consume more than a few per mille (a fraction of a %) in terms of CPU usage (roughly 0.1% maybe).
Additional Information:
OS: Windows 11 Pro 22H2
CPU: AMD Ryzen 7 5700X @4.4GHz
GPU: NVIDIA RTX 3070
RAM: ADATA G60D 32GB DDR4 @3200MHz
Screenshots:

On my PC It spikes to only 0.7% usage every 5 seconds that's due to the icon updating function.
I think it has to do with the checking process.
You can try increasing the timer on line 55 timer.start(5000)
If we use for example 30000 It will check if WSA is running once every 30 seconds and update the icon theoretically that would lower the usage. It might be related to the PyQt library though.
If you want I can make a hotfix for you with a higher timer value so you can test it out or you can simple compile one yourself.

I suppose that might work, can try by increasing the timer. If you could compile the hotfix for me I'd appreciate that, not at my Computer at the moment to compile it myself :)

https://github.com/7gxycn08/WSA-Tray-Helper/releases/tag/v1.1
Here you go test this out and tell me how it goes.
If the usage is still not fixed I might have to replace psutil library and use a different method to check if WSA Is running.

If you don't want to test the hotfix you can skip it altogether and use the new version which removes psutil completely and uses a much more efficient method to check If WSA Is running.
https://github.com/7gxycn08/WSA-Tray-Helper/releases/tag/v1.2

If you don't want to test the hotfix you can skip it altogether and use the new version which removes psutil completely and uses a much more efficient method to check If WSA Is running.
https://github.com/7gxycn08/WSA-Tray-Helper/releases/tag/v1.2

Alright sounds great, I'll give it a try when I'm up~

Seems fixed, has been sitting at pretty much 0% all the time:


WIP: feat(SliceGwReconciler): Add PodDisruptionBudget Logic (#308)

Description
The SliceGwReconciler should handle the lifecycle of PodDisruptionBudget objects that match the slice gateway deployments.
Fixes 308
How Has This Been Tested?
Checklist:

[x] The title of the PR states what changed and the related issues number (used for the release note).
[ ] Does this PR requires documentation updates?
[ ] I've updated documentation as required by this PR.
[x] I have ran go fmt
[ ] I have updated the helm chart as required by this PR.
[x] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have tested it for all user roles.
[ ] I have added all the required unit test cases.
[x] I have verified the E2E test cases with new code changes.
[x] I have added all the required E2E test cases.

Does this PR introduce a breaking change?

The idea is, when a slice gateway gets created, a PodDisruptionBudget object should also get created by the reconcile that matches the labels of slice gateway pods. And it should get deleted with slice gateway too.

Also, when trying to drain the worker node of a worker cluster using
kubectl drain --ignore-daemonsets --delete-emptydir-data kubeslice-worker-2-worker

One of the slice gateway pod shouldn't get evicted.
evicting pod kubeslice-system/water-kind-kubeslice-worker-2-kind-kubeslice-worker-1-0-0-65hpj
error when evicting pods/"water-kind-kubeslice-worker-2-kind-kubeslice-worker-1-0-0-65hpj" -n "kubeslice-system" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.

> kubectl get deploy -n kubeslice-system -l "kubeslice.io/pod-type=slicegateway,kubeslice.io/slice=water"
NAME                                                        READY   UP-TO-DATE   AVAILABLE   AGE
water-kind-kubeslice-worker-2-kind-kubeslice-worker-1-0-0   1/1     1            1           7m55s
water-kind-kubeslice-worker-2-kind-kubeslice-worker-1-1-0   0/1     0            0           7m55s


Roadmap

Roadmap
Because when I submit a pull request the changes are a surprise, I'd like to keep a roadmap so we can expect changes.
Where are we now?
Through the course of documenting the application I've made changes like
plurality and removing aliases.  I needed to remove these in order to
understand and then document why these existed in the application.  Now that
I've groked the code I have documented the reason for aliases
and other parts I didn't understand before.
Check out the analytics on google :)  The average docs session duration
is > 7:00!  That means people are taking the time to read them.  Since I came on
the project we've had 8 new stars and 2 forks.
Future Changes

[x] Merge refactor #2 and path-alias docs

[ ] Add aliases back into code
With the documentaion understanding how these work means we can use them

[ ] Reintroduce plurality for modules

[ ] Rename Directory Structures to Directory Structure Parts because they are all
optional

[ ]  Consider multiple directory tree structures.  The default and recommended
structure will be that of the application.  But I've seen other good structures
which use the same building blocks of media, core, data, layout, module, shared,
and sytles/themes.  In Additional Resources we could have pages for each tree
structure as alternatives.  It is my hope we can pull in some of the other
repositories which also define a directory structure and include that structure
as part of angular-folder-structure

Adding a road-map to keep track and discuss further changes sounds like a good addition. This will help other people comment on further releases and understand the reasoning behind why it's implemented.
The implementation of readthedocs has really taken everything to another level. The organization and structure is more clear and beginner friendly than ever. That the average is greater than 7:00 is awesome and the increase in stars and forks is proof that people agree.
Comments

I will review the incoming PRs when I get back from work.
Adding aliases change back to plurality is probably the best way to go. I have mixed opinions on what the best solution might be, but I reviewed the issues related to this and agree.
The suggestion of leaving a page with links to other structures sounds like a good addition. When I did the research for the article that inspired this project, I focused on a scalable, multiple module architecture. But I also ended up referring to other GitHub repositories with another structure in place.

Questions

Does renaming Directory Structure to Directory Structure Parts suggests the optional behavior of adding the Parts of the project the user see fit?

Directory Structure Parts
After studying other "best practice" repos I feel the parts of this project's directory structure are common and their placement becomes more of a defining factor.  As a developer I should have the choice to install each part such as no media directory & no data directory, but all the rest.
So, yes, I want users to understand what we are suggesting and I want us to suggest where to put the parts, but I don't want a hard-and-true one-way to do it.  I want flexibility to implement just the parts your application would benefit from and I want users to throughly understand the reasoning for each part.

We can probably create something like the ngx-rocket-Generatpr with options for your desired structure.

As we finish the list of each Roadmap post, I'll check them off one at a time.  When they are all done I'll close the Roadmap and create a new one when I'm ready to plan more.
I've renamed this to the date I created it so we can have multiple roadmaps; like sprints.


Opening a video to VLC launch VLC but not the video

Double clicking a video file or right-clicking and choosing "Open" does not work with VLC.
It opens VLC (that is associated with video files) but the video does not start at all.
Although if I right-click and choose "Open With" and select VLC then the video starts correctly.
No issues with opening other types of file.
And if I associate the video file to another video player there is also no issue.
If I switch back to VLC then again, the video is not started.

thank you for taking the time to report this, in order to investigate the issue we'll need the log files and steps to repro this bug, can you please reopen this issue using the issue template?


Cleanup

what's changed?

It looks like all the changes this pr would have covered were made in master over the weekend or covered after resolving merge conflicts. I will close this pr.


update the way to caculate the control_scale

Hi maria,
I have updated the way to caculate the sign of control scale.

fixes #9


Review other forks and incorporate when it makes sense

https://github.com/sowd/node-bacstack/commit/296db14fedfd1cde289817d704b00d09b9272e76
https://github.com/NateZimmer/node-bacstack/compare/master...antecursor:master
https://github.com/fh1ch/node-bacstack/compare/master...NateZimmer:master
https://github.com/fh1ch/node-bacstack/compare/master...bastiaanv:master
https://github.com/NateZimmer/node-bacstack/compare/master...nkofl:master

@NateZimmer would you be part of the project?

@sowd would you be part of the project?

@nkofl would you be part of the project?

@bastiaanv would you be part of the project?

I think this one is vaild re being able define the network number and device ID, being able to define the network number and device ID on exiting networks is very vaild.
https://github.com/NateZimmer/node-bacstack/compare/master...antecursor:master
And past issue.
https://github.com/fh1ch/node-bacstack/issues/48
I tested this fork with a BACnet IP <> MS/TP router and it worked well.
client.readProperty( {'ip':'<IP_ADDRESS>','net':6000,'adr':[3]} , {type: 0, instance: 0}, 85, (err, value) => {
  console.log('value: ', value);
});

@NubeDev Sorry, I do not really get what you mean ;-) You talk about the networknumber and devide Id topic wehich should be integrated (and I can read the last sentence that you verified this). The other link goes to the branch about Weekly-Schedule ...

Sorry i put the wrong link.
What im saying is the branch below adds support for passing the mac address as an option. And also when doing a whoIs you can pass in the network number. Doing this you can also discover bacnet mstp devices that are under a bacnet router. As per this issue https://github.com/fh1ch/node-bacstack/issues/140
So i tested NateZimmer branch with bacnet mstp devices and it works well.
https://github.com/fh1ch/node-bacstack/compare/master...NateZimmer:master

Ok, fh1ch/node-bacstack@master...NateZimmer:master seems to be in this library too, different but included ... could you try it with our lirary too?

I did test it already. Ill reveiw it again and post results

Hey guys,
I do not know if you want to continue this project, but, at the company I work for, we have decided to create a new BACNET library. This library is written in Typescript, with the use of Promises and RXJS. If you want to help me, feel free to make a pull request at: https://github.com/bastiaanv/bacnet-driver.
Keep up the good work!

@bastiaanv Hey, thank you for the link. WHy you decided to build a new library if there is one with a very big featureset? :-(

A groundup rewrite or a port to typescript would be a lot of effort for dubious value?

The BACnet-driver is GPL-2.0 and we want to be MIT licensed. GPL is not the way for me.


Unable to dispute proposal in GIVgarden

While testing the GIVgarden, I tried to dispute a proposal.
It says I have all of the requirements to dispute the proposal

When I press continue, this happens:

I tried to reload and dispute it again but arrived at the same result.

https://gardens-staging.1hive.org/#/xdai/garden/0x2050eabe84409e480ad1062001fdb6dfbc836192/proposal/12


[BUG] RuntimeError: Error(s) in loading state_dict for GlobalContextVit:

I created a GCVit model in the Kaggle kernel. I change the image size to 768 and set pretrained True. And, then, I got mismatch error for pretrained weights.
self.model = timm.create_model(             "gcvit_tiny",              num_classes=5,              pretrained=True,              global_pool="max",              drop_rate=0.20,             img_size=768,             pretrained_strict=False,         )

@erdi-kilic There's no code to resize the position embeddings for those models,  cannot use a different image size for pretrained weights without that


Forc doesn't automatically try to build in --offline mode if there is no active internet connection

I was banging out some proper LOC on the airplane, as one does, and I ran the sway test suite. I didn't pass --offline, although, on the airplane, I indeed had no network.
Creating a new `Forc.lock` file
    Cause: Manifest dependencies do not match
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: failed to clone package 'core' from 'http://github.com/FuelLabs/sway-lib-core': failed to resolve address for github.com: nodename nor servname provided, or not known; class=Net (12)', test/src/e2e_vm_tests/harness.rs:69:46

I think we should either:

Automatically try --offline if no network is present
Provide a message instead of a panic, e.g. Unable to connect to Github. Is your computer connected to the internet?

Good call @sezna - I've opened #900 which I think we might want to solve first. I might remove "good first issue" as it could be a little more involved than a newcomer might expect.

#900's almost addressed now in #1686.
Next blocker is #1787.

Before #1778 has a solution we cannot handle removed dependencies as we wanted with #1686. So I guess that is also a blocker.

As https://github.com/FuelLabs/sway/pull/2366 is about to finalize, I am considering tackling this to offer a complete offline support. For detecting the internet connectivity the most straightforward way seems like checking if we can ping a specific website (it can be github or something else) but this also means we are limited by the uptime of the selected target(s).


Apply YARN-1408

https://issues.apache.org/jira/secure/attachment/12655718/Yarn-1408.11.patch

Can one of the admins verify this patch?

List resourceRequests need to be recovered in RMContainerImpl.java, newlyAllocatedContainers probably also need to be recovered when modified line 98

newlyAllocatedContainers in FiCaSchedulerApp line 98 is already recovered due to the change in the rmcontainer status

merged


How to parse array with optionals object?

Hello, maybe very simple question but I still didnt manage it. lets assume I have list of some item in json:
struct MyItem {
   let name: String
   let imageUrl: String
}

as a response I expect Single<[MyItem?]>. Lets assume that sometimes in json i will have some fields equal null, so I expect that some objects wont be created, but rest of object which have all required filed will be create. But it doesnt happen, I have error: MoyaError.objectMapping Expected String value but found null instead." I also tried set failsOnEmptyData parameter to false on request but it doesnt helped me.
Thnak you for any advice.

maybe you can try this
// Inspired by https://gist.github.com/mbuchetics/c9bc6c22033014aa0c550d3b4324411a
// Original by https://gist.github.com/loudmouth/332e8d89d8de2c1eaf81875cfcd22e24
// Notes https://stackoverflow.com/questions/44603248

Do you mean that the response will be Single<[MyItem]?> instead?
Also, if any of the properties are optional in the JSON for each object, you should be able to make them optional in the struct:
struct MyItem {
   let name: String?
   let imageUrl: String?
}

If that doesn't help then I may not understand your question?


fix(doc): Update README about read/write endpoints

Hey! Thanks a lot for developing and sharing podinfo. This is so handy ☺
I was following https://github.com/stefanprodan/k8s-podinfo/blob/master/docs/1-deploy.md#using-the-helm-chart and helm test failed.
The cause seemed like changes in two endpoints. POST /write seems to have changed to POST /store, and GET /read/{hash} to GET /store/{hash}. Here's the fix just for README, according to my observation :)
// I should have fixed /scripts/ping.sh as well so that helm test passes, but had no time!

I would fix /scripts/ping.sh to something like curl -sS ${PODINFO_SVC}/store/$(curl -sSd 'test' ${PODINFO_SVC}/store | jq -r .hash) |grep test. But obviously this doesn't work as we don't have jq installed in the test container.

Yes I'll to change the image to giantswarm/tiny-tools that has curl and jq.


chore: Set analyzer to '>=5.12.0 <7.0.0'

Set analyzer to '>=5.12.0 <7.0.0', compatible with json_serializable.

Is the minimum version constraint (>=5.12.0) necessary?

please publish this, my project is stuck with its dependencies because of this


"qx lint" should lint MarkDown

see https://github.com/qooxdoo/qooxdoo/blob/master/.travis/markdown-lint and https://github.com/qooxdoo/qooxdoo/blob/master/package.json#L26

JSDoc see here https://github.com/qooxdoo/qooxdoo-compiler/issues/441 too

Ah, sorry, that's a needless duplication here. I'll make the scope of this issue more narrow, then.

This might be part of #710


add sentry-testkit documentation to expo

In the following page of Expo and Sentry Integration there's a section used to describe running tests with Sentry, but its pretty empty.
adding a few works about sentry-testkit could be a great way to expose it to new areas

created PR https://github.com/expo/expo/pull/11767

created PR https://github.com/expo/expo/pull/11767

done

done


How would you pass file specific information to a custom function (or anywhere else for that matter).

I'm new to Power BI and am regretting not diving in earlier.  This was an amazingly informative article and I appreciate the quality content and delivery.
However, there seems to be an "elephant in the room" regarding the methodology of folder processing in power BI.  I'm hoping you can show me it's not really there.  How would you pass context specific attributes to a function?  File name is one very important example, not to mention size, date, etc.!  When processing files, file name is most often the only attribute you have to identify the source of the data and adjust downflow logic accordingly.  The methodology presented here results in the file content being presented to a function in a parameter, but all of the file specific metadata is unavailable down-stream.
I've run into the same problem trying to use linked queries.  When creating a linked query from the converted table column you have provided, the key being used by the referencing query is the row ID!  This doesn't work because if you are modeling the query based on the expected filename, that row ID will change later if another file comes in at a later time, changing the row IDs!
I hope I'm just missing something basic due to my current knowledge level and would appreciate any information you can provide.

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

ID: adfb26bf-e0e4-fa66-409e-646c0b5ec2c6
Version Independent ID: be67d882-0168-ea43-24aa-a3265552d983
Content: Using cCustom functions
Content Source: powerquery-docs/custom-function.md
Service: powerquery
GitHub Login: @ptyx507
Microsoft Alias: v-miesco

Hey!
The goal of this article is to provide a more thorough methodology to create a custom function and how a custom function works.
However, for combining files, I highly recommend that you check out these 2 other articles that go into the combine files experience in Power Query:
https://docs.microsoft.com/en-us/power-query/combine-files-overview
https://docs.microsoft.com/en-us/power-query/combine-files-csv
with the combine files experience your main query will end up with a “remove other columns” step that you can double click to select which attributes of the file you’d like to keep downstream.
For the situation with the navigation / drill down to the contents of a single column or cell, what I suggest is that you remove all columns from your query except the “Content” and “Name”. This will force Power Query to use the value from the “Name” column as a reference for the navigation. However, this concept is outside of the scope of this article so if you need further help with this we do have a community forum for Power BI:
https://community.powerbi.com/
As an alternative, there’s also this other community forum specific to Power Query questions:
https://docs.microsoft.com/en-us/answers/products/pwrqry
Hope this helps!


Opening paren on next line

Hello,
great plugin. I love it.
Some of my projects force the opening paren in cpp files  on the next line.
The result looks like this:

Is it possible to show the if line (69) instead of the opening paren (70)?

I thought about that too. Certain filetypes have the same issue quite frequently. One challenge around that is when the line above doesn't have any useful information or information you don't want in it.
{
  "key1": "val1",
},
{
  "key1": "val2",
},

This for example would fall into the same category, but wouldn't be solved by grabbing the line above.
One possible solution would be to check the line above for length > 1 if the length of the match is 1 and then return the line above if it is.
if len(matchingLine) == 1 {
  if len(lineAbove) > 1 {
    return lineAbove
  }
  return matchingLine
}

Something like that as the test. Do you have a better idea how to logically and correctly pick the correct line to display?

Why are you not using treesitter? It should show you the correct line without worrying about formatting.

The latest version does not use treesitter, but I was using it to check for the correct filetype so that the plugin doesn't activate on non-code buffers. The latest version just checks for the filetype directly.


Rename plugin

Hi!
Great plugin, I have been using it, thanks :)
The rollup community has a convention (not official, I think) to rename its plugins with the following format rollup-plugin-${name}, this convention allow users to easily discover packages.
It would be great if this plugin adopted it

Thanks for the kind words! I'm aware of that convention, but chose not to follow it for a few reasons:

This is not a rollup plugin. In fact, there's nothing particularly rollup-specific about it. All it does is tweak your babel config to exclude modules.
There is already a rollup-plugin-babel, and naming this rollup-plugin-babelrc would likely cause confusion.

Perhaps a better name would actually be babelrc-without-modules?

Yes, it not exactly a rollup plugin, I think is ok like this :)
Thanks for caring!


Playlist Paging: Not all elements accessable

Hey,
when I try to get all my tracks from my Spotify-Playlist (which has more than 100 elements), only the first 100 elements are accessable.
Dim dieSpotifyplaylist = spotifyWebApi.GetPlaylist(...)

For Each spotifyTrack In dieSpotifyplaylist.Tracks.Items
     If FuegeSpotifyTrackHinzu(spotifyTrack.Track.Id) = True Then
             hinzugefuegteIDs.Add(spotifyTrack.Track.Id)
Next
MessageBox.Show(dieSpotifyplaylist.Tracks.Total) ' <--- SHOWS REAL NUMBER OF ELEMENTS
MessageBox.Show(dieSpotifyplaylist.Tracks.Items.Count) '<--- ALWAYS SHOWS 100, I ONLY CAN GET INFORMATION OF THOSE 100 TRACKS

Please consult the official spotify API docs first. It clearly says such call returns a maximum of 100 tracks. If you want the rest, use the offset parameter.
Also, use GetPlaylistTracks

Please consult the official spotify API docs first. It clearly says such call returns a maximum of 100 tracks. If you want the rest, use the offset parameter.
Also, use GetPlaylistTracks

Thank you and sorry for not consulting the API docs before.
Before I start another unnecessary issue: If I want to get Artists of an track or of an album.. without changing ANYTHING in my code, sometimes it works and sometimes it throws an System.NullReferenceException. This is weird

If I want to get Artists of an track or of an album.. without changing ANYTHING in my code, sometimes it works and sometimes it throws an System.NullReferenceException.

There could be many reasons for this, you should check:

is the input(TrackID, AlbumID) valid
Is the returned Track null
Is the returned Track.Artists null

My guess is that you use the wrong id for GetTrack().
This is the URL: spotify:track:123456789
and this is the id: 123456789
some functions use the URL and some the id, make sure you use the right one.

If I want to get Artists of an track or of an album.. without changing ANYTHING in my code, sometimes it works and sometimes it throws an System.NullReferenceException.

There could be many reasons for this, you should check:
1. is the input(TrackID, AlbumID) valid

2. Is the returned Track null

3. Is the returned Track.Artists null

My guess is that you use the wrong id for GetTrack().
This is the URL: spotify:track:123456789
and this is the id: 123456789
some functions use the URL and some the id, make sure you use the right one.

Thank you for that suggestion. I also thought about that, but I gave the program always the same ID! With running the program several times, without changing the ID, sometimes "Track.Artists" is null, and sometimes it isn't. In fact, it isn't (There shouldn't be a SpotifyTrack without at least one artist)

try this:
FullTrack track = spotify.GetTrack("id");
if (track.HasError())
    {
        Debug.WriteLine(track.Error.Status + " - " + track.Error.Message);
    }

I did it. That's the error now which is causing this problem:
429 - API rate limit exceeded


TASK: Implement Focus Trap

Context
Implement focus trap for 508 accessibility.
Will need regression testing for the following:

CAMPD filter panels/ filter tags
508 regression testing

Regression testing complete. Filters and filter tags still function as expected. 508 regression testing will be completed with tickets #1762. #1843, #1818, #1817, #1816, #1760, #1761, #1156, #1815


Maven listener isn't called in shared sample

This was missed when creating the shared build. It meant the listener was never called. I never encountered it because I always ran with -Ddevelocity.url=https://ge.solutions-team.gradle.com.

LGTM, but I cannot assess the overall impact. I will rely on @erichaagdev having verified it works.

@erichaagdev do we need to do a similar change for the shared-plugin-extension ?

LGTM, but I cannot assess the overall impact. I will rely on @erichaagdev having verified it works.

I meant the non-shared convention extension.

@etiennestuder it only is a problem in the shared sample.
In the standalone Maven sample, it is built with Maven and the plexus-component-metadata generates the component.xml file as part of the build.
This isn't the case in the shared sample, because it is built with Gradle.
Now that I think about it, this is actually redundant:
https://github.com/gradle/develocity-build-config-samples/blob/0ceecfbbb047c1664c5c35add42fcecc1f458692/convention-develocity-shared/convention-develocity-maven-extension/src/main/java/com/myorg/ConventionDevelocityMavenExtensionListener.java#L13-L17
We don't include it in the extension built by Gradle in the BVS repo.


Copyright for reuse?

Hi Team!
I recently read the associated paper that this repo supports, and am extremely keen to implement some of these exercises within my python classroom.  I've read through some of the experimental packet, and would love to adapt some of the examples.
However, I can't find a copyright/reuse statement for the content. I would of course provide attribution, but it's otherwise unclear if you would be okay with reuse/remix or not.  I'm happy to provide suggestions and talk through some pros/cons for some of the licenses/declarations available.
Let me know!

Hi Ellie,
Thanks for reaching out! We'd be thrilled if you adapted and experimented with these examples. I added a CC BY 4.0 license. Let me know if I can answer additional questions and please let me know what you discover!
-Benji
bxie{at]uw.edu


Better init setup command

This will close #122, close #70
Ideally, user should type these command to setup a new statinamic project
$DIR=your-website && mkdir $DIR && cd $DIR
npm init -y
npm install statinamic
./node_modules/.bin/statinamic setup
# Answer some questions
npm install

I also added a boilerplate command in npm scripts for unit test.

@MoOx ready for review. How can I make mkdir command universal ?

Don't worry, most people will create the folder by hand if they are on windows :) No big deal.
I will review and make comment later.

I mean for appveyor.
This is setup test command
mkdir boilerplate-test && cd boilerplate-test && npm init -f && npm install ../ && ./node_modules/.bin/statinamic setup -t

https://www.npmjs.com/package/mkdirp have a bin

Oops. I just remove mkdirp in #126

Alright. Add mkdirp back. boilerplate can run on appveyor now.

Looks good. Just small tweak and that will be great.

Should be good by now.
Changed:

Use npm link instead of npm install
Rename to test-boilerplate
Rename defaultAnswers to defaultTestAnswers

It seems node 4 test are unhappy. npm 2 issue related to the npm link?

Otherwise, good job!

On it.

Node 4 is good now.

Will merge after "next".

Conflict so I cherry picked/updated the commit directly in master.


Portfolio not saving

Switching between day, week and month (in any order) and then back to the portfolio view looses all but one portfolio item. This makes the app unusable for me.

I have opened a pull request that addresses this bug: https://github.com/lionsharecapital/lionshare-desktop/pull/39


Security/ValidatedSanitizedInput: use PHPCSutils and bug fixes

ValidationHelper: bug fix - unsetting is not validation
A superglobal key being unset doesn't need sanitization or validation, however, the unset should not be seen as validation for use of the superglobal key later on.
This bug was introduced long ago (0.3.0 - 64fab4f) and later moved into the is_validated() method via ba15db9
Discovered when making some changes to the tests for the ValidatedSanitizedInput sniff.
Includes dedicated test for this situation.
ValidationHelper: bug fix - validation done in another scope
Discovered when making some changes to the tests for the ValidatedSanitizedInput sniff.
A number of the tests in that file are in the global scope.
As things were, if validation was encountered for a particular superglobal key in a closed scope (function, class) prior to the use of the superglobal key in the global scope, the superglobal key would be seen as correctly validated, even though the code within the closed scope may not have been executed.
IMO tracking whether the code within the closed scope is executed is outside the scope of this sniff and a "missing validation" error should be thrown for those cases.
And while PHP 7.4+ arrow functions are open scopes, validation done within an arrow function should not be counted as valid for superglobals used _outside the arrow function, though validation done outside an arrow function should IMO be okay for superglobals used within an arrow function.
Fixed now.
Includes a minor tweak to the pre-existing tests for the case which made me discover the bug (superglobal use in global scope).
Includes additional tests with closed scopes within an already closed scope.
Includes additional tests documenting the behaviour around arrow functions.
Security/ValidatedSanitizedInput: make sure all superglobals being examined are used in tests
The $_SERVER and $_COOKIE superglobals are being examined by the sniff, but there were no tests safeguarding this.
Fixed now by adjusting some pre-existing tests.
Security/ValidatedSanitizedInput: use PHPCSUtils for superglobal determination [1]
Previously, the sniff would disregard the $_SESSION and $_ENV superglobals. This is now no longer the case when examining variables embedded in text strings.
This may have been on purpose, but I could not find any discussion about this and it seems more consistent (and more correct) to flag the unvalidated/unsanitized use of all superglobals.
Note: the $GLOBALS superglobal is exempt as in that case, any variable may be accessed ($GLOBALS['var']), not just superglobals ($GLOBALS['_GET']).
Includes tests.
Security/ValidatedSanitizedInput: use PHPCSUtils for superglobal determination [2]
Previously, the sniff would disregard the $_SESSION and $_ENV superglobals. This will now no longer be the case when the sniff examines variable tokens.
I suspect these superglobals were originally disregarded as the values in these superglobals are not slashed by WP (see the below refs), but that doesn't mean the values shouldn't be validated and sanitized before use.
The strange thing is that $_FILES was already being examined, even though it also isn't slashed by WP.
The sniff, however, would throw an incorrect "requires unslashing" error when the $_FILES superglobal was being used. Also see bug report #1720.
Either way, along the same lines of the previous commit, when examining variable tokens, the ValidatedSanitizedInput sniff will now take all superglobals into account, with the exception of the $GLOBALS superglobal (this last bit is the same as before).
As the values in the $_FILES, $_SESSION and $_ENV superglobals aren't slashed by WP, they get an exception for the "unslash" error.
And as the Sniff::$input_superglobals property is now unused, I'm removing it.
Includes tests.
Fixes #1720
Refs:

https://developer.wordpress.org/reference/functions/wp_magic_quotes/
https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-includes/load.php#L1229-L1238

Security/ValidatedSanitizedInput: add extra test for PHP 7.4+ null coalesce equals
PR #1684 (WPCS 2.1.0) already took care of the handling of validation via the null coalesce equals assignment operator, but there was one test case missing.
This adds that extra test as an additional safeguard.
Security/ValidatedSanitizedInput: add test with PHP 8.0+ match [1]
When a superglobal is used in a match condition, it doesn't need to be unslashed/sanitized.
This is already handled correctly, this just adds a test to safeguard this.
Security/ValidatedSanitizedInput: add tests with PHP 8.0+ match [2]
When a superglobal is used in the match return expressions, it should be validated, unslashed and sanitized.
This is already handled correctly, this just adds a test to safeguard this.
Security/ValidatedSanitizedInput: make MissingUnslash message more informative
Previously, the error would read $_POST data not unslashed.... Now, the error message will show the exact variable with keys we're talking about like $_POST['key'] not unslashed....

@dingo-d 💯 Duh... I should have done that out of habit... fixed now.


Add cytokinesis right version by fashrod

Song Name
cytokinesis right version
Artist Name
fashrod
Source
Youtube
Youtube Link
cBDxGINGjns
Direct File Link
No response
Song ID
1229116
Start Offset [ms]
4000
Extra
Created from Auto Nong.
Created for level: 93752979

reject. There is an issue with Auto Nong where it makes youtube links not work correctly. To prevent this, make sure to test it in-game


Polio-918: fix budget pagination bug

In budegt list, filtering on status, then using table pagination would result in a 404
Related JIRA tickets : POLIO-918
Self proofreading checklist

[X] Did I use eslint and black formatters
[X] Is my code clear enough and well documented
[ ] Are my typescript files well typed
[ ] New translations have been added or updated if new string have been introduced in the frontend
[ ] My migrations file are included
[ ] Are there enough tests
[ ] Documentation has been included (for new feature)

Changes

Updated polio config so that url params and api params are the same
Updated BudgetFilters's `keyValues to reflect the changes
Removed resetPageToOnerelated code as it's deprecated and was actually causing a bug
Removed dead code that was a legacy of the first version of the budget tool

How to test
Go to Budget list, filter on status, then use table pagination
Do the same with filter on country
Print screen / video
https://user-images.githubusercontent.com/38907762/228274056-73921f49-e6b1-49e8-81e0-7c5dd95a69b9.mov

i'm still having a "-" in the url while selecting "no budget submitted"

That's kinda normal. It's the default "key" for when the field is None in the backend


feat: support client and server writetimeout

What type of PR is this?
feat
Check the PR title.

[x] This PR title match the format: <type>(optional scope): <description>
[x] The description of this PR title is user-oriented and clear enough for others to understand.

(Optional) Translate the PR title into Chinese.
支持 client 和 server 的 writetimeout
(Optional) More detail description for this PR(en: English/zh: Chinese).

en: support client and server writetimeout
zh(optional): 支持 client 和 server 的 writetimeout
Which issue(s) this PR fixes:

In the case of setting MaxConnWaitTimeout, if the number of connections in the connection pool exceeds the maximum number of connections and needs to establish a connection while waiting, the dialtimeout on the hostclient is used  instead of the dialtimeout in request options.
在设置了MaxConnWaitTimeout的情况下，如果连接池连接数超过了最大连接数量等待时需要建立连接的情况下，使用的是hostclient 上的dialtimeout 而不是 req options 里的 dialtimeout


Dbeaver, oracle database connection

Hello,
Problem,
I'm using Oracle Linux 7.4 operation system on VirtualBox. While trying to 'creating new connection on oracle '  this client area comes empty.

After than i try to add a connection this error appears;

Connection refused -The Network Adapter could not establish the connection.

Questions,
How could i fix it ?
How should this client area be ?

Client option has nothing to do with that error.
You just have incorrect connection config (host name is wrong or port number is wrong or there are some local network issues/proxies)

Client option has nothing to do with that error.
You just have incorrect connection config (host name is wrong or port number is wrong or there are some local network issues/proxies)

Thank you for answer serge-rider,
My network has not issue, hostname or port is not wrong but is TNS path OR JDBC URL neccessary ? IF it is i need some help about them. I need correct connection settings example for Oracle.

No, you need only host/port or only TNS or only custom URL.

No, you need only host/port or only TNS or only custom URL.

Thank you again, i fixed my problem.
My listeners werent working, so i logged in database after;
i wrote -- $lsnrctl start
Then my listener is opened successfully. And my problem is over.


ENH: scipy.stats to return namedtuples

It's easier for users to write correct code when they can see the names.
Following pattern from #3991, and discussion from #3665.
cc @rgommers @WarrenWeckesser @josef-pkt @ev-br
Here are my notes for a possible naming convention for namedtuple function outputs in scipy.stats:

The pattern returned for each element of bayes_mvs is important because it is an estimate with confidence interval. It might be even be worth exposing this one publicly.
bayes_mvs: mean, variance, std_dev
(center, (lower, upper)) -> estimate, minmax
describe: nobs, minmax, mean, variance, skewness, exc_kurtosis
mode: mode, count
sigmaclip: clipped, lower, upper
linregress: slope, intercept, rvalue, pvalue, stderr
anderson: statistic, critical_values, significance_level
Note shapiro doesn't follow the pattern below
Statistical tests Includes these functions:
{normaltest, skewtest, kurtosistest, f_oneway, ttest_1samp, ttest_ind, ttest_rel, kstest, ks_2samp, power_divergence, mannwhitneyu, ranksums, wilcoxon, kruskal, friedmanchisquare, ansar, bartlett, levene}
All could share the same output namedtuple:
Statistic(statistic=X, pvalue=Y)
spearmanr: correlation, pvalue
pointbiserialr: correlation, pvalue
kendalltau: correlation, pvalue
cumfreq: cumcount, lowerlimit, binsize, extrapoints
histogram: count, lowerlimit, binsize, extrapoints
relfreq: frequency, lowerlimit, binsize, extrapoints
binned_statistic: statistic, bin_edges, binnumber
binned_statistic_2d: statistic, x_edge, y_edge, binnumber
binned_statistic_2d: stat, bin_edges, binnumber

Done in gh-4709, so closing.


I have some CSS and HTML...

I worked out some CSS and HTML and I like what Deno is trying to do. Is there any way to make custom templates and include a custom stylesheet and use custom classes? I'd like to rewrite my blog in Deno...

yea that is the one part of deno_blog which isn't there yet/i don't like. i created my fork,  not sure if it can be upstreamed. https://github.com/vixalien/vixalien_deno_blog


Implement column validation and enhance error handling

This commit introduces a new feature to validate column data in CSV files. A new method, validateColumn, has been added to the CsvValidator class, and the validateRule method in the AbstractRule class now includes exception handling. Additionally, the interpretation of validation results has been adjusted and some variable and format inconsistencies were corrected across multiple classes and files. Tests have been updated to reflect these changes.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

33 of 33 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.09%) to 96.278%

Totals

Change from base Build<PHONE_NUMBER>:
0.09%

Covered Lines:
983

Relevant Lines:
1021

💛  - Coveralls


支持小说无限下拉

见 #372

Pull Request Test Coverage Report for Build 669

0 of 0   changed or added relevant lines in 0 files are covered.
4 unchanged lines in 1 file lost coverage.
Overall coverage remained the same at 94.725%

Files with Coverage Reduction
New Missed Lines
%

src/page/index.js
4
94.38%

Totals

Change from base Build 671:
0.0%

Covered Lines:
3552

Relevant Lines:
3673

💛  - Coveralls


Some problems about export feature

I am doing some tests on Export API. I have some problems and hope to get help.
I create a VirtualMachineExport for a pvc just like this example, and want to download data with it.
apiVersion: export.kubevirt.io/v1alpha1
kind: VirtualMachineExport
metadata:
  name: example-export
spec:
  tokenSecretRef: example-token
  source:
    apiGroup: ""
    kind: PersistentVolumeClaim
    name: example-pvc

Problems as follows:
q1. why my VirtualMachineExport only have Internal links, how to make it generate external links.
I create a VirtualMachineExport but it only have Internal links.

q2.how to download.
2.1 I try to use virtctl vmexport download but it need external links

2.2 I want to download files form links without virtctl. Are there any recommended approachs.

Hi @Longchuanzheng yeah the documentation for export is a little too sparse right now.
The external links will be generated if there is an Ingress/Route resource referring to the virt-exportproxy service.
If you are using curl or similar to download the file, you should be able to simply copy the link, but make sure to specify -H "x-kubevirt-export-token: <token value>".
To avoid using --insecure, you can extract the appropriate cacert from  the export resource.
User guide for export may be helpful:  https://kubevirt.io/user-guide/operations/export_api/

Hi @mhenriks , thank you for you advices. I would appreciate further details about it. I haven't read the code, so the problem may be basic.
I try to use curl to download the file.
curl -O -f --insecure -H "x-kubevirt-export-token:<PHONE_NUMBER>ab" https://virt-export-example-export.default.svc/volumes/zal-upload-dv/disk.img

but it seems we need to add something in /etc/hosts

and now some error happen.

Firstly, if the host of the link can't be resolved, We need to edit the /etc/hosts every time when create a new export.
Secondly, Can you give me some advices about how to download files with curl?

@Longchuanzheng you have to change the host part of the link when using port-forward.  For example:
Set up port forward
k  port-forward svc/virt-export-export-test 18443:443

To curl the internal link https://virt-export-export-test.default.svc/volumes/volume1/disk.img.gz
curl  --insecure https://localhost:18443/volumes/volume1/disk.img.gz -H "x-kubevirt-export-token: 5kvJ2j4KPl" > disk.img.gz

or (with query param)
curl  --insecure https://localhost:18443/volumes/volume1/disk.img.gz\?x-kubevirt-export-token\=5kvJ2j4KPl > disk.img.gz

Hi @mhenriks, I set port-forward (I think edit svc to Nodeport type have the same effect)

and download (> disk.img and -O have same effect)

The download seems complete but my raw image(about 20MB) is larger than the disk.img what is downloaded. So I want to confirm the export pod mount the target pvc correctly.
Firstly, I get the pod's uid

uid is bb40....
Then, I convert the disk to a qcow2 img and I think the pvc mount correctly. Therefore, I hold the point that some problems happen when we are downloading img.

So I think I need more support.

@awels

I think the problem is likely that you are not passing in the right token and you are getting the unauthorized page instead, your pictures are showing 283 bytes, which is about that size of that page. Can you do a verbose logging in curl by using -v and not writing the output anywhere.

Hi @awels, we meet again.
I think i just follow the User guide to create a VMexport.
token.yaml
apiVersion: v1
kind: Secret
metadata:
  name: example-token
stringData:
  token:<PHONE_NUMBER>ab

pvcexport.yaml
apiVersion: export.kubevirt.io/v1alpha1
kind: VirtualMachineExport
metadata:
  name: example-export
spec:
  tokenSecretRef: example-token
  source:
    apiGroup: ""
    kind: PersistentVolumeClaim
    name: zal-upload-dv

I think it create successfully.
[root@localhost export]# kubectl get vmexport example-export -o yaml
apiVersion: export.kubevirt.io/v1alpha1
kind: VirtualMachineExport
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"export.kubevirt.io/v1alpha1","kind":"VirtualMachineExport","metadata":{"annotations":{},"name":"example-export","namespace":"default"},"spec":{"source":{"apiGroup":"","kind":"PersistentVolumeClaim","name":"zal-upload-dv"},"tokenSecretRef":"example-token"}}
  creationTimestamp: "2022-11-01T08:46:17Z"
  generation: 3
  name: example-export
  namespace: default
  resourceVersion: "2443618"
  uid: d683d9e6-63e5-4129-ba1b-b765961f77e8
spec:
  source:
    apiGroup: ""
    kind: PersistentVolumeClaim
    name: zal-upload-dv
  tokenSecretRef: example-token
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2022-11-01T08:46:27Z"
    reason: PodReady
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2022-11-01T08:46:17Z"
    reason: PVCBound
    status: "True"
    type: PVCReady
  links:
    internal:
      cert: |-
        -----BEGIN CERTIFICATE-----
...
        -----END CERTIFICATE-----
      volumes:
      - formats:
        - format: raw
          url: https://virt-export-example-export.default.svc/volumes/zal-upload-dv/disk.img
        - format: gzip
          url: https://virt-export-example-export.default.svc/volumes/zal-upload-dv/disk.img.gz
        name: zal-upload-dv
  phase: Ready
  serviceName: virt-export-example-export
  tokenSecretRef: example-token

expose port

and download
[root@localhost export]# curl -v --insecure https://localhost:18443/volumes/zal-upload-dv/disk.img -H "x-kubevirt-export-token:<PHONE_NUMBER>ab"
* About to connect() to localhost port 18443 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 18443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
*       subject: CN=virt-export-example-export.default.pod.cluster.local
*       start date: Oct 25 21:39:38 2022 GMT
*       expire date: Nov 02 08:46:17 2022 GMT
*       common name: virt-export-example-export.default.pod.cluster.local
*       issuer: CN=export.kubevirt.io@1666733978
> GET /volumes/zal-upload-dv/disk.img HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:18443
> Accept: */*
> x-kubevirt-export-token:<PHONE_NUMBER>ab
>
< HTTP/1.1 500 Internal Server Error
< Date: Tue, 01 Nov 2022 09:10:04 GMT
< Content-Length: 0
<
* Connection #0 to host localhost left intact
[root@localhost export]#

It seems I download a page earlier, but the response code is 500, meanwhile I can't find any logs in export-pod.

In my opinion, this phenomenon due to the device's user and group can not be configured by fsgroup or other field in pod securitycontext. We can modify the configuration of CRI to set it by securityContext.
reference:
https://github.com/kubevirt/kubevirt/pull/8804
https://github.com/kubevirt/containerized-data-importer/blob/main/doc/block_cri_ownership_config.md
https://kubernetes.io/blog/2021/11/09/non-root-containers-and-devices/

In my opinion, this phenomenon due to the device's user and group can not be configured by fsgroup or other field in pod securitycontext. We can modify the configuration of CRI to set it by securityContext. reference: #8804 https://github.com/kubevirt/containerized-data-importer/blob/main/doc/block_cri_ownership_config.md https://kubernetes.io/blog/2021/11/09/non-root-containers-and-devices/

Have you solved this problem?

If you are using containerd then setting the information from the links should fix it.

I use rke2 and docker runtime to install k8s. When I fix containerd config and restart containerd, not work for me. I will test weather it works correctly using containerd directly.

In my opinion, this phenomenon due to the device's user and group can not be configured by fsgroup or other field in pod securitycontext. We can modify the configuration of CRI to set it by securityContext. reference: #8804 https://github.com/kubevirt/containerized-data-importer/blob/main/doc/block_cri_ownership_config.md https://kubernetes.io/blog/2021/11/09/non-root-containers-and-devices/

Have you solved this problem?
I haven't done a test but I think the method should work.
I would apppreciate if you share your outcome.
After use k3s and contaienrd,I can download .img file

referring

@mhenriks how to create virt-exportproxy ingress? create it manually？Or it could be create through kubevirt-operator？

@Longchuanzheng you have to change the host part of the link when using port-forward. For example:
Set up port forward
k  port-forward svc/virt-export-export-test 18443:443

To curl the internal link https://virt-export-export-test.default.svc/volumes/volume1/disk.img.gz
curl  --insecure https://localhost:18443/volumes/volume1/disk.img.gz -H "x-kubevirt-export-token: 5kvJ2j4KPl" > disk.img.gz

or (with query param)
curl  --insecure https://localhost:18443/volumes/volume1/disk.img.gz\?x-kubevirt-export-token\=5kvJ2j4KPl > disk.img.gz

@mhenriks how to create virt-exportproxy ingress? create it manually？Or it could be create through kubevirt-operator？

Hi @Longchuanzheng yeah the documentation for export is a little too sparse right now.
The external links will be generated if there is an Ingress/Route resource referring to the virt-exportproxy service.
If you are using curl or similar to download the file, you should be able to simply copy the link, but make sure to specify -H "x-kubevirt-export-token: <token value>".
To avoid using --insecure, you can extract the appropriate cacert from the export resource.
User guide for export may be helpful: https://kubevirt.io/user-guide/operations/export_api/

@mhenriks how to create virt-exportproxy ingress? create it manually？Or it could be create through kubevirt-operator？

Hi @Longchuanzheng yeah the documentation for export is a little too sparse right now.
The external links will be generated if there is an Ingress/Route resource referring to the virt-exportproxy service.
If you are using curl or similar to download the file, you should be able to simply copy the link, but make sure to specify -H "x-kubevirt-export-token: <token value>".
To avoid using --insecure, you can extract the appropriate cacert from the export resource.
User guide for export may be helpful: https://kubevirt.io/user-guide/operations/export_api/

@mhenriks how to create virt-exportproxy ingress? create it manually？Or it could be create through kubevirt-operator？

Creating an ingress is outside of the scope of the operator, the admin will have to do that manually. There are various examples on the internet on how to setup an ingress. I believe the nginx ingress controller example is pretty decent.


[5.1] Bugged behavior of json_encode when trying to encode Model with binary data as attributes

This caused me a headache with job queues. Basically, when you pass a user that contains binary data in database as attribute (like, new MySQL 5.6 Point() column, or binary image) to a json_encode, it fails without any constructive error. It can be easily replicated by using a job queue:

Create User table with column type "Point"
Create a job class.
Create a job object, and pass user to its contstructor.
Try to run queue.

In case of sync queue: It will throw Class not found message when trying to add onto queue, without even pointing what class is not being found.
In case of redis queue, error is as useless as before:
[ErrorException]
 Undefined index: job

When trying to run artisan queue:listen.
Die and Dump of failing user:
User {#294
  #table: "users"
  #fillable: array:13 [
    0 => "username"
    1 => "email"
    2 => "password"
    3 => "birthdate"
    4 => "hair"
    5 => "eye"
    6 => "sex"
    7 => "height"
    8 => "fb_id"
    9 => "avatar"
    10 => "photo"
    11 => "status"
    12 => "statusDescription"
  ]
  #hidden: array:4 [
    0 => "password"
    1 => "remember_token"
    2 => "location"
    3 => "photo"
  ]
  #appends: array:2 [
    0 => "age"
    1 => "range"
  ]
  #connection: null
  #primaryKey: "id"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: array:22 [
    "id" => 22
    "username" => "username"
    "email" =><EMAIL_ADDRESS>    "password" => "$2y$10$j2gREyjhKQrviiHRt2dCx.zff0W96sVBgsv96P9Sb545irhQozh4q"
    "remember_token" => null
    "fb_id" => ""
    "photo" => "f2bf3271ae26fde7444366a3b6f29dae"
    "eye" => 0
    "hair" => 0
    "sex" => "male"
    "birthdate" => "2015-09-18"
    "height" => "220"
    "longitude" => 15.256949094515
    "latitude" => 52.755289869627
    "location" => b"\x00\x00\x00\x00\x01\x01\x00\x00\x00\x1F5\x1C\tú\x1CJ@\x13‡‰>&\x045@"
    "avatar_id" => 82
    "ip" => ""
    "updated_at" => "2015-11-27 19:53:23"
    "created_at" => "2015-11-18 10:20:12"
    "admin" => 0
    "status" => 0
    "statusDescription" => null
  ]
  #original: array:22 [
    "id" => 22
    "username" => "username"
    "email" =><EMAIL_ADDRESS>    "password" => "$2y$10$j2gREyjhKQrviiHRt2dCx.zff0W96sVBgsv96P9Sb545irhQozh4q"
    "remember_token" => null
    "fb_id" => ""
    "photo" => "f2bf3271ae26fde7444366a3b6f29dae"
    "eye" => 0
    "hair" => 0
    "sex" => "male"
    "birthdate" => "2015-09-18"
    "height" => "220"
    "longitude" => 15.256949094515
    "latitude" => 52.755289869627
    "location" => b"\x00\x00\x00\x00\x01\x01\x00\x00\x00\x1F5\x1C\tú\x1CJ@\x13‡‰>&\x045@"
    "avatar_id" => 82
    "ip" => ""
    "updated_at" => "2015-11-27 19:53:23"
    "created_at" => "2015-11-18 10:20:12"
    "admin" => 0
    "status" => 0
    "statusDescription" => null
  ]
  #relations: []
  #visible: []
  #guarded: array:1 [
    0 => "*"
  ]
  #dates: []
  #dateFormat: null
  #casts: []
  #touches: []
  #observables: []
  #with: []
  #morphClass: null
  +exists: true
  +wasRecentlyCreated: false
}

Data that you can input into Point column:
0000000001010000001F351C09FA1C4A401387893E26043540

I just found out that json_encode does not play well with some binary strings.
Try this:
var_dump ( json_encode ( hex2bin("0000000001010000001F351C09FA1C4A401387893E26043540") ) );

As far as I tested, it will silently fail and return:

bool(false) in PHP 5.6.14
string(4) "null" in PHP 5.5.

Now try this (assuming that your User has some binary column):
$user = User::find( ... );

var_dump($user->toJson());

If json_encode fails, the effect will be propagated and toJson() will return false too.

JSON the format doesn't support binary directly - they are expected to be encoded as strings - typically base64 encoding is used.
It should be then up to the developer to manage the casting/hydration of the data coming back to the model into a string that can be encoded by json. It might be appropriate to add a binary option to Model::castAttribute to allow the Model to register the binary casting in $casts

Problem here is that:

there is no descriptive error, but rather framework complete failure
it ignores hidden properties
Both should be addressed in my opinion, sadly I don't have time to do that

In the meanwhile, fix here is to add method that allows removing underlaying class properties $attributes and $original which have binary data, then it works.


Fix gem for Cucumber-Ruby 3.0

Cucumber API has been changed in Cucumber-Ruby 3.0 and this gem doesn't work with it.

@abotalov any chances you might contribute and help us with resolving the issue?

@aliaksandr-trush @abotalov ?

@avarabyeu currently no resources to fix the issue. May be later...


Adding photo after denying gallery read permissions results in an extra fake photo

Describe the bug
If you grant camera, location, and gallery write permissions but deny gallery read permissions, taking a photo results in an extra photo that's just an activity indicator on ObsEdit.
To Reproduce
Steps to reproduce the behavior:

Install a fresh build
Enter the AICamera
Allow Camera Access
Tap the shutter
Allow Location Access
Allow "save photos to your gallery"
When prompted for "additional access to your photo library" tap "Keep Add Only"
Tap the green button next to a suggestion
On ObsEdit, your photo is there, but there's an extra square next to it with an activity indicator

Expected behavior
There should not be an extra photo.
Screenshots

Also see this recording in Slack
Context (please complete the following information):

Device: iPhone SE (3rd generation
OS: iOS 17.5.1
App version: 0.33.0 (95)

Additional context
Reported by Carrie. Could be related to #1612 so this might be for you, @budowski

Blocked by #1808

As far as I can tell this isn't happening anymore. Might have been fixed by permissions changes, but more likely fixed in changes to managing obs creation state.


Receivers: Add paging functionality to list of reports on daily data page

Problem statement
On the daily data page (https://reportstream.cdc.gov/daily-data), results can get quite long. We'd like to add pagination to this table to make it easier to consume and save on load time.
What you need to know
Similar to https://app.zenhub.com/workspaces/experience-607d9d5e68b95200150fec37/issues/cdcgov/prime-reportstream/3795
Acceptance criteria

On daily data page, I see table of test results reports
Table of reports is paginated

Assumptions

API work is already done

Design

Page design is similar to senders' submission history, with "number of records per page 25 50 100" on the lower left hand side and "previous" "next" on the right hand side.

Duplicate created by mistake


Proposal: Revamp task executor interface

Motivation
The task executor interface has so far been implemented in a generic manner, allowing other task executor implementations to be created. However, not much work has been put into designing and deciding what should constitute a Task from Furiko's point of view.
To focus more on the scheduling aspect, we can and should delegate task execution to other downstream executors when possible. At the same time, not all kinds of "tasks" are suitable to be written using the PodTemplateSpec API.
Proposal
In view of the above, I propose that we should expand the definition of a "task" to potentially include, but not limited to, the following examples:

Container workloads, grouped together in a Pod.
Complex container-based workflows, supporting DAG/dependency-based ordering of container executions.

This can be implemented via Argo Workflows.

Serverless function invocations, which supports auto-scaling based on the number of running tasks at once.

This can be implemented via Knative.

HTTP requests, defined by some cluster-routable URL, request body and headers.
Kubernetes API resource, which can cover any other custom types of tasks that need to be supported.

Users can write their own operators to reconcile a stub Task object, for example.

A task should minimally support the following semantics:

Can be created and its status reconciled based on the underlying task's state.
Supports at least the following states: Staging, Running, Success, Failed, Killing, Killed (naming can be revised)
Can be killed if it is currently in-progress. This includes killing via external interference, as well as automatic killing (e.g. timeouts).
Has a result, which could be structured or plain text. The result should be parseable, and we should be able to tell if the result is a successful one or not.
Supports substitution of fields based on context variables, the exact behavior may differ between executors.

API Design
Example of JobConfig API to be updated:
apiVersion: execution.furiko.io/v1alpha1
kind: JobConfig
metadata:
  name: jobconfig-sample
  namespace: default
spec:
  concurrency:
    policy: Forbid
  template:
    spec:
      task:
        # Defines the task template. At most one field can be specified.
        template:
          pod: ...
          workflow: ...
          customResource: ...

pod
Supported by the Pod task executor.
pod:
  metadata:
    annotations:
      custom-annotation: value
  spec:
    containers:
      - args:
          - echo
          - Hello world, ${option.user-name}!
        image: alpine:${option.image-tag}
        name: job-container
    restartPolicy: Never

workflow
Supported by Argo Workflows' Workflow API.
The following example is taken from https://github.com/argoproj/argo-workflows/blob/0b2f2d1f23bead3bc0ab34049192d06594b575ba/examples/template-defaults.yaml.
workflow:
  metadata:
    annotations:
      custom-annotation: value
  spec:
    entrypoint: main
    templateDefaults:
      timeout: 30s   # timeout value will be applied to all templates
      retryStrategy: # retryStrategy value will be applied to all templates
        limit: "2"
    templates:
      - name: main
        steps:
          - - name: retry-backoff
              template: retry-backoff
          - - name: whalesay
              template: whalesay
      - name: whalesay
        container:
          image: argoproj/argosay:v2
          command: [cowsay]
          args: ["hello world"]
      - name: retry-backoff
        container:
          image: python:alpine3.6
          command: ["python", -c]
          args: ["import random; import sys; exit_code = random.choice([0, 1, 1]); sys.exit(exit_code)"]

http
Should be implemented by a custom HTTP executor extension service. These executors will pick up HTTPRequest tasks and reconcile them, followed by triggering the HTTP request within the cluster.
The API schema could follow HAR (HTTP Archive Request) format: https://en.wikipedia.org/wiki/HAR_(file_format)
http:
  # The request field follows HAR spec: http://www.softwareishard.com/blog/har-12-spec/#request
  request:
    method: GET
    url: "http://my-service.default.svc:8080/my-path"
    httpVersion: HTTP/1.1
    headers:
      - name: Content-Type
        value: application/json
    queryString:
      - name: param
        value: value1
        comment: Custom comment
    postData:
      mimeType: application/json
      text: |
        { "mydata": { "field": 1 } }

  # Additional fields so that we can achieve task semantics.
  response:
    # Either json or yaml
    format: json
    # Defines a JSONPath to evaluate if the result is successful
    resultJsonPath: ".result.jobs"

  # Timeouts, not sure if needed
  timeout:
    socketTimeout: 10
    readTimeout: 30

Additional notes:

Requires the implementation of "executor" controllers. These controllers should preferably be located outside of the core execution-controller, so that it can be horizontally scaled independently of the main controller manager (which has leader election).
We can avoid a central scheduler since most requests should be able to be fulfilled by any available executor, some ideas could be to follow Sparrow scheduling in Spark: pdf, video
HTTP tasks could support executor affinity, for example to overcome network restrictions.
Evaluating HTTP response as results may be tricky, since the specification supports lookups but not evaluation to a single boolean, one way is to require all JSONPath expressions to evaluate to a true, false, or undefined/null. Another way is to use truthy/falsy values, this same problem may be solved in text/template as well.
Killing HTTP tasks will probably require synchronization to ensure that the TCP connection is already severed.
If the executor terminates or loses its state prematurely, then the task is considered gone.
We probably want to store the HTTP response somewhere, which is also not defined by the task spec currently.
Some more considerations: HTTP/2, streaming responses (HTTP keep-alive), TLS/certificates

This is probably a very hard problem to solve.. so we may choose not to implement it at all. Or another way is to simply specify a very strict requirement for what endpoints are supported, and fail fast and reliably if they do not conform to the "correct" kind of endpoint.
customResource
Supports creating custom resources, similar to Argo's ResourceTemplate.
customResource:
  manifest: |
    apiVersion: my.custom.domain/v1alpha1
    kind: Book
    metadata:
      name: google-sre-book
  result:
    successCondition:
      jsonPath: ".status.phase == \"Succeeded\""

Additional notes:

Killing of the task should be equivalent to deleting the resource. Graceful termination can be implemented by using finalizers on the custom resource.
Similar to http above, we need a way to determine the task's current state. This could be specified in the customResource specification itself but it may be quite clunky.

Design Considerations
Embedding Types
There are some issues with embedding third-party types, even including Kubernetes' core types.

Depending on external API types will undoubtedly cause headaches for versioning of Furiko's own API types in the long run. For example, Argo's API types are still in v1alpha1, which basically means they are free to break backwards compatibility guarantees at any time.
At the same time, any updates to downstream API types will also require us to update and explicitly version our APIs in line with other third-party APIs.

One solution is to require users to define these third-party API types as YAML string literals, but validate the payload at runtime. If we support substitution of values (which can only happen at execution time), then there may not be a way to validate the JobConfig at save-time.
Example of workflow following the customResource executor:
template:
  workflow:
    manifest: |
      apiVersion: argoproj.io/v1alpha1
      kind: Workflow
      spec: ...

Since we know beforehand how to interpret a Workflow's status, the user only really has to specify the manifest.
Another solution without needing to use a string is to use type: object in the CRD definition without properties, which prevents any schema validation. We could consider doing this for the PodTemplateSpec field currently as well.
Curse of Generality
In some cases, the above proposed design may be too flexible and could open the floor to a whole slew of additional requirements and problems in the future.
The alternative approach is to provide a small surface of well-defined and well-supported executors, which could also be interfaces themselves. One example is to repurpose a Pod into a generic interface for another underlying workload using Virtual Kubelet.

We will consider this closed, as we have made sufficient headway in streamlining the Task interface that would be generic enough to support future task executors. Most of the work required was to make TaskTemplate support generic fields, make PodTemplate schemaless, and to remove the active deadline-related logic from the Task interface.
Any planned task executors will be created in their own dedicated issue.


feat: scala test selection request

PR in bsp repository: build-server-protocol/build-server-protocol/pull/304

It seems like failures aren't related to the changes.

It was a pleasure, thanks for your guidance!

Hey @adpi2, would you mind cutting a release with this PR?


Any way to centered title and content?

You can try in options
{
   title: 'This is Title',
   content: '
This is Content Title
',
}

{
   title: 'This is Title',
   titleClass: 'your-title-center-class',
}


style: use functions as style key creation mechanism

Fixes #112.
Just as an example, in the prod bundle of example demo app, size goes from 115KB to 103KB 😅
Based on the ideas discussed in #113, and @glennsl additions to poc.

@glennsl @davesnx thanks for the review :) I updated the names to be closer to CSS semantics.

but does it add all these functions into the resultant bundle?

No, only what's used. js_of_ocaml is quite efficient in terms of dead-code optimization.


Add names to vispy colormaps

🚀 Feature
As described in #89 currently the vispy colormaps do not have a name field which is the string by which they can be created. It would be useful to have that name field so that we can reference it in the dropdown menu when the colormap is changed in the notebook or on launch.
We could either add this directly in vispy or make a wrapper ourselves. The former is probably slightly nicer, as acknowledged by @jni

Is this really useful outside of our specific use case? Why do you think that this is the best option over passing a name with the colormap or just calling it custom?

I guess I just find it strange that in vispy you can do something like
cmap = color.get_colormap('blues')

and then from cmap have no way of knowing that it corresponds to the string blues. Adding a name property would allow this in general and solve our specific use case.

I'm going to go with the wrapper because this is something that we can do ourselves now. I suspect that making the change in vispy will take approximately forever.


Should not be allowed to delete node templates that are in use by clusters.

**Rancher versions: Build from master
Steps to Reproduce:
Create a DO cluster using DO node template , say t1.
Once cluster is active , delete t1.
Try to scale up  existing node pools / delete nodes from node pool.
New nodes get stuck in "Initializing" - Nodetemplates.management.cattle.io "nt-l5fw7" not found.

Do we want to prevent them from removing node templates or just simply have better messaging on Delete Template and on Scaling?

Tested with latest build from master:
We are not allowed to delete node templates that are still in use by clusters.
UI does not show delete option for these node templates.
When trying to delete  node templates that are still in use by clusters using API , we get the following error:
{
"baseType": "error",
"code": "MethodNotAllow",
"message": "Template is in use by a node pool.",
"status": 405,
"type": "error"
}


[0.25.x] Updating className does not trigger an update

Versions before 1.0.0 seem to have a fairly restrictive shouldComponentUpdate which prevents className prop from triggering an update.
Is there any chance of a 0.25.x patch release for this issue while we wait for 1.0.0 stable? :)

@Tenga Is there anything specific preventing you from using the 1.0.0 beta? It is quite stable now.

@CookPete Not really, I assumed 1.0.0 was unstable and in flux due to beta, but then again, it's not like 0.x.x designates stable either. :stuck_out_tongue:


⚠ Bofrost.de has degraded performance

In 6fbfe00, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1310 ms

Resolved: Bofrost.de performance has improved in ea87f49 after 8 minutes.


Parallelises parser stdlib test to reduce running time.

Fixes detection of too many interpreters when testing.
This change reduced the test running time to less than 1 minute on my machine for the first run (mostly IO time, with the detection issue hurting that too), and down to 10 seconds on subsequent runs.

:+1:


dsr_reply_icmp4 does not add original ip header in the icmp message

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
I have enabled DSR as well as ENABLE_DSR_ICMP_ERRORS, so that icmp error packet is returned to the sender in case DSR packet becomes bigger than the MTU size.
UDP client sends a UDP packet of size equal to MTU of the lb node. The packet is destined to UDP service. When the packet reaches lb node, DSR code kicks in and adds 8 bytes of additional data. This makes the packet size larger than MTU and lb node usually just drops it. Since ENABLE_DSR_ICMP_ERRORS is enabled, dsr_reply_icmp4() sends the response back to the client indicating ICMP error.
The ICMP error packet should have following format. (https://www.computernetworkingnotes.com/networking-tutorials/icmp-error-messages-and-format-explained.html)
packet: ipv4 header + ICMP header + original-incoming-ipv4 header + first-8-bytes-of-data-in-original-packet
However, it is noticed that 'original-incoming-ipv4 header' contains all 0s. So, the packet can not be decoded by the client.
Cilium Version
v1.11
Kernel Version
5.17.11-1rodete2-amd64 #1 SMP PREEMPT Debian 5.17.11-1rodete2 (2022-06-09) x86_64 GNU/Linux
Kubernetes Version
1.23
Sysdump
No response
Relevant log output
Captured ICMP packet looks like this (I have added dummy 14 bytes L2 header at the front). Check the following packet using any packet decoder (e.g. https://hpd.gasmi.net/)

10 30 40 50 60 70 10 30 40 50 60 50 08 00 45 00 00 38 46 47 40 00 40 01 4B 86 0A FD 93 32 0A C8 00 01 03 04 F7 81 00 00 05 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 D0 0D 05 05 6E A2 C9

Anything else?
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Right this makes sense. +1

After the change the new captured packet looks correct. (I have added dummy 14 bytes L2 header at the front). Check the following packet using any packet decoder (e.g. https://hpd.gasmi.net/)
10 30 40 50 60 70 10 30 40 50 60 50 08 00 45 00 00 38 AF 7F 40 00 40 01 E2 4D 0A FD 93 32 0A C8 00 01 03 04 08 19 00 00 05 7A 45 00 05 82 AF 7F 00 00 40 11 93 2B 0A C8 00 01 0A C8 00 3C 07 D0 0D 03 05 6E D5 25

sidenode: The support looks also missed for dsr_reply_icmp6.


[Improve] Apache projects add the prefix "Apache"

cc @tisonkun
I'm not sure if HDFS needs to add the apache flag

Yeah. We can use Apache HDFS as an abbr. of Apache Hadoop Distributed File System.
I update the English version; you can follow the same changes to the Chinses version.

Thank you, I will update the Chinese version later


XML format for ELAS depths?

I am trying to preprocess some extra KITTI odometry sequences for DynSLAM. I've gotten so far as to be able to generate the dispnet-based depths and the MNC-based semantic segmentation masks, and can run DynSLAM with the right combination of flags.
I'd like to be able to also generate and use ELAS-based depths. I have cloned https://github.com/AndreiBarsan/libelas-tooling and have been able to get to the point where I can have kitti2klg create a directory of .ppm and .pgm files. However, it appears that DynSLAM expects to find the ELAS depths in an XML format.
I have combed through the various processing scripts to find clues for the right way to perform that last step of the conversion, but haven't found anything. Any hints?

These were generated using OpenCV's FileStorage interface which writes XML. See: https://docs.opencv.org/2.4/modules/core/doc/xml_yaml_persistence.html