Update custom dc sample data.

The current sample CSVs are more about examples of what the input CSVs could be. So moved them to a new examples folder.
Added more real world CSVs (OECD wage data) to the sample folder instead. New users will likely try out the quick start guide first and since it loads data from the sample folder, it will give them a more real world idea of the possibilities.

Thanks for the review.


Second Jupyter notebook creation always gets stuck

jupyter-controller gives an error controller-runtime.controller   Reconciler error        {"controller": "notebook", "request": "admin/second-notebook", "error": "Notebook.kubeflow.org \"second-notebook\" is invalid: status.conditions: Invalid value: \"null\": status.conditions in body must be of type array: \"null\""} and the following trace on the second notebook creation.
2022-06-06T10:16:48.924Z        INFO    controllers.Notebook    Updating StatefulSet    {"notebook": "admin/second-notebook", "namespace": "admin", "name": "second-notebook"}
2022-06-06T10:16:48.943Z        INFO    controllers.Notebook    Updating Status {"notebook": "admin/second-notebook", "namespace": "admin", "name": "second-notebook"}
2022-06-06T10:16:48.949Z        ERROR   controller-runtime.controller   Reconciler error        {"controller": "notebook", "request": "admin/second-notebook", "error": "Notebook.kubeflow.org \"second-notebook\" is invalid: status.conditions: Invalid value: \"null\": status.conditions in body must be of type array: \"null\""}
github.com/go-logr/zapr.(*zapLogger).Error
        /go/pkg/mod/github.com/go-logr/zapr@v0.1.0/zapr.go:128
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.2.0/pkg/internal/controller/controller.go:218
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.2.0/pkg/internal/controller/controller.go:192
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.2.0/pkg/internal/controller/controller.go:171
k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1
        /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20190404173353-6a84e37a896d/pkg/util/wait/wait.go:152
k8s.io/apimachinery/pkg/util/wait.JitterUntil
        /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20190404173353-6a84e37a896d/pkg/util/wait/wait.go:153
k8s.io/apimachinery/pkg/util/wait.Until
        /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20190404173353-6a84e37a896d/pkg/util/wait/wait.go:88

How to reproduce:

deploy kubeflow on microk8s

sudo snap install microk8s --classic --channel 1.21

microk8s status --wait-ready
microk8s enable dns storage ingress metallb:<IP_ADDRESS>-<IP_ADDRESS>
microk8s kubectl wait pod --all -A --for condition=Ready

juju bootstrap microk8s
juju add-model kubeflow
juju deploy --trust kubeflow
microk8s kubectl wait -n kubeflow pod --all --for condition=Ready

juju config dex-auth public-url=http://<IP_ADDRESS>.nip.io
juju config oidc-gatekeeper public-url=http://<IP_ADDRESS>.nip.io
juju config dex-auth static-username=admin
juju config dex-auth static-password=admin
microk8s kubectl wait -n kubeflow pod --all --for condition=Ready

access to Kubeflow WebUI
create a Jupyter notebook as "first-notebook" with the default configuration
create another notebook as "second-notebook" with the same configuration
the second one is stuck at waiting to be available in the UI

Expected:
the second one gets active within a few minutes
Workaround:
Press the stop button on the note book creation and press the play button to recommence the creation.

I don't see any difference from the log of pod/first-notebook-0 and pod/second-notebook-0, and both pods are running.
$ microk8s kubectl get pod -n admin
NAME                                               READY   STATUS    RESTARTS   AGE
ml-pipeline-visualizationserver-569ccd5d86-nql9p   1/1     Running   0          65m
ml-pipeline-ui-artifact-77dfb58d8b-9njcd           1/1     Running   0          65m
first-notebook-0                                   1/1     Running   0          15m
second-notebook-0                                  1/1     Running   0          14m

[microk8s kubectl logs -n admin pod/first-notebook-0]
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
s6-chown: fatal: unable to chown /var/run/s6/etc/cont-init.d/01-copy-tmp-home: Operation not permitted
s6-chown: fatal: unable to chown /var/run/s6/etc/services.d/jupyterlab/run: Operation not permitted
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-copy-tmp-home: executing...
[cont-init.d] 01-copy-tmp-home: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
/opt/conda/lib/python3.8/site-packages/jupyter_server/transutils.py:13: FutureWarning: The alias `_()` will be deprecated. Use `_i18n()` instead.
  warnings.warn(warn_msg, FutureWarning)
