Panicking when running node client IT

For example, https://github.com/valkey-io/valkey-glide/actions/runs/11737024037/job/32697211524.
Happens pretty often, but all tests pass.
thread '<unnamed>' panicked at /Users/runner/work/valkey-glide/valkey-glide/glide-core/redis-rs/redis/src/cluster_async/mod.rs:1381:54:
called `Option::unwrap()` on a `None` value
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/runner/work/valkey-glide/valkey-glide/glide-core/redis-rs/redis/src/cluster_async/mod.rs:1381:54:
called `Option::unwrap()` on a `None` value

The question is whether it's an intentional panic, somebody might be testing something that panic.

In a wrapper? No way!
A wrapper can do something to enforce an errorneous state, but GLIDE core shouldn't have threads crashing.

In a wrapper? No way! A wrapper can do something to enforce an errorneous state, but GLIDE core shouldn't have threads crashing.

True. Last work i did was on the core so i had panic of core in mind.
Although killing client on sided or similar behavior which is not part of the behavior of the library but test util can maybe cause.
Its actually critical to research and understand, we should never panic.
I think it should be a blocker. Maybe for stabilization after freeze but a blocker. If something unexpected that we don't have explanation for panic, its can be very bad.


I can't see any video stream nor any gui, help.

Two boxes are present but no video stream.

Hey!
Can you read any frames from camera?

Hey!
Can you read any frames from camera?

How do I check that?

First try to see if you can read frames properly from your camera:
import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

For more tutorials  - openCV
Hope it helps, Gal

Hey @RahilRehan ,
Have you managed?

Oh yes, thanks for your help.
I don't exactly remeber what I did, but it worked out in the end.😅

K, closing

K, closing


"resizeDetector is not defined" error on componentWillUnmount

I'm getting a Uncaught ReferenceError: resizeDetector is not defined exception when unmounting a component from the view. I'm using the child function usage. Having checked the source, there doesn't seem to be any reference of the resizeDetector apart from within that method.

Fixed here https://github.com/souporserious/react-measure/pull/23


When the video file is larger than 100m, the component will report an error

BUG REPORT TEMPLATE
Such as the title，When the video file is larger than 100m, the component will report an error：
“The media playback was aborted due to a corruption problem or because the media uesd features your browser did not support”
This is an MP4 file，I can guarantee that the file is not damaged.
Because I can play normally with other players.Once the file size exceeds 100m, an error will occur.
seek help~~
Vue.js version and component version
vue:2.6.10,
vue-video-player: 5.0.3
Reproduction Link
If the error cannot be reproduced after uploading a file over 100m, I will try to provide a link again
Steps to reproduce
As mentioned above
What is Expected?
No more errors

有没有人鸭？求回复啊


Added sched_getaffinity and sched_setaffinity for Android; moved thes…

…e up from Linux.
Added pthread_gettid_np for Android
Added pthread_setaffinity_np and pthread_getaffinity_np for Linux

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)

May need cpu_set_t definitions in a few places?

Yep.
On 20 May 2016 4:45 pm, "Alex Crichton"<EMAIL_ADDRESS>wrote:

May need cpu_set_t definitions in a few places?
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/rust-lang/libc/pull/295#issuecomment-220642450

