[BUG] container image from local registry failing with IMAGE pull error

General information

OS: Linux
Hypervisor: KVM
Did you run crc setup before starting it ? Yes
Running CRC on: Laptop

CRC version
#$ crc version
CodeReady Containers version: 1.23.1+be17b141
OpenShift version: 4.7.0 (embedded in executable)

CRC status
# crc status --log-level debug
DEBU CodeReady Containers version: 1.23.1+be17b141
DEBU OpenShift version: 4.7.0 (embedded in executable)
DEBU Running 'crc status'
DEBU Checking file: /home/jiffin/.crc/machines/crc/.crc-exist
DEBU Checking file: /home/jiffin/.crc/machines/crc/.crc-exist
DEBU Found binary path at /home/jiffin/.crc/bin/crc-driver-libvirt
DEBU Launching plugin server for driver libvirt
DEBU Plugin server listening at address <IP_ADDRESS>:39073
DEBU () Calling .GetVersion
DEBU Using API Version 1
DEBU () Calling .SetConfigRaw
DEBU () Calling .GetMachineName
DEBU (crc) Calling .GetState
DEBU (crc) DBG | time="2021-03-09T15:14:52+05:30" level=debug msg="Getting current state..."
DEBU (crc) DBG | time="2021-03-09T15:14:52+05:30" level=debug msg="Fetching VM..."
DEBU (crc) Calling .GetBundleName
DEBU (crc) Calling .GetIP
DEBU (crc) DBG | time="2021-03-09T15:14:52+05:30" level=debug msg="GetIP called for crc"
DEBU (crc) DBG | time="2021-03-09T15:14:52+05:30" level=debug msg="Getting current state..."
DEBU (crc) DBG | time="2021-03-09T15:14:52+05:30" level=debug msg="IP address: <IP_ADDRESS>"
DEBU Running SSH command: df -B1 --output=size,used,target /sysroot | tail -1
DEBU Using ssh private keys: [/home/jiffin/.crc/machines/crc/id_ecdsa]
DEBU SSH command results: err: <nil>, output:<PHONE_NUMBER>6<PHONE_NUMBER>2 /sysroot
DEBU Running private SSH command
DEBU SSH command succeeded
DEBU Unexpected operator status for network: ManagementStateDegraded
DEBU Making call to close driver server
DEBU (crc) Calling .Close
DEBU (crc) DBG | time="2021-03-09T15:14:53+05:30" level=debug msg="Closing plugin on server side"
DEBU Successfully made call to close driver server
DEBU Making call to close connection to plugin binary
CRC VM:          Running
OpenShift:       Running (v4.7.0)
Disk Usage:      13.57GB of 32.74GB (Inside the CRC VM)
Cache Usage:     13.01GB
Cache Directory: /home/jiffin/.crc/cache

CRC config
# crc config view
$ crc config view
- consent-telemetry                     : no
- memory                                : 20480

Host Operating System
# cat /etc/os-release
NAME=Fedora
VERSION="33 (Workstation Edition)"
ID=fedora
VERSION_ID=33
VERSION_CODENAME=""
PLATFORM_ID="platform:f33"
PRETTY_NAME="Fedora 33 (Workstation Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:33"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f33/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=33
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=33
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation

Steps to reproduce
Tried to consume local registry container image with following steps(it worked in crc4.5)

oc login -u kubeadmin https://api.crc.testing:6443
create demo project,
oc new-project demo
logged into podman podman login -u kubeadmin -p $(oc whoami -t) --tls-verify=false default-route-openshift-image-registry.apps-crc.testing
pushed image from local registry to crc default registry, podman push e992013d1946 --tls-verify=false default-route-openshift-image-registry.apps-crc.testing/demo/rook
oc get is -n demo

NAME   IMAGE REPOSITORY                                                    TAGS     UPDATED
ceph   default-route-openshift-image-registry.apps-crc.testing/demo/ceph   latest   16 seconds ago
rook   default-route-openshift-image-registry.apps-crc.testing/demo/rook   latest   41 seconds ago

oc set image-lookup --all

imagestream.image.openshift.io/ceph image lookup updated
imagestream.image.openshift.io/rook image lookup updated

pulling image failed, pod didn't start up

Events:
  Type     Reason          Age                From               Message
  ----     ------          ----               ----               -------
  Normal   Scheduled       31s                default-scheduler  Successfully assigned rook-ceph/rook-ceph-operator-87758ddf6-c7pht to crc-l6qvn-master-0
  Normal   AddedInterface  29s                multus             Add eth0 [<IP_ADDRESS>/23]
  Normal   Pulling         17s (x2 over 29s)  kubelet            Pulling image "default-route-openshift-image-registry.apps-crc.testing/demo/rook:latest"
  Warning  Failed          17s (x2 over 29s)  kubelet            Failed to pull image "default-route-openshift-image-registry.apps-crc.testing/demo/rook:latest": rpc error: code = Unknown desc = error pinging docker registry default-route-openshift-image-registry.apps-crc.testing: Get "https://default-route-openshift-image-registry.apps-crc.testing/v2/": x509: certificate signed by unknown authority
  Warning  Failed          17s (x2 over 29s)  kubelet            Error: ErrImagePull
  Normal   BackOff         3s (x3 over 28s)   kubelet            Back-off pulling image "default-route-openshift-image-registry.apps-crc.testing/demo/rook:latest"
  Warning  Failed          3s (x3 over 28s)   kubelet            Error: ImagePullBackOff

Expected
Images from the local registry need to consume, pod should come up properly
Actual
Pod didn't come up with image pull error
rook-ceph-operator-55ccf56f56-tlzxr   0/1     ErrImagePull   0          28m

@thotz I am not sure how this is not working for you but I again tried following and it does work.
$ oc get is
NAME          IMAGE REPOSITORY                                                           TAGS     UPDATED
mytestimage   default-route-openshift-image-registry.apps-crc.testing/demo/mytestimage   latest   40 hours ago

$ cat test.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  containers:
  - image: image-registry.openshift-image-registry.svc:5000/demo/mytestimage:latest
    name: test
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

$ oc create -f test.yaml

$ oc get events
15s         Normal    Scheduled        pod/test   Successfully assigned demo/test to crc-m7q2f-master-0
12s         Normal    AddedInterface   pod/test   Add eth0 [<IP_ADDRESS>/23]
12s         Normal    Pulling          pod/test   Pulling image "image-registry.openshift-image-registry.svc:5000/demo/mytestimage:latest"
11s         Normal    Pulled           pod/test   Successfully pulled image "image-registry.openshift-image-registry.svc:5000/demo/mytestimage:latest" in 459.506947ms
11s         Normal    Created          pod/test   Created container test
11s         Normal    Started          pod/test   Started container test

@praveenkumar : The difference from #821 (comment), I am using podman instead of docker and also added --tls-verify=false while login and push images.
Is there any way to check the access to registry fine for crc machine?
If require steps for debugging please let me know

@thotz I am also using podman just aliased docker=podman and using --tls-verify=false, I don't think it is issue with podman/docker because you are able to push the image successfully and it also appear in the imagestream oc get is , can you start from fresh and just try with a sample image like I mentioned in https://github.com/code-ready/crc/issues/821#issuecomment-555862714 just to make sure if that is something with image or the issue is somewhere else.

@praveenkumar : It works for the test image in my setup as mentioned in #821 (comment)](https://github.com/code-ready/crc/issues/821#issuecomment-555862714). But if I change the namespace it won't work. Now if pushed images to the namespace the where my pod is running it is working fine. Not sure it is bug or not

@thotz Ah I thought you are running the pod in the same namespace as your imagestream. I have to check if it is possible to use the imagestream across namespace and update you. Good to know we have identified the actual issue.

@thotz https://docs.openshift.com/container-platform/4.7/openshift_images/managing_images/using-image-pull-secrets.html#images-allow-pods-to-reference-images-across-projects_using-image-pull-secrets document around how to use image across different project and I did try which worked for me. Please close this issue once you try it out and works for you.
$ oc project
Using project "demo" on server "https://api.crc.testing:6443".

$ oc get is
NAME          IMAGE REPOSITORY                                                           TAGS     UPDATED
mytestimage   default-route-openshift-image-registry.apps-crc.testing/demo/mytestimage   latest   2 hours ago

$ oc new-project test
$ oc policy add-role-to-user system:image-puller system:serviceaccount:test:default --namespace=demo
$ cat test.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  containers:
  - image: image-registry.openshift-image-registry.svc:5000/demo/mytestimage:latest
    name: test
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

$ oc create -f test.yaml
pod/test created

 $ oc get events
LAST SEEN   TYPE     REASON             OBJECT           MESSAGE
54s         Normal   CreatedSCCRanges   namespace/test   created SCC ranges
3s          Normal   Scheduled          pod/test         Successfully assigned test/test to crc-m7q2f-master-0
1s          Normal   AddedInterface     pod/test         Add eth0 [<IP_ADDRESS>/23]
0s          Normal   Pulling            pod/test         Pulling image "image-registry.openshift-image-registry.svc:5000/demo/mytestimage:latest"
0s          Normal   Pulled             pod/test         Successfully pulled image "image-registry.openshift-image-registry.svc:5000/demo/mytestimage:latest" in 369.120563ms
0s          Normal   Created            pod/test         Created container test
0s          Normal   Started            pod/test         Started container test

It worked with testimage by adding role fro rook-ceph default SA. Hence closing this issue
@praveenkumar : Thanks for helping out


[IPCT1-137] - create notifications infrastructure

This PR fixes [IPCT1-137] at https://impactmarket.atlassian.net/browse/IPCT1-137
Changes
New
Created a notification model.
Created 3 news endpoints.

list all notifications from a user
count the unread notifications
mark all notifications as read

Tests
news tests added on user.test.ts