[I 2022-06-06 10:05:02.719 ServerApp] jupyter_server_mathjax | extension was successfully linked.
[I 2022-06-06 10:05:02.728 ServerApp] jupyterlab | extension was successfully linked.
[I 2022-06-06 10:05:02.728 ServerApp] jupyterlab_git | extension was successfully linked.
[I 2022-06-06 10:05:02.736 ServerApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/jupyter_cookie_secret
[I 2022-06-06 10:05:03.636 ServerApp] nbclassic | extension was successfully linked.
[I 2022-06-06 10:05:03.636 ServerApp] nbdime | extension was successfully linked.
[W 2022-06-06 10:05:03.717 ServerApp] All authentication is disabled.  Anyone who can connect to this server will be able to run code.
[I 2022-06-06 10:05:03.722 ServerApp] nbclassic | extension was successfully loaded.
[I 2022-06-06 10:05:03.723 ServerApp] jupyter_server_mathjax | extension was successfully loaded.
[I 2022-06-06 10:05:03.724 LabApp] JupyterLab extension loaded from /opt/conda/lib/python3.8/site-packages/jupyterlab
[I 2022-06-06 10:05:03.724 LabApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 2022-06-06 10:05:03.727 ServerApp] jupyterlab | extension was successfully loaded.
[I 2022-06-06 10:05:03.729 ServerApp] jupyterlab_git | extension was successfully loaded.
[I 2022-06-06 10:05:03.952 ServerApp] nbdime | extension was successfully loaded.
[I 2022-06-06 10:05:03.995 ServerApp] Serving notebooks from local directory: /home/jovyan
[I 2022-06-06 10:05:03.995 ServerApp] Jupyter Server 1.8.0 is running at:
[I 2022-06-06 10:05:03.995 ServerApp] http://first-notebook-0:8888/notebook/admin/first-notebook/lab
[I 2022-06-06 10:05:03.995 ServerApp]     http://<IP_ADDRESS>:8888/notebook/admin/first-notebook/lab
[I 2022-06-06 10:05:03.995 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

[microk8s kubectl logs -n admin pod/second-notebook-0]
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
s6-chown: fatal: unable to chown /var/run/s6/etc/cont-init.d/01-copy-tmp-home: Operation not permitted
s6-chown: fatal: unable to chown /var/run/s6/etc/services.d/jupyterlab/run: Operation not permitted
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-copy-tmp-home: executing...
[cont-init.d] 01-copy-tmp-home: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
/opt/conda/lib/python3.8/site-packages/jupyter_server/transutils.py:13: FutureWarning: The alias `_()` will be deprecated. Use `_i18n()` instead.
  warnings.warn(warn_msg, FutureWarning)
[I 2022-06-06 10:05:39.836 ServerApp] jupyter_server_mathjax | extension was successfully linked.
[I 2022-06-06 10:05:39.844 ServerApp] jupyterlab | extension was successfully linked.
[I 2022-06-06 10:05:39.844 ServerApp] jupyterlab_git | extension was successfully linked.
[I 2022-06-06 10:05:39.851 ServerApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/jupyter_cookie_secret
[I 2022-06-06 10:05:40.740 ServerApp] nbclassic | extension was successfully linked.
[I 2022-06-06 10:05:40.740 ServerApp] nbdime | extension was successfully linked.
[W 2022-06-06 10:05:40.826 ServerApp] All authentication is disabled.  Anyone who can connect to this server will be able to run code.
[I 2022-06-06 10:05:40.832 ServerApp] nbclassic | extension was successfully loaded.
[I 2022-06-06 10:05:40.832 ServerApp] jupyter_server_mathjax | extension was successfully loaded.
[I 2022-06-06 10:05:40.833 LabApp] JupyterLab extension loaded from /opt/conda/lib/python3.8/site-packages/jupyterlab
[I 2022-06-06 10:05:40.833 LabApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 2022-06-06 10:05:40.836 ServerApp] jupyterlab | extension was successfully loaded.
[I 2022-06-06 10:05:40.839 ServerApp] jupyterlab_git | extension was successfully loaded.
[I 2022-06-06 10:05:41.103 ServerApp] nbdime | extension was successfully loaded.
[I 2022-06-06 10:05:41.104 ServerApp] Serving notebooks from local directory: /home/jovyan
[I 2022-06-06 10:05:41.104 ServerApp] Jupyter Server 1.8.0 is running at:
[I 2022-06-06 10:05:41.104 ServerApp] http://second-notebook-0:8888/notebook/admin/second-notebook/lab
[I 2022-06-06 10:05:41.104 ServerApp]     http://<IP_ADDRESS>:8888/notebook/admin/second-notebook/lab
[I 2022-06-06 10:05:41.104 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

deployment_jupyter-controller.log

This is a known upstream bug we are trying to get it fixed for the next release.

This is a known upstream bug we are trying to get it fixed for the next release.

Thank you for the pointer. That makes sense.
What's a possible fix? Is it going to be this one? https://github.com/kubeflow/kubeflow/pull/6415 If so it looks like the review is pending for a while.

@apo-ger let's also follow these instructions to try and reproduce the issue with the nil conditions

I hit that as well - the pod is running but the notebook is still in status "blue-circle" and doesn't allow for a connection (see image). I've been able to hit stop, start and then it lets me connect to it .

Pod logs (looks good)
ubuntu@ip-172-31-7-175:~$ kubectl logs test-rolling-status-0 -n admin [s6-init] making user provided files available at /var/run/s6/etc...exited 0. s6-chown: fatal: unable to chown /var/run/s6/etc/cont-init.d/01-copy-tmp-home: Operation not permitted s6-chown: fatal: unable to chown /var/run/s6/etc/services.d/jupyterlab/run: Operation not permitted [s6-init] ensuring user provided files have correct perms...exited 0. [fix-attrs.d] applying ownership & permissions fixes... [fix-attrs.d] done. [cont-init.d] executing container initialization scripts... [cont-init.d] 01-copy-tmp-home: executing...  [cont-init.d] 01-copy-tmp-home: exited 0. [cont-init.d] done. [services.d] starting services [services.d] done. /opt/conda/lib/python3.8/site-packages/jupyter_server/transutils.py:13: FutureWarning: The alias _()will be deprecated. Use_i18n()instead.   warnings.warn(warn_msg, FutureWarning) [I 2022-08-26 15:31:02.684 ServerApp] jupyter_server_mathjax | extension was successfully linked. [I 2022-08-26 15:31:02.737 ServerApp] jupyterlab | extension was successfully linked. [I 2022-08-26 15:31:02.737 ServerApp] jupyterlab_git | extension was successfully linked. [I 2022-08-26 15:31:02.749 ServerApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/jupyter_cookie_secret [I 2022-08-26 15:31:03.949 ServerApp] nbclassic | extension was successfully linked. [I 2022-08-26 15:31:03.950 ServerApp] nbdime | extension was successfully linked. [W 2022-08-26 15:31:04.043 ServerApp] All authentication is disabled.  Anyone who can connect to this server will be able to run code. [I 2022-08-26 15:31:04.052 ServerApp] nbclassic | extension was successfully loaded. [I 2022-08-26 15:31:04.053 ServerApp] jupyter_server_mathjax | extension was successfully loaded. [I 2022-08-26 15:31:04.054 LabApp] JupyterLab extension loaded from /opt/conda/lib/python3.8/site-packages/jupyterlab [I 2022-08-26 15:31:04.054 LabApp] JupyterLab application directory is /opt/conda/share/jupyter/lab [I 2022-08-26 15:31:04.059 ServerApp] jupyterlab | extension was successfully loaded. [I 2022-08-26 15:31:04.063 ServerApp] jupyterlab_git | extension was successfully loaded. [I 2022-08-26 15:31:04.365 ServerApp] nbdime | extension was successfully loaded. [I 2022-08-26 15:31:04.366 ServerApp] Serving notebooks from local directory: /home/jovyan [I 2022-08-26 15:31:04.366 ServerApp] Jupyter Server 1.8.0 is running at: [I 2022-08-26 15:31:04.366 ServerApp] http://test-rolling-status-0:8888/notebook/admin/test-rolling-status/lab [I 2022-08-26 15:31:04.366 ServerApp]     http://<IP_ADDRESS>:8888/notebook/admin/test-rolling-status/lab [I 2022-08-26 15:31:04.366 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
It does seem like the same issue - "invalid value "null" is seen in the jupyter controller pod logs.
2022-08-26T20:53:07.202Z	INFO	controllers.Notebook	Updating Status	{"notebook": "admin/test-rolling-status", "namespace": "admin", "name": "test-rolling-status"} 2022-08-26T20:53:07.209Z	ERROR	controller-runtime.controller	Reconciler error	{"controller": "notebook", "request": "admin/test-rolling-status", "error": "Notebook.kubeflow.org \"test-rolling-status\" is invalid: status.conditions: Invalid value: \"null\": status.conditions in body must be of type array: \"null\""} github.com/go-logr/zapr.(*zapLogger).Error 	/go/pkg/mod/github.com/go-logr/zapr@v0.1.0/zapr.go:128 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler 	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.2.0/pkg/internal/controller/controller.go:218 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem 	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.2.0/pkg/internal/controller/controller.go:192 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker 	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.2.0/pkg/internal/controller/controller.go:171 k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1 	/go/pkg/mod/k8s.io/apimachinery@v0.0.0-20190404173353-6a84e37a896d/pkg/util/wait/wait.go:152 k8s.io/apimachinery/pkg/util/wait.JitterUntil 	/go/pkg/mod/k8s.io/apimachinery@v0.0.0-20190404173353-6a84e37a896d/pkg/util/wait/wait.go:153 k8s.io/apimachinery/pkg/util/wait.Until 	/go/pkg/mod/k8s.io/apimachinery@v0.0.0-20190404173353-6a84e37a896d/pkg/util/wait/wait.go:88 2022-08-26T20:53:17.810Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:53:17.827Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:54:17.849Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:54:17.864Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:55:17.875Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:55:17.901Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:56:17.914Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:56:17.929Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:57:17.940Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:57:17.955Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:58:17.966Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:58:17.980Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:59:17.991Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T20:59:18.007Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T21:00:18.017Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T21:00:18.032Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T21:01:18.042Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T21:01:18.056Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T21:02:18.067Z	INFO	controllers.Notebook	Updating StatefulSet	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"} 2022-08-26T21:02:18.080Z	INFO	controllers.Notebook	Updating Notebook CR state: 	{"notebook": "admin/test2-minio", "namespace": "admin", "name": "test2-minio"}

@camille-rodriguez , @nobuto-m  Check this PR which resolves these errors

This is now fixed in Kubeflow 1.6 both upstream and on our distribution. I would encourage anyone who is still hitting this to upgrade to it.


Various fixes

This fixes a few mistakes I found:

Fix moveListened vs. listened: If a chart's only hooks were move hooks on individual annotations, then when the chart is updated, state.listened was cleared at the beginning of updateListeners, but since state.moveListened was still set, the annotations.forEach loop didn't re-evaluate move listeners and re-set state.listened.
Update plugin hooks for the new IPlugin interface: This fixes problems with handleEvent not seeing the correct event type and with the drawTime option not being honored.
Fix ESLint warnings: ESLint was giving a no-invalid-this warning. The annotations.display callback isn't documented as having a this parameter, and I don't see any way that this could work in this context, so I removed it.

Last item about this of display callback was already addressed by PR #267.

Thanks. After I submitted my PR, I also noticed that #261 addresses the this display callback change. Do you want me to remove that from my PR? Or leave it for now and let it be resolved later if a merge conflict appears?

I think you can leave it and let's see the result of merge. Probably there will be a conflict with the other PRs where I moved also the calls to display callback.
Let's trust GIT ;)

* Update plugin hooks for the [new IPlugin interface](https://www.chartjs.org/docs/master/getting-started/v3-migration#iplugin-interface): This fixes problems with `handleEvent` not seeing the correct event type and with the drawTime option not being honored.

Maybe you could add also the afterBuildTicks hook and remove the following code:
https://github.com/chartjs/chartjs-plugin-annotation/blob/da07bf955e00523bc8912e5017a36af7cd8c68f9/src/annotation.js#L40-L42
and move/adapt the function
https://github.com/chartjs/chartjs-plugin-annotation/blob/da07bf955e00523bc8912e5017a36af7cd8c68f9/src/annotation.js#L195-L213
into the hook:
afterBuildTicks?(chart: Chart, args: { scale: Scale }, options: O): void;


Miscellaneous FLT improvements

As long as #282 is under discussion, I thought I would post a few more thoughts about how to improve the FTL package.
In our group, we have a branch of FLT which has a couple of custom options we find very useful. These are all optional--I'm not proposing to change any defaults or eliminate any of the current behavior.

CSV output instead of binary output: We are working with ~100M floats, and we find the bespoke binary file format prohibitively expensive to parse. Switching to CSV ascii output increases the data size by about 3x, but allows us to directly load the data into pandas (or other similar tools) for postprocessing. I think others might appreciate this option.
Changes to npart datatype: The data type of npart, the float unique identifier, is _RL (floating point): https://github.com/MITgcm/MITgcm/blob/master/pkg/flt/FLT.h#L107. For 32-bit precision, integers larger than 16,777,217 cannot be guaranteed to be representable as floating point numbers (ref). This means that the FLT package will fail in unexpected ways when you have more than this number of floats. The solution is to switch the datatype of npart to INTEGER.
Automatic generation of npart: Sometimes you don't care about specifying npart explicitly and prefer to have it generated internally by MITgcm. We have an option for this.
Lagrangian averages: This is a more sophisticated option. We often like to take time averages in Lagrangian space. We accomplish this by expanding the flt io buffer to include other fields.

Most of the code to do these things is here:
https://github.com/rabernat/mitgcm_2D_global/tree/master/code_fix_floater
If there is interest, we can think about contributing these options one by one.

I like these suggestions. They are useful functionality, and including them seems like a good idea to me.
I assume there's some historical reason that npart is a float rather than an integer? Perhaps @jm-c or @christophernhill could enlighten the rest of us?

@rabernat regarding npart: It's currently "_RL" type, which will turn into 64.bits real. And this allows to represent exactly larger integers than the 32 bit integer  "INTEGER" type. So, I am not sure I understand the problem.

@rabernat I've suffered a lot in parsing large flt outputs (reading from different tiles, grouping records by IDs and sorting them by datetime).  Recently, I've started to use python pkg like xarray and xmitgcm  (great tools).  I would really really love to have the outputs in csv format so that the pandas pkg works along this line.  Is it also possible to have the flt output in netcdf format, with time and IDs as 2D coordinates so that xarray IO works fine and size of the output would not increase by 3x?  (I hope the netcdf IO efficiency of xarray is comparable to the cvs IO efficiency of pandas)

@rabernat regarding npart: It's currently "_RL" type, which will turn into 64.bits real. And this allows to represent exactly larger integers than the 32 bit integer "INTEGER" type. So, I am not sure I understand the problem.

@jm-c the problem is output of float trajectories.  Unless writeBinaryPrec is 64, npart is written as REAL4 which can only represent 2**24 integers.  But the real problem is that the total number of records (one for each time each float is in a given tile over the entire simulation) is also REAL4, and this number is used to determine where to write the next time record in the file.  It is easy to go beyond 16M records after which round-off errors will cause gaps in the file and records will be overwritten.

Yes, and one could through a warning or an error if the number of records exceeds 2**24 with 32-bit precision.  Unfortunately it is hard to predict how many floats will collect in a single tile for how much time, so I don't think this can be done at the beginning.
For now I read the number of records from the metafile instead of the first record.  But it would be better to have all the numbers in the data file be OK.  The time stamps are also truncated and that doesn't even depend on the number of floats.  I think ideally one would write the float number as integer*8 and the time stamp as real*8 and the rest either single or double precision depending on a flag.  Could be done with a derived type for the record.


Configure CI

Configure some sort of free CI that can check test and analyze on PRs.
Maybe Bitrise is the best option.

done in https://github.com/janoodleFTW/timy-messenger/pull/11


 Observed a problem while deleting the integration would not actually remove it from the list of configured integrations, and a second delete would cause a home assistant exception requiring a reboot.

Problem could also manifest during reload or changing the "enable polling for updates" system option.


[ZEPPELIN-986] Create publish release script

What is this PR for?
This PR is to automate release publish to maven repository.
We used to use maven-deploy-plugin and maven-release-plugin for release but somehow it didn't work well with Zeppelin so 0.5.5 and 0.5.6 haven't been published to maven repository.
Publishing release to maven repository will eventually help zeppelin to reduce binary package size by leading users to use Dynamic interpreter loading(#908).
Originally below modules were skipped for maven release

all interpreters(except spark)
zeppelin-display
zeppelin-server
zeppelin-distribution

on the other hand this pr will skip only:

zeppelin-distribution

What type of PR is it?
Infra
Todos

[x] Include SparkR/R interpreter in release
[x] Create common_release.sh to remove build configuration duplication
[x] Check curl networking failure
[ ] Reflect users opinion on binary package build (email thread)

What is the Jira issue?
ZEPPELIN-986
Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? Yes, https://cwiki.apache.org/confluence/display/ZEPPELIN/Preparing+Zeppelin+Release will be updated accordingly once this pr is merged.

CI failiure is unrelated. Looks good to me

Looks great, I think there are just few things left:

rebased on latest master
check that code conforms the conventions from our style guide

@minahlee if we want to remove maven release plugin, could you also point to the place that does automate the version switch in POM files (as AFAIK that is the only purpose we used that plugin so far)

@bzz Thank you for the review, I handled style in 21ca610. Please let me know if you have any other suggestions :)

why spark is not published. is it related to the assembly?
Btw, spark 2 doesn't use assembly any more and favor dependencies in separate jars. See https://issues.apache.org/jira/browse/SPARK-11157 for more details.

Great, I think if checking error conditions could be added to network-related commands - it would be even more awesome, as this is quite common failure pattern.
Other then that, looks great to me and thank you for automating this.

@echarles I think my description caused confusion. Spark will be included in release since most of Zeppelin user is based on Spark. The modules I wrote in description is skipped modules for publish and Spark always hasn't been skipped from release.

Didn't look at the code... just saw in the description (and @minahlee  just confirmed it would be published).
Thinking more about this PR:

Why the deploy and release plugins were not working? Using scrips instead of existing plugins is not ideal to me.
I understand distribution should not be published, but server should be. It contains the repo components that can be used elsewhere. Apart from the fact we could have a separate module for the repo, all components (excpect distribution) should be published. That's a rule of thumb and if we don't follow it, someone is gonna come sooner or later and ask for the missing bits.

Thank you for the feedback @echarles !
I think it should be fine to add missing bits, as soon as they are identified and there is somebody with actual use case for it later on. Would you be willing to log it as a JIRA issue?
As person who did release management for Zeppelin before - I had no troubles with release plugin, although calling it multiple times with different arguments, instead of single script was quite error prone.
If a manager for a current release though wants to try another solution and provides a robust one (as in this PR) - it should be fine, especially given that we can always get back to the plugins if desired.

Good to hear the release plugin is working fine.
The release manager is responsible for the tools he wants. Fine to me if it is a script or a plugin, but at the end the artifacts must find their way to maven central.
For this PR, is it possible to ensure zeppelin-server will be also published?

@echarles

This script is written exactly because of the reason that @bzz explained above.

calling it multiple times with different arguments, instead of single script was quite error prone.

AFAIK, repo is under zeppelin-zengine module, not zeppelin-server. But if there is any other use case for zeppelin-server other than notebook repo I don't see the reason not to publish. If you come up with other use case, please let me know

@minahlee thx for this precision and context.
True, I  just realized after sending the comment that repo is not part of zeppelin-server.
However, I need zeppelin-server in my project (I kind off embed the web and websocket server) - Publishing all artifcats is also in my understanding a common practice. WDYT. Is there any issue you face to publish the server?

@echarles If there are such needs, nothing stops us from publishing it. I will make change accordingly. Thank you for sharing your situation.

@minahlee Great!
I think it should be ready to merge as soon as issues highlighted above
a. failing networking curl
b. build configuration duplication
are addressed

@bzz Sorry for late response, I am working on it and going to push commits by today. Thanks for heads up :)

Looks awesome to me, thank you @minahlee !
2 minor things are a bit confusing:

the purpose of dev/publish_release.sh.hehe file
some artifacts (namely, integration for Geode and Scalding) we publish in maven, but AFAIK they are not part of the convenience binary for the release

publish: -Pspark-1.6 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pr -Pgeode -Pscalding
release: -Pspark-1.6 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pr

@minahlee Here's related issues why geode and scalding is not in maven publish script.
Geode - https://issues.apache.org/jira/browse/ZEPPELIN-375
Scalding - https://issues.apache.org/jira/browse/ZEPPELIN-972
Please take a look. To include them, bin_license/LICENSE file need to be updated with their transitive dependencies(geode, scalding interpreter), and remove 3rd party repository (scalding interpreter)

@Leemoonsoo Thanks for pointing it out! I reverted commit of adding geode, scalding

Got it, thank for reminding! Let's merge this guy then

Merge if there is no more discussion


Updated readme examples to es6

I appreciate the consideration but it's an unnecessary change. We should only make such updates when the entire repo is on ES6. Unfortunately, that's far down on my priorities list due to everything working fine as is =/


Move Python to the new batch API

This is a tracking bug so I know when things are done

What's the status on this?

We'd like to do it sometime in the next six-week release cycle.

Could we prioritize it earlier in the cycle, to give a chance to expunge
the old API's towards the end?
On Tue, Apr 7, 2015 at 10:08 AM Nathaniel Manista<EMAIL_ADDRESS>wrote:

We'd like to do it sometime in the next six-week release cycle.
—
Reply to this email directly or view it on GitHub
https://github.com/grpc/grpc/issues/549#issuecomment-90649139.

Fair question; I'll try to answer by the end of the day.

Yes, we'll try to have this done by 5 May.


migrate /wallets page

Description

Migrate /wallets page
Migrate Simulator components

@wackerow @pettinarip made the change requests brought up here


Create a proper Makefile

current Makefile doesn track changes to cache policies
should also incorporate examples and more of them

Fixed by migrating to CMake, see commits 3a221ef80dedb727c8e9be56913e88c42a2e7359 e2f697524e7c980e7452811e8a9ae5e09b9e0efd .


add libcds to the concurrency section

https://github.com/khizmax/libcds

@fffaraz @deepak This issue can be closed.


design choices

Thanks for creating this!  I found it very helpful in getting up and running with esp + supabase.
A few thoughts on design choices.

I don't think requiring Supabaase account credentials is necessary or helpful for using this library.
Two reasons for this

IoT applications using this library will most likely consist of a single user - the individual tinkering with esps + sensors.  This makes RLS on tables redundant (there's only ever one user).  In this case to manipulate data in a supabase table all you need is the project url and anon_key.

You use an account email and password to login and recieve a JWT - but I would wager most supabase users do not have an account password - since you can register via a github auth.  This how I registered, and when I tried to recover a password I recieved the modal below (indicating that its not possible for me to get one since I did not register with one in the first place)

From the look of your demo it appears you disabled RLS anyway for your example table(s) - so account login is redundant

Building on the previous point - differentiating between RLS and non-RLS usage of the library.
As mentioned above, I imagine non-RLS usage would be most common.  A simple update to the README.md / examples can explain this.
When it comes to RLS usage - the username/password flow can still be used to login authenticated users.

Storing secrets.
Good practice not have secrets stored in plain text - even in examples.  To the best of my understanding, since arduino does not have a dotenv port the best way to store secrets is in a header (e.g., Secrets.h) that you explicitly avoid pushing in your .gitignore.
For example in /examples/select instead of
// put your WiFi credentials (SSID and Password) here
const char *ssid = "";
const char *psswd = "";

you would have
#include <Secrets.h>

// put your WiFi credentials (SSID and Password) here
const char *ssid = WIFI_SSID;
const char *psswd = WIFI_PASSWORD;

where WIFI_SSID and  WIFI_PASSWORD are defined in Secrets.h.

I'm going to make these and other simplifying changes in my fork.  Would be happy to re-merge when complete if interested, but understand some of these points are design choices (and so are subjective).

I don't think requiring Supabaase account credentials is necessary or helpful for using this library.

What i mean for supabase account is account that you make inside the supabase project, for some purpose that RLS should be enabled. It is a nice to have feature, users not required to login at all.

I imagine non-RLS usage would be most common

Sure it is.. That's why its not necessary to login to your account

Good practice not have secrets stored in plain text - even in examples. To the best of my understanding, since arduino does not have a dotenv port the best way to store secrets is in a header (e.g., Secrets.h) that you explicitly avoid pushing in your .gitignore.

Examples could be used in let's say arduino IDE, where user could open, edit, and tinker around with examples code. Separation of secrets variable is a good idea though for a project. But, I don't think separating the secrets from examples could be useful for library's users

👍


WIP: Display tweaks for sale artwork modules

This is a partial fix for https://github.com/artsy/auctions/issues/316

[x] Fix spacing.
[x] Adjust font size.
[ ] Add paddle image to left of bid.
[x] Don't show "0 bids", show starting bid.
[ ] Update snapshot images.

          1 Error

:no_entry_sign:
There were snapshot errors

  Generated by :no_entry_sign: Danger

Nice, looking sharp /cc @katarinabatina

          1 Error

:no_entry_sign:
No CHANGELOG changes made

          1 Warning

:warning:
Needs testing on a Phone if change is non-trivial

  Generated by :no_entry_sign: Danger

I'm good to go, but I did wonder if that bit of logic can be improved for readability

@ashfurrow looks great! A little hard for me to tell but is all the type the same color? If not it should be (the lot, the paddle, all the metadata). Looks like the bid value might be a different gray (which was apart of the former implementation)

Thanks! I'll double-check the colours 👍

Yup yup, you were right Katarina the grey was different. Looking better now:


Fix Sink playback after stop

Addressing issues #462 and #315 and #171
Given how the sink's queue is drained on stop I made some modifications in sink.append(). I added a check to ensure the sink was flushed completely (not sure this is necessary? I think it is, to avoid race conditions) and to restart the sink on append (when stopped.)
I added a test demonstrating correctness, as well as performing some trials on my own.
However, in #171 there is mention that the stopped sink being dead is intended behavior. It would appear the general sentiment is that this should not be the case, and as a new user of rodio I can say this took me by surprise as well.
In the case that it should kill a sink, I think it prudent to amend the documentation to reflect this, instead.
I think this provides a more correct solution than #449 and does not require any workaround for use.

I agree completely that this approach is probably better and that this PR should be more favorable.
If it is indeed meant to kill a sink completely I would have loved to know that from documentation as well.

There is popular demand for such a feature so I think the descision voiced in #171 should be revisited. This might have some implications that are not great, but until those are found we can support playback after stopping.
I think the original motivation was to make sure that when next() returns a None, it will never ever resume. Given that the iterator docs say this however, we are fully allowed to resume playback after the end:

Individual iterator implementations may choose to resume iteration, and so calling next() again may or may not eventually start returning Some(Item) again at some point.


Add nullability annotations to better support Swift.

Added nullability annotations to better support Swift projects.
Prefixed isRunningiOS7OrLater category to avoid any collisions
Removed default cases on switching on enum so if future enums are added, compiler will give some warnings. No warnings now since the switch is exhaustive.

Is the nullable annotation not the default behavior when using ObjC from Swift?
From what I can see, only the nonnullable annotations would be required, no?

It's actually null_unspecified which makes everything come through as having bangs (!) on it.
So the API changes from looking like
public func showMessageWithTitle(title: String!,
    description: String!,
    type: TWMessageBarMessageType,
    duration: CGFloat,
    statusBarHidden: Bool,
    callback: (() -> Void)!)

To
public func showMessageWithTitle(title: String?,
    description: String?,
    type: TWMessageBarMessageType,
    duration: CGFloat,
    statusBarHidden: Bool,
    callback: (() -> Void)?)

Then we know that we can optionally specify the title, description, and callback. The reason that I made the PR is that I ended up having to look through the library to make sure it was ok to pass nil as the completion block.


[Feature Request] Config: Chunk Size

Config (AddConfig) based chunk size setting.

@cachho can you share more details on this


Feature description
how to determine when a page has fully loaded and finished rendering. Maybe like Page.WaitStable()

The point in time when an application is fully loaded and finished rendering is very application-specific. It is unlikely that we will add smth like this soon. You can use lower-level methods we already expose to wait for a condition specific to you app: waitForNetworkIdle, check animation frames etc.

animation frames
puppeteer has about this func?

The point in time when an application is fully loaded and finished rendering is very application-specific. It is unlikely that we will add smth like this soon. You can use lower-level methods we already expose to wait for a condition specific to you app: waitForNetworkIdle, check animation frames etc.

puppeteer has func of checking animation frames?

await page.evaluate(() => new Promise(resolve => { window.requestAnimation(resolve); })) and other web APIs.

ok thanks

There doesn't look like anything actionable here. In theory a page can have an ongoing socket connection that may change the web page in a non-trivial way continually. We cannot detect this per app. As stated by @OrKoN, try to work with the current APIs and see how that goes.


update screenshots in the README to reflect new changes

updated screenshots and 0.2.0 release notes in README.md


Tracking push opens is not supported on Unity now.

Hi all,
We really need this feature in Unity. We really need to track the campaigns and A/B Testing results. We want to make them more efficient.
Is there a way to do this, without using the Android/IOS Plugin ? Especially Android because of dex limit.
Thanks

Thanks for the report. If you're using Parse Push and can receive push already in your Parse Unity SDK-powered app, then the Android Plugin is required whether you track the push open or not (it's only 13KB anyway). This feature is in timeline, but I can't give you a specific timeline for this yet.

+1
I've been waiting for this feature too. Thanks.


Test the Integration with Cloud Logging

Tests should verify that the contract with App Engine flex is obeyed - logs sent by an application to stderr and stdout should be viewable in the cloud logging API, or via gcloud.

This should be tested using the runtimes-common integration testing framework. See https://github.com/GoogleCloudPlatform/runtimes-common/tree/master/integration_tests#custom-logging


Webchat and Speech (Em and Eyal)

Link to spec https://microsoft.sharepoint.com/teams/ConversationalAI785/_layouts/15/Doc.aspx?sourcedoc={9A1C050F-EB45-475F-876A-E96CB70F4705}&file=WebChat for Speech UX.docx&action=default&mobileredirect=true

This is tracked via another ticket and shipping in R13


Integration with ExternalDNS

ExternalDNS is a small Kubernetes controller that watches your Ingresses and that creates A and AAAA records for the hostnames given in the ingress. It works out of the box with many DNS providers (cloudflare's dns, google's cloud dns, ...)
ExternalDNS supports many DNS providers that cert-manager doesn't yet. Integrating with ExternalDNS would allow us to extend the support of DNS providers and offload the ACME DNS01 to ExternalDNS. This idea was mentioned multiple times in the #cert-manager and #cert-mananger-dev Slack channels (1, 2, 3).
Unfortunately, as detailed by Daniel Lamando, ExternalDNS does not support  TXT records:

Daniel Lamando on Nov 28th, 2020:
Interesting that the CRD support is still pretty sketchy from external-dns, I found a ticket (https://github.com/kubernetes-sigs/external-dns/issues/1647) tracking that TXT records silently aren't handled by AWS, and I just tried with Google DNS which did the same thing.
It's true that TXT is generally already used to track who made records, which is already a problem for people managing CNAMEs so there's an option --txt-prefix to move the external-dns TXTs out of the way. It seems it's a matter of time before arbitrary TXT support is fixed up like someone did with NS in October.

For example, this manifest leads to an error:
apiVersion: externaldns.k8s.io/v1alpha1
kind: DNSEndpoint
metadata:
  name: examplednsrecord
spec:
  endpoints:
  - dnsName: foo.bar.com
    recordTTL: 180
    recordType: TXT
    targets:
    - "test"

In order to integrate with ExternalDNS, we would first have to dig into ExternalDNS and contribute a fix for the TXT support.
Regarding implementation, two possibilities:

either implement this support in-tree (cert-mananger core),
or have an out-of-tree DNS webhook.

/kind feature

/help
Some help from the ExternalDNS side would be nice to see if we can help make this work.

Hello 😄 The cert-manager<-->external-dns concept is really strong though and helps decouple dns from cert-manager, in a comparable role to the current webhook solution. As a cluster admin I'd love to see this capability. I think it should be in-tree because this is another, different type of integration point; however it might make sense via webhook for the first steps (and then until external-dns is ready).
Sadly as quoted above, I've found that the external-dns CRD implies more capability than is currently available 😢 and the issue is a bit closer to external-dns's core 'planner' concept than the CRD source. From my understanding the CRD source requires no changes for this task!
PS: Beyond this issue, I wanted to use external-dns to manage a whole DNS zone which wasn't possible for the above reason and a handful of others. I ended up tossing together an alternative experimental external-dns focusing on the CRD and it handles the above example record as-is. So if cert-manager has any WIP here it would for me to test! I'm stubbornly staying on http01 until this is possible.

/reopen

external-dns can now potentially handle TXT records, I'm going to test/implement TXT record support in external-dns

/reopen

@doktormerlin I have a POC https://github.com/AbsaOSS/cert-manager-webhook-externaldns it needs though custom external-dns build with https://github.com/k0da/external-dns/commit/cff0c93a0d485b650b7b3b6c5df0f86875e193a5

@k0da thank you for working on this! Have the changes from your external-dns fork been upstreamed yet, or are there any obvious reasons why they wouldn't be accepted?

@k0da I'm likely going to take a look your PoC.
Are we any further to txt record support being merged for external-dns?
How have things been going for your PoC since July?

There is https://github.com/ThatsMrTalbot/acme-webhook-external-dns too. I haven't tried though. It got mentioned in today's dev biweekly meeting


getAddress() wrongly return family IPv6

What operating system are you running?

Linux centos 6.3 x64

What platform/language are you using?

C++

Are you using SSL, if so, how?

SSL is not part of the equation

What version of uws are you using?

Release v0.13.0

What features of µWS are involved in the issue?

Server support (WebSocket)

How does the issue reproduce?

All the time

Can you show me some short code that triggers your issue or any other important information?

#include <uWS.h>
#include
using namespace std;
int main()
{
uWS::Hub h;
h.onConnection([](uWS::WebSocket<uWS::SERVER> ws, uWS::HttpRequest req){
		cout << "socket" << ws.getAddress().address << ":" << ws.getAddress().port << " " << ws.getAddress().family << " connected" << endl;
	});

h.onMessage([](uWS::WebSocket<uWS::SERVER> ws, char *message, size_t length, uWS::OpCode opCode) {
    ws.send(message, length, opCode);
});

h.listen(3000);
h.run();

}
output:
[root@server examples]# ./echo
socket::ffff:<IP_ADDRESS>:3233 IPv6 connected

Today I update from 0.7.1 to 0.13.0 and found this problem.
0.7.1 is correct

changed my code from
h.listen(3000)
to
h.listen(3000, nullptr, uS::ONLY_IPV4)
,and solved this problem

:+1: Veteran user :1st_place_medal:


Add doTLS

Adds the Do TLS plugin

(since when do we need 2 reviews here to merge? :)

@ozh Haha, I would have given the second approve + merged, but instead I just changed the requirement to 1 approving review. :)


master branch to contain multiple PureScript versions

Current approach
When adding a feature to purs-nix, create a PR to merge it to master and then create another PR to merge it to ps-0.14 and so on.
Proposed approach
Get rid of versioned branches, like ps-0.14, and keep all PureScript versions (0.15, 0.14) in the master branch of purs-nix ... because of the benefit of not needing to create >1 PRs like in the current approach above.

I understand wanting to merge these, and at some point in the future they might be, but in the mean time, no one needs to make a pr for both branches. I will keep 0.14 up with master myself.


gtype unit test

gtype unit test

Codecov Report

Merging #171 into master will increase coverage by 0.62%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #171      +/-   ##
==========================================
+ Coverage   59.47%   60.09%   +0.62%
==========================================
  Files         188      188
  Lines       16342    16342
==========================================
+ Hits         9719     9821     +102
+ Misses       5917     5816     -101
+ Partials      706      705       -1

Impacted Files
Coverage Δ

g/container/gtree/gtree_avltree.go
56.2% <0%> (-5.32%)
:arrow_down:

g/os/gtimer/gtimer_entry.go
85.05% <0%> (-3.45%)
:arrow_down:

g/container/gtree/gtree_redblacktree.go
59.14% <0%> (-1.43%)
:arrow_down:

g/container/garray/garray_normal_interface.go
75.82% <0%> (-1.2%)
:arrow_down:

g/container/garray/garray_normal_int.go
69.88% <0%> (-1.17%)
:arrow_down:

g/container/garray/garray_normal_string.go
68.71% <0%> (-1.17%)
:arrow_down:

g/os/gcfg/gcfg.go
45.94% <0%> (-1.16%)
:arrow_down:

g/container/gtree/gtree_btree.go
61.31% <0%> (-1.14%)
:arrow_down:

g/container/gtype/float64.go
50% <0%> (+50%)
:arrow_up:

g/container/gtype/float32.go
50% <0%> (+50%)
:arrow_up:

... and 12 more

Continue to review full report at Codecov.

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


allow inherited reducers in actions

Allows for reducers to be inherited
Generated actions will include inherited members

Thanks! Released in 0.7.7
https://github.com/epeli/immer-reducer/releases/tag/v0.7.7


1.3.2

Mainly cleaning up things and some optimization. Still want to do more than there currently is

change log (so far):

[+] Can now raise errors on error
[*] Fixed some situations where floats were returned, when ints should've been returned
[*] Optimized things a bit
[*] Cleaned up some things 🧹


Add test spec

Merge after #1.

Fixed code style
Add JS tests
Fixed bug in setAddress
Updated ABIs

Implemented my suggestion regarding the irrefutable require(!b.deleted) and added some extra test cases for the new require. Should have 100% coverage now.


:ant: fix: tests pass again

makes sure truffle migrate will not fail
now we could set up some automated ci testing

Awesome! This needed testing for quite a while now.
Noob question: How would you run those tests? 👀

truffle test which compiles, migrates (deploys) and runs the checks


chore: lock configcat dep

A recent change updated this configcat dep, which brought in a breaking change to out testing (noted in-line).
This PR locks the dep to the point-version so prevent test regressions.
We should probably find a better long-term solution.

Hey @toddbaert, I am just looking into it.
Should we merge it now and I find a solution later or should I try to solve it longterm before merging?

Hey @toddbaert, I am just looking into it. Should we merge it now and I find a solution later or should I try to solve it longterm before merging?

I opened this to get your opinion... IMO I think we should merge this now since it's blocking the build, and then figure out a better solution "soon".

I am now looking inot a better solution @toddbaert, have been looking for it anyways right now :)


#157930785 Buid out tests for the requests resource

What does this PR do?
Developing the test cases for the  request resource
Description of Task to be completed?

Create a new branch ft-unittest-api-endpoints-157930785 from challenge-2-develop branch
Write test for the /users/requests endpoint [Method = GET]
Write test for the /users/requests endpoint [Method = POST]
Write test for the /users/requests/<request_id> endpoint [Method = GET]
Write test for the /users/requests/<request_id> endpoint [Method = PUT]
Write test for the /users/requests/<request_id> endpoint [Method = DELETE]

How should this be manually tested?

Clone the branch into your local machine as follows
Run the following commands on your terminal

git clone -b ch-setup-api-env-157930602 git@github.com:DennisWanjiru/maintenance-tracker.git

cd maintenance-tracker/app/

python3 -m virtualenv env -p python3.6

source env/bin/activate

pip install -r requirements.txt

nosetests

Any background context you want to provide?
Uses unittest and nose to run the tests
What are the relevant pivotal tracker stories?
#157930785

LGTM


add install by helm2 and helm 3

What this PR does / why we need it:
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Special notes for your reviewer:
Release note:

@patsevanton I think Helm v2 is EOL (see https://helm.sh/blog/helm-v2-deprecation-timeline/).
So cert-manager probably wants to only document how to install using Helm 3.
Thank you for noticing that the documentation is outdated.
Could you please update the PR so the README only contains the Helm 3 docs?
#4209 should also help keeping this README.md file up-to-date, I'll make sure to include this change in that PR, so if it gets merged first, we can close this PR.

Close by https://github.com/jetstack/cert-manager/pull/4209


report minion task metadata last update time as metric

Report minion task metadata last update time as metric. This metric is helpful when we are going to track/debug minion tasks.
The following figure shows the emitted metric.

Codecov Report

Merging #9954 (18ca704) into master (60a62fe) will decrease coverage by 45.24%.
The diff coverage is 65.38%.

@@              Coverage Diff              @@
##             master    #9954       +/-   ##
=============================================
- Coverage     70.39%   25.15%   -45.25%
+ Complexity     5071       44     -5027
=============================================
  Files          1986     1974       -12
  Lines        106777   106472      -305
  Branches      16195    16163       -32
=============================================
- Hits          75168    26778    -48390
- Misses        26357    76963    +50606
+ Partials       5252     2731     -2521

Flag
Coverage Δ

integration1
25.15% <65.38%> (+0.09%)
:arrow_up:

integration2
?

unittests1
?

unittests2
?

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

Impacted Files
Coverage Δ

...he/pinot/common/utils/helix/FakePropertyStore.java
0.00% <0.00%> (-65.52%)
:arrow_down:

...e/pinot/common/minion/MinionTaskMetadataUtils.java
64.86% <71.87%> (-20.85%)
:arrow_down:

...g/apache/pinot/common/metrics/ControllerGauge.java
98.07% <100.00%> (+0.03%)
:arrow_up:

...lix/core/minion/PinotHelixTaskResourceManager.java
32.25% <100.00%> (-10.72%)
:arrow_down:

...ntroller/helix/core/minion/TaskMetricsEmitter.java
88.23% <100.00%> (+2.18%)
:arrow_up:

...in/java/org/apache/pinot/spi/utils/BytesUtils.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...java/org/apache/pinot/spi/trace/BaseRecording.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...java/org/apache/pinot/spi/trace/NoOpRecording.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ava/org/apache/pinot/spi/config/table/FSTType.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ava/org/apache/pinot/spi/config/user/RoleType.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 1451 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

LGTM other than the minor comments.
Q: This new metric will provide us some progress is happening for each task types that writes data to MINION_TASK_METADATA. One good thing about this is that it's not task specific (e.g. mergeRollupTask has its own metric - watermark - to provide the progress). Can we think of some progress for tasks that do not write extra mask metadata?

That is a great question. I will look into this and try to come up with a metric. Not sure if it's easy to achieve or not, but let's try


Update zh_CN.lang

I'm back :D

Welcome back :) What about "Sneaky Facades"? It's like hidden facades :D

Could you squash possibly? :)

https://github.com/CrazyPants/EnderIO/pull/1692#issuecomment-70351606 <- how to

Of course in your case ~6 would be ~3 as you only have 3 commits.


Getting started guide

@ianfore From our Connect call, I'm thinking it might be helpful to create a "getting started guide" as an entrypoint to being able to run these scripts. As we want more of the community to use and contribute to these scripts, we'll want to provide an easy path for them to working with this repo.
This guide could take the form of a one-pager within the repo that explains how to go about getting registered for the various services/platforms, how to configure keys locally, test scripts with expected output, etc. It would take a user/researcher with no pre-existing identity with any of the FASP platforms to being able to run most, or all scripts. Since I fall into this category (I only have an ID with CGC and Cavatica), I'm happy to take notes on the process and collate into a getting started guide.
Does this sound useful?
@briandoconnor @mbarkley

hi @ianfore , I'm trying to run FASPScript2.py to completion, while translating all the workup steps into the getting started guide. Currently, I'm getting a 403 error when trying to run the bdcquery (line 47). Who is hosting this service, and who should I reach out to for access?

That query is against a BigQuery table which contains controlled access data. I created the table from a dbGaP file to which I have been granted access, but I can't grant that access to anyone else. We could follow through on that but it would distract from what we're trying to get done. I'll create a separate issue for that which we can pursue in parallel.
More directly we should find a script that fits the criterion to "get someone started and able to do something useful with minimal preliminaries". FASPScript2 is nice, in that it's federating two sources, but it doesn't fit the bill for  "minimal preliminaries".
FASPNotebook06 would be better. Neither the Search nor DRS steps will require any authenticated access. However the WES step will require you to get a log on to a WES Server. I can't see a way around that for any WES server because I don't know of anyone prepared to give open access to compute. However, @mbarkley might grant you access to the DNAStack WES for what you want to do.
For steps beyond that; we could look at notebooks that use the various Seven Bridges WES servers. For the CRDC sponsored http://cgc.sbgenomics.com you should be able to create yourself an account with enough credits to do basic compute. The other SB instances (Cavatica and BioDataCatalyst) also offer some "starter" access.
General point about the scripts - I've shifted focus to the notebooks rather than the scripts. The most current work in on the notebooks because it seemed that had more relevance to the community. If that's not the case we can shift focus back to the scripts. (The notebook vs scripts question got some consideration in issue #7 if you want more background on the thinking, though it does get into the weeds of some WES issues).

Thanks for the clarification Ian, I'll move over to trying to replicate notebook 6 for now. I think we should provide some indication within the scripts about which ones are not possible to run based on closed access.
I think it should also be sufficient to say for certain scripts just what you mention here, i.e. "this script requires you to have an account with XYZ company and access to their WES service." Perhaps we can list out the "Platform reps" for each institute, e.g:

if you want to run this on Seven Bridges, contact Michele or SB support desk
if you want to run this on DNAstack, contact Max or support desk

That way, we give people trying to run the fasp scripts a chance to jump off into setting up accounts with the related platforms, and a point of contact for further clarification if necessary.

Yes, the access required would fall under the heading of the metadata that I felt we needed about scripts. Issue #8 touched on script metadata and which datasets scripts access, but we should revisit.
The access_keys.md page has the beginnings of some of how and where to get access to various systems.
Adding a to do in here. Creating additional issues for the would work too.

[ ] Add Seven Bridges nodes to access_keys.md
[ ] Add datasets/access required to ScriptSummary
[ ] Consider alternate format than Excel for ScriptSummary

Added details for Seven Bridges keys. In the process it required code changes so the same approach was used for the SB WES and DRS services.
Felt that, rather than providing help desk contacts, the links to home pages for each of the systems would be sufficient. In each case that leads into the standard process for getting an account on the relevant system.

Reviewing this. Much of what we set out to do was accomplished for the tutorial at ISMB, and with the addition of Starter Kit. SK adds examples of how, as a provider, to get DRS, WES, Data Connect and Passport running.
One rationalization, for fasp-scripts, was to separate the clients from the scripts1. That was done as the fasp-client branch.
Suggest that we create a separate fasp-client repository for that.
This simplifies the complex scenario access scenario required for all the scripts, and explored above. In total, the various scripts need keys for 10-12 systems2 . That's too complex to manage, and likely unnecessary for all users.  Most scripts probably only need to authenticate against three or four systems, sometimes less. Best to deal with that script by script.
The tutorial handled the "if you want to run this on Seven Bridges, contact Michele or SB support desk" question above.
1 For "script" read script/notebook.
2 Passport might change that - but that vision is not yet fulfilled, and we should not be dependent on that to explore other functionality in parallel.
Suggest we have the following to do's to close this issue:

[ ] Create new repository ga4gh/fasp-client (or fasp-clients) from fasp-client branch of this  repository
[ ] Check that https://github.com/ga4gh/ismb-2022-ga4gh-tutorial works independently of the event itself
[ ] Consider a renamed repository for the tutorial which is not tied to the event

Regarding the to dos above...
The fasp-clients branch became https://github.com/ga4gh/fasp-clients
The ISMB tutorial was renamed as https://github.com/ga4gh/Get-Started-with-GA4GH-APIs. It seems to be runnable standalone outside the event.
Removal of the clients from this repository still requires to be done. Notebooks here need to be checked that they run against the clients in fasp-clients. Some pruning of the notebooks should also be done. No need to check notebooks that are being retired.


Redraw TileLayer

I would like to be able to redraw a heatmap tilelayer. Not sure why it's not working, I was expeting the redraw method to be available.
example:
heatmap = new L.TileLayer.WebGLHeatMap({
size: heatmapSize,
});
After some event ...
heatmap.redraw();
...
I am getting: "heatmap.redraw is not a function"

Try heatmap.update()

I tried heatmap.update(), but no dice

That redraws the webgl canvas. Do you have some code I could see?
On Nov 10, 2015 6:18 AM, "ben"<EMAIL_ADDRESS>wrote:

I tried heatmap.update(), but no dice
—
Reply to this email directly or view it on GitHub
https://github.com/ursudio/webgl-heatmap-leaflet/issues/11#issuecomment-155378610
.

New method is simply heatmap.draw()


category value in column name?

E.g.
>>> df = pd.DataFrame({'col': ['a', 'b']})
>>> encoder = ce.OneHotEncoder()
>>> encoder.fit_transform(df)
   col_0  col_1  col_-1
0      1      0       0
1      0      1       0

Ignoring last column, I'd like to see
   col_a  col_b
0      1      0
1      0      1

So that e.g. if I find col_a is a strong feature in a model, I can interpret what it means easily (as opposed to col_0). I know I can hack this myself, but I'd have thought it'd be a common use case, and natively supported. Unless I'm missing something ...

This has come up before, notably here: https://github.com/scikit-learn-contrib/categorical-encoding/issues/21
Then it was implemented in the two encoders where I could figure out how to here: https://github.com/scikit-learn-contrib/categorical-encoding/commit/056a483eff86f1ca1f57d7b7c0fab520fa988200
For something like binary encoding the output columns don't map 1-to-1 with categories, so it doesn't quite work out.
Does that help?

Sorry, I missed that issue when looking.
I'd still like to have an option to use variable values instead of indices, and leave the responsibility to the user. (Though any string value is supported as a name in pandas, correct?) In my case, they're nearly always 'nice'. This is the standard behaviour of other things I've used (e.g. R or pandas.get_dummies). Anyway, because this isn't supported, I'm rolling my own mixin (in part as I need to roll a custom one anyway for other things).
Happy to close this issue if you disagree.

No worries, if left as an option that defaults to current behavior I’d not be opposed to including that kind of thing for the encoders where it makes sense, if you’re interested in working on a PR

won't be able to offer a PR sorry (at least in next few months)

Ok, I can work on one if I get a chance, but am marking this as seeking a contributor in the meantime. If anyone would like to work on this, chime in here.

Merged PR #65


Update glide.lock to newer repo hashes

closes #36

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

Coverage remained the same at 80.903% when pulling a54251dd82f696d7bf05cbfd55cce036cf14cd59 on danudell-trustnetworks:master into 68b11fc98437d63fc3b4f1db2c95a62d881bcee7 on uber:master.


cli supports downloading certificates

@bjwswang How about this feature?

🆗

A little challenge, I think we can show the progress of the download


Machine_test.py fixes

Changed sleep interval to 2 seconds when querying DO for deleted hosts
Added try/finally block for request close
Removed redundant name assignemt in test_digital_ocean_machine_parallel module

@alena1108 , @sonchang , can you please review ?

LGTM

LGTM


Migrate Supporters service from Bucket to Walrus

Background
For October release we will be moving all new orgs to Walrus for data collection, replacing Bucket. Existing orgs will still use Bucket until they are migrated.
Spec

Determine how to branch users between Walrus and Bucket (API version?)
Setup calls to Walrus for Supporters service. Will be purpose-built at first until a general Walrus service is written for gw.js

From a conversation today and worth considering:  Instead of forcing devs to GET schemaId and populate their supporters service call with it (a lot to do just to post an email address), should gw.js do something like this:

User can optionally specify schemaId in supporters.create
If they do, then the walrus API call uses that schema when creating a walrus record (duh)
If not, gw.js makes a call to walrus to GET schemaId and then uses the newest schema in the subsequent call to create a walrus record

Relevant:  https://gist.github.com/nalesandro/7e75364abf4515cf1cc1053cbb8d073f

Noted, but aren't we kind of punting on this for a bit due to the work @strife25 is doing to point old Bucket to Walrus?

Noted, but aren't we kind of punting on this for a bit due to the work @strife25 is doing to point old Bucket to Walrus?

This is separate - what Nick is noting here is trying to make the step of setting up walrus in one's code easier to do by having gw.js dynamically retrieving the Schema ID for creating a record so that the programmer does not have to do so.
Looking at these steps typed out, I would recommend not doing this as it's effectively creating the idea of a "default" schema. This is nice for getting someone up and running, but if the customer/coder ever changes the schema to a new version that is incompatible, then the code using the above algorithm will break.
Even though it isn't a nicer experience for brand new users, I think it's better to help protect users from accidentally breaking their own websites (and blaming us for the problem) - which is why the API requires the schema ID to be declared. Yes it sucks for band new users, but I'd rather add an extra step to the setup process than create a situation where their old websites get broken.
I think the better thing to do would be to make it easy to get the schema IDs. I know that's easier said than done with no walrus UI in place atm, but why not just include a curl statement in the docs as a step they need to take when using gw.js? For example:
curl -X "GET" "https://api.dev.thegroundwork.com/collections/supporters/schemas/" \
     -H "Content-Type: application/json" \
     -H "x-gw-initiative: <YOUR ORG ID>." \
     -u <YOUR API KEY>

Thoughts?

Its going to take me a while to respond to this with the correct amount of thought as I haven't had any time to dig into Walrus to date.

(for later when D$ has a chance to dig in)
You are reading it more or less correctly @strife25 - I'm advocating an approach where gw.js users can optionally use a default schema, but for the supporters collection only.  I get not supporting it in the core service, but one of gw.js's raisons d'être is to simplify the developer's life by abstracting away some of the complexity of the API and this is a good example of where we can/should, IMO.
The case you're concerned with is indeed possible, but the VAST majority of customers using gw.js to post to the supporters collection will never need to change the canned schema, and in the tiny number of cases where they do, a breaking change is far less likely than a non-breaking one (ie cust will want to add a field vs remove one).
So for me it comes to a tradeoff between a probable "WTF" for every new customer who just wants to post a dang email address to a supporter service vs an improbable "shit we broke things" which can be mitigated by docs and support

Picking this up

🙌

Closed in #52


Modal

A modal implementation. This should fix #5.

@airamrguez wow, that is amazing. Thank you so much, you even included documentation and tests and added it to our demo 👍

@airamrguez  we renamed visible to isOpen because of consistency with the dialogs.


Integrate glossary entries and tags automatically

Issues
It would help if every glossary entry had its own tag. For example, the entry "Determinacy race" would be tagged "determinacy race". This would fill out our initial set of tags, and it would bring the glossary into tag-based queries.
Improvements
For all existing glossary entries, I (will) have edited all the tags manually. It would be nice if this happened automatically. The title of a glossary entry could automatically result in that content becoming a tag for the entry.
*Additional discussion
Eleventy specifically does not support computing tags, but there seem to be ways to get around that. See this discussion. I would need to learn some more Javascript and Eleventy before I could really adapt this IMO.

closing this as subsumed by #153


Remove 'social media' preview from pipeline health page

As the custom social media previews have been superseeded by the pretty auto Github one. Therefore currently all pipelines 'fail' on this.

Duplicate of https://github.com/nf-core/nf-co.re/issues/750


[CP Staging] fix: frequent component re-mount

Details
The problem happens when re-render happens (shown keyboard can be one of the trigger, since we store that data in the context).
When re-render from App.tsx level comes, then:

we'll re-execute () => { from freezeScreenWithLazyLoading
we'll re-invoke HOC and it'll create a new component and thus we'll remount entire tree.

Since this function handles screen-level entities -> we'll re-mount entire screen. keyboard appear -> we re-mount screen -> we destroy composer -> we loose focus -> keyboard hides. When screen is mounted -> we retrieve input focus and we get infinite loop 🤯
To fix this I decided to memoize the output of freezeScreenWithLazyLoading. I think that how it was designed to work, i. e. cache once and then return cached instance of the component.
Fixed Issues

https://expensify.slack.com/archives/C01GTK53T8Q/p1720776606394749
$ https://github.com/Expensify/App/issues/45152
PROPOSAL: N/A
Tests

On Android

Open any chat
Make sure keyboard is open and screen is not updated every second and keyboard stays on the screen without attempting to hide and appear again;

Offline tests

N/A
QA Steps

On Android

Open any chat
Make sure keyboard is open and screen is not updated every second and keyboard stays on the screen without attempting to hide and appear again;

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/user-attachments/assets/e3d968ac-fe8e-43e5-bd9c-ef067d0cd0c2

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

Trying another build

can you test on your side and confirm if this is reproducible ? the flickering issue doesn't happen anymore confirmed 👍

Yes, it's reproducible on my end

I also don't see this reproducible on web platforms

Because freezeScreenWithLazyLoading is used only on mobile 👀

@allgandalf oh no! Will check web and CI tomorrow!

Damn, sorry to see it did not work fully yet. Great job so far.
It feels like it might be better to try to investigate the rootcause or bisect where this happened first cause revert might be safer than some more complex not fully tested fix

can you quickly move the useFreezeId in the hooks folder, or do you think you can come up with a follow up PR for that one?

No, I think I will do that in this PR 👀

@allgandalf yeah, I tested this, but it worked on my end. Let me reset cache and try again!

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/mountiny in version: 9.0.6-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Cherry-picked to staging by https://github.com/Julesssss in version: 9.0.6-8 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Cherry-picked to staging by https://github.com/Julesssss in version: 9.0.6-8 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Deployed to production by https://github.com/thienlnam in version: 9.0.6-8 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/thienlnam in version: 9.0.7-8 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Rdar 32547102 float varargs overflow to gp args area

This fixes a bug in swift varargs on x86-64 that shows up when passing more than 8 floats (exhausting the SSE register-save area) but less than 6 non-float GPRs. Formerly the logic incorrectly fell through to storing the remaining floats in unused GP register-save slots of the va_list structure, rather than the overflow arg area, which is where they're supposed to go. It was just missing a condition in the else-if.
fixes rdar://32547102

@swift-ci please test

@swift-ci please test

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - b556147e2a158cbba4f9905b162fbf11cdf32226
Test requested by - @graydon

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - b556147e2a158cbba4f9905b162fbf11cdf32226
Test requested by - @graydon


Browse to Edit page after creating record

Hi,
Can we browse to List page after creating record instead of Edit page?
Why do we need to do as current behavior?
Regards and thank so much.

Redirecting to the Edition view after creation is the default behavior because it makes sense in most of the cases.
If you want another redirection, you'll have to write a custom app to use your own version of the crudResponse saga. This is not documented, and requires goog knowledge of Redux and saga, but it's possible.

Please make it modifiable <3

An easy way to do that (I just tested it) is to write a simple saga taking every CRUD_CREATE_SUCCESS actions and calling the push action creator using the action payload to compute the path. Just register the custom saga using the documented prop on the Admin component.
Note that this may trigger two navigation actions, the original one and the new one but it gets the job done.

@djhi I will try it, thanks


Data Downloaders

Implement some data downloaders for key datasets with demo notebooks.

[X] SOLO
[X] SODO
[ ] FSI

Correct me if I’m wrong, but I believe FSI is a part of the SoLO download?
Going off this, We know this ITI model is going from FSI, to AIA.
AIA -> SDO data at wavelength 304nm
FSI -> SOLO data at wavelength 304nm (I think)
I don't know where this data config leads, but the only other data download of 304nm is also from SoLO, here.
So I think on the existing branch, we are already grabbing this SoLO / FSI data.


cannot use with room

cannot use with room

Which version of room database?

1.0.0

Yes, tried to test this with the Room's codelab sample. https://codelabs.developers.google.com/codelabs/android-persistence
Throws a lot of compilation errors.

I'm having these errors when I'm trying to include your li. Without it, app works.
 C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\Loan.java:37: warning: book_id column references a foreign key but it is not part of an index. This may trigger full table scans whenever parent table is modified so you are highly advised to create an index that covers this column. public class Loan {        ^ C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\Loan.java:37: warning: user_id column references a foreign key but it is not part of an index. This may trigger full table scans whenever parent table is modified so you are highly advised to create an index that covers this column. public class Loan {        ^ C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\BookDao.java:45: warning: The query returns some columns [startTime, endTime, book_id, user_id, name, lastName, age] which are not use by com.example.android.persistence.codelab.db.Book. You can use @ColumnInfo annotation on the fields to specify the mapping.  You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, title, id, startTime, endTime, book_id, user_id, id, name, lastName, age. Fields in com.example.android.persistence.codelab.db.Book: id, title.     LiveData<List<Book>> findBooksBorrowedByName(String userName);                          ^ C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\BookDao.java:53: warning: The query returns some columns [startTime, endTime, book_id, user_id, name, lastName, age] which are not use by com.example.android.persistence.codelab.db.Book. You can use @ColumnInfo annotation on the fields to specify the mapping.  You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, title, id, startTime, endTime, book_id, user_id, id, name, lastName, age. Fields in com.example.android.persistence.codelab.db.Book: id, title.     LiveData<List<Book>> findBooksBorrowedByNameAfter(String userName, Date after);                          ^ C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\BookDao.java:60: warning: The query returns some columns [startTime, endTime, book_id, user_id, name, lastName, age] which are not use by com.example.android.persistence.codelab.db.Book. You can use @ColumnInfo annotation on the fields to specify the mapping.  You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, title, id, startTime, endTime, book_id, user_id, id, name, lastName, age. Fields in com.example.android.persistence.codelab.db.Book: id, title.     List<Book> findBooksBorrowedByNameSync(String userName);                ^ C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\BookDao.java:66: warning: The query returns some columns [startTime, endTime, book_id, user_id] which are not use by com.example.android.persistence.codelab.db.Book. You can use @ColumnInfo annotation on the fields to specify the mapping.  You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, title, id, startTime, endTime, book_id, user_id. Fields in com.example.android.persistence.codelab.db.Book: id, title.     LiveData<List<Book>> findBooksBorrowedByUser(String userId);                          ^ C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\BookDao.java:73: warning: The query returns some columns [startTime, endTime, book_id, user_id] which are not use by com.example.android.persistence.codelab.db.Book. You can use @ColumnInfo annotation on the fields to specify the mapping.  You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, title, id, startTime, endTime, book_id, user_id. Fields in com.example.android.persistence.codelab.db.Book: id, title.     LiveData<List<Book>> findBooksBorrowedByUserAfter(String userId, Date after);                          ^ C:\Users\kiit1\Github\android-persistence-master\app\src\main\java\com\example\android\persistence\codelab\db\BookDao.java:79: warning: The query returns some columns [startTime, endTime, book_id, user_id] which are not use by com.example.android.persistence.codelab.db.Book. You can use @ColumnInfo annotation on the fields to specify the mapping.  You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, title, id, startTime, endTime, book_id, user_id. Fields in com.example.android.persistence.codelab.db.Book: id, title.     List<Book> findBooksBorrowedByUserSync(String userId);                ^ C:\Users\kiit1\Github\android-persistence-master\app\build\generated\source\apt\debug\com\example\android\persistence\codelab\db\AppDatabase_Impl.java:22: error: AppDatabase_Impl is not abstract and does not override abstract method clearAllTables() in RoomDatabase public class AppDatabase_Impl extends AppDatabase {        ^

me too, if i use room to create database , it not show on web browser

@tangxiangpi  Could this be the same case as of: #115
Also, give a bit more info on your versions for room and android debug database... I have it working just fine now

Make sure you have the version 1.0.4 of the lib. Just tested and it's working well with latest fix in 1.0.4 on both device (API28) and emulator (API28)
I had several issues with 1.0.3 though.
debugImplementation 'com.amitshekhar.android:debug-db:1.0.4'


Array endpoints and annotation routes clean up

:+1:
At some point I would like to rename it from /arrays to /array


Easily plot two curves on top of eachother

With one function, do something like this:

resolved with the new plotting formulation

resolved with the new plotting formulation


common: implement helper function to find qemu

Adds a helper function to the metrics common library to extract the qemu
path from "cc-runtime cc-env" or configuration files at runtime. This
allows several of the network metrics tests to be converted to static
scripts instead of generated via autotools.
Fixes #190
Signed-off-by: Brett T. Warden<EMAIL_ADDRESS>

This is the first step in addressing #170.

I'm rather confused by this. If the code is only for CC 3.0 you can simply parse the output of:
$ cc-runtime cc-env | grep -A 2 Hypervisor
[Hypervisor]
  Path = "/usr/bin/qemu-lite-system-x86_64"
  Resolved = "/usr/bin/qemu-lite-system-x86_64"

Also note that you need to raise an issue and add a "Fixes #XXX" comment in one of the commits to keep Travis and checkcommits happy.

@jodh-intel I'd like this to work for both CC2.x and CC3.x. We can definitely prioritise CC3.x as the primary target here though.
One remaining problem though (and this is part of the reason I currently hard coded some of the items here https://github.com/clearcontainers/tests/blob/master/metrics/lib/send_results.sh#L42 and noted so in my initial PR) is how do you work out what is actually configured into docker. If we are sort of assuming everything is set up using the default names and paths then we could just use though verbatim :-)
I think for running the tests in the CI in the tree/default installation then we can just hard wire things for now.
Ideally I'd like to be able to run the tests on any installed system, outside of a source tree.
So, let's be pragmatic. Step one is we get this up and running with a CC3.x source tree installation under a CI test system. And then we will adapt it to run CC2.x and binary only installations etc.
What would be nice I guess is if we make some hard assumptions about where things are, then we should fail gracefully and obviously if they are not there - so at least we don't end up misleading folks with 'fake results' if the code is run outside of a supported setup.

I can try cc-env first and fall back to checking config files if that makes sense, or only use cc-env for now and worry about CC2.x later, whichever makes more sense.

The ideal would be to have a single code path so if CC 2.x needs to be handled, it may be best to avoid calling cc-runtime cc-env - @grahamwhaley - what's your view?

@jodh-intel @bwarden I don't mind having two (or multiple) code paths if n-1 of them are for specifically identified runtimes and then the n'th one is a generic 'make our best guess' fallthrough. That should not turn out too bad in the code.

OK, let's try this... I reduced the nesting, moved TOML parsing to a separate function, added support for "cc-runtime cc-env", tightened up the testing of potential results, made parsing case-insensitive and more flexible to handle cc-env, and added the test for pc-lite (whoops, forgot to amend that one).
It feels a little bit dirty using a tmpfile for the results of cc-env (which I clean up afterward), but it lets me use the same code path as for parsing config files, vs. more complexity. I'm open to suggestions.

with the note about the machine check,
lgtm
I think the pragmatic way forwards here is to get this merged so we can get the tests up with cc-runtime, and then if we need to adapt to get them up with cc-oci-runtime later, then so be it.

lgtm

@jodh-intel OK with you now it is rewritten to use the cc-runtime env if available etc.

lgtm


ExpressJS 5 - Promise returned in function argument where a void return was expected.

I am trying to use async and await in Typescript with ExpressJS 5 beta 1 and getting the following error:
Promise returned in function argument where a void return was expected.eslint[@typescript-eslint/no-misused-promises](https://typescript-eslint.io/rules/no-misused-promises)
I had anticipated this would no longer be the case in ExpressJS 5, as noted by the ESLint maintainers: https://github.com/standard/eslint-config-standard-with-typescript/issues/613
Have I missed something, or is this still not handled in Express 5?
function testFunction() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve('test')
    }, 1000)
  })
}

router.get('/v1/sdk/device', async (_req, res) => {
  const test = await testFunction()
  console.log(test)
  res.send()
})

Hi 👋 This functionality is definitely supported in Express 5. Unfortunately the error you are getting is not coming from Express 5, it is coming from some tooling you are using. You likely need to update some tooling or that tooling needs to be updated to work with Express 5.

Hi 👋 This functionality is definitely supported in Express 5. Unfortunately the error you are getting is not coming from Express 5, it is coming from some tooling you are using. You likely need to update some tooling or that tooling needs to be updated to work with Express 5.

I had figured that is most likely the case. Struggling a little to narrow down what it could be. It says it is coming from ESLint, not sure how it is identifying the issue. Could it be a typings problem do you think? Maybe an update required to @types/express? I don't want to go posting issues everywhere without having some idea of where the issue may lay if I can help it.

I'm not familiar qith typescripr myself, so not sure. Maybe if you can tell me all the exact steps I need to do in order to see the error you posted I may be able to help dig through it as well.

Much appreciated. Let me see if I can put together an example. Not 100% sure I can because it may be somewhat related to visual studio code and that’s harder to replicate across systems. But worth a shot.

I stumbled across this on my travels: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/50871
I think that is significant enough to suggest it is typings related. The typings have changed a lot since that was pushed, so hasn't been easy to test. Not really sure what to do with it either, I imagine it is pending a community contribution of a v5 typings. I will update that post, and see what happens. In the meantime, will just have to work around the error and take confidence in knowing that it is in theory still working as expected now in v5.


Modernize Renderer

I just opened a PR to move us from legacy OpenGL 2.1 (with slow immediate mode APIs, some glitches in shaders) to modern OpenGL 3.3:
Next steps are:

Remove Shader.SetFloat4 and related "global" Shader functions that depend on you having run shader:start first. Make those part of the shader itself i.e. shader:setFloat4.
Incorporate ShaderVar.* functions into Shader i.e. ShaderVar.PushMatrix -> Shader.PushGlobalMatrix.
Replace Draw.Clear/Draw.ClearDepth with the concept of a "render pass".
Improve the Lua rendering API by getting rid of all the Push/Pop's everywhere around shaders. I want it to be solid and not depend on the "current" global state so much.
Add the concept of a "uniform buffer" which can be shared across shaders.
Rename ShaderState to Material. Move render state features into Material? Need to think on this one. The main point is


mewtopia.eth resolved as 0x0

When using (the suggested) mewtopia.eth at creating offline transactions:

it is resolved as 0x0:

and even a signed tx is created for this:

this is quite dangerous - I know not to send to 0x0 - but some other users might send without noticing.

Shit thanks. I'll add a check there

This was fixed. It's non-issue in v4


grt: check if edges are initialized before get congestion data

Fix Coverage pipeline issue.

When does it happen that these are not initialized when calling saveCongestion?

It happens when we initialize the nets. This process happens before initializing the edges of FastRouteCore.

Why do we call saveCongestion that early?

If I understand correctly, the code is catching the error and try to save the congestion here:


Static code analysis

Fixed:

StringBuffer in single thread
Empty operators
Collection.size == 0
Return in void

Coverage decreased (-0.005%) to 90.054% when pulling<PHONE_NUMBER>0f9fe6462f8d275a6eed23fa9363c8 on gagatust:stat into e3eff1e3a426f8931ad23a3d7a7e790adabe9f48 on apache:master.