istio-policy cpu use significantly (15-20x) higher 1.0.2 -> 1.0.3

Hey,
Noticed this this morning.  In one of our production clusters on 1.0.2 (actually getting 10x the load of pre-prod):
Istio policy is nice and low

And then our 1.0.3 upgraded pre-prod cluster, istio-policy using 15x as much:

This is the same for telemetry (mixer based) too

Can you export your grafana mixer dashboard ( to raintank.io)?
Is there any other config change in your env?

Unfortunately not; happy to give your google account access to the preprod cluster though if you like (message me on slack).
Here are some screenshots:

Dunno if it helps but there are some errors in the logs:
telemetry
2018-10-29T15:48:49.789942Z	warn	Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2018-10-29T15:48:49.791311Z	info	Built new config.Snapshot: id='0'
2018-10-29T15:48:49.791575Z	info	Cleaning up handler table, with config ID:-1
2018-10-29T15:48:49.803809Z	warn	Failed to discover kinds: [statsd], start retry in background
2018-10-29T15:48:49.809188Z	info	Built new config.Snapshot: id='1'
2018-10-29T15:48:49.811538Z	info	Cleaning up handler table, with config ID:0
2018-10-29T15:48:49.811605Z	info	Awaiting for config store sync...
2018-10-29T15:48:50.814344Z	info	Publishing 8 events
2018-10-29T15:48:50.814699Z	error	failed to evaluate expression for field 'Variables[sourceWorkload]'; unknown attribute source.workload.name
2018-10-29T15:48:50.814768Z	error	failed to evaluate expression for field 'Variables[sourcePrincipal]'; unknown attribute source.principal
2018-10-29T15:48:50.814799Z	error	Handler not found: handler='handler.kubernetesenv'
2018-10-29T15:48:50.814810Z	error	No valid actions found in rule
2018-10-29T15:48:50.814829Z	error	unknown attribute context.protocol
2018-10-29T15:48:50.814850Z	error	Instance not found: instance='requestcount.metric'
2018-10-29T15:48:50.814867Z	error	Instance not found: instance='requestduration.metric'
2018-10-29T15:48:50.814876Z	error	Instance not found: instance='requestsize.metric'
2018-10-29T15:48:50.814881Z	error	Instance not found: instance='responsesize.metric'
2018-10-29T15:48:50.814935Z	error	No valid instances found
2018-10-29T15:48:50.814947Z	error	No valid actions found in rule
2018-10-29T15:48:50.814960Z	error	unknown attribute context.protocol
2018-10-29T15:48:50.814969Z	error	Instance not found: instance='tcpbytesent.metric'
2018-10-29T15:48:50.814977Z	error	Instance not found: instance='tcpbytereceived.metric'
2018-10-29T15:48:50.814981Z	error	No valid instances found
2018-10-29T15:48:50.814988Z	error	No valid actions found in rule
2018-10-29T15:48:50.815001Z	error	unknown attribute context.protocol
2018-10-29T15:48:50.815012Z	error	Handler not found: handler='handler.kubernetesenv'
2018-10-29T15:48:50.815021Z	error	No valid actions found in rule
2018-10-29T15:48:50.815026Z	info	Built new config.Snapshot: id='2'
2018-10-29T15:48:50.815100Z	info	Cleaning up handler table, with config ID:1
2018-10-29T15:48:52.009585Z	info	Publishing 1 events
2018-10-29T15:48:52.011153Z	error	error evaluating AttributeBinding expression for attribute key 'destination.namespace': unknown attribute destination.namespace
2018-10-29T15:48:52.011218Z	error	failed to evaluate expression for field 'Variables[requestSize]'; unknown attribute request.size
2018-10-29T15:48:52.011306Z	error	failed to evaluate expression for field 'Variables[connection_security_policy]'; unknown attribute context.reporter.kind
2018-10-29T15:48:52.011327Z	error	Handler not found: handler='handler.kubernetesenv'
2018-10-29T15:48:52.011342Z	error	No valid actions found in rule
2018-10-29T15:48:52.011367Z	error	unknown attribute context.protocol
2018-10-29T15:48:52.011381Z	error	Instance not found: instance='requestcount.metric'
2018-10-29T15:48:52.011386Z	error	Instance not found: instance='requestduration.metric'
2018-10-29T15:48:52.011391Z	error	Instance not found: instance='requestsize.metric'
2018-10-29T15:48:52.011402Z	error	Instance not found: instance='responsesize.metric'
2018-10-29T15:48:52.011407Z	error	No valid instances found
2018-10-29T15:48:52.011415Z	error	No valid actions found in rule
2018-10-29T15:48:52.011427Z	error	unknown attribute context.protocol
2018-10-29T15:48:52.011443Z	error	Instance not found: instance='tcpbytesent.metric'
2018-10-29T15:48:52.011452Z	error	Instance not found: instance='tcpbytereceived.metric'
2018-10-29T15:48:52.011457Z	error	No valid instances found
2018-10-29T15:48:52.011461Z	error	No valid actions found in rule
2018-10-29T15:48:52.011478Z	error	unknown attribute context.protocol
2018-10-29T15:48:52.011528Z	error	Handler not found: handler='handler.kubernetesenv'
2018-10-29T15:48:52.011533Z	error	No valid actions found in rule
2018-10-29T15:48:52.011537Z	info	Built new config.Snapshot: id='3'
2018-10-29T15:48:52.011606Z	info	Cleaning up handler table, with config ID:2
2018-10-29T15:48:53.011837Z	info	Publishing 8 events
2018-10-29T15:48:53.013381Z	error	Handler not found: handler='handler.kubernetesenv'
2018-10-29T15:48:53.013420Z	error	No valid actions found in rule
2018-10-29T15:48:53.013429Z	error	Handler not found: handler='handler.kubernetesenv'
2018-10-29T15:48:53.013432Z	error	No valid actions found in rule
2018-10-29T15:48:53.013461Z	info	Built new config.Snapshot: id='4'
2018-10-29T15:48:53.014186Z	info	adapters	serving prometheus metrics on 42422	{"adapter": "handler.prometheus.istio-system"}
2018-10-29T15:48:53.015295Z	info	Cleaning up handler table, with config ID:3
2018-10-29T15:48:54.206963Z	info	Publishing 1 events
2018-10-29T15:48:54.210263Z	info	Built new config.Snapshot: id='5'
2018-10-29T15:48:54.210401Z	info	adapters	getting kubeconfig from: ""	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:48:54.210435Z	warn	Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2018-10-29T15:48:54.211404Z	info	adapters	Waiting for kubernetes cache sync...	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:48:54.611863Z	info	adapters	Cache sync successful.	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:48:54.614576Z	info	Cleaning up handler table, with config ID:4
2018-10-29T15:48:54.614622Z	error	adapters	adapter did not close all the scheduled daemons	{"adapter": "handler.prometheus.istio-system"}
2018-10-29T15:48:55.631855Z	info	Starting monitor server...
Istio Mixer<EMAIL_ADDRESS>Starting gRPC server on port 9091
2018-10-29T15:48:55.690412Z	info	ControlZ available at <IP_ADDRESS>:9876
2018-10-29T15:49:49.124672Z	info	Publishing 18 events
2018-10-29T15:49:49.127003Z	info	Built new config.Snapshot: id='6'
2018-10-29T15:49:49.127106Z	info	adapters	getting kubeconfig from: ""	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:49:49.127119Z	warn	Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2018-10-29T15:49:49.128236Z	info	adapters	Waiting for kubernetes cache sync...	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:49:49.533702Z	info	adapters	Cache sync successful.	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:49:49.537608Z	info	Cleaning up handler table, with config ID:5
2018-10-29T15:49:49.537675Z	error	adapters	adapter did not close all the scheduled daemons	{"adapter": "handler.kubernetesenv.istio-system"}

policy

2018-10-29T15:48:40.956715Z	warn	Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2018-10-29T15:48:40.957780Z	info	Built new config.Snapshot: id='0'
2018-10-29T15:48:40.957930Z	info	Cleaning up handler table, with config ID:-1
2018-10-29T15:48:41.015211Z	warn	Failed to discover kinds: [statsd], start retry in background
2018-10-29T15:48:41.015555Z	info	Built new config.Snapshot: id='1'
2018-10-29T15:48:41.015726Z	info	Cleaning up handler table, with config ID:0
2018-10-29T15:48:41.015738Z	info	Awaiting for config store sync...
2018-10-29T15:48:42.047822Z	info	Publishing 9 events
2018-10-29T15:48:42.048927Z	info	Built new config.Snapshot: id='2'
2018-10-29T15:48:42.049001Z	info	Cleaning up handler table, with config ID:1
2018-10-29T15:48:43.193015Z	info	Publishing 3 events
2018-10-29T15:48:43.194772Z	info	Built new config.Snapshot: id='3'
2018-10-29T15:48:43.194859Z	info	Cleaning up handler table, with config ID:2
2018-10-29T15:48:44.393184Z	info	Publishing 1 events
2018-10-29T15:48:44.395259Z	info	Built new config.Snapshot: id='4'
2018-10-29T15:48:44.395343Z	info	Cleaning up handler table, with config ID:3
2018-10-29T15:48:46.193390Z	info	Publishing 5 events
2018-10-29T15:48:46.195448Z	info	Built new config.Snapshot: id='5'
2018-10-29T15:48:46.195588Z	info	adapters	getting kubeconfig from: ""	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:48:46.195604Z	warn	Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2018-10-29T15:48:46.196816Z	info	adapters	Waiting for kubernetes cache sync...	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:48:46.924202Z	info	Starting monitor server...
Istio Mixer<EMAIL_ADDRESS>Starting gRPC server on port 9091
2018-10-29T15:48:46.961568Z	info	ControlZ available at <IP_ADDRESS>:9876
2018-10-29T15:48:46.997057Z	info	adapters	Cache sync successful.	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:48:46.997866Z	info	adapters	serving prometheus metrics on 42422	{"adapter": "handler.prometheus.istio-system"}
2018-10-29T15:48:47.000454Z	info	Cleaning up handler table, with config ID:4
2018-10-29T15:49:49.122914Z	info	Publishing 18 events
2018-10-29T15:49:49.124719Z	info	Built new config.Snapshot: id='6'
2018-10-29T15:49:49.124942Z	info	adapters	getting kubeconfig from: ""	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:49:49.125054Z	warn	Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2018-10-29T15:49:49.125958Z	info	adapters	Waiting for kubernetes cache sync...	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:49:49.426252Z	info	adapters	Cache sync successful.	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:49:49.428849Z	info	Cleaning up handler table, with config ID:5
2018-10-29T15:49:49.428917Z	error	adapters	adapter did not close all the scheduled daemons	{"adapter": "handler.kubernetesenv.istio-system"}
2018-10-29T15:49:49.428931Z	error	adapters	adapter did not close all the scheduled daemons	{"adapter": "handler.prometheus.istio-system"}