:umbrella: The latest upstream changes (presumably #288) made this pull request unmergeable. Please resolve the merge conflicts.

:umbrella: The latest upstream changes (presumably #294) made this pull request unmergeable. Please resolve the merge conflicts.

:umbrella: The latest upstream changes (presumably #299) made this pull request unmergeable. Please resolve the merge conflicts.

Thanks! Wanna squash these down and rebase? Other than that r=me

Closing due to inactivity, but feel free to resubmit with a rebase!


THORN-2128: Remove Camel

Motivation
Remove Camel examples as the fractions are being removed, hopefully to be added to Camel project directly.
Modifications
Removed Camel examples
Result
Camel examples no longer present

I understand that camel is removed from thorntail, however if one does want to use camel to implement EIP in their thorntail project, are there any good examples out there of how to get that done for versions 2.3.x+?

I'm not aware of any. I"d recommend using either WildFly together with WildFly Camel (https://wildfly-extras.github.io/wildfly-camel/), or Quarkus with Quarkus Camel (https://quarkus.io/guides/camel). But adding a plain old dependency on Camel to a Thorntail project might "just work", too.


Serve import directory

Allow to configure a location of import directory from n4o-import to serve these directories and files for data analysis.

Could be served via WebDAV (PROPFIND) as well to establish an actual API.


Question about Identity parameter

Hello,
I am trying to set the DSC of PowerShell 5.0 on my Exchange Servers. I am using the ConfigurationNames (https://msdn.microsoft.com/en-us/powershell/dsc/metaconfig) instead of using one MOF file for specific server or group. I think  is easier to reuse configuration files between group of servers.
So I am trying to create a unique MOF file to configure all my Mailbox Servers, however I cannot use this module, because the Identity parameter is mandatory.
Below is my example:
xExchMailboxTransportService TransportSettings {             ConnectivityLogPath = 'E:\Logs\' ==>    Identity = '(hostname)'             AllowServiceRestart = $false             Credential = $credential                 }
Is there any way to make the local server get this configuration and replace the parameter Identity with the local servername?
I´ve tried to put $env:computername, (hostname), in the configuration script but nothing worked?
Or change the module to longer require the identity and if I did not set this parameter it add the localhostname?
Tks

Hi @fzavalloni,
this is not the only DSCResource. There are a few more. This really depends on the used Exchange CmdLets. But I see your point and I also stumbled across this issue. There are possibilities when you use the Script resource. Maybe there is something we can use for the Exchange resources.
One possibility would be to move away the identity and always use the node towards this is targeted.
@mhendric I think we could move the identity to the code as this is anyways the target.
Ciao,
Ingo

I'd be hesitant to remove the Identity property. One reason is that it would be a breaking change, which would require everyone who has used this resource to change their scripts. The other reason is that we need at least one Key property for the resource. I believe Identity is the most logical choice for that, as it specifies where the resource is targeting.
I haven't played around with ConfigurationNames, so I'll defer comments on that to someone else.

I agree with you, remove the mandatory of Identity could be bad.
I am still trying to find a way, I have started to work with DSC recently I don´t have much experience with that.
I made a test right now, if I run this command in the PowerShell console, like that:
Get-MailboxTransportService -id "$(hostname)"
It worked, but if I try to get the MOF file and put this string in there, like above:
instance of MSFT_xExchMailboxTransportService as $MSFT_xExchMailboxTransportService1ref
{
ResourceID = "[xExchMailboxTransportService]TransportSettings";
Credential = $MSFT_Credential1ref;
AllowServiceRestart = False;
ConnectivityLogPath = "E:\Logs\";
SourceInfo = "R:\Scripts\DSC\MOF Files\MailboxExchange2013Settings.ps1::15::9::xExchMailboxTransportService";
==> Identity = '$(hostname)';
ModuleName = "xExchange";
ModuleVersion = "<IP_ADDRESS>";
ConfigurationName = "MailboxExchange2013Settings";
};
It does not work, it fails in event viewer MSExchange Management.
Cmdlet failed. Cmdlet Set-MailboxTransportService, parameters -Identity "$(hostname)" -ConnectivityLogPath "E:\Logs". - Event ID 6
Do you know if this is possible to be done?

Are you passing $(hostname) to DSC with single quotes or double quotes? If using single quotes, PowerShell will read the value literally, instead of using the enclosed variable.
PS C:\Users\Mike> "$(hostname)"
mikescomp-1
PS C:\Users\Mike> '$(hostname)'
$(hostname)
PS C:\Users\Mike>

In the script that creates the MOF file, I tried the both ways.
When I put with double quotes, it creates the MOF file with the following attributes:
instance of MSFT_xExchMailboxTransportService as $MSFT_xExchMailboxTransportService1ref
{
ResourceID = "[xExchMailboxTransportService]TransportSettings";
Credential = $MSFT_Credential1ref;
AllowServiceRestart = False;
ConnectivityLogPath = "E:\Logs\";
SourceInfo = "R:\Scripts\DSC\MOF Files\MailboxExchange2013Settings.ps1::15::9::xExchMailboxTransportService";
==>Identity = "Server0001";
ModuleName = "xExchange";
ModuleVersion = "<IP_ADDRESS>";
ConfigurationName = "MailboxExchange2013Settings";
};
However the Server0001, is the servername which I used to create the MOF.
If I put single quote, it creates the MOF like that:
instance of MSFT_xExchMailboxTransportService as $MSFT_xExchMailboxTransportService1ref
{
ResourceID = "[xExchMailboxTransportService]TransportSettings";
Credential = $MSFT_Credential1ref;
AllowServiceRestart = False;
ConnectivityLogPath = "E:\Logs\";
SourceInfo = "R:\Scripts\DSC\MOF Files\MailboxExchange2013Settings.ps1::15::9::xExchMailboxTransportService";
Identity = "$(hostname)";
ModuleName = "xExchange";
ModuleVersion = "<IP_ADDRESS>";
ConfigurationName = "MailboxExchange2013Settings";
};
And in this option, the command fails.

Again, I'm unfamiliar with using ConfigurationNames. When doing so, do you not have the ability to pull node specific information from your ConfigurationData file, and then access the $Node variable? That's how all the Examples under xExchange are written. Here's an example:
https://github.com/PowerShell/xExchange/blob/dev/Examples/ConfigureVirtualDirectories/ConfigureVirtualDirectories.ps1
https://github.com/PowerShell/xExchange/blob/dev/Examples/ConfigureVirtualDirectories/ConfigureVirtualDirectories-Config.psd1

Using in this way will work for me, but it creates one MOF file for each server. This is one thing I would like to avoid.
This is my Local Configuration Manager script, using Configuration Names.
'
[DSCLocalConfigurationManager()]
configuration LCMPullServerConfiguration
{
Node 'localhost'
{
Settings
{
#When set to $True, this allows new modules (downloaded from a pull server) to overwrite older ones
AllowModuleOverwrite = $true
ConfigurationModeFrequencyMins = '60'
RefreshFrequencyMins = '30'
ConfigurationMode = 'ApplyAndAutoCorrect'
RefreshMode = 'Pull'
ActionAfterReboot = 'ContinueConfiguration'
CertificateID = '1BAA21TTT5F260DB7B718D53E15F286C810155F9'
}
    ConfigurationRepositoryWeb DSCPullServer
    {
        ServerURL = 'https://dscserver.internallab.local/PSDSCPullServer.svc/'
        RegistrationKey = '3d2a1a456-b1a5-4627-a79a-d8547s'

==>    ConfigurationNames = @("Certificate_Com_Br_SSLConfig","WindowsFeaturesForExchange2013","DefaultTools","MailboxExchange2013Settings")
}
    PartialConfiguration Certificate_Com_Br_SSLConfig
    {
        Description = 'Install the Locaweb certificate'
        RefreshMode = 'Pull'
        ConfigurationSource = '[ConfigurationRepositoryWeb]DSCPullServer'
    }

    PartialConfiguration WindowsFeaturesForExchange2013
    {
        Description = 'Config all Windows features required for Exchange Server 2013'
        RefreshMode = 'Pull'
        ConfigurationSource = '[ConfigurationRepositoryWeb]DSCPullServer'
    }

    PartialConfiguration DefaultTools
    {
        Description = 'Install all default tools for Windows Servers'
        RefreshMode = 'Pull'
        ConfigurationSource = '[ConfigurationRepositoryWeb]DSCPullServer'
    }

    PartialConfiguration MailboxExchange2013Settings
    {
        Description = 'Config all Exchange Mailbox Servers'
        RefreshMode = 'Pull'
        ConfigurationSource = '[ConfigurationRepositoryWeb]DSCPullServer'
    }
}

}
LCMPullServerConfiguration
'
The ConfigurationNames attribute you basically set the MOF files you want to Apply to your host.
I believe I won´t do the same for everything, sharing the same MOF. For this situation I have to use one MOF file for each host.
Tks for help!
Regards

@fzavalloni you know that WMF5.0 is only supported on Windows Server 2016 and Exchange 2016 CU3?

No. I deployed it in Windows 2012 R2 with Exchange Server 2013.

Closing this issue per issue author last comment.


Support service type ClusterIP

We do support ClusterIP. But there is a gap wherein if you create a nodeport, we do not create clusterIP. Is that what you meant?

I can see that ClusterIP is supported. But, even though PodIP (EndpointIP) is reachable, ClusterIP is not reachable:

@kshafiee
They do work. I am trying to understand why it is not working in your case. What is the netmask for <IP_ADDRESS>? One possibility is that In this case,there is no route to <IP_ADDRESS> from your host.
What is the minion or master subnet for this host? When we run the master-init/minion-init, we give a cluster wide subnet. Is your cluster IP provided in the same large subnet?
You can do a 'route -n' and that should give a hint.

You can also try to reach the clusterIP from inside a pod. Does that work?

@shettyg ClusterIP works on the master node, but not on the slave node. Neither from inside the pod

@kshafiee
Summary:
You need --master-switch-subnet to be a subnet of --cluster-ip-subnet. You also need the clusterIP provided by k8s to be also a subnet of --cluster-ip-subnet.
Details:
What we do is that, on each node, we create a OVS internal port (or a host interface) and assign it an IP address in the subnet assigned for that node. For e.g., if --master-switch-subnet is <IP_ADDRESS>/24, then we assign <IP_ADDRESS>/24 to that host interface. And <IP_ADDRESS>/24 would be a OVN virtual router IP address. We Also add a route entries on that host - which say that <IP_ADDRESS>/16 is reachable via <IP_ADDRESS>/24. So if you do a curl 192.168.X.Y from host, it enters the OVN logical pipeline.
Now, if the clusterIP for k8s is also a subnet of <IP_ADDRESS>/16, the route entry that we added is automatically valid for a VIPs too. i.e you can access a VIP from a host. But irrespective of this, a VIP should always be accessible from inside the POD.
You can either create your clusterIP to be one of the subnets of <IP_ADDRESS>/16 or you can add a manual route that says that your cluster subnet is reachable from <IP_ADDRESS>/24 from master and <IP_ADDRESS>/24 from minion1, <IP_ADDRESS>/24 from minion2 etc
Once you get the above correctly, let me know how it goes. Also, let me know whether your pod from which you are trying to access clusterIP is in a windows node or a linux node.

I would also suggest to create a services backing pods as endpoints for your testing to remove some other possible issues.

Thanks @shettyg
on master I have:
ovn-k8s-overlay master-init   --cluster-ip-subnet="<IP_ADDRESS>/8"   --master-switch-subnet="<IP_ADDRESS>/24"   --node-name="$HOSTNAME"
on slave I have:
windows-init.exe windows-init --node-name $HOSTNAME --minion-switch-subnet "<IP_ADDRESS>/24" --cluster-ip-subnet "<IP_ADDRESS>/8"
On master I can access both PodIP & ServiceIP:

But, inside the Pod ServiceIP is not reachable (I can only access PodIP):

The routing table inside the pod is (no entry for <IP_ADDRESS>/8):

However, the serviceIP is not even reachable on the slave node. The routing table on the slave node is (there's an entry for <IP_ADDRESS>/8):

BTW, EndpointIP (PodIP) and ServiceIP for the nginx are:

@alinbalutoiu @aserdean
Any tips on how to debug this? Looks like NAT is not taking place on Windows host.

We added some stateless NAT-ing when we implemented the python agent that emulates the CNI plugin.
@alinbalutoiu is working on removing the agent and implementing a CNI plugin.
We will be back with updates when we address this issue.

@shettyg this should be closed by PR: https://github.com/openvswitch/ovn-kubernetes/commit/ace1c6bb56f72b6024bd3f2d4b2782504791b469 . Sorry it took so much to send the PR.


Add Calendar in Datepicker

Add Monthly weekly calendar in @SamProf

Hmm... Can you explain a little more about what you mean by monthly weekly calendar?
I am not sure if flatpickr (which datepicker is built on top of it) has a function that allowed to change the monthly calendar to weekly calendar, but is there a reason to why we might need it and how is it going to be implemented?
Or do you mean something like this? Flatpickr - display week number

@novfal ,
A bump on this one for more info?

calendar always open


RFR: Gunicorn config fixes

What got fixed?

The way gunicorn_config.py was written for API and AUTH, both master and workers would connect to db, register trigger types, ... etc. This results in the duplication of trigger registration which originally threw an exception and got fixed in https://github.com/StackStorm/st2/pull/2435. So we now know the root cause why there was duplication. With this PR, gunicorn_config.py doesn't call common_setup. This means master process won't set up db connections, connect to rabbit etc. We also found out that gunicorn_pecan calls into module.app.setup_app for each worker. So we moved common_setup code to there. In case of standalone http, common_setup is not run more than once.

With more than 1 worker for API, we were seeing queue lock issues like so:

ResourceLocked: Queue.declare: (405) RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'st2.trigger.watch.WebhooksController' in vhost ‘/‘ in the second process as soon as i start up

Manas already knew about this and he proposed using a different queue_suffix for each trigger watcher. exclusive=True should not be changed. We did that and I was able to spin more than 1 worker process just fine.
I still don't recommend running more than 1 worker with eventlet. If need be, we should run more than one gunicorn_pecan process and take care of port issues.

Also with this PR, I set the default mode for API and AUTH to use gunicorn in dev env to catch issues.
Circular dependency between logging setup before config parsing depending on cfg.CONF variables

What remains a problem?

Though gunicorn allows us to specify service hooks to catch signals, when I kill the gunicorn_process, eventlet pukes. I couldn't figure out why. So if some day we want some cleanup code to run for each worker, we got to fix this.

TODO

[X] - API tests ** FIXED NOW.
[x] - Changelog
[x] - Limit queue name length
[ ] - Integration tests for trigger watcher queue consumption **NOT DONE [See https://github.com/StackStorm/st2/pull/2437#issuecomment-178300317]

Luckily our rspec tests in new packages are catching this issue. Maybe we can add a test case for 2 API workers there? That would be our integration tests.
Thanks to @manasdk for all the help with pecan and gunicorn debugging. We did a lot of group therapy aka pair programming today.

https://stackstorm.slack.com/archives/stackstorm/p1454373548004018

@Kami I tried writing an integration test for spinning multiple trigger watchers but unfortunately the test is highly unreliable. It might have something to do with eventlets and our queue consumers. I reverted that commit. I'll look into this later and I don't want to hold up this PR because this blocks packaging. cc: @manasdk

https://stackstorm.slack.com/archives/stackstorm/p1454377944004024

+1
Validated locally.


hosting the backend on herouku

Description

For better CI, hosting the backed for data is important and the current best alt is Heroku.
Screenshots/testimonials

Yes. For now we can go for Heroku for CI. #69 #68 had it clear. Are we up and running on heroku?

Backend is up on Heroku now just a pull needed! Currently running on my fork!

yea! perfectly working
Heroku and monogo remote with netlify
Another goal setup a Public Cloud Storage ex. Aws S3 bucket for images and pdfs

Sounds like a new issue to me. But I think we should proceed with that now.


tty: read callback is called after closing

I have encountered an inconsistency when closing tty handles on UNIX and Windows. Please see the following code:
#include <uv.h>

uv_tty_t tty;
uv_signal_t sig;

static char BUFFER[10];

static void alloc_cb(uv_handle_t *handle, size_t size, uv_buf_t *buf) {
	*buf = uv_buf_init(BUFFER, sizeof BUFFER);
}

static void close_cb(uv_handle_t *handle) {
	printf("close_cb(%p)\n", handle);
}

static void read_cb(uv_stream_t *handle, ssize_t size, const uv_buf_t *buf) {
	printf("read_cb(%p, %d)\n", handle, (int)size);
	if (size < 0) uv_close((uv_handle_t *)handle, close_cb); /* We MUST close the handle on error */
}

static void signal_cb(uv_signal_t *handle, int signum) {
	printf("*** Closing tty...\n");
	uv_close((uv_handle_t *)&tty, close_cb);
}

int main() {
	uv_loop_t *loop = uv_default_loop();
	uv_tty_init(loop, &tty, 0, 1);
	uv_signal_init(loop, &sig);
	uv_unref((uv_handle_t *)&sig);
	uv_read_start((uv_stream_t *)&tty, alloc_cb, read_cb);
	uv_signal_start(&sig, signal_cb, SIGINT);
	uv_run(loop, UV_RUN_DEFAULT);
	uv_loop_close(loop);
	return 0;
}

Compile, run and press CTRL+C.
UNIX:
^C*** Closing tty...
close_cb(0x5571ebccf0c0)

Everything works as it is supposed to.
WINDOWS:
read_cb(00843F60, 0)
*** Closing tty...
read_cb(00843F60, 0)
close_cb(00843F60)

Note that read_cb is called twice. Umm.... I am probably okay with the first (dummy) invocation, but I definitely do not expect another call to read_cb after the handle was closed.
libuv 1.23.1

I think the very recently merged https://github.com/libuv/libuv/pull/2005 might be a fix for this issue? Can you check with the v1.x branch here?

Just checked. The issue is relevant for v1.x HEAD as for now.
I also tried explicitly calling uv_read_stop before uv_close with the same outcome.

The first read callback is for Ctrl-C itself. It is fired before the signal handler has a chance to stop the read. ReadConsoleW successfully reads 0 bytes, so it reports it. We then cancel the read in uv_close, by sending fake Enter key. It gets also reported because of https://github.com/libuv/libuv/blob/ee87f34474605b5c2db2870621e8cb72c2043cae/src/win/tty.c#L954-L957
I'm not sure if this is a bug. The docs say that the read callback can be called with 0 size, but it also says that this is equivalent to EAGAIN or EWOULDBLOCK under read(2), which is not the case here. It is for sure confusing, so I think we should remove both 0-size read callbacks.

Fix in https://github.com/libuv/libuv/pull/2014

I don't mind zero-sized callbacks before a handle is closed. I know they can happen. The real problem here is that a second callback is fired after the handle has been closed as it becomes troublesome for a higher layer (a binding) to ever be ready for such a situation by adding checks for uv_is_closing in every callback. Also, a supporting infrastructure for a callback to happen might have already been dismantled right after a call to uv_close.

I'll confirm the fix later. Thanks!


feat: Add hotjar

What it solves
UX team would like to have heatmaps, i.e. see what users click, what users are missing from our landing page
How this PR fixes it

Hotjar script is added/removed from the page following analytics cookies preferences.
New Hotjar section in the Privacy Notice page
Hotjar update on the Cookie Policy, including all the potential cookies the software can set.

Documentation of Hotjar here

@danielpartida I've changed the script tag a bit for it to be React-compatible.

I cannot test it because it's only enabled if IS_PRODUCTION. Please remove the flag temporarily.

I am temporarily modifying the deploy workflow to deploy this branch to the staging environment. Reason being it is the corresponding domain of NEXT_PUBLIC_HOTJAR_ID_STAGING.

I still don't see hotjar loaded. You need to pass the new secrets to the build here: https://github.com/safe-global/safe-homepage/blob/main/.github/workflows/build/action.yml#L20-L21
Please don't ask me for a review until you have verified yourself that it works.

I will block this PR until we have assessed the Cookie Policy update.

The changes in .github/workflows/deploy.yml will be reverted before merging the PR.
These changes currently serve the purpose of verifying the successful installation of Hotjar in https://safe-web-landing.staging.5afe.dev/

The hotjar script is loaded when I accept analytics cookies but I don't see any events sent to hotjar afterwards.
Also there's an error in the console:

Also there's an error in the console

Are you testing in https://safe-web-landing.staging.5afe.dev/ ??

The hotjar script is loaded when I accept analytics cookies but I don't see any events sent to hotjar afterwards.

I just set up a Heatmap and it was successfully recorded. I also see Hotjar populating my Cookie storage

I see no errors now and a working websocket connection. ✅


Auto unpublish entries with no valid versions

Is your feature request related to a problem? Please describe.
As I write this, there is at least one published workflow with no versions. You can only publish an entry if it has a valid version, but nothing prevents an already published workflow from going to no valid versions, including no versions at all.
Describe the solution you'd like
If a published entry no longer has any valid versions, we should automatically unpublish it.
There may be repercussions I'm not considering here, so this needs to be thought through.
Also, maybe a separate ticket if there is agreement, but I wonder if a public entry should even surface invalid versions? Is an invalid version ever runnable? I guess if it is, then OK, but maybe the UI should hide invalid versions in the public view by default. Not sure about this one either.
Describe alternatives you've considered

Leave it as is.
Possibly have a warning on the Info page, even though you can see there are no versions when you go that tab.

┆Issue is synchronized with this Jira Story
┆friendlyId: DOCK-2047
┆sprint: Backlog
┆taskType: Story

I wonder if a public entry should even surface invalid versions

false positives might be an issue I suppose


catalog: more generated files

@jpeeler this looks like it is failing: https://openshift-gce-devel.appspot.com/build/origin-ci-test/pr-logs/pull/openshift_openshift-ansible/8137/test_pull_request_openshift_ansible_install_upgrade_gce/499/

@smarterclayton Yes, one more thing I missed.

https://github.com/openshift/aos-cd-jobs/pull/1333


testing: document that TestMain always runs before any benchmarks

The docs for TestMain say:
It is sometimes necessary for a test program to do extra setup
or teardown before or after testing.

https://golang.org/pkg/testing/#hdr-Main
But what if one needs to do extra setup before benchmarking? It appears that TestMain would also always run before benchmarks, but neither TestMain doc nor M.Run doc say anything about benchmarks.

cc @mpvl @bcmills


Lower location precision

Motivation
After upgrading maplibre-react-native to version  10.x I notice that on Android phone the location precision decrease. It is bit hard to debug but blue location circle is bigger.
Question
Can this be related to removing of Google Location Services com.google.android.gms ?
https://github.com/maplibre/maplibre-native/releases/tag/android-v10.0.0
If so is there a way of again using Google Location Services?

Has there been a solution to the problem since then?

Based on the release notes https://github.com/maplibre/maplibre-native/releases/tag/android-v10.0.0 I created following patch which again include GMS location services.
I think that solves the issue. Closing for now.
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>index 7ea3e1d..e8dae6c 100644
---<EMAIL_ADDRESS>+++<EMAIL_ADDRESS>@@ -37,6 +37,7 @@ dependencies {
     implementation "org.maplibre.gl:android-sdk-turf:6.0.1"

     // Dependencies
+    implementation "com.google.android.gms:play-services-location:21.0.1"
     implementation "androidx.vectordrawable:vectordrawable:1.1.0"
     implementation "androidx.annotation:annotation:1.7.0"
     implementation "androidx.appcompat:appcompat:1.6.1"
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>index bc5c444..738373e 100644
---<EMAIL_ADDRESS>+++<EMAIL_ADDRESS>@@ -12,6 +12,11 @@ import org.maplibre.android.location.engine.LocationEngineCallback;
 import com.mapbox.android.core.location.LocationEngineListener;
 import com.mapbox.android.core.location.LocationEnginePriority;
 */
+import org.maplibre.android.location.engine.LocationEngineProxy;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.GoogleApiAvailability;
+import com.maplibre.rctmln.location.engine.GoogleLocationEngineImpl;

 import org.maplibre.android.location.engine.LocationEngineDefault;
 import org.maplibre.android.location.engine.LocationEngineRequest;
@@ -63,7 +68,13 @@ public class LocationManager implements LocationEngineCallback<LocationEngineRes

     }
     private void buildEngineRequest() {
-        locationEngine = LocationEngineDefault.INSTANCE.getDefaultLocationEngine(this.context.getApplicationContext());
+        if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS) {
+            locationEngine = new LocationEngineProxy<>(new GoogleLocationEngineImpl(context.getApplicationContext()));
+            Log.d(LOG_TAG, "Google Location Engine created successfully.");
+        } else {
+            locationEngine = LocationEngineDefault.INSTANCE.getDefaultLocationEngine(this.context.getApplicationContext());
+            Log.d(LOG_TAG, "Default Location Engine created successfully.");
+        }
         locationEngineRequest = new LocationEngineRequest.Builder(DEFAULT_INTERVAL_MILLIS)
                 .setFastestInterval(DEFAULT_FASTEST_INTERVAL_MILLIS)
                 .setPriority(LocationEngineRequest.PRIORITY_HIGH_ACCURACY)
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>new file mode 100644
index 0000000..55ba244
--- /dev/null
+++<EMAIL_ADDRESS>@@ -0,0 +1,151 @@
+package com.maplibre.rctmln.location.engine;
+
+import android.annotation.SuppressLint;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.location.Location;
+import android.os.Looper;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
+import com.google.android.gms.location.FusedLocationProviderClient;
+import com.google.android.gms.location.LocationCallback;
+import com.google.android.gms.location.LocationRequest;
+import com.google.android.gms.location.LocationResult;
+import com.google.android.gms.location.LocationServices;
+import com.google.android.gms.location.Priority;
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.OnSuccessListener;
+
+import org.maplibre.android.location.engine.LocationEngineCallback;
+import org.maplibre.android.location.engine.LocationEngineImpl;
+import org.maplibre.android.location.engine.LocationEngineRequest;
+import org.maplibre.android.location.engine.LocationEngineResult;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Wraps implementation of Fused Location Provider
+ */
+public class GoogleLocationEngineImpl implements LocationEngineImpl<LocationCallback> {
+    private final FusedLocationProviderClient fusedLocationProviderClient;
+
+    @VisibleForTesting
+    GoogleLocationEngineImpl(FusedLocationProviderClient fusedLocationProviderClient) {
+        this.fusedLocationProviderClient = fusedLocationProviderClient;
+    }
+
+    public GoogleLocationEngineImpl(@NonNull Context context) {
+        this.fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context);
+    }
+
+    @NonNull
+    @Override
+    public LocationCallback createListener(LocationEngineCallback<LocationEngineResult> callback) {
+        return new GoogleLocationEngineCallbackTransport(callback);
+    }
+
+    @SuppressLint("MissingPermission")
+    @Override
+    public void getLastLocation(@NonNull LocationEngineCallback<LocationEngineResult> callback)
+            throws SecurityException {
+        GoogleLastLocationEngineCallbackTransport transport =
+                new GoogleLastLocationEngineCallbackTransport(callback);
+        fusedLocationProviderClient.getLastLocation().addOnSuccessListener(transport).addOnFailureListener(transport);
+    }
+
+    @SuppressLint("MissingPermission")
+    @Override
+    public void requestLocationUpdates(@NonNull LocationEngineRequest request,
+                                       @NonNull LocationCallback listener,
+                                       @Nullable Looper looper) throws SecurityException {
+        fusedLocationProviderClient.requestLocationUpdates(toGMSLocationRequest(request), listener, looper);
+    }
+
+    @SuppressLint("MissingPermission")
+    @Override
+    public void requestLocationUpdates(@NonNull LocationEngineRequest request,
+                                       @NonNull PendingIntent pendingIntent) throws SecurityException {
+        fusedLocationProviderClient.requestLocationUpdates(toGMSLocationRequest(request), pendingIntent);
+    }
+
+    @Override
+    public void removeLocationUpdates(@NonNull LocationCallback listener) {
+        if (listener != null) {
+            fusedLocationProviderClient.removeLocationUpdates(listener);
+        }
+    }
+
+    @Override
+    public void removeLocationUpdates(PendingIntent pendingIntent) {
+        if (pendingIntent != null) {
+            fusedLocationProviderClient.removeLocationUpdates(pendingIntent);
+        }
+    }
+
+    private static LocationRequest toGMSLocationRequest(LocationEngineRequest request) {
+        LocationRequest.Builder builder = new LocationRequest.Builder(request.getInterval());
+        builder.setMinUpdateIntervalMillis(request.getFastestInterval());
+        builder.setMinUpdateDistanceMeters(request.getDisplacement());
+        builder.setMaxUpdateDelayMillis(request.getMaxWaitTime());
+        builder.setPriority(toGMSLocationPriority(request.getPriority()));
+        return builder.build();
+    }
+
+    private static int toGMSLocationPriority(int enginePriority) {
+        switch (enginePriority) {
+            case LocationEngineRequest.PRIORITY_HIGH_ACCURACY:
+                return Priority.PRIORITY_HIGH_ACCURACY;
+            case LocationEngineRequest.PRIORITY_BALANCED_POWER_ACCURACY:
+                return Priority.PRIORITY_BALANCED_POWER_ACCURACY;
+            case LocationEngineRequest.PRIORITY_LOW_POWER:
+                return Priority.PRIORITY_LOW_POWER;
+            case LocationEngineRequest.PRIORITY_NO_POWER:
+            default:
+                return Priority.PRIORITY_PASSIVE;
+        }
+    }
+
+    private static final class GoogleLocationEngineCallbackTransport extends LocationCallback {
+        private final LocationEngineCallback<LocationEngineResult> callback;
+
+        GoogleLocationEngineCallbackTransport(LocationEngineCallback<LocationEngineResult> callback) {
+            this.callback = callback;
+        }
+
+        @Override
+        public void onLocationResult(LocationResult locationResult) {
+            super.onLocationResult(locationResult);
+            List<Location> locations = locationResult.getLocations();
+            if (!locations.isEmpty()) {
+                callback.onSuccess(LocationEngineResult.create(locations));
+            } else {
+                callback.onFailure(new Exception("Unavailable location"));
+            }
+        }
+    }
+
+    @VisibleForTesting
+    static final class GoogleLastLocationEngineCallbackTransport
+            implements OnSuccessListener<Location>, OnFailureListener {
+        private final LocationEngineCallback<LocationEngineResult> callback;
+
+        GoogleLastLocationEngineCallbackTransport(LocationEngineCallback<LocationEngineResult> callback) {
+            this.callback = callback;
+        }
+
+        @Override
+        public void onSuccess(Location location) {
+            callback.onSuccess(location != null ? LocationEngineResult.create(location) :
+                    LocationEngineResult.create(Collections.<Location>emptyList()));
+        }
+
+        @Override
+        public void onFailure(@NonNull Exception e) {
+            callback.onFailure(e);
+        }
+    }
+}
\ No newline at end of file

@RobertSasak, Can you explain this in more detail?
Was this related to this:

Breaking: the LocationEngine implemented with Google Location Services has been removed to make MapLibre GL Native for Android fully FLOSS (https://github.com/maplibre/maplibre-gl-native/issues/379).

Was com.google.android.gms not fully open source, so it was removed from the Android SDK, but as a result the GPS location is less precise?  Is that correct?

Correct. I have come to the same assumption. Without Google Location Service a device use only a GPS which takes longer time, requires direct vision to sky and use more battery.
Proprietary Google Location Service combines also Wifi, mobile network and GPS.
However I could not reliably verify it as I think it is depending on device and GPS conditions.

I've a report on Android 13, where the location jumps, while it smoothly moves on Android 14.

After a fix I provided there were no more reports from users.

Did the initial report state, which Android version was used? Would be super helpful to know.
If this fixes the problem for us too, I'm thinking we should allow a clean way to choose the location provider.

The Patch also fixed our problem, thanks @RobertSasak. Basically navigation based on user location reported by MapLibre was not useable on Android 13 with a Samsung S20. Weirdly we weren't able to reproduce on any other devices with Android 14/13/12. Will have to find a way to support both engines.


no-static-element-interactions should not fail on complex values for role

The following should pass because we can't determine in lint what the value is, so we can't make a definitive judgement call.
{ code: '<div onClick={() => {}} role={isBool ? "presentation" : "button"} />;' }

I'd argue that an option should be used to control that; in particular, I'd prefer that to always fail - I don't want dynamic role values to appear in my codebase.

I'd argue that an option should be used to control that; in particular, I'd prefer that to always fail - I don't want dynamic role values to appear in my codebase.

Noted. I can see the arguments on both sides. I'll take your point into consideration while coding.

I think that discouraging dynamic roles is fine (and better, I agree), but it is separate from using the role prop value for enforcing a rule. We should be focused on providing the best tool for developing accessible apps more so than enforcing prop value styles.

We should be focused on providing the best tool for developing accessible apps more so than enforcing prop value styles.

I'm confused where you fall on this issue. Could you elaborate a little more?
The case that caused me to open this issue is one with a ternary expression as a value for role that does provide the correct behavior, but raises a lint warning. It's a case that we can't determine via lint; it's a false positive. My intent with this issue is to provide a steam valve for the behavior for teams that don't want such a strict level of evaluation. I do agree that providing a strict interpretation (and making that the default) is preferable.

In this specific case - a ternary where both paths are a string literal - the rule could certainly allow it statically.
In a general case, I'm totally fine with an option that configures ignore vs fail behavior on non-string-literals (where a template with no substitutions is considered a string literal)

Sorry, let me clarify. I agree with @ljharb, but I don't think it's this plugin's responsibility to enforce prop styles. I think we should be focusing on how we can provide the most accurate and actionable feedback for accessibility and in this case, would be to only evaluate string literal role prop values.
You can enforce dynamic prop values as a bad pattern with a different lint rule.

Is it not actionable to dictate a prop style that can be assured to be accessible?

More specifically, I don't want all or even most dynamic props warned on - only the ones where their dynamism precludes ensuring its accessible. I'm not sure how a generic rule would know that, since that knowledge belongs to individual a11y rules.

In that case, I'd argue that it'd be better to have a rule dedicated to that (no-dynamic-roles) and allow every other rule to only error on what it's designed to enforce as best as it can. Plenty of rules here check role prop and it doesn't scale to include that option for all of them, IMO

That's fair; could we add that before loosening this (and the other) rules? That way I'm not blocked on upgrading.

In that case, I'd argue that it'd be better to have a rule dedicated to that (no-dynamic-roles) and allow every other rule to only error on what it's designed to enforce as best as it can. Plenty of rules here check role prop and it doesn't scale to include that option for all of them, IMO

That's fair; could we add that before loosening this (and the other) rules? That way I'm not blocked on upgrading.

I like the compromise. +2

Is there any update on this issue?

@julianaleon none yet. Would you like to take a shot at the no-dynamic-roles rule that @evcohen suggests in a comment above? I'm happy to advise and review the PR.

This is a dupe of #245. We'll handle the issue there.


Sudden PPM C02 value changes

Esphome shows sudden changes in PPM.
Corrected PPM CO2: 508.0 ppm to 2316001.0 ppm and returned after a few seconds.
PPM CO2 546.8 pm to 52620.1 ppm and returned after a few seconds.

globals:

#The load resistance on the board. Value in KiloOhms
  - id: RLOAD
    type: float
    restore_value: no
    initial_value: '1.025'

#Calibration resistance at atmospheric CO2 level. Outdoor calibration data
  - id: RZERO
    type: float
    restore_value: no
    initial_value: '35.429'

#Atmospheric CO2 level for calibration purposes. Outdoor CO2 level during calibration. Usually 450, but it's better to clarify.
  - id: ATMOCO2
    type: float
    restore_value: no
    initial_value: '450'

#Parameters for calculating ppm of CO2 from sensor resistance
#  Exponential regression:
#  GAS      | a      | b
#  CO       | 605.18 | -3.937
#  Alcohol  | 77.255 | -3.18
#  CO2      | 110.47 | -2.862
#  Tolueno  | 44.947 | -3.445
#  NH4      | 102.2  | -2.473
#  Acetona  | 34.668 | -3.369
  - id: PARA
    type: float
    restore_value: no
    initial_value: '110.47'
  - id: PARB
    type: float
    restore_value: no
    initial_value: '-2.862'

#Parameters to model temperature and humidity dependence
  - id: CORA
    type: float
    restore_value: no
    initial_value: '0.00035'
  - id: CORB
    type: float
    restore_value: no
    initial_value: '0.02718'
  - id: CORC
    type: float
    restore_value: no
    initial_value: '1.39538'
  - id: CORD
    type: float
    restore_value: no
    initial_value: '0.0018'
  - id: CORE
    type: float
    restore_value: no
    initial_value: '-0.003333333'
  - id: CORF
    type: float
    restore_value: no
    initial_value: '-0.001923077'
  - id: CORG
    type: float
    restore_value: no
    initial_value: '1.130128205'

# Here you need to indicate the supply voltage of the MQ135 sensor. It can be measured with a voltmeter. Please note that the rated power will not always be accurate.
  - id: volt_resolution
    type: float
    restore_value: no
    initial_value: '5.14'

# 1 for Exponential, 2 for Linear
  - id: regression_method
    type: int
    restore_value: no
    initial_value: '1'

i2c:
  sda: 21
  scl: 22
  scan: False
  id: bus_a

sensor:
  - platform: dht
    pin: 13
    temperature:
      name: "Temperature dht"
      id: dht_temperature
    humidity:
      name: "Humidity"
      id: dht_humidity
      filters:
      - lambda: if ((id(dht_temperature).state)>=0) {return (id(dht_humidity).raw_state + (25.0 - id(dht_temperature).state) * (-0.15));} else {return id(dht_humidity).raw_state;}
    update_interval: 30s

  - platform: adc
    pin: 35
    name: "Gas ADC"
    update_interval: 1s
    filters:
      - multiply: 3.3 # for NodeMcu ESP8266 v3 Lua
    accuracy_decimals: 4
    unit_of_measurement: V
    id: sensor_volt

  - platform: template
    #Linearization of the temperature dependency curve under and above 20 degree C
    #below 20degC: fact = a * t * t - b * t - (h - 33) * d
    #above 20degC: fact = a * t + b * h + c
    #this assumes a linear dependency on humidity
    #getCorrectionFactor
    name: "Correction Factor"
    lambda: |-
      if (id(dht_temperature).state<20) {
        return (id(CORA) * id(dht_temperature).state * id(dht_temperature).state - id(CORB) *
          id(dht_temperature).state + id(CORC) - (id(dht_humidity).state - 33.) * id(CORD));
      } else {
        return (id(CORE) * id(dht_temperature).state + id(CORF) * id(dht_humidity).state + id(CORG));
      }
    update_interval: 10s
    accuracy_decimals: 6
    id: correction_factor

  - platform: template
    #Get the resistance of the sensor, ie. the measurement value @return The sensor resistance in kOhm
    # RS = [(VC x RL) / VRL] - RL
    # RS_air = ((5.14*1.0)/sensor_volt)-1.0 Calculate RS in fresh air
    #getResistance
    name: "Resistance"
    lambda: |-
      return ((id(volt_resolution)*id(RLOAD)/id(sensor_volt).state) - id(RLOAD));
    update_interval: 5s
    accuracy_decimals: 3
    unit_of_measurement: kOm
    id: resistance

  - platform: template
    # Get the resistance of the sensor, ie. the measurement value correctedfor temp/hum @return The corrected sensor resistance kOhm
    #getCorrectedResistance
    name: "Corrected Resistance"
    lambda: |-
      return (id(resistance).state / id(correction_factor).state);
    update_interval: 5s
    accuracy_decimals: 3
    unit_of_measurement: kOm
    id: corrected_resistance

  - platform: template
    # Get the ppm of CO2 sensed (assuming only CO2 in the air). The ppm of CO2 in the air
    #getPPM
    name: "PPM CO2"
    lambda: |-
      if (id(regression_method)==1) {
        return (id(PARA) * pow((id(resistance).state / id(RZERO)), id(PARB)));
      } else {
        return (pow(10, (log10(id(resistance).state / id(RZERO)) - id(PARB)) / id(PARA)));
      }
    update_interval: 5s
    unit_of_measurement: ppm
    id: ppm_co2

  - platform: template
    # Get the ppm of CO2 sensed (assuming only CO2 in the air), corrected  for temp. The ppm of CO2 in the air
    #getCorrectedPPM
    name: "Corrected PPM CO2"
    lambda: |-
      if (id(regression_method)==1) {
        return (id(PARA) * pow((id(corrected_resistance).state / id(RZERO)), id(PARB)));
      } else {
        return (pow(10, (log10(id(corrected_resistance).state / id(RZERO)) - id(PARB)) / id(PARA)));
      }
    update_interval: 5s
    unit_of_measurement: ppm
    id: corrected_ppm_co2

  - platform: template
    # Get the resistance RZero of the sensor for calibration purposes. The sensor resistance RZero in kOhm
    #getRZero
    name: "RZero"
    lambda: |-
      return (id(resistance).state / pow((id(ATMOCO2) / id(PARA)), (1./id(PARB))));
    filters:
      - sliding_window_moving_average:
          window_size: 15
          send_every: 1
    update_interval: 5s
    accuracy_decimals: 3
    unit_of_measurement: kOm
    id: r_zero

  - platform: template
    # Get the corrected resistance RZero of the sensor for calibration purposes. The corrected sensor resistance RZERO in kOhm for ATMOCO2 level
    #getCorrectedRZero
    name: "CorrectedRZero"
    lambda: |-
      return (id(corrected_resistance).state / pow((id(ATMOCO2) / id(PARA)), (1./id(PARB))));
    filters:
      - sliding_window_moving_average:
          window_size: 15
          send_every: 1
    update_interval: 5s
    accuracy_decimals: 3
    unit_of_measurement: kOm
    id: corrected_r_zero

Hi, did you got it working ?

Not yet. I will try to replace it waveshare MQ135. The current sensor I have is generic I doubt its workability.

Which one sensor are you using now ?

I don't know whether it is in the code or the sensor but every few minutes all the readings are reset to zero and the code starts over so it seems, do you know why that is perhaps ?
and all the corrected values staying at 'NA' is that with you also?
is it needed for the code to work to have the temperature sensor connected ?
thanks, bye


fix: grpahql and floggy dependencies

closes #181

fix: add graphql as peer dep
upgrade setset for floggy

when is this fix going to be released? @jasonkuhrt

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@next-major dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Filter conditions need to be change according to string in refund grid for order id column as well as filter is not working properly in shipment grid for same

Bug report
Title
Filter conditions need to be change according to string in refund grid for order id column as well as filter is not working properly in shipment grid for same
Issue Description
as of now numeric conditions are given

Preconditions
1. framework Version.v0.1.8

Steps to reproduce
1. step1: place order and then create refund
2. step2: go to refund grid and check filter conditions for order id column

Expected result
string conditions should be there
Actual result
numeric condition available , hence filter is not working properly for order id column.

framework Version.v0.1.8
issue fixed


PM-2938: Leader selection

Moves the current round-robin leader selection built into the Federation.leaderOf function to its own LeaderSelection.RoundRobin class and adds a new LeaderSelection.Hashing variant to make lessen the chance that f consecutive Byzantine leaders can hijack a string of rounds every time it's their turn.

@ranvirranaiitb great, created https://jira.iohk.io/browse/PM-3096 for you.


Build the Go binaries as part of the Travis build.

Yeah, I agree, this PR does work, but maybe we'd want another PR to fix this problem first, to avoid breaking the master branch? @AlCutter, any idea what this is? Just retry the build, see if it's a flake?

A bit more info on this, now there's a workaround, but we should really fix issue #1152 and revert that workaround as soon as possible.


🏷 Add dist-tag to publish to signal prereleases

Accidentally hosed this branch, starting new one!


Change default Font on MacOs to San Francisco

It is a default font UI in macOS. Introduced a lot of versions ago.

(on this screenshot ' symbol is different, not sure why. Maybe in the new version of the font it is different)
Old:

New:

It is not allowed to use San Francisco directly. We should use "system" alias, that can point to a new font in the future.

Buttons:


[WIP] React Stripe

Do not merge until React Stripe releases.
Migrates this project to use hooks and React Stripe.

@auchenberg-stripe requesting a review pending release of React Stripe.js
I will update the packages to GA versions before merging


Security disclosures shouldn't be sent clear-text over email?

Should perhaps encourage users to disclose security bugs with PGP? Not everyone is a-ok with Uncle Sam picking up disclosures before anyone else.
#justsayin

In an ideal world, yes. However, I don't think we should make things too difficult for people to disclose them. It's already a challenge to have people disclose security issues the right way (I've seen some issues appear here on GitHub)
/cc @ewindisch

Yeah, I understand your point. It's certainly more important not to post directly to GitHub than to use PGP. It would be nice to have an easily available key for those that are willing and capable of using it, though. That would at least be a road-sign pointing in the direction of an ideal world.

ping @ewindisch @diogomonica @NathanMcCauley

i love pgp hehehe just saying
#strongSetRepresent

I think PGP in this particular use-case is more trouble than it's worth.

It might be nice in a perfect world, but it would be difficult for us to implement for a vulnerability management team. We'd need to share a private key (not very private) and deal with having the interface to such a system support PGP... or have an MTA-in-the-middle doing decryption (in which case we'd need it to sign the plaintext so we could locally verify it...)
That said, as nice as all that would be, it would be lot of trouble.

We're not going to do this. Please close.


[SPARK-26152] Synchronize Worker Cleanup with Worker Shutdown

What changes were proposed in this pull request?
The race between org.apache.spark.deploy.DeployMessages.WorkDirCleanup event and  org.apache.spark.deploy.worker.Worker#onStop. Here its possible that while the WorkDirCleanup event is being processed, org.apache.spark.deploy.worker.Worker#cleanupThreadExecutor was shutdown. hence any submission after ThreadPoolExecutor will result in java.util.concurrent.RejectedExecutionException
How was this patch tested?
Manually

cc @ajithme @srowen @dongjoon-hyun we also saw this issue in 2.4 branch, hence the backporting.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/13509/
Test PASSed.

Test build #108413 has started for PR 25302 at commit 57f45e8.

Test build #108413 has finished for PR 25302 at commit 57f45e8.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/108413/
Test PASSed.

Thanks @dongjoon-hyun
Merged into 2.4 branch.


docs: use explicit grouping; omit comments from output

While browsing the rendered API docs I noticed that section comments were being passed to the output (e.g. // start hid). This commit fixes that by doing two things:

wrapping all section comments with a conditional tag on an IGNORE variable. This will prevent doxygen from including them in output unless the IGNORE variable is set when rendering.
Use the explicit @ingroup command to define group nesting, instead of @{ }@ blocks. This isn't strictly necessary but I feel it is a bit cleaner and makes it harder to mess things up when it comes to tabbing/spacing. In addition, it allows the section comments to be included more clearly amidst the actual section definitions.

@scolsen thanks for the PR! This looks great, definitely a lot easier to read than it was.
I'm trying to get a bunch of things ready for a release later this week. So I'll bring this in with the rest of the updates as well.

Sounds good!


Fix unread marker being removed from DOM

Fixes #762.

Do we need a second review of this one, or is it small enough to go with 1?

@xPaw is on a roll!! 👏


Export to PDF: code and code block background

Love this theme, however when I export notes to PDF there is a strange pattern used for the background on code and code blocks. I tried changing settings to adjust this option, but I could not find the correct setting.

You can customize the background of your code here:


Search 6 groundwork - Implement the missing field types and default bridges compared to Search 5

https://hibernate.atlassian.net/browse/HSEARCH-3047
Type Spreadsheets

Pull Request Test Coverage Report for Build 1

38 of 38 (100.0%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.03%) to 87.482%

Totals

Change from base Build 136:
0.03%

Covered Lines:
14599

Relevant Lines:
16688

💛  - Coveralls

Temporary close this request, in order to avoid noise on github notification, I'll reopen when it is really ready for review.


feat: add GetFullSchema and FillDefaults methods to plugins

GetFullSchema: returns full schema for plugins (/schemas/plugins/<ID>)
FillDefaults: given a schema and a config object, fills all defaults
Based on the discussion happening in here, this PR is introducing 2 new methods for Plugin (along few other helper functions, mostly taken from KIC plus few changes).
These can be leveraged by deck and KIC to fill defaults values into plugins from their schemas.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

The main difference with the KIC implementation is that KIC was filling only Config defaults, while here we are filling both Config and Protocols, as well as setting Enabled to true as default. This is done by leveraging the "newer" /schemas/plugins/$ID endpoint, so most of the code differences in the fillConfigRecord function are due to handling a slightly different output from the one used in KIC.

Codecov Report

Merging #114 (a9cf627) into main (8d08c5d) will decrease coverage by 4.41%.
The diff coverage is 84.70%.

@@            Coverage Diff             @@
##             main     #114      +/-   ##
==========================================
- Coverage   43.49%   39.08%   -4.42%
==========================================
  Files          42       42
  Lines        3722     3807      +85
==========================================
- Hits         1619     1488     -131
- Misses       1786     2050     +264
+ Partials      317      269      -48

Flag
Coverage Δ

2.0.5
39.08% <84.70%> (+1.04%)
:arrow_up:

2.1.4
?

2.2.2
?

2.3.3
?

2.4.0
?

community
39.08% <84.70%> (+1.04%)
:arrow_up:

enterprise
?

enterprise-<IP_ADDRESS>
?

enterprise-<IP_ADDRESS>
?

integration
39.08% <84.70%> (-4.42%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

kong/plugin_service.go
57.54% <62.50%> (+1.07%)
:arrow_up:

kong/utils.go
84.44% <98.11%> (+5.17%)
:arrow_up:

kong/mtls_auth_service.go
0.00% <0.00%> (-63.74%)
:arrow_down:

kong/workspace_service.go
0.00% <0.00%> (-53.45%)
:arrow_down:

kong/exists.go
50.00% <0.00%> (-25.00%)
:arrow_down:

kong/admin_service.go
0.00% <0.00%> (-19.12%)
:arrow_down:

kong/credentials.go
85.71% <0.00%> (-14.29%)
:arrow_down:

Continue to review full report at Codecov.

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

Add an integration test for the GetFulLSchema function that has been added. The test must ensure that this function works against OSS as well as Enterprise.

isn't it already tested on both as part of this here?

isn't it already tested on both as part of this here?

Oh boy.
That test is for another function. If that function is removed, we would be removing the call to the GetFullSchema function.
Please add another test that only tests the GetFullSchema method.
Assert the response code, and check for a few elements in the body to make sure the response is as expected.
Also, add a negative test for the "noexists" plugin.

Wanted to add a testcase to check the whole schema response, but couldn't find a plugin whose schema remained fully consistent across the various EE-OSS versions, so I reverted to just test errors and basic response structure. Let me know if that's fine.


[1.10-rc1] docker run error leaves TTY in odd state

If I run the following
docker network create foo
docker run --net=foo --ip <IP_ADDRESS> -it ubuntu

It fails with
docker: Error response from daemon: User specified IP address is supported only when connecting to networks with user configured subnets.

The problem is not the error but the fact that the TTY seems to have noecho set or something because after the command exits you have to type reset to get the console back to a good state.

If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
For more information about reporting issues, see CONTRIBUTING.md.
You don't have to include this information if this is a feature request
(This is an automated, informational response)

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO


AVM1: Catch errors in ExternalInterface.call and return undefined

r? @yurydelendik

/botio reftest

r+

Reviewed 5 of 5 files at r1.
Review status: :shipit: all files reviewed at latest revision, all discussions resolved, all commit checks successful.

Comments from the review on Reviewable.io


Add: hsl support

This PR adds support for parsing colours written in HSL format.

Thank you karimsa for your contribution and also for writing a test. I will not accept pull request unless they are tested so you saved me having to write one myself, although I did add an additional test in the testshapes.svg file.