I think you just forgot to replace the user address with the user id.
I was thinking how would that work (because we don't use it anywhere) and realize it's necessary to return the user id when /auth and /welcome.
Everything else looks good.


Issues tutorial for building from source

I was following the tutorial (https://github.com/kubernetes-incubator/cri-o/blob/master/tutorial.md) step by step (on a debian machine) but encountered the following issues:

The Get crictl step relies on git, but is only installed in the next step

Tutorial refers to install Go 1.8.5, but later version is required:

# github.com/kubernetes-incubator/cri-o/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming
vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/server.go:245: s.server.ServeTLS undefined (type *http.Server has no field or method ServeTLS)
Makefile:99: recipe for target 'bin/crio' failed
make: *** [bin/crio] Error 2

Updating go to the latest version (1.10.3) fixed the problem

Missing libudev during make, needed to do apt-get install libudev-dev

Missing  go-md2man during make, needed to do apt-get install go-md2man

Missing  add-apt-repository, had to install apt-get install software-properties-common

@drake7707 Do you mind opening a PR to add the steps to the tutorial?

@drake7707 Did you ever follow up on this?
@mrunalp Is this something you want?
@TomSweeneyRedHat Is this something you could throw together?


Efficiency

Brainstorming ways to increase efficiency.
These are @rclark's idea from our plane ride:

Before parsing the JSON can we read the file as a string and somehow determine whether it contains any longitudes outside +-180? That way we can skip irrelevant files as quickly as possible.
Do ^^ with each feature, too.

Closed by #4.


Add Global Headers in jQuery?

Hi,
I happened to stumble across Intercooler and I think I'll be glad I did. It looks awesome. But I'm having a problem using it with Laravel since it needs the CSRF token.
How can I set global headers in my jQuery? I understand that I can use defaults on a page, but I would rather have it set globally.
I'm currently just using .ajaxSetup but it appears I could use Intercooler's beforeSend function. I just don't see how to actually use it.
If you could help me, that would be greatly appreciated. Thanks!

Hi Joseph,
Since intercooler uses jQuery under the covers, you can use the usual $.ajaxSetup() function to include additional metadata.
If you want to stay within intercooler, you can use an ic-global-include attribute on your page somewhere to include the token, using the JSON format or a hidden input referenced via CSS selector, according to tastes. :)
Cheers,
Carson
On September 28, 2016 at 4:10:36 PM, Joseph Anderson<EMAIL_ADDRESS>wrote:
Hi,
I happened to stumble across Intercooler and I think I'll be glad I did. It looks awesome. But I'm having a problem using it with Laravel since it needs the CSRF token.
How can I set global headers in my jQuery? I understand that I can use defaults on a page, but I would rather have it set globally.
If you could help me, that would be greatly appreciated. Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@carsongross Awesome! Thanks so much, got it.


Is server side aggregation supported?

The OData v4 standard defines a server side aggregation (OData Extension for Data Aggregation Version 4.0).
On the framework description it says "The SDL OData framework is aligned to the v4 version of the OData OASIS standard.", so does the SDL OData v4 Framework support server side aggregation?

Aggregation functionalities are not implemented in current version. Will mark this as enhancement so that it can be picked up at later stage.


Default locale

Summary by CodeRabbit

New Features

Introduced a new environment variable intl_default_locale to set the default locale for PHP, enhancing internationalization support.
Updated documentation to include detailed instructions on the new environment variable and Composer installation process.

Documentation

Enhanced the README.md with clear guidelines on the new locale configuration and multi-stage build examples for Composer.

Configuration

Added intl.default_locale setting in the PHP configuration to utilize the new environment variable for locale management.

Hello @erseco,
I hope you are doing well. I follow up with a new pull request to add the intl. default_locale in PHP. With this setting, the docker image is even more customization and by default all stays the same.

Nice! Thanks for your help!


fixed get_orchestrator_version()

added logs to dcos and swarmmode validation

This change is

LGTM

@acs-bot test this please

@acs-bot test this please


Chez tcp-connect is missing some machine types

The list of machine types that need libc.so.6 is not complete, missing e.g. ta6le. There is already a more complete list in r6rs-pffi.

Thank you for the report!
I’ll work on this after Easter.


Correction for raw affiliation SPO SPIRAL INRA Montpellier SupAgro, UMR 1083 Montpellier France

Correction needed for raw affiliation SPO SPIRAL INRA Montpellier SupAgro, UMR 1083 Montpellier France
raw_affiliation_name: SPO SPIRAL INRA Montpellier SupAgro, UMR 1083 Montpellier France
new_rors: 03rnk6m14;04w07sc25
previous_rors: 03rnk6m14
works_examples: W2909069113
contact: ea368f1f7e35cf007752264c5a80c9e3:81dbbf2ec0f55370ebf91390375a1ae24ee0 @ inrae.fr

This issue was accepted and ingested by the OpenAlex team on 2024-10-09. The new affiliations should be visible within the next 7 days.


Added value of using MMS compared to custom docker image?

First of all, thank you for developing a flexible and open serving-framework.
In my current use-case I need to serve a ML-model asynchronously, with the events being handled by a message broker. Currently the ML-model is part of a docker-image, which bundles the python dependencies and loads and serves the model artifact. The process isn't perfect, but it works.
What would be the main benefits of handing the serving-task to MMS (or any serving-framework), especially since another REST-call would to be made?
(I suppose, it could be conventions (e.g. *.MAR), performance, metrics? What am I missing?)
Would be very happy to benefit from your insight and experience regarding this matter. :)

MMS as a whole brings in a lot of features. Apart from the ones you mentioned  ie., custom model metrics, logs, packaging all model artifacts, it also brings in features such as

Managing the full lifecycle of the models through control plane APIs
Scaling in and scaling out of your model instances to handle multiple requests at the same time. This goes hand in hand with performance I guess.
Keeps these model instances up and running and is responsible for this high availability.
REST APIs to make these calls convenient.
Queuing the requests and scheduling it on workers.

If you package just the model in the container, you would need to write an orchestrator and a server to handle multiple connections coming in, handle the requests, maintain high availability etc.
I am not sure if this answers your question. Please do let me know if you need any further information :)

This is perfect, thank you!


Make README gcloud setup instructions clearer

Change the project config property to gotraining-testing to avoid accidental app
deployments to gotraining. Make the difference between gotraining-testing and
gotraining clear. Replace the --configuration flag with --project to use project
selection over configuration selection.

I think I like Julia's suggestions the best.
On the ANZ note, do we get rid of the copyright ANZ corp at the end?

On the ANZ note, do we get rid of the copyright ANZ corp at the end?
Nope, I'd just the references to ANZ's corp network setup I'd say.

I think that should be it then, unless there are any other suggestions.

just a lil aside: next time if you don't mind please issue PR from your own fork.


⚠ Bofrost.es has degraded performance

In 01bc0f5, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1725 ms

Resolved: Bofrost.es performance has improved in 2c2f334 after 10 minutes.


Optional preview of TransformModifier's effect

Is your feature request related to a problem? Please describe.
Having TransformModifier work in tool mode is great for understanding how they work and get immediate feedback from tinkering parameters. However it comes with a caveat: they may make unwanted changes to a scene (which can lead to unnecessary dif lines on version control). Also there doesn't seem to be logic in this: some modifiers like LookAt and Follow do live preview, while Shake and LookAtGroup don't.
Describe the solution you'd like
All modifiers should include and implement editor_preview export in them. This way one can tinker with modifiers and get realtime feedback, but turn preview off when they are satisfied with the solution. For now this is the most elegant solution I've come up:
# TransformModifier.gd
export var editor_preview : bool = true

func is_modifier_enabled() -> bool:
	return editor_preview or not Engine.editor_hint

# Shake.gd
func _physics_process(delta: float) -> void:
	if .is_modifier_enabled():
		# modifier logic here

Describe alternatives you've considered
Some modifiers are stable as long as their targets don't move. These might be safe to have live preview on all times. However that doesn't solve the problem for the rest of the modifiers.
Additional context
I also tried to move the actual logic into virtual function (_apply_modifier) which base class would call on their _physics_process, but found out that base class's _physics_process doesn't get called in derived classes.
An unrelated small question about coding style: is there some advantage in that inheritance is declared with path instead of class name? ie. extends "res://addons/virtualcamera/TransformModifiers/TransformModifier.gd" instead of extends TransformModifier? To me latter seems cleaner, but I've followed established style.

The main reason I've been using the path explicitly for inheritance is that it's less error prone. I've had issues where scripts will think there's a cyclic dependency or compilation error if it's using a custom class_name until the project is reloaded.

Ok nice to know. Inheritance in gdscript does sometimes have its problems...


[formrecognizer] Skip flaky tests

WIP

API change check
API changes are not detected in this pull request.

/azp run python - formrecognizer - tests

/azp run python - formrecognizer - tests


Add scheme to Docker URIs

The current definition of the ml-model:inferencing-image and ml-model:training-image links requires that they be of the form <registry_domain>/<user_or_organization_name>/<image_name>:<tag> (e.g. docker.io/some_organization/example-image:1), which gives the appearance of a relative URI. This causes problems in STAC API implementations like stac-fastapi that replace relative URLs with absolute URLs prefixed with the API's root path (e.g. the above example in an API with a root of https://some-api.com/stac would become https://some-api.com/stac/docker.io/some_organization/example-image:1 in any Items containing that link).
We should consider redefining that Link type to avoid this issue. We could require that the URI be prefixed with a scheme like docker://, but we may also want to reconsider how that link is defined. Most STAC links seem to be defined as HTTP links, so it might be more appropriate to link to the homepage for an image (e.g. https://hub.docker.com/layers/radiantearth/cyclone-model-torchgeo/1/images/sha256-bf09b7cc7e088c0089c0833a4cca0b1f5b4b21a18360ad98e21325ae87c0065a?context=repo instead of docker.io/radiantearth/cyclone-model-torchgeo:1).
cc: @guidorice @m-mohr