Incoming requests into telemetry and dispatch count have become 8x.
And cpu has also gone up, so telemetry is doing more work.
What is the total mesh traffic? Has size of deployment changed at all ?

No, as I keep saying mate nothing at all had changed other than an upgrade of control plane and sidecars to 1.0.3

Could this be istio-proxy 1.0.3 just making a lot more policy calls than 1.0 2, so the issue could be with proxy?

There is a change in client side caching code in 1.0.3.
@JimmyCYJ @qiwzhang We are observing higher inbound requests into mixer with absolutely no other change in deployment beyond upgrading the control plane. Can you check if change in batch size + change in cache code results in 8x traffic to both istio-proxy and istio-telemetry.

Just check the proxy commit SHA.  There is little or not change between proxy 1.02 and 1.03.  This is the only change:  https://github.com/istio/proxy/pull/1969

Note that regpatrol detected this problem with the master branch and not in the 1.0 branch where 1.0.3 was cut from. The  Pilot CPU and memory usage were normal for recent builds of 1.0 branch. See for example:
https://ibmcloud-perf.istio.io/regpatrol/release-1.0-20181029-09-15/istio_full/

@Stono did you see CPU utilization go up as soon as the control plane was updated? That is Mixer at 1.0.3 but proxies still at the previous version?

Another related question: when you upgraded to 1.0.3 did you also do kubectl apply -f crds.yaml ?
I am thinking of a change between 0.2 and 0.3 that looks for uninitialized CRDs continuously. This is independent of the data path. If absence of the kubectl apply, we are missing two CRDs that are compiled into Mixer, specifically kind: cloudwatch, kind: dogstatsd. Mixer may continually look for new CRDs.

@mandarjog I am not sure if it was before or after proxy updates, I might have time to test again later today but I'm not sure.
We don't use kubectl apply -f to do upgrades, we use helm (if that makes any difference)

I can confirm that the CPU usage goes back to normal after applying the 1.0.3 CRDs manually. Maybe there is a problem with Helm upgrade from 1.0.2 to 1.0.3

Thanks for confirming the work around. I will get a proper fix out soon.
@stono helm upgrade is not processing the crds correctly.

I could not reproduce the problem with that master build or more recent ones. Regpatrol did not generate the flame graph for istio-policy during the run, but there is the log saved for this component (https://ibmcloud-perf.istio.io/regpatrol/master-20181101-09-15/istio_full/istio-policy-68d97879dc-bdxh4.log), where this error msg appears continuously:
2018-11-02T08:47:47.625333Z	error	attributes	string attribute context.reporter.kind: string index 219 is not defined in the available dictionaries
There is also the profile dump file --> https://ibmcloud-perf.istio.io/regpatrol/master-20181101-09-15/istio_full/aaa_policy_prof.dump

@jnativio I didn't see that in my policy logs!
@stefanprodan it'd be great if you could diff your applied resources before and after to know what has changed?  When I do a helm template on 1.0.2 vs 1.0.3 and diff I'm not seeing any CRD changes?  @mandarjog what do you believe has changed?
@sdake are you aware of any helm issues going from 1.0.2 -> 1.0.3?  I know you've been keen to ensure upgradability.

These are the only two changes I see between 1.0.2 and 1.0.3 when it comes to CRD definitions:
diff --git a/istio/templates/vendor/custom-resources/cloudwatches.config.istio.io.yaml b/istio/templates/vendor/custom-resources/cloudwatches.config.istio.io.yaml
new file mode 100644
index 0000000..b8ab2c1
--- /dev/null
+++ b/istio/templates/vendor/custom-resources/cloudwatches.config.istio.io.yaml
@@ -0,0 +1,19 @@
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: cloudwatches.config.istio.io
+  annotations: {}
+  labels:
+{{ include "istio.labels.standard" . | indent 4 }}
+spec:
+  group: config.istio.io
+  names:
+    kind: cloudwatch
+    plural: cloudwatches
+    singular: cloudwatch
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2
diff --git a/istio/templates/vendor/custom-resources/dogstatsds.config.istio.io.yaml b/istio/templates/vendor/custom-resources/dogstatsds.config.istio.io.yaml
new file mode 100644
index 0000000..a8cd3c1
--- /dev/null
+++ b/istio/templates/vendor/custom-resources/dogstatsds.config.istio.io.yaml
@@ -0,0 +1,19 @@
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: dogstatsds.config.istio.io
+  annotations: {}
+  labels:
+{{ include "istio.labels.standard" . | indent 4 }}
+spec:
+  group: config.istio.io
+  names:
+    kind: dogstatsd
+    plural: dogstatsds
+    singular: dogstatsd
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2

I do not see any changes to CRD implementations?
What exactly do people believe that helm is not applying correctly?

@Stono this two CRDs were missing after I've upgraded to 1.0.3
customresourcedefinition.apiextensions.k8s.io/cloudwatches.config.istio.io created
customresourcedefinition.apiextensions.k8s.io/dogstatsds.config.istio.io created

I've used kubectl to apply the CRDs and killed all Mixer pods, after the "restart" the CPU usage went back to normal.

So I did have those CRDs (I don't do a straight up helm install) and still saw high CPU... so something else is wrong.

@Stono helm is not doing equivalent of kubectl apply -f crds.yaml.
In your logs, statsd is the kind that is missing, which is not new in 1.0.3

@Stono if you can test again today, it would be great to apply crds manually.

I'm sorry but I'm really not following this at all.
In Istio 1.0.2, on our cluster, we do not have those CRDs:
❯ k get crd | grep -i cloud
backendconfigs.cloud.google.com               2018-11-05T12:48:21Z
servicechecks.atcloud.io                      2018-10-19T14:22:04Z
services.atcloud.io                           2018-07-08T11:33:53Z

Istio 1.0.3 it appears to add cloudwatches.config.istio.io, are you saying it shouldn't?

Ahh you're saying that my missing of the statsd CRD is causing the problem?  I removed the statsd stuff manually because of https://github.com/istio/istio/issues/7874

Any missing CRDs can cause high CPU problem in Mixer 1.0.3.
1.0.3 added  2 new CRDs kind: cloudwatch, kind: dogstatsd.
You need to add statsd CRD and we need to figure out why helm did not keep it in sync.

OK that makes more sense, thanks.

Ok great. I will have a fix out soonish.

FYI I was investigating a perf issue in 1.0.2 where mixer takes up 2000% CPU utilization, reapplying crds.yml solved my issue.
I think I installed 1.0 by helm then upgraded to 1.0.2, so this issue might be from a previous version.

@stefanprodan @williamchong007 unfortunately Helm does not properly handle the upgrade case when new CRDs are introduced into the system.  This is tied up in a problem with  the Helm job crd-install not actually installing new CRDs during an upgrade process.  Helm 2.10+ treats CRDs as "unmanaged objects" during the install process - in other words Helm doesn't track these CRDs via tiller.
The upgrade documentation needs an upgrade.  I'm not sure what @mandarjog had in mind for a solution.
I can't think of any other viable technique to handle CRD creation other than creating a process/container that installs and or upgrades the CRDs as a job.
My initial solution for 1.0.4 is as follows:

break out the CRDs into a separate chart which must be installed independently.
Remove crd-install as a feature - until either Helm solves this problem upstream or we find a more complete solution possibly via an operator.
Enforce a two phase Helm installation process.
Install/upgrade CRDs helm chart.
Install/upgrade the Istio helm chart.

We have used post-install jobs for this in the past, and found that model to be untenable.
I'll need to test the upgrade scenarios with this new model.  Will submit a PR this morning.
Cheers
-steve

See https://github.com/helm/helm/pull/3982 for more details.

https://github.com/istio/istio/pull/9847

Subscribing to this - we have a similar issue with cert-manager too.
To roughly summarise the current position, which I think applies to Istio too:

Users upgrading from a release without the annotation see all their CRDs deleted (which is really, really bad)
Users who upgrade and then manually fix it (by manually deleting/creating CRDs), will not be able to upgrade if we remove the annotation
Users who install for the first time with the annotation will not be able to upgrade if we remove it, and won’t get updates to CRDs if we keep it

I'm hoping to hear back from the wider Helm community on what a recommended path to fixing this is - I think a 2-phase Helm install may be required.

At AutoTrader we opt for two phased deployments (managed with helmfile)
because of this (not just istio)
On Fri, 9 Nov 2018, 2:18 pm James Munnelly<EMAIL_ADDRESS>wrote:

Subscribing to this - we have a similar issue with cert-manager too.
To roughly summarise the current position, which I think applies to Istio
too:

Users upgrading from a release without the annotation see all
their CRDs deleted (which is really, really bad)
Users who upgrade and then manually fix it (by manually
deleting/creating CRDs), will not be able to upgrade if we remove
the annotation
Users who install for the first time with the annotation will not
be able to upgrade if we remove it, and won’t get updates to CRDs if
we keep it

I'm hoping to hear back from the wider Helm community on what a
recommended path to fixing this is - I think a 2-phase Helm install may be
required.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/9604#issuecomment-437372398, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABavicCoYmKCpl07VH8RgaYsFDPQ1xh7ks5utY6rgaJpZM4X_LDc
.

@munnerz your further along than we are in understanding this problem.  For your third bullet is there any workaround?
My current recommended approach for proceeding is to immediately remove the crd-install annotation since it completely blocks upgrades.
This will leave some fallout for operators that have installed with the crd-install annotation in the pastl.  I'm really not sure what to tell our operators that have used crd-install with Helm 2.10.0 already - as it appears they have no upgrade path.
@costinm ^^
Cheers
-steve

I can't see any upgrade path either at the moment either, it's a bit of a mess.  Even if you separate it out into two charts (eg install CRD definitions first) then unless the previously manually added definitions (eg kubectl apply -f, or helms crd-install hook) are manually remove first, it'll fail.
However, manually removing those CRD's for people will also remove all of their implements (VirtualServices, DestinationRules etc).  Which is a no go either as @munnerz said - really really bad.
I see nothing but disruptive upgrade paths.
I'm wondering if it's worth tracking this in another issue now perhaps as this one was about the mixer load which was identified as it constantly scanning for CRDs, feels like a separate issue that upgrades are broken?

@mandarjog - I offered to resolve this PR thinking it was solvable by breaking out the charts.  I suspect you are adding a fail-open retry to the mixer crd detection loop.  I'll leave you to it as I've got all day commitments today->Wednesday.
Cheers
-steve

I am going to fix the issue by

Mixer will wait more efficiently on the crds
It will not wait for ever

I think I have a way to fix this - I was planning to push for it in 1.2, but maybe we can do parts of it sooner.
Last env meetings we had pretty good agreement to introduce an 'operator' and reorganize the install/upgrade and configs around features ( telemetry, control plane, etc ) instead of components ( mixer, pilot ).  We also have strong security reasons to better isolate the istio components - an admin making
changes to our grafana templates should not have access to Citadel root private key for example. I did a bit of prototyping, and it appears possible to install separate namespaces for pilot, ingress, egress, telemetry - and even run different versions at the same time, so people upgrading could test the new
version along the old one ( we call it 'canary' ), without disruption. It already works with the code we have,
using annotations on the pod to select a different pilot namespace for some pods - but with small changes
to sidecar injector we can make it much simpler.
So my proposal will be to keep only Citadel ( which is very hard to move out ) and possibly Galley in istio-system, with no custom configs using our CRDs. In addition we are already planning to have an operator -
the first job could be to maintain the CRDs. That means no change to the existing 1.0 helm or crd file - so nothing will be broken ( and nothing will be added there ). Pilot already has code to auto-create CRDs, it can be moved to a separate component, or Galley could do it if we keep it in istio-system.
I'll send an email to istio-dev or discuss this in next env meeting - my original motivation was improving security and allowing users to test a new release in parallel with the old one.

Addressed by #9922


merge buttons

Closes #46

Created a single button component which can be reused when suited
Removed shadows
made text area height in copy link page flexible (so it wont be tightly packed when viewing in low-width screens)
removed unused button components and their css

Hey can you perform a git pull. I just merged a pull request so need to perform it for the changes to be reflected.

 I just merged a pull request so need to perform it for the changes to be reflected. @ThejasKiranPS

ok


Passing an empty args list

This currently fails:
julia> @chain begin
       1
       sin()
       end
ERROR: LoadError: Can't prepend first arg to expression sin() that isn't a call.

It would be useful to have it as now you have to e.g. write:
julia> @chain begin
       [1,2]
       sin.(_)
       end
2-element Array{Float64,1}:
 0.8414709848078965
 0.9092974268256817

instead of just:
julia> @chain begin
       [1,2]
       sin.()
       end
ERROR: LoadError: Can't prepend first arg to expression sin.() that isn't a call.

Oh interesting, I must have overlooked that case because when you have no arguments, you can also just write sin, and for the broadcasting version you can write @. sin as a special case. I'll look into it!

Oh interesting, I must have overlooked that case because when you have no arguments, you can also just write sin, and for the broadcasting version you can write @. sin as a special case. I'll look into it!

Another corner case:
julia> @chain 2 begin
       "$sin"
       end
ERROR: LoadError: Can't prepend first arg to expression "$(sin)" that isn't a call.

julia> @chain 2 begin
       "$(sin(_))"
       end
"0.9092974268256817"

Another corner case:
julia> @chain 2 begin
       "$sin"
       end
ERROR: LoadError: Can't prepend first arg to expression "$(sin)" that isn't a call.

julia> @chain 2 begin
       "$(sin(_))"
       end
"0.9092974268256817"

CC: https://bkamins.github.io/julialang/2021/01/15/chain.html
:smile:

CC: https://bkamins.github.io/julialang/2021/01/15/chain.html
:smile:

I've just fixed sin(), sin.() and somefunc.(arg2), thanks again for the heads-up!
But I don't think the string example makes sense, to be honest, or I'm misunderstanding. Your interpolated string syntax becomes equivalent to string(sin), so to splice in a first argument to that call would result in string(2, sin), so "2sin", not string(sin(2)). Your intent is very clear in the second example, even though you need four parentheses and an underscore, of course.. But it seems convoluted to add a case for "first function call within a string interpolation"

I've just fixed sin(), sin.() and somefunc.(arg2), thanks again for the heads-up!
But I don't think the string example makes sense, to be honest, or I'm misunderstanding. Your interpolated string syntax becomes equivalent to string(sin), so to splice in a first argument to that call would result in string(2, sin), so "2sin", not string(sin(2)). Your intent is very clear in the second example, even though you need four parentheses and an underscore, of course.. But it seems convoluted to add a case for "first function call within a string interpolation"

Thank you!
The point is that:
julia> "$sin"
"sin"

so the same should happen within @chain wrapped block I would assume. And now it errors.

Thank you!
The point is that:
julia> "$sin"
"sin"

so the same should happen within @chain wrapped block I would assume. And now it errors.

But it is a corner case, so probably it can be left as is. I have not look at the expressions generated to check how easily such things could be fixed.

But it is a corner case, so probably it can be left as is. I have not look at the expressions generated to check how easily such things could be fixed.

yes it errors because @chain expects every line to have an underscore somewhere, or be a call of some kind that a first argument can be spliced into. "$sin" has no underscore but it's also not a call, so it doesn't make sense within a chain

yes it errors because @chain expects every line to have an underscore somewhere, or be a call of some kind that a first argument can be spliced into. "$sin" has no underscore but it's also not a call, so it doesn't make sense within a chain

OK - this makes sense as this works:
julia> @chain 2 begin
              "$_ $sin"
              end
"2 sin"

and this works:
julia> @chain 2 begin
              print("$sin")
              end
2sin

I was reading the error message incorrectly - I thought it referred to $sin while it refers to the whole string. Thank you for explaining.

OK - this makes sense as this works:
julia> @chain 2 begin
              "$_ $sin"
              end
"2 sin"

and this works:
julia> @chain 2 begin
              print("$sin")
              end
2sin

I was reading the error message incorrectly - I thought it referred to $sin while it refers to the whole string. Thank you for explaining.


Add difference in execute method's response for trilogy and mysql2 to the documentation

This pr has been created because when we switched to trilogy from mysql2 recently we faced an issue with the usage of ActiveRecord::Base.connection.execute. We are using the response we get from this method call but the way we use this response breaks when we switch to trilogy from mysql2.
This is because of the difference in the response object we get when using trilogy and mysql2. This difference was not mentioned in the mysql2 gem compatibility section of the documentation. This commit adds these changes to the documentation to make it clear.
If there's any additional context that should be included here, I'd be happy to add it.

Thank you for the contribution!
This section is for documenting notable differences between this gem and the mysql2 gem, not for documenting differences between the corresponding Active Record adapters. That documentation would belong somewhere in Rails, so I'm going to close this issue.
(FWIW I think execute with the Trilogy adapter is meant to return Trilogy::Result, not Activerecord::Result. It's possible that isn't quite right in Rails 7.2, but I think it works that way on Rails main. Although either way it's not expected to be 100% compatible with Mysql2::Result.)


Container's Parameter WebUI gets ignored

Environment
Docker
Version
1.0 (2022-05-14)
Describe the problem
Actions:

install container Homarr from Unraid's apps
in the field WebUI enter port 80
open logs

Expected Behavior:

logs say: Listening on port 80
WebUI is accessible on port 80

Actual behavior:

logs say: Listening on port 7575
WebUI is accessible on port 7575

Additional info
/app/server.js
const currentPort = parseInt(process.env.PORT, 10) || 3000
should be changed to
const currentPort = parseInt(process.env.TCP_PORT_7575, 10) || 3000
Please tick the boxes

[X] You've read the docs
[X] You've checked for duplicate issues
[x] You've tried to debug yourself

P.S. here's docker run command
/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d --name='Homarr' --net='br0' --ip='<IP_ADDRESS>' -e TZ="Europe/Berlin" -e HOST_OS="Unraid" -e 'TCP_PORT_7575'='80' -v '/mnt/user/appdata/homarr':'/app/data/configs':'rw'

/app/server.js
const currentPort = parseInt(process.env.PORT, 10) || 3000
should be changed to
const currentPort = parseInt(process.env.TCP_PORT_7575, 10) || 3000

@semioniy
Can you still load webpage?
What port works to load page?
The unraid app isnt managed by homarr. 99% sure if that

As is, I can load the page on port 7575, even though WebUI port=80.
After changes listed in Additional info I can access the page on port 80.

AFAICS, variable TCP_PORT_7575 is meant exactly for that, but it seems that in server.js variable PORT is used instead.

Env PORT is used to set port in docker image. Its not supposed to change. Supposed to set port using ’docker run -p port:7575’
Does it let you do that anywhere?

Does it let you do that anywhere?
Not sure what you mean with that question.
Homearr container is started with
docker run -d --name='Homarr' --net='br0' --ip='<IP_ADDRESS>' -e TZ="Europe/Berlin" -e HOST_OS="Unraid" -e 'TCP_PORT_7575'='80' -v '/mnt/user/appdata/homarr':'/app/data/configs':'rw'
I did not set TCP_PORT_7575 myself - so it probably is read from WebUI parameter, which IS set to 80.

ok. What settings can you set when you setup the app?
I'm not sure how unraid sets up its docker images. Never used it. Is there a link to the homarr unraid app? Will take a look at it.

The unread app was not configured correctly, it seems. The webui should set env PORT
I'm going to look at it more and should be able to get it fixed.
For now, it will have to stay as 7575 unless you can add a custom environment variable named as PORT with 80. that may work if it can be done even

@SmartPhoneLover Can you change it so the webui setting uses the variable PORT not TCP_PORT_7575

Does it let you do that anywhere?

Not sure what you mean with that question.
Homearr container is started with
docker run -d --name='Homarr' --net='br0' --ip='<IP_ADDRESS>' -e TZ="Europe/Berlin" -e HOST_OS="Unraid" -e 'TCP_PORT_7575'='80' -v '/mnt/user/appdata/homarr':'/app/data/configs':'rw'
I did not set TCP_PORT_7575 myself - so it probably is read from WebUI parameter, which IS set to 80.

We set the 7575 port manually, I think NextJS has an env variable that it reads from when no ports are provided

@SmartPhoneLover Can you change it so the webui setting uses the variable PORT not TCP_PORT_7575

Sorry for the late reply.
But, I didn't understand what was the problem discussed here.
If you are talking about just a mismatch with the port configured inside the unRAID template and the one shown in the console (logs), the 7575 port will be kept, even if you change it from the template (basic view). But why? Because the original (internal) port is set in the 'WebUI' field, as: 'http://[IP]:[PORT:7575]/' and inside the container itself (now adjustable using the PORT var).
Anyway, if you need to change the internal port for whatever reason, I have added the 'PORT' variable to the template 😉.

Sorry for the late reply.
But, I didn't understand what was the problem discussed here.
If you are talking about just a mismatch with the port configured inside the unRAID template and the one shown in the console (logs), the 7575 port will be kept, even if you change it from the template (basic view). But why? Because the original (internal) port is set in the 'WebUI' field, as: 'http://[IP]:[PORT:7575]/' and inside the container itself (now adjustable using the PORT var).
Anyway, if you need to change the internal port for whatever reason, I have added the 'PORT' variable to the template 😉.
But, when doing so, be sure to also adjust both WebUI fields accordingly, if not, you won't be able to open the GUI.


CircleCI workflows are broken due to missing permission

Currently, no CircleCI job is able to run. They fail with
Using SSH Config Dir '/home/circleci/.ssh'
git version 2.38.2
Cloning git repository
Cloning into '.'...
<EMAIL_ADDRESS>Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

exit status 128

For example: https://app.circleci.com/pipelines/github/pytorch/vision/22512/workflows/5383f39a-13e8-4b22-a869-a2faa8e3e66a/jobs/1804282
This is most likely related to rotating our secrets in response to https://circleci.com/blog/january-4-2023-security-alert/.
cc @seemethere @malfet @atalman

Had the same problem with RL
Here's what I did:
Go to circleci settings and deactive the ssh key:
Project settings > SSH Keys > Deploy Key
Deactivate it by clicking on the right cross.
Then from our meta OSS tool, re-activate circleci which should be deactivated.
Worked for me, hoping it does for you
cc @NicolasHug

Thanks for the tips @vmoens
@pmeier I just completed the steps above and re-triggered https://github.com/pytorch/vision/pull/5009. Let's see if it works

Looks like it worked: https://app.circleci.com/pipelines/github/pytorch/vision/22514/workflows/2f117247-9236-4be3-a950-546c202d0bfd/jobs/1804317
(this one is red but at least it's running).
Good to close @pmeier ?

Yeah, the failure is related to #7060. So yes, I think we are good. Thanks @vmoens for the instructions and @NicolasHug for acting on them!


refactor(datepicker): remove circular dependencies

Adjusts a couple of types in order to avoid circular dependencies.

@crisbeto passes presubmit, just needs rebase

Rebased.


licenses.nuget.org documentation

Added a page describing the licenses.nuget.org protocol.

OPS Build status updates of commit 4a5da44:
:clock10: Preparing: average preparing time is 40 sec(s)

OPS Build status updates of commit 4a5da44:
:clock10: Incremental building: average incremental building time is 22 sec(s)

OPS Build status updates of commit 4a5da44:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit a4ad0d1:
:clock10: Preparing: average preparing time is 40 sec(s)

OPS Build status updates of commit a4ad0d1:
:clock10: Incremental building: average incremental building time is 21 sec(s)

OPS Build status updates of commit a4ad0d1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit 86bc17a:
:clock10: Preparing: average preparing time is 40 sec(s)

OPS Build status updates of commit 86bc17a:
:clock10: Incremental building: average incremental building time is 22 sec(s)

OPS Build status updates of commit 86bc17a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit f94e7a8:
:clock10: Preparing: average preparing time is 40 sec(s)

OPS Build status updates of commit f94e7a8:
:clock10: Incremental building: average incremental building time is 22 sec(s)

OPS Build status updates of commit f94e7a8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit 5343283:
:clock10: Preparing: average preparing time is 40 sec(s)

OPS Build status updates of commit 5343283:
:clock10: Incremental building: average incremental building time is 22 sec(s)

OPS Build status updates of commit 5343283:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit c43bed9:
:clock10: Preparing: average preparing time is 40 sec(s)

OPS Build status updates of commit c43bed9:
:clock10: Incremental building: average incremental building time is 21 sec(s)

OPS Build status updates of commit c43bed9:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit 507db42:
:clock10: Preparing: average preparing time is 41 sec(s)

OPS Build status updates of commit 507db42:
:clock10: Incremental building: average incremental building time is 21 sec(s)

OPS Build status updates of commit 507db42:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit 7b4799a:
:clock10: Preparing: average preparing time is 41 sec(s)

OPS Build status updates of commit 7b4799a:
:clock10: Incremental building: average incremental building time is 21 sec(s)

OPS Build status updates of commit 7b4799a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

OPS Build status updates of commit ebebcac:
:clock10: Preparing: average preparing time is 41 sec(s)

OPS Build status updates of commit ebebcac:
:clock10: Incremental building: average incremental building time is 21 sec(s)

OPS Build status updates of commit ebebcac:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/TOC.md
:white_check_mark:Succeeded
View

docs/reference/licenses.nuget.org.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Migrate to prop-types package (React.PropTypes has been deprecated)

React 16 (the default version for RN 0.45) has deprecated React.PropTypes.  The package prop-types should be used instead.
https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html
Console log react-native-autocomplete-input/index.js line 18:
ExceptionsManager.js:71 Warning: View.propTypes has been deprecated and will be removed in a future version of ReactNative. Use ViewPropTypes instead.
All other PropTypes should use the prop-types package as well.  Remove PropTypes from
import React, { Component, PropTypes } from 'react';
and add
import PropTypes from 'prop-types';

PR #55 addresses the React.PropTypes and View.propTypes deprecations.
The merge of @kesha-antonov's PR overwrote @Dmytro Gorelik's fix for the keyboardShouldPersistTaps prop.  This PR restores that since it needs to support both bool and string types.

@peacechen Different Dmytro. Gorelik is @dhorelik

Sorry about that. Github automatically linked to you instead of gorelik.

Closed because of #55.

It seems this has come up again but slightly different. Here's a console warning
ViewPropTypes will be removed from React Native. Migrate to ViewPropTypes exported from 'deprecated-react-native-prop-types'.
at node_modules/react-native-autocomplete-input/index.js:85:38 in <global>


FAQ, : the Talao FAQ has been added to Altme, replace it by the Altme FAQ

Json files are there
https://github.com/TalaoDAO/context

Same change FAQ from Talao wallet, take the correct file


Account for keyframes when performing synchronization

Offering the best experience from the fansub community: https://unanimated.github.io/timing-basics.htm
Then it snaps to keyframes any lines that
1. start 250ms or less before a keyframe
2. start 250ms or less after
3. end 400ms or less before
4. end 500ms or less after.

Hi,
Thanks for this, it looks like a useful resource. I'm going to change the name of this issue from "Offering from fansubs" to "Account for keyframes when performing synchronization" since I think that's the original intention behind opening this issue; please correct me if I'm wrong.

Everything is correct. Sometimes it's better for subs to be connected to the keyframes in order to reduce a number of pops on the screen and to ease for the viewer to watch the video.
I can elaborate on the issue and provide any information needed because me personally and my colleagues from the fansub community find your idea very interesting. It can facilitate the process of subtitles editing in several times.


Renewed unified display view

Based on view based NSTableView rather than on PXListView
Requires OS X Lion or better

looks great :smile:


Added related-projects.md file

Added related projects page. I was not aware of projects mentioned in Issues until I found them just by accident.

Many thanks, this is great. I;m just adding another project which I just found in the issues..

Oh you did already add AutoStarter many thanks!

I did just move this directly to the API section to the very top to increase visibility and I have added proper contribution to make it clear those projects are not directly associated with DKMA, but rather are 3rd party projects..


Snippets - A transformation by regex and condition on a variable fed by a choice does not give the expected result

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.63.0
OS Version: Windows 10 "1909" x64

A transformation by regex and condition based on the result of the capture by regex, on a variable fed by a choice, does not give the expected result: it is always the chosen value which is returned, never the result of the expression of the condition.
The same construction applied to an entered variable, even fed by the default value, produces the expected result.
Steps to Reproduce:

create these 2 snippets

    "usecase1": {
      "description": "regex on input value",
      "scope": "plaintext",
      "prefix": "usecase1",
      "body": [
        "${1:OK}",
        "${1/(OK)/${1:?true:false}/}"
      ]
    },
    "usecase2": {
      "description": "regex on choice value",
      "scope": "plaintext",
      "prefix": "usecase2",
      "body": [
        "${1|OK,KO|}",
        "${1/(OK)/${1:?true:false}/}"
      ]
    },

create a .txt file

call "usecase1" snippet and accept "OK" default value: "true" is displayed as expected

call "usecase1" snippet and enter a value other than "OK": "false" is displayed as expected

call "usecase2" snippet and select "OK" value: "OK" is displayed... "true" is expected

call "usecase2" snippet and select "KO" value: "KO" is displayed... "false is expected

Choice is trigger suggest again, making this snippet transformation on nested suggestions which is something that's tracked here https://github.com/microsoft/vscode/issues/112362

/duplicate of https://github.com/microsoft/vscode/issues/112362

Hi,
It doesn't seem like the same problem to me...
#112362: nested snippets
#139008: regex on placeholder with choice


CDR-631

Added manifest generating script, removed inline source mapping, added global access to .env variables and an env.sample file.

The failing of that lint check is because of the use of assert inside of the import on line 13 of generate-manifest.js. That method is how we do it in the widgets library. The terminal says this about it...
"ExperimentalWarning: Importing JSON modules is an experimental feature. This feature could change at any time"
Trying to disable that eslint rule has not been successful. Suggestions? Perhaps we don't assert for type json there?


Unknown class

Hi,
whan I want to assign properties to CircleProgressView class instance, Xcode tells me this: "Unknown class CircleProgressView in Interface Builder file."
I am assigning it in cell like this:
cell.circleProgressView.progress = 0.64

In cell class I have this connected with storyboard:
@IBOutlet weak var circleProgressView: CircleProgressView!

I have no solition yet, nothing works for me. Thank you.

It has to do with the module name that is in the project, double check in IB that you have a module name under the class type field in the inspector window.


Local pull request success status testing

Docs Build status updates of commit aff756b:
:clock10: Pending: waiting for processors (5 builds ahead of you)
:warning: Docs Build is busy, currently there are 5 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit aff756b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

E2E_DocsBranch_Dynamic/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Support for RTX 30 series

The bundle works really well on my old 2080 but when I switch to my 3080 I run into cuda errors.
Is it possible to compile this to work with the newer cards?
Thanks!

Hi, if you launch nvidia-smi what coda version it says your driver is linked to?
I think it one could try to install different pytorch builds and nvidia drivers but I don’t have any access to the machine with 3080 at the moment.
Let me know your coda version and let’s try a couple of options.

On 18 Jan 2021, at 00:29, halalmeats<EMAIL_ADDRESS>wrote:
The bundle works really well on my old 2080 but when I switch to my 3080 I run into cuda errors.
Is it possible to compile this to work with the newer cards?
Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/talosh/flameTimewarpML/issues/5, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMBGYKBICHLHSXFJKTTYTUTS2N6E5ANCNFSM4WGQ3XXA.

Hi, if you launch nvidia-smi what coda version it says your driver is linked to?
I think it one could try to install different pytorch builds and nvidia drivers but I don’t have any access to the machine with 3080 at the moment.
Let me know your coda version and let’s try a couple of options.

On 18 Jan 2021, at 00:29, halalmeats<EMAIL_ADDRESS>wrote:
The bundle works really well on my old 2080 but when I switch to my 3080 I run into cuda errors.
Is it possible to compile this to work with the newer cards?
Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/talosh/flameTimewarpML/issues/5, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMBGYKBICHLHSXFJKTTYTUTS2N6E5ANCNFSM4WGQ3XXA.

Hey there,
I'm running cuda version 11.2 and driver 460.32.03 (if relevant)
That would be awesome! Thanks

Hey there,
I'm running cuda version 11.2 and driver 460.32.03 (if relevant)
That would be awesome! Thanks

The core library here calls pytorch and their website is https://pytorch.org. There's only 11.0 currently mentioned currently, so you could probably try: pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html as suggeted. Make sure you're running it from within miniconda3 environment it should be activated before with init_env script. There are some cutting-edge nightly unstable builds as well, maybe worth to try if the one above did not help: pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cu110/torch_nightly.html

The core library here calls pytorch and their website is https://pytorch.org. There's only 11.0 currently mentioned currently, so you could probably try: pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html as suggeted. Make sure you're running it from within miniconda3 environment it should be activated before with init_env script. There are some cutting-edge nightly unstable builds as well, maybe worth to try if the one above did not help: pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cu110/torch_nightly.html

That worked a treat, thanks! Just using the stable torch builds was enough. RAD!

That worked a treat, thanks! Just using the stable torch builds was enough. RAD!

Pleased to hear that!
Could you please try to use this version as well: https://github.com/talosh/flameTimewarpML/releases/tag/v0.2.0.beta.018
It has major speed improvements (literally 10x faster) with removing congestion in output queue. This should allow you to really use 3080 speed. Miniconda3 is backed up on bundle unpack so it should be fine just to replace the newly installed one with the one backed up to get cuda11 back

Pleased to hear that!
Could you please try to use this version as well: https://github.com/talosh/flameTimewarpML/releases/tag/v0.2.0.beta.018
It has major speed improvements (literally 10x faster) with removing congestion in output queue. This should allow you to really use 3080 speed. Miniconda3 is backed up on bundle unpack so it should be fine just to replace the newly installed one with the one backed up to get cuda11 back

Just gave it a test. It is definitely faster! (Previous version was averaging ~2.5fps on the 52000x1200 image sequence im working on. New version is more like 5fps)
However, I'm receiving this error when timewarping a large file sequence. it always drops out on the same frame number. Write buffer fule?
https://i.imgur.com/OxScoww.png

Just gave it a test. It is definitely faster! (Previous version was averaging ~2.5fps on the 52000x1200 image sequence im working on. New version is more like 5fps)
However, I'm receiving this error when timewarping a large file sequence. it always drops out on the same frame number. Write buffer fule?
https://i.imgur.com/OxScoww.png

I will have to look into it it when I have time it comes from Linux and has to do with files limit. Could you try to check yours and increase it as discribed here: https://www.tecmint.com/increase-set-open-file-limits-in-linux/

I will have to look into it it when I have time it comes from Linux and has to do with files limit. Could you try to check yours and increase it as discribed here: https://www.tecmint.com/increase-set-open-file-limits-in-linux/

this looks like a bug in open-cv library: https://github.com/opencv/opencv/issues/12342
So the workaround at the moment is to increase max number of open files for OS

this looks like a bug in open-cv library: https://github.com/opencv/opencv/issues/12342
So the workaround at the moment is to increase max number of open files for OS

Setting the user level limits in /etc/security/limits.conf worked! I didn't bother testing whether it was the soft or hard setting (or both) which fixed the issue.
The sysctl method doesn't work for this issue.
Thanks!

Setting the user level limits in /etc/security/limits.conf worked! I didn't bother testing whether it was the soft or hard setting (or both) which fixed the issue.
The sysctl method doesn't work for this issue.
Thanks!


Change API of Reconstructor and ShowerProcessor to allow multiple reconstructions and common predictions

Please describe the use case that requires this feature.
Currently, the ctapipe.reco.Reconstructor baseclass has the API __call__(self, event: ArrayEvent) -> ReconstructedGeoemtryContainer.
This is inflexible, as it makes it impossible to have reconstruction algorithms that directly predict a combination of geometry, energy and particle type, like ImPACT, machine learning, etc.
Also, ShowerProcessor only allows a single algorithm.
Describe the solution you'd like
Change the API of the general base Reconstructor to be __call__(self, event) -> None, filling any dl2 container it generates into the event structure.
Change ShowerReconstructor to allow a list of Reconstructor base classes that are executed in order.
I.e. the config should look like this:
ProcessorTool:
    ShowerProcessor:
        reconstructors:
            - HillasReconstructor
            - HillasIntersection
            - EnergyRegressor
            - ImPACT
            - ParticleIDClassifier
        ParticleIDClassifier:
             model_path: ...
        ImPACT:
             template_path:
             geometry_seed: HillasReconstructor
             energy_seed: RandomForestRegressor

This would still (due to how traitlets works) have the limitation of not being able to e.g. use different configurations of the same reconstructor but would be a big step forward
Describe alternatives you've considered
Additional context
This means that also the classes in the new ml branch should then be subclasses of Reconstructor

The original plan we discussed in the f2f meeting was to separate Reconstructors and AdvancedReconstructors (those that need a previous reconstructor as seed input, like ImPACT and the 3D Model).  With this list method we might not need that, as the order is clear, and it would be up to the user to ensure e.g. that ImPACT comes after HillasReconstructor.    If so, we should ensure there is some automatic check that if an AdvancedReconsructor is in the list, that the required "seed" reconstructors are earlier in the list.
Or we could stick with that separation to be more robust to accidental misordering.

Change the API of the general base Reconstructor to be call(self, event) -> None, filling any dl2 container it generates into the event structure.

might be better/cleaner to have reconstructors return the containers only, and let ShowerProcessor fill them into the correct event structure in a common way. This allows them to be used without a full event chain, which makes testing and external use simpler, and it means the logic for filling the event is not spread over each implementation.


"var let" should be allowed in nonstrict mode

The following code should be allowed in nonstrict mode but currently throws an error:
var let = 10;

Related bug from Espree: https://github.com/eslint/espree/issues/149
Works correctly in Esprima and Shift.

Dup of #227. PR available at #317.

Oops, sorry!


Direct links to images

Is your feature request related to a problem? Please describe.
I'd like to use pigallery2 as personal photo hosting with the ability to use images URLs in self-hosted blog
Describe the solution you'd like
To be able to get direct links to images for hotlinking. However, this creates some problems like "should it be possible to get direct links to private folders" or "How to deal with temporarily shared images"
Describe alternatives you've considered (optional)
Running an nginx container looking at the same images directory as pigallery2. This creates another layer of problems like bruteforcing paths.

I think this is a duplicate of #257 please see comments there.

Looks like really a duplicate, sorry! Closing the issue.


Tokenizer misses some input

The following code (tokenizing #help;; ):
#r "FSharp.Compiler.Service.dll"

open Microsoft.FSharp.Compiler.SourceCodeServices
let sourceTok = FSharpSourceTokenizer([], "C:\\test.fsx")
let tokenizer = sourceTok.CreateLineTokenizer("#help;;")

let rec tokenizeLine (tokenizer:FSharpLineTokenizer) state =
  match tokenizer.ScanToken(state) with
  | Some tok, state ->
      // Print token name
      printf "%s " tok.TokenName
      // Tokenize the rest, in the new state
      tokenizeLine tokenizer state
  | None, state -> state

tokenizeLine tokenizer 0L

Will produce:
HASH SEMICOLON_SEMICOLON val it : FSharpTokenizerLexState = 32769L

The text after the # is missing completely!!

Note #time;; is the same as is #q;;
For reference #r "test.dll";; works and has the following output:
> HASH WHITESPACE STRING_TEXT STRING_TEXT STRING_TEXT STRING_TEXT STRING SEMICOLON_SEMICOLON val it : FSharpTokenizerLexState = 32769L

For better or worse the range of the HASH token in this situation is from 0 to 4, i.e. it includes the help.  This is just how it is.

?  I don't get tokenisation for #help or #time, anything after the # seems to be dropped unless #r

In all those cases you get one token called HASH, and its range covers the range of the help token as well. It should all be considered one token covering all of #help, just like HASH_IF covers # and if
That's not exactly ideal though and the code that does the relevant transformations around # and #if here and here is an abomination - I have no idea who wrote this but it's seriously not happy.

Ill check next week, but Im sure #qu would just project a HASH token of length 1, its not until you have the whole #quit typed in that the correct tokenisation would occur.
It means that when you tokenise a line that currently looks like #qu if you look at the returned tokens it looks like the qu part does not exist, theres no semblance of an error of any remaining characters left in the line.

Ah, yes, you didn't mention that case :)


file name changed

When I use labelme2yolo to convert my label format, I find that the converted file name becomes a set of hexadecimal numbers, how do I change this problem

just change this line
https://github.com/GreatV/labelme2yolo/blob/04f7d2d259011fd179a692fb7d03dc801d3a59d8/src/labelme2yolo/l2y.py#L263

just change this line
https://github.com/GreatV/labelme2yolo/blob/04f7d2d259011fd179a692fb7d03dc801d3a59d8/src/labelme2yolo/l2y.py#L263

Ok, I have solved the problem, thank you


user.Username vs user.Id.OpaqueId

Authenticate returns a user object which has a username string but also an Id UserId which contains the usual idp and opaque_id.
This user is then set into the context of the CreateHome request by the gateway service auth provider.
When handling the CreateHome request in the storage fs implementation, I was reading the user.Username from there, but maybe it's better to read user.Id.OpaqueId instead?
Is there a situation where the two would be different? Maybe when there are multiple IDP's involved in a single site?

fwiw, caching in the authprovider is done on the basis of res.User.Id.OpaqueId

IMNSHU we need to be able to distinguish users by id. There might actually be two user with the same name when multiple idbs are involved, which is why the the code should never rely on the username. That the home path (and other) layouts can be configured to use the username is a huge shotgun pointed at the admins foot. That is the reason why ocis defaults to /users/{.Id.OpaqueId}.

That the home path (and other) layouts can be configured to use the username is a huge shotgun pointed at the admins foot.

Good point! Probably the only thing that would be really really safe would be something like /users/{.Id.Idp}/{.Id.OpaqueId}
I guess the .Id.OpaqueId is provided by the IDP in question, and the Username is ultimately provided by the auth manager.
In our case the auth manager has only one IDP backend, so then it's simple, we just set .Id.Idp to a fixed string like 'local' and then just copy .Id.OpaqueId to .Username. but it's definitely something to be aware of for sites that admit multiple IDPs


Range of gamepad axes mapped from digital source incorrect?

Some gamepads do not have analogue triggers. In such cases, the mapping simply assigns a digital source to the axis -- usually a button (apparently always, in the current SDL_GameControllerDB). Let's call this type of mapping a digital axis. This case is handled here in glfw. The resulting range of the axis is from 0 to 1.0 instead of the expected(?) -1.0 to 1.0. Other gamepads with analogue triggers produce values in the full range. I propose changing the behaviour to something like this:
state->axes[i] = js->buttons[e->index] ? 1.0f : -1.0f;
Similarly with the hat case just above.
Of course, one has to consider the behaviour with regard to standard "stick" axes, which in the default state are expected to return 0.0f. The current SDL_GameControllerDB contains only two cases of this

the 030000000d0f00000d00000000010000,hori with leftx:b4,lefty:b5 and
the<PHONE_NUMBER>0000008200000000000000,PS360+ v1.66 with leftx:h0.4.

The negative range is however never reached in these two mappings, which, to me, makes no sense either. On the other hand, cases of digital triggers in the database are countless.
Another option is to mimic SDL, which always uses the positive-only range with triggers. The current glfw implementation follows that of SDL, which also only returns positive values for digital axes. This makes sense in SDL, due to the different trigger range.
I appreciate any thoughts.

Personally, I think 0 to 1 range makes the most sense for both analogue and digital triggers. Is there a good reason we went with -1 to 1 in the first place?

Personally, I think 0 to 1 range makes the most sense for both analogue and digital triggers. Is there a good reason we went with -1 to 1 in the first place?

There is no good reason for it. It's my mistake, sorry. At this point I'm afraid enough people are running master that we'll have to wait until the next API revision to fix it. I'll make them all map to [-1,1] for now.
@sammko Thank you for spotting this!


How to save/print the predictions in run_race.py

How should we save the predictions tensor as output from tf.argmax in Line 388 of  run_race.py or print the value?
Would be good if you can point out or write some small code snippet to show that.
Thanks @kimiyoung and @zihangdai

https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator?hl=fa#predict

Thanks for replying @kimiyoung .
But doing for results in estimator.predict(input_fn=eval_input_fn): print(results) I'm getting
ValueError: Missing predictions.

Hi!
Can you see issue #89 in the XLnet repo in GitHub.
Actually, I tried doing
for results in estimator.predict(input_fn=eval_input_fn):
*print(results) *
I'm getting a ValueError: Missing Predictions
I added this code in Line 539 of run_race.py
On Sun 30 Jun, 2019, 3:24 AM Zhilin Yang<EMAIL_ADDRESS>wrote:

https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator?hl=fa#predict
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/zihangdai/xlnet/issues/89?email_source=notifications&email_token=AJAYWOYQSKTD3Z7LBQAFKQTP47K2PA5CNFSM4H4LCTE2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODY4AZVY#issuecomment-506989783,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJAYWO6TG4HAC5V5RDAJPCTP47K2PANCNFSM4H4LCTEQ
.


Is there a way to unload fonts loaded via loadFontFromList?

I'm making an application for Flutter Desktop.
I need to load and use the font files in the local directory.
I loaded font  through the loadFontFromList function.
I want to unload fonts that I no longer use.
But I couldn't find a way to unload the loaded font.
Is there a way to unload the fonts?

Hi @ellie-k-nam
This issue doesn't seem to describe a bug or a feature request. Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you


DE Translationfix

@mic92 please consider approving this no brainer as well - thank you.

I am not a maintainer of this project but a native German speaker.


Add Wish List module

Added wish list module as requested in issue #502

@thiennn
I can't say I've seen the wish list work for any guest user on any e-commerce site I've visited.
Can you give me more details on what you'd like the guest to be able to do? Do you want them to only be able to just add to the wish list, but when an account is created they can then edit and share it? Or do you want the guest to be able to do everything?
Thanks.

@teeshter , I just don't see any reason why we should limit this featured to only login-ed users. Wait, the wishlist is not sync across devices if the users are not login. Ok, your are right, login should be required to use this features. Thanks

@thiennn
Please see my changes. Thanks.


[Gardening] Fix alignment of ActiveActorStatus diagram

Each "-" is 2 bits, and each "|" has 1 bit on either side.

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test


Can you add a DEMO?

Can you add a DEMO link? Thanks!

Dude, https://github.com/StephanHoyer/mithril-node-render/issues/60


Sparkly dichondra: Set Max-Width on Pop-overs

Should prevent very wide pop-overs such as

Also removed extraneous padding on popover titles.

:rocket: PR was released in v0.19.0 :rocket:


Correct way to type React events

I have the following code:
handleChange: function(event:SyntheticEvent): void {
var el = event.target;
this.props.setNewLanguage(el.value);
}
Can you please advise on the correct way of typing this function so that it doesn't throw a type error accessing el.value.
I've found that using an union type works var el:HTMLInputElement|EventTarget but I'm not convinced that this is the correct way to type it.
Typing it as only var el:HTMLInputElement = event.target throws a type error.

You could cast event.target to be a HTMLInputElement or you could do a dynamic type test, also called a type refinement to see if event.target is-a HTMLInputElement and handle the else clause as an error.

Thank you very much for the suggestions. Using dynamic type test makes sense to me but  I'm not quite clear  on how to do the cast( and haven't found a suggestion in the docs).

Turns out I was wrong about casting (there's a blog post describing it). Dynamic type test is the way to go, IMO.

@gcazaciuc are you still having this issue?

It was resolved by checking if the event.target is instanceof HTMLElement before accesing data on it. It seems like flow is smart enough to detect than inside that if statement event.target must be of type HTMLElement. Thanks for your support( and looking forward for let/const in flow :)  )

Relates to #218
I'd hate to have to sprinkle this dynamic type test code into every event handler:
function myEventHandler(e: Event) {
  // We only know that e.target is an EventTarget
  e.target.value;
  if (e.target instanceof HTMLInputElement) {
    // Now we know it's an <input />, with a `value` property.
    businessLogic(e.target.value);
  } else {
    // error handling
  }
}

Is there a way I can define my own type that extends Event and sets a static expectation of HTMLInputElement?

Here is my current dynamic polymorphic method hack to shorten up usage:
// events.js
export function target<E> (e:Event, t:E):E {
  if (e.target instanceof E) {
    // Now we know it's an <input />, with a `value` property.
    return e.target
  } else {
    throw new Error(`Expected Event target to be ${E} but found ${typeof e.target}`)
  }
}

Called like:
import Events from '../../../utils/events'
Events.target(e, HTMLInputElement).checked

This appears to work.  More convenience methods could be added in events.js to shorten it further.

@rosskevin have you tried this in flow 0.32? It doesn't seem to work for me, confirming here, this is the same error I get locally running 0.32:
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVUCuA7AxgFwEs5sx8BDAJwHMBTfAHgFEA+MACloC4mA3W7PgA0ZHgEoeYAN6owYQlA60AdBRr152AM4U8tOIvxjpsuWGDAwAOURgEtMAGtstwvgDkWsOVINC2AAdMfHMWEQQ3AAtvMAADXnIYTFpYsADKOADaSnwAT2VTOUp6TEpSFTU6fFMAXzBaGC0HGTMySIykbFokJkoMynZYpgAPLIJaABMwPgEQyo18ODAAIwcAEil8OuXgsCg4HCmNvKyDetUqKprYsVrUGvQMHAJiUiqANUTkgDEMgFsACqXeicfiCLjTMFGExFEplMjA-Cg2YiAASAIAsgAZACSgWCTBgtD+szEygSSVo9yAA

@gnoff what I found out after writing that is that the second param must be available at runtime.  If the second param is just a declared type for flow, it will error at runtime.  I double checked and the code I had originally needed this code was refactored, so as of late I am not using it.

@gnoff this was my latest bit of code I used in this manner, it's a bit more paranoid:
export default function coerce<E>(o: any, t: E): E {
  if (t === undefined) {
    throw new Error('Type given is undefined, it must be available at runtime.  ' +
      `Did you pass in a flow-only type? Arguments: (${o}, ${t})`);
  }

  if (o instanceof t) {
    return o;
  } else {
    throw new Error(`${typeof o} was not expected.`);  // remember we don't have the type at runtime
  }
}

For anyone stumbling on this issue, there is a clean way of achieving this now:
_onTextChange = ({ target }: SyntheticInputEvent) => {
  this.setState({ text: target.value })
}

This must have changed again since @vincaslt's post - the SyntheticInputEvent type is now a parameterized generic type (I think that's the right terminology):
type Props = {};
type State = { value: string };

class MyInput extends React.Component<Props, State> {
    state = { value: '' };

    handleChange = (e: SyntheticInputEvent<HTMLInputElement>) => {
        const { value } = e.target;
        this.setState({ value });
    }

    render () {
        return (
            <input
                type="text"
                value={this.state.value}
                onChange={this.handleChange}
            />
        );
    }
}

const clickHandler = (e: SyntheticEvent<HTMLInputElement>)  => {
    e.preventDefault()
}

Uncaught TypeError: e.preventDefault is not a function

I specified preventDefault as a Function within the event object:
const clickHandler = (e: {
    preventDefault: Function
}) => {
    e.preventDefault()
}

You could also create an event object type and specify that e is that type of object:
type eventObject = {
    preventDefault: Function,
};

const clickHandler = (e: eventObject) => {
    e.preventDefault()
}

At least, both of those worked for me.


BulkInsert and overwrite existing

In RavenDB there's a BulkInsertOptions where you can specify OverwriteExisting:
documentStore.BulkInsert(options: new BulkInsertOptions
{
    OverwriteExisting = true
});

In Marten the bulk insert is done by: COPY mt_doc_test(\"data\", \"id\") FROM STDIN BINARY
We talked a bit in the gitter chat about how and if this can be done against Postgres. There was a mention of a trigger ON CONFLICT DO UPDATE but there might be other ways of doing it? (Note: My extremely limited Postgres 'skills' prevented me to create such a trigger and test locally...)
We use the BulkInsert - OverwriteExisting quite a lot in a couple of projects where we replace most of the db every hour or so, but we don't want to truncate before as we want to keep older record that wasn't in the last load (we have timestamps for each document so we can see what entries is old/outdated).
Without the overwrite support we have to use the session.Store(...) for each document and let the UPSERT sort it out, but since we're processing millions of records this will cause a bit of an overhead.
Any ideas?

@jenspettersson I think we've got two options, we could either:

Automatically add the ON CONFLICT trigger to handle the conflicts
Make the bulk insert quietly switch to using the normal Unit of Work/batched update command instead of Postgresql's "COPY" functionality.

Both would incur a performance hit, but I don't know which one would be worse. The second option would be faster to code out.

@jeremydmiller If I can get the ON CONFLICT trigger to work I can do some testing locally using both approaches (adding the trigger manually that is). Any tips on how the trigger could look like?

I struck out googling for that, and I think I'm mistaken because I don't see any option for ON CONFLICT for trigger definitions in the postgresql docs.

That explains... a lot! I started to doubt my googling skills there... =) Then there might not be another way than 2?

I had a quick look / google and there doesn't seem to be a clean way to do this with the built in COPY tool or a conflict trigger.
I don't know what you would think of this solution, but my idea would be that if overwrite existing is true :-

Create a new (temporary) table and execute the COPY into it
Insert any id's that don't exist into the primary table
Update any id's that exist in the primary table
Drop the new (temporary) table

This would at least allow for some bulk INSERT / UPDATE operations which should be pretty fast
Hopefully this would only be temporary until someone improves the COPY util in pgSQL to support overwrite

As I said in the gitter chat, I'm not a PG expert by far, but if the solution @jamesfarrer suggest is doable in a clean and secure way, then why not. It does feel a bit "Rube Goldberg" however ;)
I'm not in a position to call any shots here, so we might need @jeremydmiller to comment as well.

Throwing this link in here: http://stackoverflow.com/questions/30500560/import-and-overwrite-duplicate-rows.
@jenspettersson @jamesfarrer Do we want to throw away the duplicates, or overwrite? I suppose that it could be done with a mode like "Fast" / "IgnoreDuplicates" / "Overwrite"

It might be my severe "man cold" that's making me numb, but what's the difference between "throwing away" and "Overwrite" a duplicate?
Do you mean: First delete the duplicate and then insert a new instead of just overwriting it? I don't see a need for that, but then again, I think I'm missing something...

Ignore duplicate values altogether vs. last one in wins

Ah you mean if there's a duplicate within the new batch that are to be bulk inserted. Yeah that also need to be handled. In all my cases I have logic that handles duplicates within current batch before doing a bulk insert so I've never thought about this.

Yup I think the 3 config options make sense. For overwrite I think an update would be preferable. Deleting could cause potential FK exceptions specified on that document / table.
So for the 3 options..
Fast (Default) = standard copy as used today
IgnoreDuplicates would be
create temporary table import_issues as select * from issues limit 0; (I've cribbed this from that SO post but assume as we'd have the schema definition we'd use that)
copy import_issues from stdin;
begin transaction
insert into issues
select * from import_issues where id not in (select id from issues)
end transaction
Overwrite would be
create temporary table import_issues as select * from issues limit 0; (I've cribbed this from that SO post but assume as we'd have the schema definition we'd use that)
copy import_issues from stdin;
begin transaction
insert into issues
select * from import_issues where id not in (select id from issues)
update i set i.data = i2.data
from issues i
inner join import_issues i2 on i.id = i2.id
end transaction

I'm doing this one right now, might be ready tomorrow. Basically doing what @jamesfarrer suggested.


Exploding rocks

Remove rocks
Play explode animations
Notify to create new small rocks to Main

Rock explode animation
https://github.com/user-attachments/assets/0bebee1e-39d3-4fc1-8a49-be9d0ba49988

Notify to create new small rocks to Main
https://github.com/user-attachments/assets/c21a2a5a-52dd-40e4-b6b9-85f9472d3bd4


Minor tweaks

updated dependencies (old ones didn't work for me)
refactor cubes into cubes.py
fix 404 for bad cube names

@jbothma

Also changed the default username and password so that it is closer to production, so it's easier to setup locally.

Nice. LGTM


The CRD for the ClusterServiceVersion is missing field

When testing a CSV for an operator, I noticed an error which indicated the field, .spec.provider is unknown. The OLM version running in my Openshift cluster is 0.9.0.
sh-4.2$ /bin/catalog --version
OLM version: 0.9.0
git commit: dde64c5
sh-4.2$

A look at the CRD for the ClusterServiceVersion for that 0.9.0 version of OLM showed, the provider was not defined.
https://github.com/operator-framework/operator-lifecycle-manager/blob/master/deploy/ocp/manifests/0.9.0/0000_50_olm_03-clusterserviceversion.crd.yaml
However, whenever creating a CSV using the operator-sdk olm-catalog gen-csv command, the said field is created.
$ operator-sdk olm-catalog gen-csv --csv-version 0.0.1
INFO[0000] Generating CSV manifest version 0.0.1
INFO[0000] Fill in the following required fields in file deploy/olm-catalog/galera-operator/0.0.1/galera-operator.v0.0.1.clusterserviceversion.yaml:
	spec.keywords
	spec.maintainers
	spec.provider
INFO[0000] Created deploy/olm-catalog/galera-operator/0.0.1/galera-operator.v0.0.1.clusterserviceversion.yaml
$

Am not certain where this should be resolved between olm and the operator-sdk, but it does appear to be in use in some CSVs already.

This is resolved in newer versions of operator-sdk


axis label gets overlapped when tick labels increase in length

I am experiencing overlapping of the axis labels with the axis markers/numbers at certain zoom levels (when zoomed in).
I wonder if it is possible to fix this problem, like auto increase the gap between axis and its label based on the axis markers' length...? I attach two screenshots, the first showing no zoom, the second the zoomed state.
Thanks!
Best Regards,
edit: using Winform, ScottPlot 3.0.6

Hi @bukkideme thanks for letting me know about this issue!
You can get the extra space you need with something like:
plt.TightenLayout(padding: 20)

This is demonstrated in the cookbook: https://github.com/swharden/ScottPlot/tree/master/doc/cookbook#extra-padding
... however I'd certainly call this a bug! I'll update the code to automatically detect this problem and correct it when it arises. I'll issue this release on NuGet probably this weekend. Thanks again for bringing this issue to my attention!

Thanks for the workaround info and the later modification!

Scott, once fixed, I'll pull it and start working on the
non-orthogonal axis (#41)
----- Messaggio Originale -----
Da: "swharden/ScottPlot"
A:"swharden/ScottPlot"
Cc:"Subscribed"
Inviato:Tue, 23 Jul 2019 12:58:45 +0000 (UTC)
Oggetto:Re: [swharden/ScottPlot] Axis label overlaps with axis markers
(#47)
Hi @bukkideme [1] thanks for letting me know about this issue!

You can get the extra space you need with something like:

plt.TightenLayout(padding: 20)
This is demonstrated in the cookbook:

https://github.com/swharden/ScottPlot/tree/master/doc/cookbook#extra-padding
[2]
... however I'd certainly call this a bug! I'll update the code to

automatically detect this problem and correct it when it arises. I'll
issue this release on NuGet probably this weekend. Thanks again for
bringing this issue to my attention!
—

You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub [3], or mute the
thread [4]. [ { "@context": "http://schema.org", "@type":
"EmailMessage", "potentialAction": { "@type": "ViewAction", "target":
"https://github.com/swharden/ScottPlot/issues/47?email_source=notificationsu0026email_token=AB3I2BCLCM6J2MLPAI6I6S3QA3577A5CNFSM4IGD42Z2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2TAYQA#issuecomment-514198592",
"url":
"https://github.com/swharden/ScottPlot/issues/47?email_source=notificationsu0026email_token=AB3I2BCLCM6J2MLPAI6I6S3QA3577A5CNFSM4IGD42Z2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2TAYQA#issuecomment-514198592",
"name": "View Issue" }, "description": "View this Issue on GitHub",
"publisher": { "@type": "Organization", "name": "GitHub", "url":
"https://github.com" } } ]
Links:
[1] https://github.com/bukkideme
[2]
https://github.com/swharden/ScottPlot/tree/master/doc/cookbook#extra-padding
[3]
https://github.com/swharden/ScottPlot/issues/47?email_source=notifications&email_token=AB3I2BCLCM6J2MLPAI6I6S3QA3577A5CNFSM4IGD42Z2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2TAYQA#issuecomment-514198592
[4]
https://github.com/notifications/unsubscribe-auth/AB3I2BHADG7LMWJ6D6SM6Y3QA3577ANCNFSM4IGD42ZQ

Another problem, somewhat related to this. After zooming, the xaxis tick labels can also become overlapped. I imagine, when you fix the yaxis bug, you could do similar fix for the xaxis?
I imagine, in this case an automatic re-adjusting of the plotting frequency of the tick labels could do the fix...?
Screenshot:

The easiest way to recreate this bug is to zoom out like crazy

I can fix this "labels too wide problem" if that's ok for Scott.
And will add up the scaling factor label as requested in #54

This is what I came up with

Interesting concept! For scientific publications I often set the tick font size to the minimum allowed by a journal (usually 8pt). For this reason I'm less inclined to use more than one tick font size, and especially one smaller than the regular ticks.
I'm still thinking that an ideal solution would be more similar to the matplotlib style (touched on in #54). I also think it will produce more consistent label widths than trying to stick exponential notation in the labels themselves...

this issue will be corrected when the tick module is refactored (issue #57)


Move presentations storage outside of this repo

Repo is getting a little big with presentations, something like s3 would be better.

moving this file to s3 doesn't give us anything. We'd be better bringing in Doctrine ORM and setting up a PostgreSQL database at heroku (for free!)

Sorry @rossey I mean the PDFs of the slides.

The wip/yaml-config is going to fix this


Typo Fix

Fix typo in React-Tap-Event-Plugin section of "Get Started" page

Thanks @FoxxMD - this was fixed with #335. Just waiting for a release.


audacity 2.3.0

Please update to 2.3.2

audacity is a bit of an issue since they use fosshub to host the files, but fosshub doesn't allow direct download of files. they require you to manually download the file using a browser.

Audacity is updated @peterpans2013 and @kayone. This issue and its duplicate #4562 can be closed.


v1.0.2 Stable Merge

Description
Stable version v1.0.2 release.

Hotfix.
Fully tested on the newest commit. Sorry for bypass


Zoom to selected not working for some layers (on row click and drop down)

@tmcgee - I am configuring the search tool currently and am running into an issue of not being able to zoom to features when I select them in the table or the drop down.  My first 3 layers work but the next 4 do not.  The resulting search is appearing in the attributes table but I don't have the zoom functions.  The snippet below is the last layer that works (Reg Station) and the first that does not (Premise).
{
name: 'Reg Station',
expression: '', // additional where expression applied to all queries
idProperty: 'OBJECTID',
queryParameters: {
type: 'spatial', // spatial, relationship, table or database
layerID: 'reg', //// **** from operational layers -- might have to change this for the CMV -bft 10-14-17
sublayerID: 1, ///// **** from the rest URL of the layer -bft 10-14-17
outFields: ['*']
},
attributeSearches: [{
// can add to this later, if we want to do attribute selections
name: 'Select Reg Station',
searchFields: [
{
name: 'Reg Station by Gas System',
label: 'Reg Station by Gas System',
expression: '(UPPER(SYSTEM_NUM) LIKE UPPER('%[value]%'))',
placeholder: 'Enter Gas System Number',
required: false,
minChars: 2
}
],
title: 'Reg Stations (Selected)',
topicID: 'regstationSelected',
gridOptions: {
columns: [
{//1
field: 'G3E_FID',
label: 'G3E_FID'
}, {//2
field: 'MXASSETNUM',
label: 'MX Asset Num'
}, {//3
field: 'STATION_NAME',
label: 'Station Name'
}, {//4
field: 'STATION_NUM',
label: 'Station Number'
}, {//5 and 6
field: 'LOCATION',
label: 'Location'
}, {//7
field: 'TYPE',
label: 'Type'
}, {//8
field: 'INSPECTABLE_F',
label: 'Inspectable'
}, {//9
field: 'CUT_Q',
label: 'Cut'
}, {//10
field: 'RUN_Q',
label: 'Run'
}, {//12
field: 'DIAMETER_NOMINAL',
label: 'Diameter'
}, {//13
field: 'SYSTEM_NUM',
label: 'System Number'
}, {//14
field: 'DATE_INSTALLED',
label: 'Install Date',
get: function (object) {
return getDateTime(object.DATE_INSTALLED);
},
formatter: formatDate
}, {//16
field: 'CITY_NAME',
label: 'City'
}, {//17
field: 'FACILITY_CLASS',
label: 'Facility'
}, {//18
field: 'OP_CENTER',
label: 'OP Center'
}, {//19
field: 'OP_CENTER_CSS',
label: 'CSS OP Center'
}
                    ]
                }
            }

            ]
        }, {
            name: 'Premise',
            expression: '', // additional where expression applied to all queries
            idProperty: 'OBJECTID',
            queryParameters: {
                type: 'spatial', // spatial, relationship, table or database
                layerID: 'gas', //// **** from operational layers -- might have to change this for the CMV -bft 10-14-17
                sublayerID: 22, ///// **** from the rest URL of the layer -bft 10-14-17
                outFields: ['*']
            },
            attributeSearches: [{
                // can add to this later, if we want to do attribute selections
                name: 'Select Premise',
                searchFields: [
                    {
                        name: 'Select by Premise',
                        label: 'Select by Premise',
                        expression: '(UPPER(PREMISE_NUM) LIKE UPPER(\'%[value]%\'))',
                        placeholder: 'Enter Premise Number',
                        required: false,
                        minChars: 2
                    }
                ],
                title: 'Premise (Selected)',
                topicID: 'premiseSelected',
                gridOptions: {
                    columns: [
                        {
                            field: 'G3E_FID',
                            label: 'G3E_FID'
                        }, {
                            field: 'PREMISE_NUM',
                            label: 'Premise Number'
                        }, {
                            field: 'HOUSE_NUM',
                            label: 'House Number'
                        }, {
							field: 'LOCATION',
							label: 'Location'
						}, {
							field: 'CITY_NAME',
							label: 'City'
						}, {
                            field: 'STATE_NAME',
                            label: 'State'
                        }, {
							field: 'COUNTY_NAME',
							label: 'County'
						}, {
                            field: 'SUBSIDIARY',
                            label: 'Subsidiary'
                        }, {
                            field: 'DATE_INSTALLED',
                            label: 'Install Date',
                            get: function (object) {
                                return getDateTime(object.DATE_INSTALLED);
                            },
                            formatter: formatDate
                        }, {
                            field: 'OP_CENTER_CSS',
                            label: 'OP Center'
                        }, {
                            field: 'TYPE_UTILITY',
                            label: 'Utility'
                        }, {
                            field: 'COORD_X1_LL',
                            label: 'X'
                        }, {
                            field: 'COORD_Y1_LL',
                            label: 'Y'
                        }/* , {
                            field: 'FACILITY_CLASS',
                            label: 'Facility Class'
                        }, {
                            field: 'NODE1_ID',
                            label: 'Node 1 ID'
                        }, {
                            field: 'NODE2_ID',
                            label: 'Node 2 ID'
                        } */

                    ]
                }
            }

            ]
        },

Most often this is caused by the geometry (the shape field) not being included in the map service attributes or not being included in the outFields in the configuration for the search query.

so republishing the map service with the geometry included could fix the issue?

@DJA30 Another thing to verify is that the idProperty is the correct field and that field is included in the outFields in the configuration.

Thanks @tmcgee the republish with the geometry included fixed the issue.  I do have one more question though.  Does the Search widget ignore the Definition Query set in Arcmap?  I have multiple layers created from the same source, but they have different Definition Queries.  When I do a search on one layer it returns rows from other layers, and I believe this is preventing the zoom to on row click and highlight ability from functioning.

@DJA30 The Search widget or any client-side code that queries the data through the AGS REST interface cannot ignore the layer's Definition Query Expression set in the Map Service via ArcMap. You can append to the expression but you cannot override it. I believe this behavior was implemented by Esri back in AGS version 10.2 or thereabouts as security measure.


chart: Add Snapshot Maximum Count to the Settings

It was missing

Thanks @yardenshoham !

@mergify backport v1.6.x


Use EncodeUri() if part of the URL path or EncodeUriComponent() if used as a URL parameter

https://github.com/xdid-net/facebookpixel/blob/d2f161b6a12d3f0c01b545808d86e9ec2cfdc671/template.tpl#L54
When reviewing your template, we've noticed that it is using user-defined parameters to build a URL. It's best practice to use encodeUri() if part of the URL path or encodeUriComponent() if used as a URL parameter.

Fixed with new version


fix: support cors multi domain and wildcard in ingestion server

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license
Summary
support cors multi domain and wildcard in ingestion server
Implementation highlights
Change nginx conf to support cors multi domain and wildcard in ingestion server.
The following is the table of UI input, supported cors domains and ingestion stack input parameter(ServerCorsOrigin)

UI Input
Valid domains
Input stack string

https://example.com
https://example.com
"https://example.com“

http://example.com
http://example.com
"http://example.com“

http://*example*.com
http://xxxexamplexxx.com, http://example.com
"http://.*example.*\.com“

https://*example*.com
https://xxxexamplexxx.com, https://example.com
"https://.*example.*\.com“

http://example.com,https://abc.com
http://example.com, https://abc.com
"http://example.com|https://abc.com"

http://localhost
http://localhost:xxxx
"http://localhost“

http://<IP_ADDRESS>
http://<IP_ADDRESS>:xxxx
"http://<IP_ADDRESS>“

*
Any domain
".*"

Test checklist

[ ] add new test cases
[ ] all code changes are covered by unit tests
[ ] end-to-end tests

[ ] deploy web console with CloudFront + S3 + API gateway
[ ] deploy web console within VPC
[x] deploy ingestion server

[ ] with MSK sink
[ ] with KDS sink
[x] with S3 sink

[ ] deploy data processing
[ ] deploy data modeling

[ ] new Redshift Serverless
[ ] provisioned Redshift
[ ] Athena

[ ] deploy with reporting

Is it a breaking change

[ ] add parameters without default value in stack
[ ] introduce new service permission in stack
[ ] introduce new top level stack module

Miscellaneous

[ ] introduce new symbol link source file(s) to be shared among infra code, web console frontend, and web console backend

Let's merge with https://github.com/awslabs/clickstream-analytics-on-aws/pull/158

Let's merge with #158

Done

duplicated with #158


Inifinite loop on iteration

I imagine it has something to do with Int32 vs Int64, nonetheless...
(0..10000000000).each{ |x| x }

probably shouldn't loop forever. (I let it run for 35 minutes before I gave up.) Note,
(0..1000000000).each{ |x| x }

took just 1.82 seconds.

This is because<PHONE_NUMBER>0 is a Int64, and the iterated value is Int32, so it eventually overflows. In the future this will raise an overflow exception.

You can't make it smart enough to use a larger iterator? Can't it look at the return type of #size?

A possible solution is to disallow Ranges with two different types. But that may be too much of a limitation in some scenario.

you'd think/hope you could make this a compile time failure ideally...maybe .each could only accept ranges within Int32 range somehow?

Maybe when parsing a range tokens if they are literals we could use the larger type BUT that special rule will open the scenario of int32_variable...int64_literal, should it be cast?
So maybe the solution is for the current value of the range while iterating be something that depends on both B and E of a Range(B, E).
For people to followup from the code. https://github.com/crystal-lang/crystal/blob/master/src/range.cr#L101 the current is of type B (beginning) despite the type E (end). This happens on the range iterators as well.
Note that (1..3.5).to_a => [1, 2, 3] : Array(Int32) and that was something intentional.

Closing as duplicate of #3103 . We'll eventually handle overflows in a better way.


How to make data available on all partials

Hi, thank you for this amazing template engine.
My data is stored in json file
eta.renderFile(file, JSON.parse(fs.readFileSync('src/eta/data.json')))
How to make data available on all partials, so I don't have to pass data every time I includeFile
I can not and do not want to run the script below:
<%~ includeFile('include/_sidebar', JSON.parse(fs.readFileSync('src/eta/data.json'))) %>

Solved using:
<%~ includeFile('include/_sidebar', it) %>
Since this template engine is from squirrelly, i found the solution from: https://squirrelly.js.org/docs/syntax/partials-layouts#file-partials