Yes, the current definition doesn't make sense. I didn't realize that when reviewing. A link href should be a valid URL and nothing something else can easily consume.
Looking at the example, the following should probably be changed:
{
      "rel": "ml-model:inferencing-image",
      "href": "registry.hub.docker.com/my-user/my-inferencing-model:v1",
      "type": "docker-image",
      "title": "My Model (v1)"
}

to for example:
{
      "rel": "ml-model:inferencing-image",
      "href": "https://registry.hub.docker.com/my-user/my-inferencing-model",
      "docker:name": "registry.hub.docker.com/my-user/my-inferencing-model:v1",
      "type": "docker-image",
      "title": "My Model (v1)"
}

or:
{
      "rel": "ml-model:inferencing-image",
      "href": "https://registry.hub.docker.com/my-user/my-inferencing-model",
      "docker:registry": "registry.hub.docker.com",
      "docker:image": "my-user/my-inferencing-model",
      "docker:tag": "v1",
      "type": "docker-image",
      "title": "My Model (v1)"
}

or is there anything that can be used as absolute URL instead? Is docker:// commonly used?
Eventually, we could also extract all this into a docker link extension, I guess.

@m-mohr
Is there anything that was done regarding this, specifically for the docker:// (I like this idea, although not official/common, it removes ambiguity with https://) and potential docker extension?
Similar issues are encountered with MLM and STAC-API mangling the URI missing the protocol, as if they were relative links.

Not that I'm aware of.


IAM <-> Workspace integration for scoped Workspace-API access

Builds on top of https://github.com/EOEPCA/workspace/issues/34 introducing user<->group(=team) associaction!
The Workspace-API is a lightweight layer built on top of Kubernetes that exposes workspace-related information, such as credentials, via HTTP routes.
There is a single central deployment of the Workspace-API within the cluster, which is accessed by operators, (potentially) platform users , and services like ProcessingBB or MLOpsBB. These services use the API to retrieve credentials, for example, to stage data.
The API routes follow the pattern /workspaces//..., ensuring that only authenticated users associated with a specific team can access the corresponding workspace resources.
Sign-Off Checklist:

The Workspace-API is successfully deployed.
Endpoints are secured using APX along with Keycloak or OPA policies, ensuring that platform users, such as userA associated with teamB, can access resources via HTTP GET requests like /workspaces/teamB

As discussed in meeting 3 Dec 2024, a similar approach needs to be applied to the STAC API Admin component (see EOEPCA/resource-discovery#101).
In this case, coarse-grained authorization decisions will need to handle different HTTP methods rather than distinct routes - but should still be doable based on Keycloak policies.
Other important topics for future discussion:

Delegated access for services: Services such as ProcessingBB and MLOpsBB will require delegated access, making token expiration a critical consideration.
Fine-grained authorization: Example - Optimizing STAC queries to return results only for granted collections requires further exploration. This likely needs to be implemented directly in the code (e.g., through middleware) rather than via a separate proxy. But many other Examples exist where logic can be handled out of process, e.g. via gateway or OPA

For the workspace API, what are the general rules for access protection?
Is it just an all-or-nothing protection like for the Workspace UIs, allowing users who are allowed to access workspace foo to also access path /workspaces/foo/* of the API by any HTTP method? If not: What else do we need to consider?
On whose behalf will external services (Processing BB, MLOps BB) access the workspace API, on their own or on behalf of some "real" user?

correct, if a user is associated to group foo he should be allowed to any route /workspaces/foo/* but not to /workspaces/bar/*  or /workspaces/*
the HTTP method specific routes we need (at the moment) for the eoAPI STAC API Transaction tool
i.e. this coarse authorization checks (route-based here and HTTP method based there) are IMO the goal for this quarter, more granular (regardless if either external gateway or OPA or in app code) we need to discuss and plan for next quarter
hope @rconway can help and step in here regarding delegation as I was also not directly involved in past - my understanding is that the services (=ProcessingBB) themselves could access anything on the workspace-api and just used the passed JWT to extract the user=group=team and called the workspace/<user> then?
so IMO we are "free" to define another approach for delegation here now, we have to consider that the user (with his token) calls the ProcessingBB but the process then is async, so the user token may be expired at the point when then ProcessingBB finished and would call the workspace-api for bucket crentials to subsequently upload results
I know that openEO (another new part of ProcessingBB) uses Device Token flow together with Refresh Tokens to mitigate that but personally I'm not sure about storing a Refresh Token on a service ...

We are currently considering using offline tokens in the context of the Resource Health BB, for which they seem to be an appropriate solution. They would also work well for the processing and similar scenarios, but I am not yet sure if they are really the most appropriate choice there.
Offline tokens are long-living tokens (default: 30d) that can exist without an active session, but allow a user (or a service acting on the user's behalf) to request a session (i.e., access token) at a later time. The advantage as compared to a refresh token is that it is not necessary to keep a session open for a long time. Furthermore, Keycloak gets involved at the time when a session is actually requested and is able to intervene and reject the session, e.g. if the offline token has been revoked. So it is definitely better than using long-living access or refresh tokens.

The case of the Processing BB is that a processing job is invoked by a user (passing a JWT). During the execution of the job the Processing BB needs to call other BBs (acting as the originating user) - for example the Workspace BB for storage, or Resource Registration to publish outputs. This needs to take account of the fact, mentioned by @fabricebrito, that processing can take a (very) long time.
@w-scho Do you think the offline token approach would help with this case?

I have no real-world experience with OIDC offline tokens and am therefore still a bit unsure about the details. I am quite sure, however, that they are an appropriate solution for the Resource Health case where jobs are run repeatedly on behalf of a user. This case is a bit simpler than the processing case, because it does not involve delegated authentication. I'd like to first evaluate the use of offline tokens in the Resource Health scenario to get a bit more familiar with them and then see if they really fit into the Processing scenario or would just be a partially disarmed variant of refresh tokens there.
Normally offline tokens are issued directly during the authentication flow if explicitly requested. Therefore I am not sure if it is possible to turn an existing JWT into an offline token. Also ideally a token that is intended for delegated access should be restricted as much as possible, and I am not sure to which extent this is possible with offline tokens. At least offline tokens do not seem to be designed for delegated access, and we will need to do some investigation to find out if they are still approriate for the processing scenario.

So what is the typical solution for delegated access - ignoring the 'token lifetime' problem?

We initially considered UMA 2 for this case. However, UMA 2 does also not fit perfectly, because it focuses mainly on party-to-party (usually in the sense of person-to-person) authorization from the resource owner's perspective, is quite complex and does not address the token lifetime problem. A typical use case for UMA 2 would be granting another person (or maybe an app) access to one's bank account. Granting the Processing BB access to some workspace or data collection is similar to this, but does not exactly match the purpose of UMA 2.
So we actually have two candidate solutions that are completely different and do not exactly match our use case, but still may be viable approaches.
A nearly ideal solution for delegated access in a technical sense would be the proxy ticket feature of the CAS protocol. Unfortunately there is no exact equivalent for this in OIDC, and even CAS proxy tickets do not really solve the token lifetime problem.

For evaluation and demonstration, I created two additional ingresses/ routes for the Workspace API. Both routes use a newly created client named "workspace-api".
A Keycloak-based one at https://ws-api-test.apx.develop.eoepca.org/
This route protects workspaces/ws-test4 through a resource that is configured in Keycloak and that requires the user to have role "ws_access" on client "ws-test4". Everything else is currently unprotected and only requires authentication.
The main advantage of this solution is that it is based on explicit configuration in Keycloak and does not make any assumptions. The downside is that this configuration has to be created individually for each workspace to protect.
An OPA-based one at https://ws-api-opa.apx.develop.eoepca.org/
This route uses the opa plugin of APISIX to connect directly to OPA. For authorization, it relies solely on OPA, i.e., it uses Keycloak only for authentication. The OPA policy behind this route currently protects /workspaces/{ws_name} generically by requiring the JWT to be valid and to claim that the user has role "ws_access" on the client with name {ws_name}. Everything else is currently blocked.
The main advantage of this solution is that it is generic and does not require any additional configuration in Keycloak in addition to what needs to be done for the Workspace UI anyway. However, it implicitly assumes that the workspace name matches the name of the corresponding client in Keycloak.

@w-scho
If the OPA approach is more generic, then it seems like a better solution.
For understanding - the OPA approach requires a dedicated client for each workspace, for attaching the ws_access role. Didn't we talk about using a Group for each workspace?

@rconway
There is both, a group and a client. The group is required for associating users to a workspace. The client is required for the Workspace UIs, because each Workspace UI has its own DNS address. In principle it would also be possible to use a single client for multiple DNS addresses, but this would require adding and removing URIs to/from that client when a workspace is added/removed. I think it is cleaner to create a client when a workspace is created and delete it when the workspace is deleted.
For the Workspace API protection this implies that we can simply rely on that client and its associated role.
In principle it would also be possible to check directly for a group in an OPA policy, but it is cleaner to check for a role, because a role actually represents a set of permissions, whereas a group only represents a collection of users in the first place.

So each workspace has an associated client - each client has an associated ws_access role - and users are added to this role to obtain access?

we are mixing up topics here:
regarding #37 here:
there is just one workspace-api deployment in namespace workspace (-> just one DNS) but the individual routes must be protected via team association of user -> this could be handled via OPA without additional keycloak setup IMP
regarding https://github.com/EOEPCA/workspace/issues/34:
the workspace-ui is deployed per team in a separate team namespace - there during the provisioning, the workspace-pipeline is creating keycloak group, client and so and authorization is protected via keycloak

path based routes ./workspaces/{workspace} in Workspace-API are protected now
setup of OPA policy by IAM team: policy https://github.com/EOEPCA/iam-policies/blob/main/policies/eoepca/workspace/wsapi.rego
authorization enabled via OPA plugin here: https://github.com/EOEPCA/eoepca-plus/blob/deploy-develop/argocd/eoepca/workspace/parts/ingress-workspace-api.yaml

Note: This issue encompassed general and foundational work to align IAM integration relevant to various building blocks (DataAccess (#2301), DataCube (#3301), and ResourceDiscovery (#1304)). While it was originally not planned for this quarter , it was added after discussions with Richard. The associated spent hours (6h here, 24h in https://github.com/EOEPCA/workspace/issues/34) were evenly allocated across the mentioned building blocks and are not reported here!


Test fail with pytest5 release due to syntax change

[   12s] =================================== FAILURES ===================================
[   12s] _____________ TestSchemaUnmarshal.test_string_format_invalid_value _____________
[   12s]
[   12s] self = <test_schemas.TestSchemaUnmarshal object at 0x7fbd89b5e2e8>
[   12s]
[   12s]     def test_string_format_invalid_value(self):
[   12s]         custom_format = 'custom'
[   12s]         schema = Schema('string', schema_format=custom_format)
[   12s]         value = 'x'
[   12s]
[   12s]         with pytest.raises(
[   12s] >           InvalidSchemaValue, message='Failed to format value'
[   12s]         ):
[   12s] E       TypeError: Unexpected keyword arguments passed to pytest.raises: message
[   12s] E       Use context-manager form instead?
[   12s]
[   12s] tests/unit/schema/test_schemas.py:171: TypeError
[   12s] =================== 1 failed, 288 passed, 1 xpassed in 0.91s ===================

As you have hardcoded pytest version on travis it is not exhibited there.

python2 support dropped and updated pytest to version 5 hence closing.

Packagers: note that this fix was made right after the latest release 0.14.2, so you'll want to skip this test if you are packaging 0.14.2.


XLA: extract the allocation traits for Tensors

Extract the operations into a helper traits for the allocator.  This
allows the main path of the allocator be agnostic to the aligned
allocation implementation.

@asuhan not sure if this is what you had in mind.  Did you want this to be more split apart with the allocator traits being specialized per platform instead as is normal and expected?  This avoids ensuring that the signature matches and reduces overall code, but, Im happy to switch to the traditional model if you so prefer.


tselect CSR should be always present, and hardwired if no triggers

From debug spec:

This register determines which trigger is accessible through the other trigger registers. The set of
accessible triggers must start at 0, and be contiguous.
Writes of values greater than or equal to the number of supported triggers may result in a different
value in this register than what was written. To verify that what they wrote is a valid index,
debuggers can read back the value and check that tselect holds what they wrote.

@Dolu1990 does your change actually add the new CSRs? If (debugTriggers == 0), does this add a CSR init'd to 0? I'm still seeing the test failure.

Hi,
i just pushed some change.

Before those change the debug triggers were only allowed for JTAG debug
Now they can be used to generate breakpoint aswell

To enable them, you now only need
--debug-triggers=howMany  --debug-triggers-lsu
But keep in mind, VexiiRiscv only support a subset of the triggers, mostly PC / load / store address triggers + chaining
What test are you running (which need test/need them) ?

The rv64mi-p-breakpoint test.
To be clear, I don't need the rest of the trigger functionality or breakpoint functionality. The test expects that a hart which does not support those features will have tselect readable and hardwired to zero, such that sw can discover that no trigger support is available.

ok ^^
So,  now if you don't put --debug-triggers=howMany --debug-triggers-lsu, tselect should be hardwired to 0


Add a README.md to most directories.

Copied some descriptions from the docs/ and left the rest blank, but hopefully we can improve them in future.
While https://ambuda.readthedocs.io/en/latest/ exists as "top-down" or "from the outside in" documentation, I think there's also value in having "bottom-up" or "from the inside out" documentation closer to the code, in the form of a README.md in each directory.
Ideally it would describe the "interface" of the code in that directory ("module"): where it fits in the bigger picture / its slot in the "map" of the project architecture.
I've populated whatever was obvious to me, and can take suggestions for the rest, or we can merge this and improve incrementally.

I'm curious if you have a strong preference for this over adding docstrings to __init__.py files. My first hunch as a Python developer is to look at the __init__ file, and we can also then build these files with reStructuredText so that we have a readable reference on our readthedocs page.

Not a strong preference, but I think the README.md has some advantages:

only (some) Python developers know to look inside __init__.py, and that convention is specific to Python modules— whereas README.md is displayed by the GitHub UI when just clicking around to look inside directories, and it works the same for e.g. the static/js directories,
ultimately (and hopefully soon!) we'll add diagrams etc to this documentation, which are not appropriate for __init__.py.

But definitely we can do both, e.g. add a short docstring to the __init__.py and have more elaborate stuff in the README.md file. (For things like Python libraries, which someone may load into iPython and type help on a module, it makes sense for an elaborate reference page, but I expect the number of people who click around the repo on GitHub to be orders of magnitude more than who browses help the "Python way".)
I think the other question is, whether there's any point in committing empty files, or we should only commit 'reasonably good" documentation — by committing blank and one-line documentation, is the effect more likely to be seeding things for further organic improvement, or preventing more extensive documentation (by setting an expectation that our bar is low)? I hope it's the former, but not sure :)

Basically my hope is that having a README.md in every directory will be like having a "You are here" map everywhere, which can help orient someone who's exploring — but then again I must admit I haven't seen many projects do this, so I don't know how well it will work out in practice.
(The "you are here" map may actually work: create a architecture diagram for the entire system, and have each README.md file have the same diagram but the directory's role highlighted, like the maps in Wikipedia articles about a city/country that show it highlighted in the context of a state/continent.)

Another option, if it's more satisfactory, is to put the documentation in __init__.py (for Python directories) and have the README.md just point to it ("look inside the file __init__.py"). The main principle for me is that someone browsing into a folder should not encounter a plain list of files, but something that helps orient them, either directly or indirectly.

expect the number of people who click around the repo on GitHub to be orders of magnitude more than who browses help the "Python way".)

Ah, this is an excellent point. OK, I'm more on board with this idea now.
Something at the ambuda/* level feels at the right level of granularity to me, i.e. ambuda/views/README but not ambuda/views/dictionaries/README. If you're fine with that, we can remove the subfolder READMEs and merge

ultimately (and hopefully soon!) we'll add diagrams etc to this documentation

Never done this before -- what's the setup? I know how to do it for readthedocs but not plaintext README files, beyond just embedding images from the web.

whether there's any point in committing empty files, or we should only commit 'reasonably good" documentation — by committing blank and one-line documentation, is the effect more likely to be seeding things for further organic improvement, or preventing more extensive documentation (by setting an expectation that our bar is low)? I hope it's the former, but not sure :)

I can take a pass and fill these out with some detail to start off, but ultimately I think it's best coming from you and others who can look at the repo more objectively than i can.

Removed the second-level files (which were all empty anyway).

ultimately (and hopefully soon!) we'll add diagrams etc to this documentation

Never done this before -- what's the setup? I know how to do it for readthedocs but not plaintext README files, beyond just embedding images from the web.

GitHub renders Mermaid diagrams in markdown now: https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/

Oh wow -- OK, I'm even more on board now. Great idea!


Identifiers validation failed for dataset Colección de Anfibios del Instituto de Investigación de Recursos Biológicos Alexander von Humboldt (IAvH-Am)

Identifier validation failed for the dataset Colección de Anfibios del Instituto de Investigación de Recursos Biológicos Alexander von Humboldt (IAvH-Am):

Crawler attempt: 355
Publishing organization: Instituto de Investigación de Recursos Biológicos Alexander von Humboldt
Publishing country: COLOMBIA
Installation: IPT IAvH
Number of occurrences indexed for this dataset at the time of the issue: 16220
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 17269 total records; 17269 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3725074/step

New IDs sample:

Old IDs sample:

IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15831
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15832
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15833
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15835
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15836
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15837
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15838
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15839
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15840
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15841

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Colección de Anfibios del Instituto de Investigación de Recursos Biológicos Alexander von Humboldt (IAvH-Am) : https://doi.org/10.15472/dma300.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Identifier validation still  failing for the dataset Colección de Anfibios del Instituto de Investigación de Recursos Biológicos Alexander von Humboldt (IAvH-Am):

Crawler attempt: 371
Publishing organization: Instituto de Investigación de Recursos Biológicos Alexander von Humboldt
Publishing country: COLOMBIA
Installation: IPT IAvH
Number of occurrences indexed for this dataset at the time of the issue: 16220
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 17269 total records; 17269 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/4001616/step

New IDs sample:

Old IDs sample:

IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15831
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15832
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15833
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15835
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15836
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15837
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15838
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15839
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15840
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15841

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Colección de Anfibios del Instituto de Investigación de Recursos Biológicos Alexander von Humboldt (IAvH-Am) : https://doi.org/10.15472/dma300.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Identifier validation still  failing for the dataset Colección de Anfibios del Instituto de Investigación de Recursos Biológicos Alexander von Humboldt (IAvH-Am):

Crawler attempt: 374
Publishing organization: Instituto de Investigación de Recursos Biológicos Alexander von Humboldt
Publishing country: COLOMBIA
Installation: IPT IAvH
Number of occurrences indexed for this dataset at the time of the issue: 16220
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 17269 total records; 17269 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/4055869/step

New IDs sample:

Old IDs sample:

IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15831
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15832
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15833
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15835
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15836
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15837
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15838
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15839
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15840
IAvH:COLECCIONES:ANFIBIOS:IAvH-Am-15841

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Colección de Anfibios del Instituto de Investigación de Recursos Biológicos Alexander von Humboldt (IAvH-Am) : https://doi.org/10.15472/dma300.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.


SqlServer Query: double.NaN (or float) constant produces invalid SQL

SqlException : Invalid column name 'NaN'

There is no way to represent NaN, PositiveInfinity, or NegativeInfinity in Transact-SQL.

Triage:

Do what we need to do for spatial (likely based on feedback)
Consider client eval or throw for 3.0.

Dependent on #13192

Maybe send 0.0/0.0 to the server as a representation for NaN.

Silly me, you'd never write x == double.NaN because it's always false. You'd have to write double.IsNaN(x).
For spatial, it could be convenient if we translated double.IsNaN(x.Geometry.Z) to [x].[Geometry].HasZ(), but again I think it's low priority since if you're using Z or M, you likely always specify a Z or M value.

There is no NaN in T-SQL. Should consider using null, client eval, or just not supported.

Notes from triage: The literal generator for the provider/type/value combination should throw if asked to generate a literal for values that cannot be represented in the store. Se also #12797.

This behavior is consistent with SqliteParameter which throws if the value is double.NaN.


[jgit-upgrade2]:  WIP upgrading jgit to latest

For testing purpose. DO NOT MERGE

@ehsavoie is that superseded by #4095 ?

@jmesnil yes, closing it


install-powershell.sh support for amazon linux

Create installpsh-amazonlinux.sh to support installation on amazon linux.

@daxian-dbw - I am also planning to do some cleanup of the install*.sh scripts.
Is this bit of code already in the package based installs or should it be backported to the other installpsh scripts?  https://github.com/PowerShell/PowerShell/blob/master/tools/installpsh-suse.sh#L174-L179
Are there any improvements in https://github.com/PowerShell/PowerShell/blob/master/tools/installpsh-suse.sh that would be helpful to have in the other installpsh*.sh scripts?

@daxian-dbw - I should also ask will installpsh-suse.sh work for upgrading over an older version - did you test it for that?  I am thinking since tarball based installs can't use the package manager to update, it might be nice if this code could be re-run to update.

Is this bit of code already in the package based installs or should it be backported to the other installpsh*.sh scripts? https://github.com/PowerShell/PowerShell/blob/master/tools/installpsh-suse.sh#L174-L179

This bit of code will be done automatically when installing the DEB/RPM packages.

Are there any improvements in https://github.com/PowerShell/PowerShell/blob/master/tools/installpsh-suse.sh that would be helpful to have in the other installpsh*.sh scripts

No additional improvement. Just does what the package is doing.

should also ask will installpsh-suse.sh work for upgrading over an older version - did you test it for that?

If a newer release is available, then running the script should install the newer package, but it doesn't remove the older powershell core files from /opt/microsoft/powershell.
If there is no newer release, then re-running the script might fail as it tries to un-compress the files to the existing folder at line 167. I didn't test the re-run scenario.

Close via #5461


Add instructions to install express on deploy with a custom server

You are using a custom server with Express here but does not explain how to install it. I know it was explained in past steps but is was lost after change the branch.

Sounds cool to me.


adding FlexibleContexts for GHC 7.10 (#14)

With this patch, GHC 7.10.1 can compile hdbc-sqlite3.

Thanks, merged and released as HDBC-sqlite3-<IP_ADDRESS>!


Support Raspberry RP2040 target?

For example:
https://github.com/embassy-rs/cyw43/tree/master/firmware this repo.
$ cargo call-stack --example rpi-pico-w --target RP2040 > cg.dot
error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `/home/aaron/.cargo/bin/cargo-call-stack rustc - --crate-name ___ --print=file-names --target RP2040 --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit status: 1)
  --- stderr
  error: Error loading target specification: Could not find specification for target "RP2040". Run `rustc --print target-list` for a list of built-in targets

That's the Rust target, not the probe-rs target. Try --target thumbv6m-none-eabi


Implement Future for EthernetInterface

futures is #[no_std], so it may be worthwhile to implement Future for EthernetInterface if a feature is enabled.

:+1:

#394 added support for attaching Wakers to sockets, which is everything required to allow building async APIs on top of smoltcp. The smoltcp project itself won't be adding further async support due to reasons detailed in that PR.

#394 added support for attaching Wakers to sockets, which is everything required to allow building async APIs on top of smoltcp. The smoltcp project itself won't be adding further async support due to reasons detailed in that PR.


Expose browser.resolve(...)

Currently there is no way to run a resolver sequence later on. browser.resolve(...) should be refactored into a proper actor.

Done ... kind of. It actually is mdns.resolve() because it really has nothing to do with Browser.
Landed in b88788d1b88565eaff373facbdd7dd866a491e83.


getViewers() only returns the first five elements

Hi, how to get all users who viewed stories? Now the method getViewers() produces only the first 5
Thanks!

See this request.
https://github.com/instagram4j/instagram4j/blob/27b0dd000b6ebedf8c02bf7ec3947ccb63db6948/src/main/java/com/github/instagram4j/instagram4j/responses/media/MediaListReelMediaViewerResponse.java
It is paginated feed so requires multiple requests for all users.
There is a utility FeesIterable or FeedIterator that does this for you. Follow example here:
https://github.com/instagram4j/instagram4j/blob/27b0dd000b6ebedf8c02bf7ec3947ccb63db6948/src/examples/java/actions/FeedIterableTest.java#L22
we also have a discord where you can chat for questions. https://discord.com/invite/gR2EPwZGEZ


Ripple effect blocking? [next]

I'm trying to debug a mui-powered web-app performance and I see very long touch-events around Ripples, view does not transition to next one if ripple effect has not done:

is Ripple effect blocking? I checked and I saw transition-group is used for the animation. Probably it should be dropped in favour of react-motion/springs? https://www.youtube.com/watch?v=1tavDv5hXpo

Can I disable ripple effect on BottomNavigationItem and Tab components somehow?  I see no disableRipple option in API there :\

Thanks!

@damianobarbati I have been experiencing poor performance with react-motion. I have eventually removed the dependency from react-swipeable-views and noticed a good performance improvement.

view does not transition to next one if ripple effect has not done

That's on purpose, that sounds like we have successfully fixed #3484. We do such in order to provide visual feedback to the end-users. As long as the feedback comes in less than 100ms, it's a win, even if it's mean a slower end-to-end experience. Overall, the UX is better.

Can I disable ripple effect on BottomNavigationItem and Tab components somehow?

That's related to #3172. Both BottomNavigationButton and Tab are built on top of ButtonBase that implement disableRipple. So yes, you can. You just have to set the property to true.


Fixed getCommitFromGitHubAPIRequest to refer to GITHUB_API_URL

getCommitFromGitHubAPIRequest is currently only supported on api.github.com. Therefore, if the event is GitHub Enterprise and the commit cannot be retrieved by payload, it will fail to retrieve the commit.
(e.g. scheduled event)
To fix this, the following fixes have been made.

Fix to use getOctokit

.getOctokit refer to GITHUB_API_URL (https://github.com/actions/toolkit/blob/main/packages/github/src/internal/utils.ts#L24)

upgraded actions/github to use getOctokit
Fix code and tests for actions/gihub version upgrade

This and #169 fix will allow GitHub Enterprise Server and non pull_request events to be used.


fix: usr: 362: fix duplicate comments issue in bitbucket

Bitbucket v2 api fetches only 10 records and it is paginated, so its  not able to check beyond 10 comments and duplicates the comments

@tabraiz12 are these changes still necessary with the merge of #354 ?

@doomspork these changes should not be required now, that PR you accepted does handle the paging

Thank you @bradrees


+guide

+guide replaces the !guide custom MEE6 command. Also added +guide and +invite the +help's results.

Very cool and all but we can’t add these yet, here’s why:

The whitelist command currently doesn’t work, making it so the command would work everywhere
The command has the wrong alias
The command has the wrong link
In +help, the +guide command uses the invite description
The help command is getting too big so we need to add pages to make the embed shorter

You can try to fix these issues or we’ll fix them eventually on our side and then we can move all Mee6 commands over to our bot and finally get rid of Mee6.


Issue with styling citation "[@cite]" and  ":" character

Great theme!
Sometimes I have a small problem with styling of citations:
I have specific fragment:
- From [@botcharova2014ModellingAnalysisAmplitude]:
	- Assesing the presence of LRTC in the amplitude envelope of EEG and EMG

It will render like that:

When I put the space after the citation and before ":"
- From [@botcharova2014ModellingAnalysisAmplitude]  :
	- Assesing the presence of LRTC in the amplitude envelope of EEG and EMG

Its renders normally

Thanks for spotting it! Once you add the colon, Obsidian starts treating it as a footnote, hence the change in formatting. I'll go ahead and change that.

Maybe it can be solved on the Obsidian level, thanks for the effort and for making such great theme!


[SMALLFIX] Change default tachyon storage type to promote.

Update default tachyon store type to promote as that is more intuitive.

+1 LGTM

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/Tachyon-Pull-Request-Builder/6119/Failed Tests: 1org.tachyonproject:tachyon-integration-tests: 1tachyon.master.file.FileSystemMasterIntegrationTest.lastModificationTimeCreateFileTest
Test FAILed.


How could I get the RT for the new 4.8 kernel?

The 4.6 kernel doesn't seem to recognize a lot of the hardware in my machine but since I updated to 4.8 the fans run great in my machine and I don't have any startup issues in terms of latency... And bash runs well too...
I'm happy to learn how to add it in a PR but I'm still pretty new to Nix-lang.

Nevermind... This should work... https://github.com/musnix/musnix/pull/36


Apply email templates

Sources: https://drive.google.com/drive/u/1/folders/12baYqKnyo8V-W5B0B4oGPqUy-MZjlgWE
Ask @anikolova-bg on Discord for latest versions

Link to MJML template for the emails https://gist.github.com/kachar/c2eea431fb2d19dfcfe20f414c5bdb0f

@podkrepi-bg/backend @podkrepi-bg/frontend Does anyone wants to help with this issue?
We need to combine the email template with the predefined content and improve the welcome email experience.

update: this was implemented long ago with adding the templates based on mjml, so closing now


Actions in list view leads to 404

The graph action in list view will lead to 404.
re-produce: https://dev-devx-cmdb-api-qal.paas-preprod-west.a.intuit.com/ui/results?query=cluster{*}&page=0&limit=25

I see this behavior. the cause is a : char in the resourceID not being correctly urlencoded
for this bug I will try to fix urlencoding
next sprint, I'd like to update the QSL service code such that UID can be used as a filter param. once that's possible, the generated URL will use UID as distinguisher

actually, I'm not positive the cause is the : char. resourceIds with that char in them work just fine when testing in localhost... so I don't think it's a fundamental issue with react-router
actually, it is probably an issue of the URL not containing the /ui portion as built... and that would explain different behavior in localhost vs deployed envs
therefore, should be able to fix this in isolation, but FWIW, the issue to update the QSL service is: #139


enhanceupgrade iceberg to 1.4.3

Proposed changes

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall

run buildall


Update APIs when updating APIs, not when building.

Added rendering the APICLIENTS.md file to the updateApis npm script.
Also added updateApisOnly to preserve the original functionality and updateApiDocs for generating the docs only.
Naming in the renderers was inconsistent and confused me in places, so I tried to clean that up a bit.
As part of the above, renamed buildOperationList to renderOperationList.
Moved the renderOperationList logic from the gulpfile to the renderer file.
Added tests for renderer helpers.
Updated renderer tests to check for valid rendered TypeScript/YAML.

Also:

Turned off some jsdoc rules that conflicted with tsdoc.
Added js-yaml as a dev dependency to validate the operations list.
Addressed a few extra eslint complaints.
Removed unnecessary use of dotenv.

NOTE: This cannot be merged until I submit a 3PP request for js-yaml.

3PP request


Add autofocus, autocomplete one-time-code and inputmode numeric to token input fields

Description
By adding some extra attributes to the token input field the users gets a wider experience.

Autofocus makes sure the users starts typing in the correct inout field. This was already added to the login token field but not when setting 2FA up for the first time.
Autocomplete one-time-code is supported in Safari (maybe others as well?) and allow the browser to suggest codes send via SMS etc.
Inputmode numeric makes surety best keyboard are selected on mobil.

Motivation and Context

https://www.twilio.com/blog/html-attributes-two-factor-authentication-autocomplete
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Closing favour of #396


run不起来。。。

Module Warning (from ./node_modules/eslint-loader/index.js):
error: Attribute ":class" should go before "class" (vue/attributes-order) at src/layout/components/Sidebar/Logo.vue:2:39:
1 |

2 |
|                                       ^
3 |
4 |
5 |

1 error found.
1 error potentially fixable with the --fix option.
Module Warning (from ./node_modules/eslint-loader/index.js):
error: Attribute "ref" should go before ":key" (vue/attributes-order) at src/views/login/index.vue:30:11:
28 |         <el-input
29 |           :key="passwordType"

30 |           ref="password"
|           ^
31 |           v-model="loginForm.password"
32 |           :type="passwordType"
33 |           placeholder="Password"

1 error found.
1 error potentially fixable with the --fix option.
You may use special comments to disable some warnings.
Use // eslint-disable-next-line to ignore the next line.
Use /* eslint-disable */ to ignore all warnings in a file.
App running at:

Local:   http://localhost:9529/
Network: http://<IP_ADDRESS>:9529/

Note that the development build is not optimized.
To create a production build, run npm run build.
request invoke:/dev-api/vue-admin-template/user/info

你写的代码不符合eslint规范，想要关闭eslint规范，请去vue.config.js文件中将lintOnSave属性设为false


The CLWeeklyCalendarView class miss a method named "setNeedsDisplay"

I change the CLCalendarBackgroundImageColor, but the new color can't be displayed.

For now I only see to fix it by adding the line:
_backgroundImageView.backgroundColor = self.backgroundImageColor? self.backgroundImageColor : [UIColor colorWithPatternImage:[UIImage calendarBackgroundImage:self.bounds.size.height]];
directly into the (void)applyCusomDefaults. Is there another way to fix this?


Addition of guide to how to download dependencies

To make this Repository more user friendly, I have added resources for installing dependencies.
I have made the following changes in the README.md file:

Added the link to download the Python 3.x version for Python's site.
Add the commands to add Requests and Flask package in Python.

I have rectified the spelling mistakes. Kindly review @martyndavies

@Kerveyfelix Are you going to be able to make these changes?

@martyndavies I am making the changes now.

@martyndavies  Can you review my PR? I have added backticks.


Add newrelic as an option to the PHP extensions installation

Is your feature request related to a problem? Please describe.
Hello for our project we use a service called newrelic. This has also been added in our composer.json which makes it so we need to have it locally too. I would love to be able to install this extension in Laradock.
If it can't be supported officially I love to get some instructions on how to add it myself. I wasn't able to find this out by looking at the docker file (I am new to docker).
Additional context
Installation instructions that I got:
echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | sudo tee /etc/apt/sources.list.d/newrelic.list
wget -O- https://download.newrelic.com/548C16BF.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install newrelic-php5
sudo newrelic-install install

Docs about installation:
https://docs.newrelic.com/docs/agents/php-agent/installation/php-agent-installation-ubuntu-debian
Docs about preseeding:
https://docs.newrelic.com/docs/agents/php-agent/installationaphp-agent-installation-ubuntu-debian#preseeding

What I've tried adding to php-fpm/Dockerfile and workspace/Dockerfile is:
###########################################################################
# NEWRELIC:
###########################################################################

USER root

ARG INSTALL_NEWRELIC=false

RUN if [ ${INSTALL_NEWRELIC} = true ]; then \
 	echo 'deb http://apt.newrelic.com/debian/ newrelic non-free' | sudo tee /etc/apt/sources.list.d/newrelic.list \
	&& wget -O- https://download.newrelic.com/548C16BF.gpg | sudo apt-key add - \
	&& apt-get update -yqq \
	&& DEBIAN_FRONTEND=noninteractive apt-get -y install newrelic-php5 \
;fi

After installation I still get that the extension is not enabled. I've added it to the .env and set it to true.

This is already a PR: https://github.com/laradock/laradock/pull/2755

My bad. I didn't see it at the time. But also there is an issue with the PR. And I am not sure if it is still gonna be fixed or merged.


impossible to change position of closeButton

Starting from version 1.5 it's impossible to change position of close button. The reason is that now, close button frame is set in viewDidLayoutSubviews.

Oh, that's unfortunate. Can you think of a better solution that would keep it working but also work well with rotations on iPhone X (safeAreaInsets)?

Wow, thanks for such a quick  @zvonicek,
I don't know if it will be a good approach, but we can add closeButtonFrame (or closeButtonCenter) open CGRect variable to FullScreenSlideshowViewController, so the users will be able to set it, and then viewDidLayoutSubviews will use that value.

Thanks @yulian948, that's probably the best solution. I added such property.


Error when trying to test service worker logic with vue cli 3

Hello, I'm trying to test my SW logic and this is my test spec I'm using:
describe('Service worker', () => {
  it('should delete old caches on activate', async () => {
    const registerSW = require('@/registerServiceWorker');
    console.log(registerSW);
  });
});

And it fails with the following error:
/path/to/myapp/node_modules/register-service-worker/index.js:18
    export function register (swUrl, hooks) {
    ^^^^^^

    SyntaxError: Unexpected token export

How do you do testing of SW using this package?

Hmm, I'm not sure if you actually test that in Jest because your test code is run in Node.js, not in an actual browser.

I had the same problem.


support generating list of type query parameters

Thank you for submitting this pull request, however I do not see a valid CLA on file for you. Before we can merge this request please visit https://yahoocla.herokuapp.com/ and agree to the terms. Thanks! :smile:


Separate name and namespace into 2 columns

Instead of combining namespace and name as a single <namespace>:<name> column.  So you can sort them separately.
The namespace column will be hidden if:

The type is not namespaced
The grouping is set to group by namespace (tab folder-ey rows)
The namespace picker in the header is set to show a single namespace.

Verified


Use Public Cloud for Search Live Test Resources

Description
This PR changes azure-search-documents live test resource deployment to use the Public cloud instead of the Preview cloud.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

/azp run java - search - tests

/azp run java - search - tests


fix issue 940 - Anthropic API requires 1st message to be a UserMessage

Issue
Issue 940
Change
Ensures that the 1st message sent to Anthropic is a UserMessage; if needed, it will create a dummy user message with content "."
General checklist

[X] There are no breaking changes
[X] I have added unit and integration tests for my change
[X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green
[ ] I have manually run all the unit and integration tests in the core and main modules, and they are all green

[N/A] I have added/updated the documentation
[N/A] I have added an example in the examples repo (only for "big" features)

Checklist for adding new model integration

[N/A] I have added my new module in the BOM

Checklist for adding new embedding store integration

[N/A] I have added a {NameOfIntegration}EmbeddingStoreIT that extends from either EmbeddingStoreIT or EmbeddingStoreWithFilteringIT
[N/A] I have added my new module in the BOM

Checklist for changing existing embedding store integration

[N/A] I have manually verified that the {NameOfIntegration}EmbeddingStore works correctly with the data persisted using the latest released version of LangChain4j

@langchain4j I chose this solution because I didn't want the ChatModel discarding context, so I favored the dummy message instead. I figured that the ChatMemory implementation should be making all the decisions on when to discard messages.
I can move the ensureFirstMessageIsUser call to the generate method as originally suggested...But, the method itself doesn't seem generic enough to move to ValidationUtils.java do you have any strong opinions on that? By the way, I'm fine implementing your alternative suggestion if you don't like the dummy message approach.

I re-arranged a little bit & moved work out of the mapper.

created a sanitizer package & class (since it's modifying original messages)
moved ensureNotEmpty to the sanitize call
SystemMessage is removed in sanitizer...It's discarded downstream in the Mapper & only used to prepare the system  portion of the anthropic request

By discarding the SystemMessage prior to ensuring that a UserMessage is at index 0, we avoid weird conditions where the SystemMessage is later discarded downstream (by the mapper) and results in an Anthropic error due to two UserMessages in sequence.

Looking for opinions on these changes, if it seems okay I'll touch up the tests a bit more. CC @langchain4j

@johnsosoka thanks a lot!
I am not sure how well Anthropic models will handle dummy user message (now and in the future). They explicitly verify that the first message is user message, I don't know the reason for it, but I assume there is a good reason, if they have this validation. Maybe they fine-tune their models with the assumption that first message is always from user. So appending a dummy user message seems like a hack and may affect the quality of replies. I would rather go with another option: remove messages from the beginning untill the first message is from user.
Since this is an Anthropic-specific thing, I would keep this logic in the Anthropic module and not move it to chat memory impls.
WDYT?

okay, I'll update after work:

remove the prepended dummy message
continue stripping System Message in Sanitizer
Drop messages until 1st message is UserMessage (I'd like to log a warning that a message is being dropped, any issue?)
Throw an error if no UserMessage is present
Add check to ensure no back-to-back UserMessages; drop one if there are two (another Anthropic requirement I've encountered in this)

Updates pushed. Dropping messages now until 1st message is user. I'm also performing additional sanitization by dropping messages if there are multiple consecutive UserMessages (which throws a different API error) tests expanded as well.
Ready for re-review @langchain4j

Whoops! Totally forgot about the streaming model. I've added AnthropicStreamingChatModel support and expanded the tests quite a bit. I've re-run the entire anthropic model test suite & it's all green.


bug: GetOrSet deadlock

Mutex is not released in case of expired entry in func GetOrSet()
c.mu.Unlock() should be added
if ok {
      c.m[key] = c.queue.add(entry[K, V]{key: key, val: val, exp: exp.new(now, c.defaultExp, c.sliding)})
      c.queue.remove(currentNode)
      c.mu.Unlock()
      if c.onEviction != nil {
	      go c.onEviction(key, currentNode.entry().val, EvictionReasonExpired)
      }
      return val, false
}

Hi @vlasash. Thanks for submitting this issue. This indeed should be fixed.
To avoid similar issues I feel like the implementation should rely on 'differ' statement instead (especially given the Go team effort to make it efficient). The current way of mutex handling is rather an artifact of the old implementation when using 'differ'  wasn't convenient.
I'll try to fix it this week unless you want to do it.

Fixed: https://github.com/erni27/imcache/pull/66.


After upgrading ArcGIS Enterprise on Kubernetes, a new backup store needs to be registered.

Backup and restores were successful with ArcGIS Enterprise on Kubernetes 11.2:

However, after upgrading to 11.3 the backup store is removed from Manager UI:

"We can't upgrade the Ozone cluster in-place since it wouldn't play nice with previous versions, the alternative we put in place is forcing an admin to register a new store via the Manager UI and we documented it in the upgrade considerations."
I re-ran the enterprise-k8s-aws-backup workflow, which completed successfully. The backup is in the bucket, and even shows up in the admin api:

It does not however show up in the Manager UI. I tried changing this value thinking it would register a new backup store but it failed.
https://github.com/ArcGIS/arcgis-gitops/blob/cf779c2f7acdbf86e27b9d25a9fa6e53744e7853/config/aws/arcgis-enterprise-k8s/backup.vars.json#L8

This fix:

Makes enterprise-k8s-aws-organization workflow to register new S3 backup stores on upgrades.
Adds version number to backup store root directories.
Makes enterprise-k8s-aws-backup and enterprise-k8s-aws-restore workflows use default backup store if "store" input variable is  null.
Adds "The admin_password value must contain at least one special character." requirement validation in enterprise-k8s-aws-organization workflow.


flutter run error

Compiler message:
../../flutter/.pub-cache/hosted/pub.flutter-io.cn/cached_network_image-1.1.3/lib/src/cached_network_image_provider.dart:42:24: Error: The method 'CachedNetworkImageProvider.load' has fewer positional arguments than those of overridden method 'ImageProvider.load'.
ImageStreamCompleter load(CachedNetworkImageProvider key) {
^
../../flutter/packages/flutter/lib/src/painting/image_provider.dart:403:24: Context: This is the overridden method ('load').
ImageStreamCompleter load(T key, DecoderCallback decode);
^
Target kernel_snapshot failed: Exception: Errors during snapshot creation: null
build failed.
FAILURE: Build failed with an exception.

Where:
Script '/Users/kimz/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 780

What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command '/Users/kimz/flutter/bin/flutter'' finished with non-zero exit value 1

Its because of the compatibility issues with the latest version of flutter. Use "2.0.0-rc" version of cached_network_image, or the latest version.


Readme

As in the commit: I've updated package description (now the package doesn't scrape information from Hacktoberfest official page) and added License shield.

You have some conflicts mate :/ Might want to fix em


Source filename consistency

At driver.php, section Driving a multi-file project, we have a command-line example compiling three .c files. However, the diagram just below it shows one .c, one .cpp and one .m source files. Some consistency in the examples would be better.
I'd suggest it myself (through a PR), but I have no experience compiling stuff in clang, so I don't know if the command-lines need to be different for the other languages.

Changing the filenames seems to be the correct fix. Feel free to send a PR.


Feature animation

Animation component by using react-addons-css-transition-group and animate.css

@JoanaDalmeida Thanks can you rebase your branch ?
git fetch && git rebase origin/develop

@JoanaDalmeida Your example can also be a pure function and / or be a class and have a ref.


[REQUEST] app groups

Describe the bug
make it so that we can make app groups to sort apps, like we open a group (kinda like how the IOS app groups work) with a name we can set and we can put apps inside of, for example we could have a modded games group where the user could put modded ipa games, the user can add, remove, rename, and do whatever they want with groups and with no groups it would just look like the normal app list we have now

oops accidentally closed this


File name with escapable HTML character

The temporary PDFNAME_N_preprocess.html file refers to the corresponding PDFNAME_N_preprocess.jpg file (via path: html/body/div[@id="page_N"]/@title). If the PDFNAME contains escapable HTML character, such as &, this character is not escaped in the HTML file, which results in the following parsing error:
xml.etree.ElementTree.ParseError: not well-formed (invalid token):  line ...

To reproduce rename PDF to &.pdf and run:
pypdfocr \&.pdf

cf:
tidy -e \&_1_preprocess.html

Best,
Mik

This appears to be fixed in 0.9.0.  Closing for now...


add fuzzing to wkb package

fuzzing will help us identify any edge case bugs.

the wkb package has moved to github.com/go-spatial/geom and now has a fuzzing.


Log in screen flashes

When using the Firebase Database example the log in page shows up for a few seconds even if the user is logged in.
Is there a way to avoid this?

You could do something different. However we have to wait on Firebase Auth to be ready before you decide if you need to display the "Please Log In" UI or the app for the signed in UI. The OnAuthStateChanged Observer is where you listen for the UI state: https://github.com/firebase/quickstart-js/blob/master/database/scripts/main.js#L330-L346
This is triggered asynchronously so there can always be a delay, the delay is very small typically so you could decide to have your entire UI hidden while waiting for this. For example add the following to your CSS:
body {
  display:none;
}

and at the end of the onAuthStateChanged add:  document.body.style.display = ''; this way the body will be dispaye donly when the auth state is ready

Understood. Thank you.


NuGet Cycle detected with ImageResizer NuGet package

(This is my first-ever GitHub issue so please bear with me!)
I'm trying to build a simple Azure function that triggers on blobs, in order to resize images. Instructions are: http://jameschambers.com/2016/11/Resizing-Images-Using-Azure-Functions/
I added a project.json and a reference to ImageResizer as per below
{
  "frameworks": {
    "net46":{
      "dependencies": {
        "ImageResizer": "4.0.5"
      }
    }
   }
}

Once I do and hit save the logs say "Cycle detected". Later on I get errors when it says it can't find the namespace ImageResizer.
2016-11-23T08:50:54.284 D:\home\site\wwwroot\MyImageResizer\project.json
2016-11-23T08:50:54.284 Restore failed in 445ms.
2016-11-23T08:50:54.299
2016-11-23T08:50:54.299 Errors in D:\home\site\wwwroot\MyImageResizer\project.json
2016-11-23T08:50:54.299 Cycle detected:
2016-11-23T08:50:54.299 MyImageResizer (>= 1.0.0) -> ImageResizer (>= 4.0.5) -> ImageResizer (>= 4.0.4) -> ImageResizer (>= 4.0.4).
2016-11-23T08:50:54.299
2016-11-23T08:50:54.299 NuGet Config files used:
2016-11-23T08:50:54.299 C:\DWASFiles\Sites\spotterplfunc\AppData\NuGet\NuGet.Config
2016-11-23T08:50:54.299
2016-11-23T08:50:54.299 Feeds used:
2016-11-23T08:50:54.299 https://api.nuget.org/v3/index.json
2016-11-23T08:50:54.336
2016-11-23T08:50:54.336
2016-11-23T08:50:54.362 Packages restored.
2016-11-23T08:50:54.674 Script for function 'MyImageResizer' changed. Reloading.
2016-11-23T08:50:54.768 (3,7): error CS0246: The type or namespace name 'ImageResizer' could not be found (are you missing a using directive or an assembly reference?)
2016-11-23T08:50:54.768 (11,24): error CS0246: The type or namespace name 'ImageResizer' could not be found (are you missing a using directive or an assembly reference?)
2016-11-23T08:50:54.768 (16,5): error CS0103: The name 'ImageResizer' does not exist in the current context
2016-11-23T08:50:54.768 Compilation failed.

Please note that I have tried changing the version from 4.0.4 > 4.0.5 as suggested in issue #796. Also tried recreating it, etc. It's pretty consistent.
#r "System.Drawing"

using ImageResizer;
using System.Drawing;
using System.Drawing.Imaging;

public static void Run(Stream myBlob, string name, Stream outputBlob, TraceWriter log)
{
    log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");

    var settings = new ImageResizer.ResizeSettings{
        MaxWidth = 500,
        Format = "png"
    };

    ImageResizer.ImageBuilder.Current.Build(myBlob, outputBlob, settings);

}

Change the name of your project... Is it ImageResizer?

@fabiocav is looking into this now - we may need to move this into https://github.com/Azure/azure-webjobs-sdk-script

@davidfowl Thanks for the comment. Just out of curiosity, how did you find this random issue? :)

@lindydonna I see all... 😄

Interesting to see this happening with the function name you have above. This will typically occur if the function name (therefore the folder name) matches the name of the package you're referencing as it will be treated as the project name.
It's a bit odd that I couldn't find much information using that function name you've shared. Would you be able to share your Function App (site) name either directly or indirectly?
This bolded bit is particularly interesting: ( @davidfowl, any thoughts on this?)
MyImageResizer (>= 1.0.0) -> ImageResizer (>= 4.0.5) -> ImageResizer (>= 4.0.4) -> ImageResizer (>= 4.0.4

That's super strange. @fabiocav what does the folder look like behind the scenes? What does the project.json and project.lock.json look like for this project?

@fabiocav Sorry, the version I have now - that is live - its called CompImageResizer. I re-created this Azure Function over several times, thinking I did something wrong (this is my first Azure Function)
I don't think it has anything to do with the name ImageResizer. I created another function called AFIssue814, using the BlobTrigger-CSharp template and all I did was add a project.json with that one dependency and then I see....
2016-11-24T07:37:14.979
2016-11-24T07:37:14.979 Errors in D:\home\site\wwwroot\AFIssue814\project.json
2016-11-24T07:37:14.979 Cycle detected:
2016-11-24T07:37:14.979 AFIssue814 (>= 1.0.0) -> ImageResizer (>= 4.0.5) -> ImageResizer (>= 4.0.4) -> ImageResizer (>= 4.0.4).

@davidfowl For my CompImageResizer (which is currently live) as well as my AFIssue814 Azure function which I just-created, both have the identical project.json with...
{
  "frameworks": {
    "net46":{
      "dependencies": {
        "ImageResizer": "4.0.5"
      }
    }
   }
}

and an identical project.json.lock with...
{
  "version": 2,
  "targets": {
    ".NETFramework,Version=v4.6": {
      "ImageResizer/1.0.0": {
        "type": "project",
        "framework": ".NETFramework,Version=v4.6",
        "dependencies": {
          "ImageResizer": "4.0.4"
        }
      }
    }
  },
  "libraries": {
    "ImageResizer/1.0.0": {
      "type": "project",
      "path": "../ImageResizer/project.json"
    }
  },
  "projectFileDependencyGroups": {
    "": [],
    ".NETFramework,Version=v4.6": [
      "ImageResizer >= 4.0.5"
    ]
  },
  "tools": {},
  "projectFileToolGroups": {},
  "packageFolders": {
    "D:\\home\\data\\Functions\\packages\\nuget": {}
  }
}

@spottersys do you still have a function called ImageResizer in d:\home\site\wwwroot?  Can you delete that function and retry?

@fabiocav yes I do. I wasn't using that version (forgot it was there really) and now that I've deleted it, everything is working - in my other AFs. Thank you!

@fabiocav yes I do. I wasn't using that version (forgot it was there really) and now that I've deleted it, everything is working - in my other AFs. Thank you!

That is expected restore behavior, but as we just experience, may be confusing in the context of functions.
We might have some options to prevent this from happening, will investigate a couple of options. (@davidfowl any thoughts on this?)
At the very least, we can detect the issue and provide a clearer error message in those cases.

The lock file reveals all! It was seeing image resizer as a project reference. You might just need to restructure how functions are laid out on disk so that they aren't sibling folders. If that's not feasible, we might be able to come up with something else

Did we want this issue to be closed?  I'll reopen and @fabiocav can close if necessary.

This issue was moved to Azure/azure-webjobs-sdk-script#1127


Record expected proxy without relying on in-memory state shared between controller and injector

Please describe the Improvement and/or Feature Request'
As a part of sidecar injection, the injector component records that a proxy is expected to connect via the call to MeshCataloger.ExpectProxy(cn). However, this will no longer be feasible once injector is taken out from osm-controller as a part of #1939.
The way an expected proxy connect needs to be recorded in the mesh-catalog store needs to be reworked.
Scope (please mark with X where applicable)

New Functionality          [ ]
Install                    [ ]
SMI Traffic Access Policy  [ ]
SMI Traffic Specs Policy   [ ]
SMI Traffic Split Policy   [ ]
Permissive Traffic Policy  [ ]
Ingress                    [ ]
Egress                     [ ]
Envoy Control Plane        [ ]
CLI Tool                   [ ]
Metrics                    [ ]
Certificate Management     [ ]
Sidecar Injection          [ ]
Logging                    [ ]
Debugging                  [ ]
Tests                      [ ]
CI System                  [ ]
Project Release            [ ]
Other [ ]

Possible use cases

This is required to record expected proxies when the injector component is no longer a part of osm-controller.

This would require inter-process communication between controller and injector either directly or via a shared resource. Not required at the moment.


Provide the WASM interpreter as a cli tool.

Provide the WASM interpreter as a cli tool.
swam-interpreter
Usage: swam-interpreter [options] <wasm>

  --help                   prints this usage text
swam-interpreter executes a WASM binary
  <wasm>                   WASM module to be executed
  -s, --function <value>   Executes provided function name as main.
  -p, --parse <value>      Parse the input file as text
  -f, --filter <value>     Filter the traces. The parameter is a regular expression applied to the opcode, e.g.: 'mread|mwrite'
  -l, --logfile-name <value>
                           SWAM uses a logger based on [[https://docs.oracle.com/en/java/javase/13/docs/api/java.logging/java/util/logging/package-summary.html java.util.logging]]. Provide any valid valid file pattern
  -d, --debug-compiler <value>
                           Activates the debug option for the text parser
  -t, --trace <value>      Traces WASM execution channels; stack, memory and opcodes

I think is ready now

I think is ready now

Hi,
I think I didn't explain well enough what I meant in my comment about the tracer. The way your apply method is done is problematic as it throws exceptions, which is one of the things to avoid with cats. Have a look at a similar pattern I use for the Engine class, you can see I use the loadF method implicitly available through the pureconfig.module.catseffect._ import, so that this code is wrapped in the F properly, including errors. Just use a similar code for your apply. Remember, one of the ideas with wrapping things in an F is to suspend any side-effecting operation in the F context, and an exception is a side-effect, as well as reading/writing files.

I think is ready now

Hi,
I think I didn't explain well enough what I meant in my comment about the tracer. The way your apply method is done is problematic as it throws exceptions, which is one of the things to avoid with cats. Have a look at a similar pattern I use for the Engine class, you can see I use the loadF method implicitly available through the pureconfig.module.catseffect._ import, so that this code is wrapped in the F properly, including errors. Just use a similar code for your apply. Remember, one of the ideas with wrapping things in an F is to suspend any side-effecting operation in the F context, and an exception is a side-effect, as well as reading/writing files.

I understand now, thanks :)

Fix now

Nice work, let's merge this.

@Jacarte It looks like you need to reformat the code (see travis build)

Hi @satabin
Weird, it says that is already formatted. The problem seems to be from the util module. I executed mill __.reformat but the code didn't change

This is weird indeed. Can you change in the .travis.yml file the check to that:
        - ./millw __.reformat
        - git diff --exit-code --name-status
        - if [[ $? ]]; then echo 'Your code is not formatted correctly, please format it, check it and push formatted code'; exit 1; fi

So that at least we will see the changed files

Ok, so the Module.scala file is modified apparently.
$ git diff --exit-code --name-status

M	runtime/src/swam/runtime/Module.scala

This is weird I checked out your branch locally and I didn't get any modification.

I think I know, try to rebase your branch on master and run the formatting command (and please gt push --force-with-lease afterwards to avoid having a weird history).

No idea

On it

Something went wrong with your rebase, There shouldn't be my commit in your branch. Are you sure you pushed force? Also the last commit message is just wrong, this kind of commit message shouldn't exist, it doesn't describe what this does, I guess, it is a reformatting commit?

 Are you sure you pushed force? Also the last commit message is just wrong, this kind of commit message shouldn't exist, it doesn't describe what this does, I guess, it is a reformatting commit?

I think is good now :( sorry for this

No worries, excuse me, I sounded a bit dismissive, I should have worded it differently.

This is driving me crazy. I upgraded master, can you try rebase on the newest master and push (force) the result? Check locally that reformatting doesn't change first.

This is driving me crazy. I upgraded master, can you try rebase on the newest master and push (force) the result? Check locally that reformatting doesn't change first.

No worries, on it

Thanks! Let's merge this.

Great milestone!


[WIP] buffer: support attachment in hosted plugins

Warning: very rough sketch, but the intention is that multiple plugins can register buffer notifications on the same or different buffers without stepping on each other's toe.
At least the following works: (script for quick test, but does work the same in rplugin)
import vim
b = vim.current.buffer
def cb(buf, changedtick, lines):
     global l
     l = lines

b.attach(cb)

Not sure how to best represent the update, plugins will likely want to use the full new buffer state, but likely they also want to know start, old_end, new_end

Hi :wave:
What's the current status of this work? What is left to do before merging (on top of a rebase)?


year data

where are you getting the year data?

See footnote 1. from the Cumulative usage column: https://apilevels.com/#fn:1 for where the usage data comes from.
The Year column is not related to the usage, but rather the release date of the version in that row, see https://en.wikipedia.org/wiki/Android_version_history.

cool thanks - I think it would be helpful to add the Wikipedia link to the page, since it is the source of that data

Sorry, that's not necessarily the source, I was just showing where to get more details.
It could be also the Javadoc of android.os.Build.VERSION_CODES. If @ebelinski decides to add anything it should be probably that. Although in recent years Google got a bit lazy on with the docs there.
I'm curious, what is the reason for you query?

I'm curious, what is the reason for you query?

I wanted to compare the years of the API versions with the years of the different versions of Google Play Store, and I noticed that the years for the API versions were not sourced. I dont like "magic" numbers, so I think its good to at least clarify where the data came from.

Thanks! Raised a PR: https://github.com/ebelinski/apilevels/pull/38, double-checked: each year matches VERSION_CODES + found blog posts for latter releases. Do you think this works?

I dont like "magic" numbers

Have to mention your username here... 😜

looks great, thank you