MANIFEST_INVALID when pushing manifest to quay.io

Environment: Jenkins

Jib version: 2.2.0
Build tool: maven 3.6.3
OS:: centos7 on slaves and head/master

Description of the issue:
The mvn jib:build goal constantly failed with below message. Sometimes a retry will fix it
Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.2.0:build (default-cli) on project workflow-java-sdk-process-cloud: Tried to push image manifest for quay.io/your_image but failed because: Registry may not support pushing OCI Manifest or Docker Image Manifest Version 2, Schema 2 | If this is a bug, please file an issue at https://github.com/GoogleContainerTools/jib/issues/new: 400 BAD REQUEST
[ERROR] {"errors":[{"code":"MANIFEST_INVALID","detail":{"message":"Attempt to create an invalid manifest. Please report this issue."},"message":"manifest invalid"}]}

If retry the same goal in Jenkins, it went back to normal
[INFO] --- jib-maven-plugin:2.2.0:build (default-cli) @ my project ---
[INFO]
[INFO] Containerizing application to quay.io/my_image:version, quay.io/my_image...
[INFO] Using credentials from Maven settings file for quay.io/my_image:version
[INFO] Getting manifest for base image adoptopenjdk/openjdk11@sha256:f92b946306c1f17be5578a84f61482766c4a47d6c75a2b49a49b7ef321cc750f...
[INFO] Building resources layer...
[INFO] Building dependencies layer...
[INFO] Building classes layer...
[INFO] The base image requires auth. Trying again for adoptopenjdk/openjdk11@sha256:f92b946306c1f17be5578a84f61482766c4a47d6c75a2b49a49b7ef321cc750f...
[INFO] The base image reference is manifest list, searching for linux/amd64
[INFO] Using base image with digest: sha256:63a55a2b49a12a15409c8228e7a23be3347b565d45dc7d05a03f965b495e0a90
[INFO]
[INFO] Container entrypoint set to [java, -XX:MaxRAMPercentage=75.0, -XX:+UseContainerSupport, -Djava.awt.headless=true, -Djava.security.egd=file:/dev/./urandom, -cp, /app/resources:/app/classes:/app/libs/*, mypackage.MyApplication]
[INFO]
[INFO] Built and pushed image as quay.io/my_image:version quay.io/my_image

Expected behavior:
The error message is misleading and it shouldn't fail for the first time
Steps to reproduce:

Create a simple spring boot project with maven 3.6.3 and jib plugin 2.2.0
Create a Jenkins job and publish the docker image to quay.io

jib-maven-plugin Configuration:
                <plugin>
                    <groupId>com.google.cloud.tools</groupId>
                    <artifactId>jib-maven-plugin</artifactId>
                    <version>${maven-jib-plugin.version}</version>
                    <configuration>
                        <from>
                            <image>${jib.from.image}</image>
                        </from>
                        <to>
                            <image>${docker.registry}/${docker.image.name}:${version.number}</image>
                            <tags>
                                <tag>latest</tag>
                            </tags>
                        </to>
                        <container>
                            <labels>
                                <quay.expires-after>12w</quay.expires-after>
                            </labels>
                            <jvmFlags>
                                <jvmFlag>-XX:MaxRAMPercentage=75.0</jvmFlag>
                                <jvmFlag>-XX:+UseContainerSupport</jvmFlag>
                                <jvmFlag>-Djava.awt.headless=true</jvmFlag>
                                <jvmFlag>-Djava.security.egd=file:/dev/./urandom</jvmFlag>
                            </jvmFlags>
                            <ports>
                                <port>8080</port>
                            </ports>
                        </container>
                    </configuration>
                </plugin>

It's possible you still need to whitelist your project for schema manifest v2.2. As seen in this comment: https://github.com/GoogleContainerTools/jib/issues/1986#issuecomment-531290926

Hi @loosebazooka,
Thanks for the quick response. We already did in Feb 2020, but was told "we are working on deploying a new version of Quay.io that will fully support v2_2 schema The new version of Quay will be available in the near future."
If v2_2 is not supported at all, shouldn't it fail all the time? But for our case, the failure appears to be intermittent. Sometimes it works, sometime it doesn't
Full communication with quay support attached below

Hi Quay.io Support,
We are evaluating google container tool called jib, and we are getting error when pushing distroless image to quay.io. Tried to push image manifest for quay.io/my_image, but failed because: Registry may not support pushing OCI Manifest or Docker Image Manifest Version 2, Schema 2According to comments in github for this tool[1], our organisation[2] needs to be whitelisted by quay.io for docker manifest v2.2.

[1] https://github.com/GoogleContainerTools/jib/issues/1646#issuecomment-485979463
[2] https://quay.io/organization/consoleconnect

Hi ,
We are actively working on deploying a new version of Quay.io that will fully support v2_2 schema The new version of Quay will be available in the near future.
Please let us know if you have any questions.
Thank you,

@chris-pccw that's unfortunate. Schema v2.1 is deprecated so we have no real incentive to introduce support for it: https://docs.docker.com/engine/deprecated/#pushing-and-pulling-with-image-manifest-v2-schema-1
The intermittent failure is strange, but I really don't think it's a jib issue. Perhaps they are running multiple versions of their registry behind a load balancer (I dunno, it could be anything). Could you use another registry in the meantime, while they update their systems?

If it's failing intermittently, it may not be a Schema version issue. Often Quay correctly returns 415 UNSUPPORTED MEDIA TYPE (#2163, Enterprise Quay in this case).
The following error message is from Quay.io, and I think you should report the issue to Quay too.
[ERROR] {"errors":[{"code":"MANIFEST_INVALID","detail":{"message":"Attempt to create an invalid manifest. Please report this issue."},"message":"manifest invalid"}]}

We occasionally get a report from Jib users where they see a totally unexpected upload error when pushing an image to a major registry like Quay.io, Sonatype Nexus, Artifactory, etc. Most of the time, the registry does not return any reason or helpful message why the manifest is invalid or what is specifically wrong with the manifest; like in your case, it's frustrating to see such an unhelpful registry error message. Even so, in certain cases, we were able to prove there is a bug in the registry (e.g., #2372, #1986), but not all the time (e.g., #2230, #2013). However, from what I've been investigating these issues, I do not believe Jib has a bug in pushing an invalid manifest. I suspect some registries do have a concurrency bug, and I am also heavily leaning toward to that possibility in your case too.
Whenever we get this type of report, I really hope to get to the bottom of the issue so that we can conclusively prove that it's not a Jib issue but a bug in a registry. That's not so easy without the registry developers and admins looking into the registry logs and when and under which condition the registry returns the error. We can only try to infer as much information as possible from the Jib side, but it's very inefficient given the nature of the issue. The best I think is that you ask Quay.io devs when exactly Quay.io returns the error and get back to us.
In the meantime, I'm also curious to see the detailed interactions with the registry. Could you follow these instructions to capture raw HTTP interactions?

Switching to different registry is not an option for my case at this stage.
I turned on the logging and will get back to you once if fails.
BTW, I raised the same issue to quay as well, and below is their response

It sounds like Jib is either generating a bad manifest on the first push, or is attempting to push manifests before their dependencies have been fully uploaded and verified on our end.

Thanks. I forgot to ask this: could you to also capture the HTTP traffic of the next successful Jib push without making any changes to the project or the environment right after an initial push failure? This time, I really want to uncover yet another proven case of a bug in Quay, and I think we should be able to do it with your help.

Oh! I forgot the most important thing: this probably happens only when there is a high-level of concurrency. When you attempt to capture HTTP traffic, you should not pass -Djib.serialize=true which will completely turn off concurrency.
And could you also ask them what exactly is wrong in the manifest, e.g., whether they think a certain blob specified in the manifest is not fully uploaded, and if so, whether they can pinpoint whi h blob (SHA for the blob) is believed to be missing once it happens. Honestly, I suspect that they have a concurrency issue so that even if the registry returns that all blobs are fully uploaded, their internal system state is not completely stablized by the time a manifest is being pushed.

jib_success_log.txt
I just uploaded the log with -Djib.serialize=true. Off the top of my head, it always worked with this option enabled. I will try to make another successful build without that flag

Thanks. It is best to have a failure log + a success log right after the failure. Without jib.serialize, of course.

failure.txt
success.txt
Hi @chanseokoh, here is a failed one and a successful one without jib.serialize for your investigation. Thanks!

@chris-pccw turns out this is enough to prove that it's a bug in Quay.io. Thank you very much for the logs! As we observed in the past, this looks like yet another concurrency bug in Quay.io.
Image Manifest
At the end of the failure.txt log, we can see that Jib attempts to push the (same) image manifest for the two tags :latest and :20200519-041939.a928c63, one of which fails with MANIFEST_INVALID:

PUT https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/manifests/20200519-041939.a928c63
PUT https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/manifests/latest

The content of the manifest (pretty-printed using jq) is the following:
{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "digest": "sha256:1cdc23e3f89c99545a8a9096a5e5569d54a8d6656358b7905b6d02830a6450c5",
    "size": 7367
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:524b0c1e57f8ee5fee01a1decba2f301c324a6513ca3551021264e3aa7341ebc",
      "size": 75880141
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:c3de08fd295cd74cad49245d68e8199f21c58816d841ef9fb59bb16922e84a34",
      "size": 932384
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:4afc23114b786a4399160b9ec1701d8e5048d199c5b14928c3f201daee9fa27a",
      "size": 6595406
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:bbe08f64767f98dfaa9fc7578716aa361381c4a7a2034853bebeca73b0a01dbc",
      "size": 78581131
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:cfb7bf3f7554626d242c3e66d28308b7965e62a5a47ba91f2ba386dcf88b3618",
      "size": 157167214
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:97368fbf3fdd3a61e3bf78e327efb52754a3d5cbc1e08248f2889926ad35a3de",
      "size": 78677
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:48a5d06fb573a955b671969eeaf580b82fa97c941c060ca2f8c7e6b4542193e6",
      "size": 377054
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:f426fe7fbed36b01a2d36d349127041c482872a907b8801a56d3099f38a0c35a",
      "size": 17802
    }
  ]
}

Syntactically, there is nothing wrong with the manifest, as verified by jq. (The size of the actual manifest being pushed is 1,574 bytes, and this is correct as well.) The manifest lists total 9 SHAs (8 image layer blobs + 1 container configuration JSON).
Below, we can verify that Quay.io itself did confirm that all the SHAs listed in the manifest either already exist in the registry or has been uploaded successfully.
Four Base Image Layer SHAs
The following SHAs are the layers from the base image (quay.io/consoleconnect/wp_workflow_base:latest):

sha256:524b0c1e57f8ee5fee01a1decba2f301c324a6513ca3551021264e3aa7341ebc - size 75880141
sha256:c3de08fd295cd74cad49245d68e8199f21c58816d841ef9fb59bb16922e84a34 - size 932384
sha256:4afc23114b786a4399160b9ec1701d8e5048d199c5b14928c3f201daee9fa27a - size 6595406
sha256:bbe08f64767f98dfaa9fc7578716aa361381c4a7a2034853bebeca73b0a01dbc - size 78581131

For these layers, Quay.io responded to all the corresponding HEAD requests and confirmed that the layers already exist in the repository.

sha256:524b0c1e57f8ee5fee01a1decba2f301c324a6513ca3551021264e3aa7341ebc - size 75880141

CONFIG: -------------- REQUEST  --------------
HEAD https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:524b0c1e57f8ee5fee01a1decba2f301c324a6513ca3551021264e3aa7341ebc
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
...
Content-Length: 75880141
...
Docker-Content-Digest: sha256:524b0c1e57f8ee5fee01a1decba2f301c324a6513ca3551021264e3aa7341ebc

sha256:c3de08fd295cd74cad49245d68e8199f21c58816d841ef9fb59bb16922e84a34 - size 932384

CONFIG: -------------- REQUEST  --------------
HEAD https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:c3de08fd295cd74cad49245d68e8199f21c58816d841ef9fb59bb16922e84a34
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
...
Content-Length: 932384
Docker-Content-Digest: sha256:c3de08fd295cd74cad49245d68e8199f21c58816d841ef9fb59bb16922e84a34

sha256:4afc23114b786a4399160b9ec1701d8e5048d199c5b14928c3f201daee9fa27a - size 6595406

CONFIG: -------------- REQUEST  --------------
HEAD https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:4afc23114b786a4399160b9ec1701d8e5048d199c5b14928c3f201daee9fa27a
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
...
Content-Length: 6595406
...
Docker-Content-Digest: sha256:4afc23114b786a4399160b9ec1701d8e5048d199c5b14928c3f201daee9fa27a

sha256:bbe08f64767f98dfaa9fc7578716aa361381c4a7a2034853bebeca73b0a01dbc - size 78581131

CONFIG: -------------- REQUEST  --------------
HEAD https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:bbe08f64767f98dfaa9fc7578716aa361381c4a7a2034853bebeca73b0a01dbc
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
...
Content-Length: 78581131
...
Docker-Content-Digest: sha256:bbe08f64767f98dfaa9fc7578716aa361381c4a7a2034853bebeca73b0a01dbc

Four Application Layer Blob SHAs
Next, The following SHAs are application layers built by Jib:

sha256:cfb7bf3f7554626d242c3e66d28308b7965e62a5a47ba91f2ba386dcf88b3618 - size 157167214
sha256:97368fbf3fdd3a61e3bf78e327efb52754a3d5cbc1e08248f2889926ad35a3de - size 78677
sha256:48a5d06fb573a955b671969eeaf580b82fa97c941c060ca2f8c7e6b4542193e6 - size 377054
sha256:f426fe7fbed36b01a2d36d349127041c482872a907b8801a56d3099f38a0c35a - size 17802

Quay.io confirmed that all the application layers either already exist in the repository or has been uploaded successfully.

sha256:cfb7bf3f7554626d242c3e66d28308b7965e62a5a47ba91f2ba386dcf88b3618 - size 157167214

CONFIG: -------------- REQUEST  --------------
HEAD https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:cfb7bf3f7554626d242c3e66d28308b7965e62a5a47ba91f2ba386dcf88b3618
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
...
Content-Length: 157167214
...
Docker-Content-Digest: sha256:cfb7bf3f7554626d242c3e66d28308b7965e62a5a47ba91f2ba386dcf88b3618

sha256:97368fbf3fdd3a61e3bf78e327efb52754a3d5cbc1e08248f2889926ad35a3de - size 78677

CONFIG: -------------- REQUEST  --------------
POST https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/?mount=sha256:97368fbf3fdd3a61e3bf78e327efb52754a3d5cbc1e08248f2889926ad35a3de&from=consoleconnect/wp_workflow_base
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 202 ACCEPTED
...
Docker-Upload-UUID: 8b8383da-44e0-4afb-b3bc-95e35891d620
Range: bytes=0--1
Location: https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/8b8383da-44e0-4afb-b3bc-95e35891d620
...
CONFIG: -------------- REQUEST  --------------
PATCH https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/8b8383da-44e0-4afb-b3bc-95e35891d620
...
CONFIG: Total: 78,677 bytes (logging first 16,384 bytes)
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 202 ACCEPTED
...
Docker-Upload-UUID: 8b8383da-44e0-4afb-b3bc-95e35891d620
Range: 0-78676
Location: https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/8b8383da-44e0-4afb-b3bc-95e35891d620
...
CONFIG: -------------- REQUEST  --------------
PUT https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/8b8383da-44e0-4afb-b3bc-95e35891d620?digest=sha256:97368fbf3fdd3a61e3bf78e327efb52754a3d5cbc1e08248f2889926ad35a3de
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 201 CREATED
...
Docker-Content-Digest: sha256:97368fbf3fdd3a61e3bf78e327efb52754a3d5cbc1e08248f2889926ad35a3de
Location: https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:97368fbf3fdd3a61e3bf78e327efb52754a3d5cbc1e08248f2889926ad35a3de

sha256:48a5d06fb573a955b671969eeaf580b82fa97c941c060ca2f8c7e6b4542193e6 - size 377054

CONFIG: -------------- REQUEST  --------------
HEAD https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:48a5d06fb573a955b671969eeaf580b82fa97c941c060ca2f8c7e6b4542193e6
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
...
Content-Length: 377054
...
Docker-Content-Digest: sha256:48a5d06fb573a955b671969eeaf580b82fa97c941c060ca2f8c7e6b4542193e6

sha256:f426fe7fbed36b01a2d36d349127041c482872a907b8801a56d3099f38a0c35a - size 17802

CONFIG: -------------- REQUEST  --------------
HEAD https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:f426fe7fbed36b01a2d36d349127041c482872a907b8801a56d3099f38a0c35a
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
...
Content-Length: 17802
...
Docker-Content-Digest: sha256:f426fe7fbed36b01a2d36d349127041c482872a907b8801a56d3099f38a0c35a

Container Configuration Blob SHA
Finally, Quay.io also confirmed the container configuration JSON (sha256:1cdc23e3f89c99545a8a9096a5e5569d54a8d6656358b7905b6d02830a6450c5 - size 7367) is successfully uploaded.
CONFIG: -------------- REQUEST  --------------
POST https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/?mount=sha256:1cdc23e3f89c99545a8a9096a5e5569d54a8d6656358b7905b6d02830a6450c5&from=consoleconnect/wp_workflow_base
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 202 ACCEPTED
...
Docker-Upload-UUID: 10ee7811-fc44-4349-a037-015a632e366c
Range: bytes=0--1
Location: https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/10ee7811-fc44-4349-a037-015a632e366c
...
CONFIG: -------------- REQUEST  --------------
PATCH https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/10ee7811-fc44-4349-a037-015a632e366c
...
CONFIG: Total: 7,367 bytes
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 202 ACCEPTED
...
Docker-Upload-UUID: 10ee7811-fc44-4349-a037-015a632e366c
Range: 0-7366
Location: https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/10ee7811-fc44-4349-a037-015a632e366c
...
CONFIG: -------------- REQUEST  --------------
PUT https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/uploads/10ee7811-fc44-4349-a037-015a632e366c?digest=sha256:1cdc23e3f89c99545a8a9096a5e5569d54a8d6656358b7905b6d02830a6450c5
...
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 201 CREATED
...
Docker-Content-Digest: sha256:1cdc23e3f89c99545a8a9096a5e5569d54a8d6656358b7905b6d02830a6450c5
Location: https://quay.io/v2/consoleconnect/wp_workflow-java-sdk-service-billing/blobs/sha256:1cdc23e3f89c99545a8a9096a5e5569d54a8d6656358b7905b6d02830a6450c5

Thank you so much @chanseokoh for the detailed info here. I will report it to Quay.io. Despite the concurrency issue identified here, if I set -Djib.serialize=true when pushing image, it will work right? If so, I am happy to close this ticket

@chanseokoh Is Jib pushing the same manifest contents twice in parallel? If so, there is a possibility it is a concurrency issue, as the specific manifest issue raised can only occur if the manifest is invalid (i.e. the number of history entries in config disagrees with the number of layers) OR a parallel push of the manifest occurs at the same time and our attempt to create the manifest fails (and the subsequent lookup fails too). I'll see if we can reproduce the issue, as our code should support the fallback case.

@josephschorr according to the Docker Registry API, pushing a manifest in multiple times is the only way to create multiple tags and pushing a valid manifest multiple times in parallel should not cause any problem. The Registry API spec does not impose any restrictions in pushing manifests concurrently, and in practice all sane registry implementations have never had any problem with it.
A manifest Jib creates is a valid one, and even though there is no restrictions in the spec that the number of layer histories must matche the number of layers, we do ensure augmenting missing history entries in case a base image is missing some after we found that some registry implementation malfunctions when the number of history entries do not match.

@chanseokoh Oh, I know its allowed :) I was asking if Jib did indeed push in parallel, so we could narrow down the root cause. Since it sounds like it is, we'll investigate that angle. Thanks!

@josephschorr yeah, I confrm Jib pushes in parallel. Thank you for looking into it!

@chris-pccw although -Djib.serialize=true does work, it can be terribly slow, as it turns off concurrency completely. I'd rather do
if ! ./mvnw jib:build; then
  echo "Normal build failed. Falling back."
  # this should be really fast as all layers have already uploaded
  # and will upload only the manifest
  ./mvnw -Djib.serialize=true jib:build
fi

or
#!/bin/bash

for i in {1..10}; do
  if ./mvnw jib:build; then break; fi
done

And it will help us and the Jib community if you keep us informed on this issue. I'd appreciate it.

@chris-pccw or, if this happens only when creating multiple tags (i.e., pushing the same manifest multiple times in parallel), you could do mvn jib:build twice in succession as another workaround. I see you pushing :latest and :20200519-041939.a928c63.
./mvnw -Djib.to.image=registry/repo:latest jib:build
./mvnw -Djib.to.image=registry/repo:20200519-041939.a928c63 jib:build

(Or you could set up Maven profiles or use another system property to parameterize a tag.)

Sure will do. Thanks a lot for your help @chanseokoh

@chris-pccw Quay.io deployed a fix, so you may try it out.

The fix has been deployed to Quay.io. Please let us know if you encounter any further issues.

I'll close the issue, but I'd appreciate an update if it resolved your issue.

Thanks for letting me know, however I got two issues after removing -Djib.serialize=true

First time it failed with below error message

[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.4.0:build (default-cli) on project xxx: 500 Internal Server Error
[ERROR] <html>
[ERROR]   <head>
[ERROR]     <title>Internal Server Error</title>
[ERROR]   </head>
[ERROR]   <body>
[ERROR]     <h1><p>Internal Server Error</p></h1>
[ERROR]
[ERROR]   </body>
[ERROR] </html>
[ERROR]

Second attempt worked, but it doesn't seem to honour labels settings as shown below

<labels>
     <quay.expires-after>12w</quay.expires-after>
</labels>

Version 20200806.f757486's was generated earlier, latest should never expire, that's expected behaviour, however the new one 20200806.8961dbb was not set with any expiry date.

I'll take a look at #1 tomorrow; #2 is by design currently: we only apply the labels on the first manifest creation, not on subsequent tags. This will likely be changed in a future version but remains the current behavior because the label applies to the manifest, not the tags.

Marking resolved.


Update the date, time and datetimewidgets to use HTML5 input types

See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local, https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date, https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/time
for the documentation.
Support for the the format (ISO 8601) of this is already present : https://code.djangoproject.com/ticket/11385 / https://github.com/django/django/pull/11893
The main advantage is that no external js/css libraries need to be used for an easy date and time input.

Closing per ticket-21470.


DB segfaults when killing app early

in the test_db_app_resume_tcp_client test we run an Acton test program together with the DB, roughly:

start up TCP server, counter=0
start up DB cluster
start TCP client app with DB, which connects to TCP server and check current value (0)
sleep for a bit
terminate app
increase value in TCP server (1)
start app again, which should now resume, retry the connection to the TCP server, note the correct higher value (1) and exit(0)

This works well in general however if we terminate the app before it has reached a "steady state", the app will segfault when being resumed.
On my AMD 5950X computer this happens when we sleep for 0.1 seconds, which happens to be what we are currently sleeping in main. In fact, it fails so much that even after adding the 5 retries for DB test (#853) it still fails. My machine is usually way faster than the CI runners so I'm guessing this mostly passes CI because they are slower and we terminate the TCP client test app earlier before it has reached some "bad state".
The desired outcome is two fold I believe:

[ ] rewrite tests to not rely on a arbitrary timer, instead looking at the output of the TCP client app to determine when it has reached some "steady state"
[ ] attempt to induce segfaults, find root cause and fix! we should never ever crash no matter when we might be terminated!

When trying to repro this, observed that the TCP client actor does not crash, but it actually blocks indefinitely, and the subprocess spawned by test_db.py fails with subprocess.TimeoutExpired, which causes the CI failure. During this process, the DB servers stay up, so the issue does not seem to be DB related, but the issue might be related with issue #908 , which seems libuv related. Created issue  #909 to track the test_app_resume_tcp_client blocking, #908 to track the test_app_resume_tcp_server crash, and the (possibly related) blocking that happens for processes recovering their timer queue in #907

For the record, it 100% reproducibly segfaults. It does not time out for me. I should reattempt after some of these fixes have gone in...


[KYUUBI #3126] Using markdown 3.3.7 for kyuubi document build

Why are the changes needed?

Close #3126
The error:
Running Sphinx v4.5.0
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 231 source files that are out of date
updating environment: [new config] 231 added, 0 changed, 0 removed
reading sources... [  0%] appendix/index
Extension error (sphinx_markdown_tables):
Handler <function process_tables at 0x102589090> for event 'source-read' threw an exception (exception: TableProcessor.__init__() missing 1 required positional argument: 'config')
make: *** [html] Error 2

I checked the lib difference with before, seems the only change is Markdown version.
Before, it was 3.3.7 and now it is 3.4.1.
How was this patch tested?
Re-create the kyuubi virtual env and build docs locally.

Codecov Report

Merging #3127 (38b56bc) into master (5c1ea6e) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #3127      +/-   ##
============================================
- Coverage     51.33%   51.32%   -0.01%
  Complexity        6        6
============================================
  Files           458      458
  Lines         25388    25388
  Branches       3536     3536
============================================
- Hits          13033    13031       -2
+ Misses        11116    11113       -3
- Partials       1239     1244       +5

Impacted Files
Coverage Δ

...rg/apache/kyuubi/ctl/cmd/log/LogBatchCommand.scala
80.00% <0.00%> (-2.00%)
:arrow_down:

...ache/kyuubi/operation/KyuubiOperationManager.scala
80.82% <0.00%> (-1.37%)
:arrow_down:

...ain/scala/org/apache/kyuubi/engine/EngineRef.scala
75.23% <0.00%> (-0.96%)
:arrow_down:

...n/scala/org/apache/kyuubi/engine/ProcBuilder.scala
83.12% <0.00%> (-0.63%)
:arrow_down:

...g/apache/kyuubi/operation/BatchJobSubmission.scala
77.63% <0.00%> (ø)

...yuubi/server/metadata/jdbc/JDBCMetadataStore.scala
89.96% <0.00%> (+0.69%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us.

thanks, merged to master


feat(evm): additional command queries

Description

queries axelard q evm latest-batched-commands and axelard q evm batched-commands now have a new field to include a list of commands that are included in the batch.
new query axelard q evm pending-commands [chain] that exposes all commands that are created but not yet popped out from the queue for signing.
new query axelard q evm command [chain] [id] that exposes information of a given command by ID.

Closes #1081
Todos

[x] Unit tests
[x] Manual tests
[ ] Documentation
[x] Connect epics/issues
[x] Tag type of change

Steps to Test
Expected Behaviour
Other Notes

@jcs47 can you please paste the output of the above queries?

@jcs47 can you please paste the output of the above queries?

It will looks like this:
~/scripts # axelard q evm command ethereum 8bdea933968008c2a93c34b1d220a9840e222140ceffc7a5a12209331df1fa00
id: 8bdea933968008c2a93c34b1d220a9840e222140ceffc7a5a12209331df1fa00
key_id: eth-master
max_gas_cost: 1.5e+06
params:
  cap: "1000000000"
  decimals: "6"
  name: AxelarNetwork
  symbol: AXL
type: deployToken

~/scripts # axelard q evm pending-commands ethereum
commands:
- id: "0000000000000000000000000000000000000000000000000000000000000000"
  key_id: eth-secondary
  max_gas_cost: 200000
  params:
    account: 0x68B93045fe7D8794a7cAF327e7f855CD6Cd03BB8
    amount: "10000000"
    symbol: AXL
  type: mintToken


Lagging on 4k screens

To Reproduce
Steps to reproduce the behavior:

Open the app
Using it on 4k screen causes lagging. Although the laptop has good specs and other apps works well
Works fine if I use it to an external screen

Expected behavior
Should be smooth
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS Version: [e.g. Windows 10 20H2 19042.746]
App version: [v<IP_ADDRESS>]

I am running on a 4K screen and only a 7th gen i7 - it runs smoothly here.

I am running on a 4K screen and only a 7th gen i7 - it runs smoothly here.

I see .
You using a graphics card?
You using it on a laptop screen? because if its laptop screen windows does not use the graphics card but the internal Intel graphics chip for desktop apps which is not as performant as graphic cards

I see .
You using a graphics card?
You using it on a laptop screen? because if its laptop screen windows does not use the graphics card but the internal Intel graphics chip for desktop apps which is not as performant as graphic cards

I have a laptop with an nVidia and Intel, as you describe.

I have a laptop with an nVidia and Intel, as you describe.

Ok then it could be my machine only

Ok then it could be my machine only


Export Raw JSON

When developer mode is enabled, the export-data page displays the raw JSON. Clicking/pressing/selecting it should copy the raw JSON to the clipboard.

Commit: https://github.com/johneastman/todo/commit/b65ab5a0f3c09e4c9135b11ca36215d1909eeb8e


[Bug] Dashboards appearing and disappering at random (operator 5)

Describe the bug
We have a single grafana instance per cluster that is configured without a database backend.
Dashboards on this instance are erratically appearing or disappearing when

Updating dashboards
Adding new dashboards
Recreating the grafana instance
Sometimes they are just gone (I assume after a resync)

So far I fail to find a pattern in this.
There also seems to be no standard way of fixing this issue.

Restarting grafana sometimes works
Restarting the operator sometimes work.
Deleting and recreating all dashboards rarely works (leads to some being provisioned, others aren't).
Deleting grafana and creating it again, sometimes works, sometimes only after a restart
Most of the time, recreating some dashboard resources works, but that can also lead to completely unrelated dashboards to disappear.

We have seen this behavior on about 7 clusters so far.
Referring to bug #1188 we have tried to use the PVCs / emptydir approach, but this did not really improve the situation.
We also have up to 40 different dashboards in different folders per cluster with different resync times, some have 15m, some have 1h (because otherwise there's a pop-up every 5m saying that the dashboard has changed). All folders have their own folder resources on the cluster.
The dashboards don't show up after the resync time has elapsed.
All dashboards are marked is "synced", even though they don't show up in grafana.
The grafana-operator does also not report any errors or warnings except this one after a dashboard has been recreated:
ERROR	Reconciler error	{"controller": "grafanadashboard", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDashboard", "GrafanaDashboard": {"name":"thanos-store","namespace":"monitoring"}, "namespace": "monitoring", "name": "thanos-store", "reconcileID": "3f6fbaa2-c0d5-433f-951e-29d24359aa9a", "error": "Operation cannot be fulfilled on grafanas.grafana.integreatly.org \"grafana-operator-grafana\": the object has been modified; please apply your changes to the latest version and try again"}

I've also tried switching the grafana image from bitnami to the official one, no change.
Version
5.3.0
To Reproduce
Here's our grafana spec
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
  name: grafana-operator-grafana
  namespace: "grafana-operator"
  labels:
    app.kubernetes.io/name: grafana-operator
    app.kubernetes.io/instance: grafana-operator
    grafana: monitoring
spec:
  client:
    timeout: 5
  persistentVolumeClaim:
    metadata:
      labels:
        app.kubernetes.io/name: grafana-operator
        app.kubernetes.io/instance: grafana-operator
    spec:
      accessModes:
        - "ReadWriteOnce"
      resources:
        requests:
          storage: "10Gi"
      storageClassName: gce-pd-ssd
  service:
    spec:
      type: ClusterIP
  deployment:
    metadata:
    spec:
      replicas: 1
      strategy:
        type: Recreate
      template:
        spec:
          securityContext:
            fsGroup: 1001
            runAsGroup: 0
            runAsNonRoot: true
            runAsUser: 1001
            supplementalGroups: []
          volumes:
            - name: 'grafana-oauth'
              secret:
                defaultMode: 420
                optional: true
                secretName: 'grafana-oauth'
            - name: grafana-data
              persistentVolumeClaim:
                claimName: grafana-operator-grafana-pvc
            - emptyDir:
                sizeLimit: 256Mi
              name: grafana-provisioning
          containers:
            - name: grafana
              image: docker.io/bitnami/grafana:10.1.0
              imagePullPolicy: IfNotPresent
              envFrom:
                - secretRef:
                    name: grafana-oauth
              securityContext:
                allowPrivilegeEscalation: false
                privileged: false
                readOnlyRootFilesystem: false
                runAsGroup: 0
                runAsNonRoot: true
                runAsUser: 1001
              resources:
                limits:
                  cpu: "2"
                  memory: 1Gi
                requests:
                  cpu: "2"
                  memory: 1Gi
              livenessProbe:
                initialDelaySeconds: 120
                periodSeconds: 10
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 6
                httpGet:
                  path: /api/health
                  port: 3000
                  scheme: HTTP
              readinessProbe:
                initialDelaySeconds: 30
                periodSeconds: 10
                timeoutSeconds: 5
                successThreshold: 1
                failureThreshold: 6
                httpGet:
                  path: /api/health
                  port: 3000
                  scheme: HTTP
              volumeMounts:
                - mountPath: /var/lib/grafana
                  name: grafana-data
                  readOnly: false
                - mountPath: /etc/grafana/provisioning
                  name: grafana-provisioning
                  readOnly: false
  config:
    analytics:
      check_for_updates: "false"
      reporting_enabled: "false"
    auth:
      oauth_auto_login: "true"
    auth.anonymous:
      enabled: "true"
    auth.google:
      allow_sign_up: "true"
      auth_url: https://accounts.google.com/o/oauth2/auth
      enabled: "true"
      token_url: https://accounts.google.com/o/oauth2/token
    database:
      wal: "true"
    log:
      level: warn
      mode: console
    security:
      admin_password: admin
      admin_user: admin
      disable_gravatar: "false"
    users:
      auto_assign_org_role: Editor
  jsonnet:
    libraryLabelSelector:
      matchLabels:
        app.kubernetes.io/instance: 'grafana-operator'

A typical dashboard resource
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
  name: thanos-store
  namespace: monitoring
spec:
  allowCrossNamespaceImport: true
  folder: thanos
  instanceSelector:
    matchLabels:
      grafana: monitoring
  resyncPeriod: 1h
  json: # omitted

A typical folder
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaFolder
metadata:
  name: thanos
  namespace: monitoring
spec:
  allowCrossNamespaceImport: true
  instanceSelector:
    matchLabels:
      grafana: monitoring
  title: thanos

Expected behavior
When creating dashboard resources, they new dashboards should appear on the instance.
All other dashboards should stay provisioned.
When the grafana resource is deleted and recreated, all dashboard should be provisioned on the new instance.
Runtime (please complete the following information):

OS: linux
Grafana Operator Version 5.30
Environment: GKE 1.25.12-gke.500
Deployment type: operator deployed on cluster

Could it be that there is a kind of race condition between folders and dashboards?
I just removed all folder resources from a cluster. This removed all dashboards.
But: After the next resync dashboards came back. Even those who were missing before.

@arnecls your grafana.yaml looks alright, not sure why this would happen. If there was no PVC, then the database would be gone after you restart Grafana and it will take a while to resync. But that's not the case here. It could be some issue with Folders, but we will have to try and reproduce.

@arnecls are there any errors in the Grafana logs? (not the operator)


Add "const-generics" feature

Brings an opt-in breaking change because T of [T; 0] Serialize/Deserialize implementation doesn't require T: Serialize/Deserialize bounds. This scenario has the same root cause of std Default implementation for [T; N].

If this change is desirable, I will fix and add more tests tomorrow. If not, feel free to close it.

A way to avoid breakage is to use #[marker] traits and specialization, as in std PR switching Default to const generics. Unfortunately, these features will be likely stabilized much later that min_const_generics.

Tried to create a more robust array creation procedure based on the feedback of https://github.com/rust-lang/rust/pull/75644 but looks like the new syntax isn't recognized by older compiler versions even with #[cfg].
That said, it is just a matter of bumping the minimal compiler version and 1.31 (2018) should probably be a good choice.

it is just a matter of bumping the minimal compiler version

serde's maintainer has gone to great lengths to avoid bumping the MSRV of serde proper. You could try moving the offending code into a separate module in a separate file, and put the mod foo statement behind a cfg. This should make sure the compiler never encounters it when the feature is turned off.

@est31 This module strategy is new to me. Thanks for the suggestion!
I am still not sure if dtolnay will accept these changes because there wasn't a feedback. He was quicker to respond on my last contributions to this project though :smile:

With your PR as is, if any crate in compilation graph enables const-generics on serde other crates relying on e.g. impl<T> Serialize for [T; 0], will fail to compile. Since enabling some feature on some dependency is assumed to be semver-compatible, your PR in fact breaks all libraries that rely on 0 being special cased (because they can stop working after plain cargo update).
If I were you, I'd explore following approach (note it is pseudocode):
struct Helper<T>;
impl<T> Helper<T> {
    default fn serialize(val: T, ser: Serializer) {
       panic!()
     }
}

impl<T: Serialize> Helper<T> {
    fn serialize(val: T, ser: Serializer) {
        val.serialize(ser)
    }
}

impl<T> Default for Helper<T> where T: Serialize {...}

impl<T, const N> Serialize for [T; N] where [Helper<T>; N]: Default {
    fn serialize(self, ser: Serializer) {
         for item in self {
              Helper<T>::serialzie(item);
         }
    }
}

It relies on rust-lang/rust#74254 merged first. However, if it works, no breakage occurs.

@MikailBag There are some projects that provide unstable features where stability guarantees aren't preserved and I though the same could be done with serde because specialization is something that probably won't be stabilized in the near future. Hopefully, constant generics will be ready for the 1.49 release.

@dtolnay Looks like strict semver is desirable and there is no way around the [T; 0] breaking change because it is something that can't be easily fixed. Please, just keep in mind that if min_const_generics is indeed going to be stabilized in the upcoming months, then more and more people will eventually want to use this feature with serde.

As far as I understand, min_specialization isn't too far from stable too. (But I'm not in lang team so my understanding may be wrong)

From my understanding, marker traits are also needed, not just specialization.

Thanks for the prompt response


[stable5.15] integrate translation of docs

Update docs html to support corwdin in context translation.
(note: I have not ported the localhost server changes to test this locally to keep the patch small).
This fix is needed to enable in-context translations in micro:bit.

You can set HEAD_OVERRIDE on staging to stable51docstranslate. You may need the same branch in microbit repo though.


In a large codebase with several errors, Flow reports "No errors!" until triggered by a watch event to recheck

We've been using Flow in a fairly large codebase (flow says it parses 50344 files, including node modules), for a year or so. Unfortunately it's closed source so I can't share it.
In the last few weeks, Flow has started behaving strangely when I follow these steps:

Run flow stop && flow – it performs a check lasting several seconds, and eventually reports No errors!
Edit a comment in a random file somewhere in our codebase (just to trigger a filesystem watch event)
Run flow – now it reports a bunch of errors that weren't reported before (in various files, not necessarily connected to the one you edited).

The errors appear to be real type errors in our code. So why didn't Flow notice them before? Some of these errors turn out to have existed in our codebase for months. They just never got reported until now, and still often don't get reported until seemingly random events. Then what's extra weird is, if we fix those errors and perform the above steps again, flow eventually finds more errors in other files, which it didn't report before. It's as if Flow is reaching some kind of internal limit on how many files it can traverse, and gives up after a while and just says No errors!

EDIT: just to clarify, running flow check also results in No errors!. The only way to see the errors is to run flow to get a server going, then edit a file to trigger a recheck, then run flow again to see the status. Also, if you do further no-change edits to other files, it sometimes finds even more errors in still other files.

I think im seeing similar issues. I had a code bug that should of been caught by flow, missing argument to a function that wasnt marked optional, and i get no errors.

Could you share your .flowconfig or making sure #5180?
I guess perhaps such behavior of the Flow seems similar to the issue above reported.

[ignore]
<PROJECT_ROOT>/dist/

[include]
<PROJECT_ROOT>/src/

[libs]
<PROJECT_ROOT>/flow-typed/

[options]
module.ignore_non_literal_requires=true

Mine's pretty trivial.

Thanks for sharing 🙏
But sorry in your case, the .flowconfig seems not a cause of the problem.
(At least to the caused I guessed)
Problems between @callumlocke 's one and @aikar 's possibly might be from another cause. 🤔
@aikar Did you receive an error which indicates missing argument when you edit something in the code?

Mine is:
[libs]

[options]
module.system.node.resolve_dirname=node_modules
module.system.node.resolve_dirname=app
experimental.const_params=true
emoji=true

[ignore]
.*/dist/.*
.*/.history/.*
.*/build/.*
.*/node_modules/react-motion/.*
.*/docker-output/.*

[version]
0.65.0

@kogai thanks for pointing me to #5180! I tried @bradennapier's trick (comment) by changing app to ./app and it worked. This has been driving me nuts, thank you.
Closing this one in favour of the other one.


Added multi column partitioning for offline table

Description
This PR adds support for multi column partitioning for minion tasks and broker segment pruner.
Upgrade Notes
Does this PR prevent a zero down-time upgrade? (Assume upgrade order: Controller, Broker, Server, Minion)

[ ] No

Does this PR fix a zero-downtime upgrade introduced earlier?

[ ] No

Does this PR otherwise need attention when creating release notes? Things to consider:

New configuration options
Deprecation of configurations
Signature changes to public methods/interfaces
New plugins added or old plugins removed

[ ] No (Please label this PR as release-notes and complete the section on Release Notes)

Release Notes
Segment can be partitioned on multiple columns when they are moved/created by minion tasks and when data is ingested via batch ingestion. Broker can also prune segments on multiple columns partition metadata.

Codecov Report

Merging #8255 (15e04b3) into master (d999aec) will decrease coverage by 1.04%.
The diff coverage is 82.85%.

@@             Coverage Diff              @@
##             master    #8255      +/-   ##
============================================
- Coverage     70.78%   69.74%   -1.05%
+ Complexity     4243     4242       -1
============================================
  Files          1631     1631
  Lines         85281    85297      +16
  Branches      12845    12850       +5
============================================
- Hits          60364    59487     -877
- Misses        20746    21681     +935
+ Partials       4171     4129      -42

Flag
Coverage Δ

integration1
28.79% <38.57%> (-0.01%)
:arrow_down:

integration2
?

unittests1
66.98% <ø> (+<0.01%)
:arrow_up:

unittests2
14.12% <78.57%> (+<0.01%)
:arrow_up:

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

Impacted Files
Coverage Δ

.../routing/segmentpruner/PartitionSegmentPruner.java
78.62% <76.00%> (+10.40%)
:arrow_up:

...er/routing/segmentpruner/SegmentPrunerFactory.java
92.53% <100.00%> (ø)

...ache/pinot/plugin/minion/tasks/MergeTaskUtils.java
98.03% <100.00%> (+1.96%)
:arrow_up:

...t/core/plan/StreamingInstanceResponsePlanNode.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ore/operator/streaming/StreamingResponseUtils.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ager/realtime/PeerSchemeSplitSegmentCommitter.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...he/pinot/core/plan/StreamingSelectionPlanNode.java
0.00% <0.00%> (-88.89%)
:arrow_down:

...ator/streaming/StreamingSelectionOnlyOperator.java
0.00% <0.00%> (-87.81%)
:arrow_down:

...re/query/reduce/SelectionOnlyStreamingReducer.java
0.00% <0.00%> (-85.72%)
:arrow_down:

...pache/pinot/common/utils/grpc/GrpcQueryClient.java
0.00% <0.00%> (-80.86%)
:arrow_down:

... and 91 more

Continue to review full report at Codecov.

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

Shall we add a queries test (search for *QueriesTest for examples) or integration test to ensure it works end-to-end?

I have added a test which prune segments based on query -
https://github.com/apache/pinot/pull/8255/files#diff-9e8214b130b1a4a54157230e84674df2328018e7e7044a90a1f2a114ad56674bR353
and Sure let me see if I can add an integration test.

Hi @Jackie-Jiang Could you please check this PR if it can be merge now?

@kmozaid This is a great feature, and I want to ensure it can work end-to-end. With the SegmentPrunerTest, it ensures the pruner itself works, but multiple partitioning could fail in other places (I remember some classes explicitly check if there is only one partition column). I'd suggest adding an integration test to ensure it works end-to-end. You may refer to NullHandlingIntegrationTest on how to add an integration test with custom data.

Thanks @Jackie-Jiang , Sure, Let me add integration test.

@kmozaid This is a great feature, and I want to ensure it can work end-to-end. With the SegmentPrunerTest, it ensures the pruner itself works, but multiple partitioning could fail in other places (I remember some classes explicitly check if there is only one partition column). I'd suggest adding an integration test to ensure it works end-to-end. You may refer to NullHandlingIntegrationTest on how to add an integration test with custom data.

Hi @Jackie-Jiang I have updated existing merge rollup minion task and realtime-to-offline minion task integration test which involves partitioning.Now these tests covered multi column partitioning flow. Please check if it is still required to write a separate integration tests.

There are three other places where multicolumn partitioning config is not allowed.

PinotLLCRealtimeSegmentManager.getPartitionMetadataFromTableConfig:710
LLRealtimeSegmentDataManager.setPartitionParameters:1425
PinotHadoopJobLauncher:HadoopSegmentPreprocessingJob.fetchPartitioningConfig:153

This feature is NOT support by REALTIME tables so first 2 checks are still valid. The last one is specific to Hadoop pre processing job, I think we can skip for this feature as we don't really support BoundedColumnValue partitioner for hadoop;s job (https://github.com/apache/pinot/blob/master/pinot-plugins/pinot-batch-ingestion/v0_deprecated/pinot-hadoop/src/main/java/org/apache/pinot/hadoop/job/partitioners/PartitionFunctionFactory.java#L78). It is also deprecated.

Test Cases Covered -

Integration tests for Realtime to Offline Task with multi column partitioning
Integration tests for Merge Rollup task with multi column partitioning.
Unit tests for direct offline segment creation from file with multi column partitioning (merge rollup task integration tests setup does this).

Hi @Jackie-Jiang , Could you please provide review feedback? please also trigger the workflow again.


HDDS-5961. [Ozone-Streaming] update the usage space of Containers in …

HDDS-5961. [Ozone-Streaming] update the usage space of Containers in the stream write
jira: https://issues.apache.org/jira/browse/HDDS-5961

hi @captainzmc  , can you help review this patch?

The old StreamDataChannel implementation did not update the usedBytes in the Container metadata at write time.
There will be multiple Container types in the future, I put the implementation of DataChannel into the Container package.

hi @szetszwo  , can you help review this patch?

@guohao-rosicky , I just have sync'ed the HDDS-4454 branch with master.  Could you update this pull request?

@szetszwo  @captainzmc , I have completed the update.

Has been modified, @szetszwo  @captainzmc .Please Take A Look.


Remove redundant "if" checks

Signed-off-by: Zhang Wei<EMAIL_ADDRESS>

These issues are detected by a latest golint, gometalinter didn't detect this is maybe because gometalinter is using an old golint tool :smile:
Solve it whatever as I've already noticed this.

lgtm

LGTM

@amshinde please take a look !


Rolling dice

Dice Rolling Simulator
The Goal: Like the title suggests, this project involves writing a program that simulates rolling dice. When the program runs, it will randomly choose a number between 1 and 6. (Or whatever other integer you prefer — the number of sides on the die is up to you.) The program will print what that number is. It should then ask you if you’d like to roll again. For this project, you’ll need to set the min and max number that your dice can produce. For the average die, that means a minimum of 1 and a maximum of 6. You’ll also want a function that randomly grabs a number within that range and prints it.
Concepts to keep in mind:
Random
Integer
Print
While Loops

i have created this program

I believe it was already instructed to start working on an issue when it is assigned to you and you hadn't asked for assignment before. Nevertheless, please keep this in mind. You can now create a PR for the simple code and we'll review it and get back to you!

Ok sure, i'll take care of it for the next time.


Request to add changing administrator information

Hello Team,
I would appreciate if you could update the document and add how to change administrator for APIM.
https://docs.microsoft.com/en-us/azure/api-management/api-management-faq#how-do-i-add-a-user-to-the-administrators-group-
Currently The location to change Admin details in the Notification Templates are a little hidden and official document did not guide well about how to change it. The only information we can see is that we cannot add users to the Administrator Goup
Please help mark this out in the document and thank you very much.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b45736d2-b0f4-05c3-8e2f-fde88f53b61a
Version Independent ID: f6c4d89a-1cc5-3e2a-6a3c-3b292cecead7
Content: Azure API Management FAQ
Content Source: articles/api-management/api-management-faq.yml
Service: api-management
GitHub Login: @dlepow
Microsoft Alias: danlep

@xuwenjian1995 Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

Hi @MayankBargali-MSFT
Thanks for your quick response and I look forward to your feedback.

@xuwenjian1995 - Thank you for contacting us with this question. I think we can make it clearer in the documentation about the Administrator group that, while the members of the Administrator group are managed by APIM to include Azure subscription admins, it's possible to update the admin email address for notififications. I'll submit a doc update soon to address this.


get rid of DOM manipulations that cause reflows

Removing these lines, our updates takes 0.33ms instead of 1ms, it's a huge improvement!
@rafaelverger may you please test this PR and let me know what happens?
You initially inserted these lines in https://github.com/FezVrasta/popper.js/commit/660849a3e6d73d0b6d502b2db0ed1d6cd330be9d but I'm not sure they are needed anymore since removing them the tests are passing.
You have more context than me about these changes so I would like to get feedbacks from you before merging.

Ok guys, since nobody is replying I'm going to merge these changes. Feel free to reply here if you have any objections. Or open a new issue.

@FezVrasta sorry for my absence, I was on vacations and couldn't reach github notifications;
Yeah.. I made these changes thinking they would fix the getBoundingClientRect, but since these changes weren't necessary to fix the calculation, I'm happy removing this unnecessary code :)

it makes a great improvement.


Deepl server

Something wrong ?

For me everything works fine. Do you have checked your internet connection?

For me everything works fine. Do you have checked your internet connection?

Turns out it's an OpenDNS problem.


cvssc:0.1.0

I am submitting

[x] a new package
[ ] an update for a package

Description: Package designed to facilitate the calculation of Common Vulnerability Scoring System (CVSS) scores for vulnerabilities across multiple versions, including CVSS 2.0, 3.0, 3.1, and 4.0.

I have read and followed the submission guidelines and, in particular, I

[x] selected a name that isn't the most obvious or canonical name for what the package does
[x] added a typst.toml file with all required keys
[x] added a README.md with documentation for my package
[x] have chosen a license and added a LICENSE file or linked one in my README.md
[x] tested my package locally on my system and it worked
[ ] excluded PDFs or README images, if any, but not the LICENSE

Thank you :)


Service Page - When delete working paper it does not ask for confirmation

Describe the bug
https://www.berrycast.com/conversations/532ba141-9195-5a5a-894f-53403b3bf925

https://www.berrycast.com/conversations/8ca4d303-ac5a-5b21-84ad-cfa711c9129c


Problems about etcd key when upgrading to version 1.3.4

In version 1.3.2, I used etcd key:/aihc/xxx rpc. When upgrading to version 1.3.4, the dependent service has such an error: rpc dial: discov://<IP_ADDRESS>:2379//aihc/xxx.rpc , error: context deadline exceeded, make sure rpc service "xxx.rpc" is already started.

+1
{"@timestamp":"2022-06-27T21:51:56.273+08:00","caller":"zrpc/server.go:90","content":"context deadline exceeded","level":"error"}
panic: context deadline exceeded
goroutine 1 [running]:
github.com/zeromicro/go-zero/zrpc.(*RpcServer).Start(0x2994bc0?)
/Users/bytedance/go/pkg/mod/github.com/zeromicro/go-zero@v1.3.4/zrpc/server.go:91 +0x85
main.main()
/Users/bytedance/tools/code/study/shorturl/rpc/transform/transform.go:39 +0x2c5

➜  api nmap <IP_ADDRESS> -p2379
Starting Nmap 7.91 ( https://nmap.org ) at 2022-07-01 13:32 CST
Nmap scan report for localhost (<IP_ADDRESS>)
Host is up (0.00021s latency).
PORT     STATE SERVICE
2379/tcp open  etcd-client
Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds
then etcd is started

emmm 有答案了吗?


[Bug] unused typing imports are not auto-fixed when pyupgrade option is selected

Ruff version: 0.0.132
Ruff configuration: Default
Python version: 3.10
Simple reproduction
# test.py
from typing import List
def test_sum_of_sequence(numbers: List[int]) -> int:
    return sum(numbers)

# pyproject.toml
[tool.ruff]
select = ["E", "F", "U"]
target-version = "py310"

When I ran ruff test.py --fix, the file changed to:
from typing import List # unused import
def test_sum_of_sequence(numbers: list[int]) -> int: # Notice typing.List changed to built-in list
    return sum(numbers)

I would expect it to also remove unused imports from typing import List. As a workaround I run the command again to remove unused imports but it would be great if ruff can do it automatically.
Let me know if there is anything I could do to help.
Thank you for this amazing package. It is super fast and works great!

Thank you for the kind words, and for the detailed report!
This is sort of a "known" bug but definitely something I'd like to fix. (This would be resolved automatically if we change Ruff to iteratively fix + re-run until the code stabilizes, as suggested in #660.)

Yes, that makes sense.
If no one hasn’t started working on this, I can give it a try if you can point me in the right direction.

Cool, no worries 😀


Don’t add error when changing checksum from/to :no_check.

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[ ] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew tests with your changes locally?

Fixes the CI error here: https://github.com/Homebrew/homebrew-cask/pull/51795

Should changing from :no_check still be an error?

Should changing from :no_check still be an error?

I think it didn’t really matter until https://github.com/Homebrew/homebrew-cask/pull/51795 but we should definitely allow it from now on.


Regression: Zsh autocompletion over ssh is dodgy

I'm running an up to date Solus install (linux 5.2.20-130) on X11.
The Issue
Zsh autocompletions over ssh are … dodgy

Reffer to me doing the same locally (just a different prompt style):

The gnome terminal has no such issue

Both systems are running the same version zsh (5.7.1), and zsh-autosuggestions.
Regression?
This is something I didn't have a problem with a few months ago, I'm afraid I'm not sure exactly when the issue started.

If you feel like its a regression, then try bisecting.

What terminfo are you using to ssh into the remote? If it's Alacritty, does the remote have the Alacritty terminfo installed?

How do I get the current terminfo?

Terminfo for releases is in the releases page, current terminfo is in the repo tree.

Hmmm. I'm going to guess it's /usr/share/terminfo/a/alacritty, in which case that definitely doesn't exist on the server (all it has beginning with a is ansi).

Oh actually, that was all it had under /lib/terminfo/, under /usr/share/terminfo/a/ it has another 320, but no alacritty.

Does TERM=xterm-256color ssh <REMOTE> work?

It does indeed. That's a simple fix. Now I feel a bit sily.

The terminfo you're trying to use needs to be installed on the remote. So either Alacritty needs to be installed on the remote, or you need to run ssh with a different terminfo.

That's a simple fix. Now I feel a bit sily.

Now worries, glad we would figure it out so quickly.


Work around tab / codelang formatting issues in “Container runtimes” page

Rather than tab shortcodes with a codelang set, use tabs containing Markdown for https://kubernetes.io/docs/setup/production-environment/container-runtimes/ [preview]
Related to changes from PR #19907

Thanks @sftim .
/lgtm

/approve


Library broken by recent changes.

Crate version: master
OS: Linux x64
Output of running docker version on the command line:

Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Sun, 16 Sep 2018 13:21:33 +1000
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Sun Sep 16 03:21:33 2018
  OS/Arch:          linux/amd64
  Experimental:     false

So as in the title, the recent changes broke the Images::pull() which results in a:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: SerdeJsonError(Error("invalid type: map, expected a sequence", line: 1, column: 1))', libcore/result.rs:945:5

for no reason, but the download occurs, it successfully pulls the image.
And after that, Containers::create() fails with Config cannot be empty in order to create a container when the config is actually not empty:
&ContainerOptionsBuilder::new("redis:latest")
        .name("test-name").build()

All that seems really weird to me..

Fixed the second issue, sending PR asap.

Note there a number of changes recently folded into master the upcoming release https://github.com/softprops/shiplift/blob/master/CHANGELOG.md. sorry if this caught you off gaurd. And pulls are def welcome!

@FauxFaux, That's what I was noticing, I'm gonna try it out !

I have it working, give me a minute!

Oh nice !

Mmm. This new API is not great for build(), as it now only returns results at the end of the build, not live progress.

We said the same but in different places :,)

Let's continue the talk here, #126 should be merged for now since it fixes the issue temporarily.

But #126 should't close this issue anymore. Because it's not a perfect integration.


Well Known Text

To make adding geometries to a database easier, adding toWKT method to Position and Polygon classes.
If you're not already familiar with WKT, Wikipedia has a good article on it.
WKT is not database brand specific, so geokit would not be playing favorites to include these methods.
(You can ignore commit 6ddd518. That was just me catching up with your latest source code. Commit e7d4d67 is the additional class methods and test cases.)

Learned how to "rebase". Closing this pull request in favor of easier to read changes.


EPD-612: Evaluations with AutoblocksTracer

Description
Updated tracer to accept evaluators as top level property, then execute them.
Note: I am planning on creating a folder for tracer under _impl directory. I have held off on doing this to make the diff easier to look over during the initial reviews, I will add this change once I get the majority of feedback on the changes in tracer.py
Graceful exit demonstration: https://drive.google.com/file/d/1ITe8iFdXY8qBAdUb3yBOPvyfNU9iJwkv/view?usp=sharing

@nicolewhite Ok updated so that

sendEvent is now fire and forget (tests updated to reflect)
Removed unnecessary types (like ClickhouseEvaluationObject)
Logging evaluator runtime exceptions and excluding the from evaluations computed property
General code cleanup

@nicolewhite Ok added the shutdown test here - this PR should be pretty close 🤞

Added to description - demo of graceful exit: https://drive.google.com/file/d/1ITe8iFdXY8qBAdUb3yBOPvyfNU9iJwkv/view?usp=sharing


Tidy “clean up local state” for Minikube install

use lower case for a continued sentence
avoid marking sample output as shell code
write “clean up” rather than “cleanup” in a verb sense

/sig cluster-lifecycle

/lgtm
/approve


Question about Riak KV latest version

Hi,
It's not really an issue but wanted to know the difference between releases on GitHub tags vs https://docs.riak.com/riak/latest/downloads/.
Under Github, the latest release shows Riak KV 3.0.4 - Release and on https://docs.riak.com/riak/latest/downloads/, the latest release is Riak KV 2.2.3. Which one should I use for my production environment?
Thanks in advance,
Vivek

The docs.riak.com website is out of date.  The latest version is Riak KV 3.0.4, and this is the best choice for a new production environment.
Packages available at https://files.tiot.jp/riak/kv/3.0/

Thanks a lot @martinsumner!


Upgrade terminal-table to 2

As of Jekyll 4.2.0, Jekyll requires terminal-table 2.0 (my motivation here is to be able to upgrade my Jekyll version). Looking at their release notes, the breaking change for terminal-table 2 is requiring ruby 2.4+, and it appears danger dropped 2.3 support in #1225.
Side note: I had unfortunately not pinned danger properly when I upgraded to Jekyll 4.2.0, so bundler rolled my danger all the way back to 0.3.0, which is presumably the most recent version of danger that didn't use terminal-table. Anyway, that's a lesson in pinning versions properly for me.

I think this change is okay from danger's perspective, but this may push other consumers to open similar PRs/issues on other projects that use danger but have other dependencies that aren't ready for terminal-table 2. Alternatively, we could go with a slightly more forgiving pin like ">= 1", "< 3". Assuming terminal-table is a good citizen of semver, this shouldn't be an issue, as terminal-table didn't use 2.0 as an opportunity to make other breaking API changes.

          2 Warnings

:warning:
External contributor has edited the Gemspec

:warning:
.gemspec modified

  Generated by :no_entry_sign: Danger

Given v3 is also out, and has no API breaking changes, I think the more forgiving ">= 1", "< 4" is probably a safe bet 👍🏻

Ah! Missed that version. Done!

Will ship it when some other PRs land, deploying gems requires me going to another computer 👍🏻


Live Channels on Philips & Sony Tv's

Hi,
I have a hard time trying to get Live Channels to work on my Philips 55PUS7600 TV. After installing CumulusTV, Live Channels has shown up in App Manager, but not in launcher. Pushing "Launch Live Channels button in CumulusTV app, app says there was a problem running app. Do you know any way to force enable Live Channels on this hardware? Just to get you know - we have an access to install custom apps from "unknown sources", but no root access.
Thanks for any help!

Hmm I haven't heard of any other issues with Phillips TVs. What live TV app
is running on it?
It's also possible that future updates will fix it just like Sony.
On Feb 17, 2016 5:41 AM, "kyvaith"<EMAIL_ADDRESS>wrote:

Hi,
I have a hard time trying to get Live Channels to work on my Philips
55PUS7600 TV. After installing CumulusTV, Live Channels has shown up in App
Manager, but not in launcher. Pushing "Launch Live Channels button in
CumulusTV app, app says there was a problem running app. Do you know any
way to force enable Live Channels on this hardware? Just to get you know -
we have an access to install custom apps from "unknown sources", but no
root access.
Thanks for any help!
—
Reply to this email directly or view it on GitHub
https://github.com/Fleker/CumulusTV/issues/99.

It uses custom Philips app for cable TV. I was thinking about "Google Live Channels" (this one https://play.google.com/store/apps/details?id=com.google.android.tv). I haven't found a way to run it. It's preinstalled for sure, because, like I said before, it shows up in Android App Manager after installing Cumulus TV, but it won't show up in Leanback Launcher, and it won't run by pressing the "Launch Live Channels" button in Cumulus TV app. I'm really disappointed because of that. :(

The Phillips TV may use a different package name which prevents the button
from working.
Can you sideload the ChannelSurfer sample (
http://GitHub.com/Fleker/channelsurfer) and see if that runs properly? I'm
moving over to that library now, so it may actually resolve your current
issue.
Thanks.
On Feb 17, 2016 10:14 AM, "kyvaith"<EMAIL_ADDRESS>wrote:

It uses custom Philips app for cable TV. I was thinking about "Google Live
Channels" (this one
https://play.google.com/store/apps/details?id=com.google.android.tv). I
haven't found a way to run it. It's preinstalled for sure, because, like I
said before, it shows up in Android App Manager after installing Cumulus
TV, but it won't show up in Leanback Launcher, and it won't run by pressing
the "Launch Live Channels" button in Cumulus TV app. I'm really
disappointed because of that. :(
—
Reply to this email directly or view it on GitHub
https://github.com/Fleker/CumulusTV/issues/99#issuecomment-185247015.

Ok, You mean to sideload this apk?  https://github.com/Fleker/ChannelSurfer/releases/tag/v0.2.6
I'll try in few hours. I think Philips uses originall name for Google Live Channels, becouse when i tried to sideload newer version from APKmirror there was an error saying that APP coudn't be installed. I think Philips somehow disabled this APP intentionally and we need to find woraround.

Yes that's the latest version. Let me know if that works. If so, then a fix
should be coming soon.

Hi, so I tried to sideload your new APP, but I get simmilar effect. After pressing button I get message that Live Channels are disabled or not installed. But APP exists in Android APP Manager

Can you provide the package name for Live Channels on a Philips TV? I have
to manually check for package names. The Live Channels functionality itself
should work well.
On Feb 18, 2016 3:11 AM, "kyvaith"<EMAIL_ADDRESS>wrote:

[image: img_20160218_083550]
https://cloud.githubusercontent.com/assets/107579/13137142/434a4a3c-d61f-11e5-8c0f-fe43c1150d19.jpg
Hi, so I tried to sideload your new APP, but I get simmilar effect. After
pressing button I get message that Live Channels are disabled or not
installed. But APP exists in Android APP Manager
[image: img_20160218_083720]
https://cloud.githubusercontent.com/assets/107579/13137183/9ec8e878-d61f-11e5-82ea-f517cdc4140c.jpg
—
Reply to this email directly or view it on GitHub
https://github.com/Fleker/CumulusTV/issues/99#issuecomment-185590348.

Hi,
I did some checks and Live Channels uses standard package name com.google.android.tv and resides in /system/priv-app. When there is no app installed that uses its framework, the app is disabled and hidden. When I install CumulusTV or your new PoC app, Live Channels become enabled but hidden. When I trigger pm unhide com.google.android.tv, adb says its flag has changed to unhidden, but app still not exists in Leanback Launcher or Sideload Launcher.
Now some progress - when I trigger am start --user 0 com.google.android.tv/.MainActivity app shows up on finding channels screen, and there is a CumulusTV logo at the bottom. Unfortunately, after finding channels, that I enabled in CumulusTV, app starts to find channels again and again. After triggering am start --user 0 com.google.android.tv/.TvActivity app shows up for a sec and then FC.
I think, this is a problem with app permissions, because on /system/priv-app/ exist app that enables support for mouse too, and we are unable to enable mouse on 2015 Philips Tv's. I believe there should be another way to start Live Channels, because we won't be able to change permissions of this app because we don't have root access (even if we find exploit for that, there is a kernel level checksum check, that prevents system to start after any change on /system partition).
Maybe we can change package name of com.google.android.tv and sideload install it? I've tried that, but I don't know how to do it properly - I get "Parse Error : There is a problem parsing the package".
Thanks for any help!

Isn't there any sort of live channel input for Philips TVs?
On Fri, Feb 19, 2016 at 4:25 AM kyvaith<EMAIL_ADDRESS>wrote:

Hi,
I did some checks and Live Channels uses standard package name
com.google.android.tv and resides in /system/priv-app. When there is no
app installed that uses its framework, the app is disabled and hidden. When
I install CumulusTV or your new PoC app, Live Channels become enabled but
hidden. When I trigger pm unhide com.google.android.tv, adb says its flag
has changed to unhidden, but app still not exists in Leanback Launcher or
Sideload Launcher.
Now some progress - when I trigger am start --user 0
com.google.android.tv/.MainActivity app shows up on finding channels
screen, and there is a CumulusTV logo at the bottom. Unfortunately, after
finding channels, that I enabled in CumulusTV, app starts to find channels
again and again. After triggering am start --user 0
com.google.android.tv/.TvActivity app shows up for a sec and then FC.
I think, this is a problem with app permissions, because on
/system/priv-app/ exist app that enables support for mouse too, and we are
unable to enable mouse on 2015 Philips Tv's. I believe there should be
another way to start Live Channels, because we won't be able to change
permissions of this app because we don't have root access (even if we find
exploit for that, there is a kernel level checksum check, that prevents
system to start after any change on /system partition).
Maybe we can change package name of com.google.android.tv and sideload
install it? I've tried that, but I don't know how to do it properly - I get
"Parse Error : There is a problem parsing the package".
Thanks for any help!
[image: img_20160218_213309]
https://cloud.githubusercontent.com/assets/107579/13171406/093236dc-d6f3-11e5-9399-d63fde02c37b.jpg
—
Reply to this email directly or view it on GitHub
https://github.com/Fleker/CumulusTV/issues/99#issuecomment-186129903.

No.

You said Philips had a cable TV app. What is the package name of that? It should be able to work with Cumulus TV as well as regular cable.

@kyvaith have you tried to install the Pluto TV app on your Philips Android TV?
https://play.google.com/store/apps/details?id=tv.pluto.android&hl=en
This is another app that uses the Google Live Channels infrastructure.  If this app works, then there will be a way for @Fleker to be able to get Cumulus TV to work.  Otherwise, it maybe something Philips have disabled on their end.
Alternatively try and install the following...which should install the live channels app if it is not available.
https://www.apkmirror.com/apk/google-inc/live-channels/live-channels-1-09-419-release/

Has there been a resolution to this?

Well, after rooting TV and deleting preinstalled Live Channels app, its possible to sideload one from apk mirror and it works. There is no user friendly way.


Spyder crashed during last session error message

I downloaded Anaconda last week and have never been able to load Spyder. The same error message keeps coming up that spyder crashed during last session and to try resetting spyder by "running spyder with the command line option '--reset': python spider --reset." I tried and that doesn't work. Other solutions that I found were to delete the spyder.lock folder and I do but that also doesn't resolve anything and the folder reappears after I try to load Spyder again and nothing happens. I've tried deleting the entire .spyder-py3 folder as that worked for some people but the folder also reappears.
What steps will reproduce the problem?

Open up anaconda navigator
Doubleclick on spyder 3.1.2
Error message appears that spyder crashed during last session

Versions and main components

Spyder Version: 3.1.2
Python Version: 3.6
Qt Version: 4.2.1
PyQt Version:
Operating system: Windows 7 Home Premium

Dependencies
Please go to the menu entry Help > Optional Dependencies (or
Help > Dependencies), press the button Copy to clipboard
and paste the contents below:

Please open a terminal (i.e. cmd.exe) and run there
spyder --show-console

Then post the errors printed there on this issue.

Traceback (most recent call last):
File "C:\Users\User\Anaconda3\lib\site-packages\spyder\app\mainwindow.py", line 2989, in main
mainwindow = run_spyder(app, options, args)
File "C:\Users\User\Anaconda3\lib\site-packages\spyder\app\mainwindow.py", line 2891, in run_spyder
main = MainWindow(options)
File "C:\Users\User\Anaconda3\lib\site-packages\spyder\app\mainwindow.py", line 494, in init
socket.IPPROTO_TCP)
File "C:\Users\User\Anaconda3\lib\socket.py", line 144, in init
_socket.socket.init(self, family, type, proto, fileno)
OSError: [WinError 10106] The requested service provider could not be loaded or initialized

It seems your antivirus/firewall is blocking Spyder's attempt to open a socket in your system.
What antivirus/firewall are you using?

I disabled Norton and tried loading Spyder again and it still doesn't work. I will try uninstalling and reinstalling with Norton disabled and see if it will work then.

I have the same problem.I have solve it.
open a terminal (i.e. cmd.exe) and run there
netsh winsock reset
Then restart computer.
Hope to help you.

Thank you so much!! That solved the problem!

@rickywz, what does
netsh winsock reset

do?

@ccordoba12 Reset the Winsock directory to restore the network


Tooltip not attached to Icon

Describe the bug
When Tooltip wraps an Icon, the Tooltip does not show attached to Icon
To Reproduce
Steps to reproduce the behavior:

Wrap Tooltip around Icon
Hover Icon
Tooltip is not attached to Icon

https://codesandbox.io/embed/tooltip-not-attached-to-icon-erzjo
Expected behavior
Tooltip should appear next to Icon
Screenshots
If applicable, add screenshots to help explain your problem.

Rimble UI Version

0.10.0 (latest)

@MikeLockz The example for this bug shows an button and no icons and the tooltip appears to be working correctly.

@gesquinca - Updated the failing example. Also happening in the demo app in the rimble-ui repo.

@MikeLockz I'm still only seeing a Button and a Tooltip that seems to be attaching fine on this link. https://codesandbox.io/embed/tooltip-not-attached-to-icon-erzjo
Anyhow, the tooltip is placed relatively to the element it wraps. If the element spans the length of the screen, like something with display: block it will attach to that. The icons are set to display block so the tooltip is attaching correctly.

Figured out that I can't click the link and edit those sandboxes either. I need to login first 🤦♂ Figured that out and updated the examples.
https://codesandbox.io/s/tooltip-not-attached-to-icon-erzjo?from-embed
It's happening to our live docs too so I think it's worth figuring out a solution for this that doesn't show a floating tooltip on the Icon.
https://rimble.consensys.design/components/rimble-ui/Tooltip#examples
I didn't realize that Icon has its display defaulted to 'block'. I tried to add a prop value like display="inline" but am still getting a full-width Icon component. The only way I am able to get the Icon to behave inline is by wrapping it in a Box component first and setting the Box to display="inline" and then wrapping the Box by the Tooltip.
Checked the source and I think wrapping the Icon in the div is causing the display prop to not create an inline element out of the Icon. I don't think this is an issue with the Tooltip, but with Icon. How would we create an inline Icon, other than wrapping in a Box or using Flex? If the display prop has no effect, we shouldn't offer it as a prop to the component. I was able to get around this like:
const StyledBox = styled(Box)``;

const Icon = React.forwardRef((props, ref) => (
  <StyledBox display={props.display} ref={ref}>
    <RmdIcon.default {...props} />
  </StyledBox>
));

I think this is where Icon was at one point. Not sure why it changed to a div from a Box as a wrapper around RmdIcon.default.


REPORT - Package build week 20221010 - 20221014

Builds: https://github.com/open-rmf/rmf/blob/main/reports/builds.md
This week we are focused on rhel packages.

20221106
Humble
Failed

![Build Status](nlohmann_json_schema_validator https://build.ros2.org/job/Hbin_rhel_el864__nlohmann_json_schema_validator_vendor__rhel_8_x86_64__binary/badge/icon)
pybind11_json_vendor
rmf_task

20221107

20221109
-  rmf_task

 rmf_visualization_floorplans  rmf_visualization_floorplans

20221110
 rmf_visualization_floorplans
https://build.ros2.org/job/Hbin_rhel_el864__rmf_visualization_floorplans__rhel_8_x86_64__binary/41/console
08:19:19 DEBUG: CMake Error at CMakeLists.txt:25 (add_library):
08:19:19 DEBUG:   Target "floorplan_visualizer" links to target "Eigen3::Eigen" but the
08:19:19 DEBUG:   target was not found.  Perhaps a find_package() call is missing for an
08:19:19 DEBUG:   IMPORTED target, or an ALIAS target is missing?
08:19:19 DEBUG: -- Generating done

20221111


static properties are re-assignable, modifiable

Currently it looks like static properties can be reassigned (i.e. if I have a model Account and define a static property Account.CustomError) then this could actually get reassigned? Would you consider changing this to use something like:
Object.defineProperty(child, key, {
    value: staticProps[key],
    writable: false,
    enumerable: true
})

This would make using a model's properties for things like enum-style values more reliable since they would be pretty "static" (if the value is a reference to an object it could still be modified, though we could also  Object#freeze the assigned value?).

Hi @hulbert. Thanks for the suggestion. If I understand correctly, you're suggesting changing the behaviour of Model.extend to make static fields (provided in the second argument) constant.
Ultimately I think we want to be moving towards using ES6 classes for model definitions (or at least the option thereof). This means that extend should, if anything, emulate the behaviour of extends.
Furthermore, I appreciate the reasoning behind this, but I'm unconvinced that it's necessary. Mutability is an expected and well understood part of JS development. Personally I think that this change would fix a class of errors so rare that it doesn't justify the change.

@rhys-vdw thanks for taking the time to respond & appreciate your thoughts. I am very much looking forward to the next iteration of Bookshelf in an ES6-style but hope that doesn't rule out making improvements to Bookshelf as it is today.

Furthermore, I appreciate the reasoning behind this, but I'm unconvinced that it's necessary. Mutability is an expected and well understood part of JS development. Personally I think that this change would fix a class of errors so rare that it doesn't justify the change.

In a lot of cases, I would agree with this. However, Bookshelf/Backbone-style is creating its own inheritance style which seems to mimic more traditional OO languages like Java. The Bookshelf docs say this about Bookshelf#extend's second argument:

optional classProperties to be attached directly to the constructor function

In Java, a class property can only be defined as static so it's strange to have a mutable class property, even in a language like JS, since the concept of a class property seems to be copied from other OO languages and not native to JS. Finally, I would ask what the use cases are for modifying a class property like Account.CHARACTER_LIMIT at runtime? To me it seems like this is a side effect of the plainest way to implement class properties in the extension code and not an intentional design decision.
I do understand that Bookshelf's extend comes from Backbone so that may be a case where consistency is preferable. Funnily enough, Backbone internally calls them "static properties" despite being mutable https://github.com/jashkenas/backbone/blob/master/backbone.js#L1824
My biggest concern is in node, if one of these class property is modified in one module then it will be changed everywhere in the node runtime (i.e. they are not on the prototype so the slate is not essentially wiped clean on each Model#forge).

Bookshelf/Backbone-style is creating its own inheritance style which seems to mimic more traditional OO languages like Java.

I think it's actually very similar to the now core ES6 class/inheritance OO style. Java/C#/C++ do not do "static inheritance" (ie. Child.func === Parent.func). ES does.

In Java, a class property can only be defined as static so it's strange to have a mutable class property, even in a language like JS...

You seem to be conflating the concepts of "static" and "constant". You're correct in that a "class member" in JS is not like a "static" class member in Java. But this is just one of many differences between the two systems.

...what the use cases are for modifying a class property...

Other similar questions: What are the use cases for redefining a class name? What are the use cases for redefining an instance method? What are the use cases for allowing a string to be passed to a function that requires an object? Why are prototypes mutable?
I can think of two use cases for mutable members: monkey-patching and mocking for tests. Considering we're promoting an inheritance models, I'd accept that they're only useful for stubbing in testing.

Funnily enough, Backbone internally calls them "static properties" despite being mutable

You're again conflating "constant" and "static". Valid (but inadvisable) Java:
public class Test {
   public static int value = 5;
}

Test.value = 6;

My biggest concern is in node, if one of these class property is modified in one module then it will be changed everywhere in the node runtime.

I hear you and understand your argument. I think it's something to keep in mind, as we do use defineProperty in places, but for now I'm going to have to respectfully reject this change request. From experience I find that trying to emulate the "correctness" of a statically typed program in JS is going down a rabbit hole that leads to needless complexity and doesn't actually address many real world problems.
I'd advise you to just define your own enum/constant types values (eg Account.CHARACTER_LIMIT) by the method you're describing. Could I ask if you actually did accidentally reassign something as you describe, or if you just think the API could be more "correct"?
The type of problems I really want to see addressed are ones of surprising behaviour.  Why allow it? Because a JavaScript developer expects it to work. Is this a bad thing? Shrug. Out of scope for this discussion IMO.

@rhys-vdw thanks for your time, great explanation of this issue. I was indeed conflating static with static constant in Java as well which did little but muddy the waters.
I do think there is a place for constant class properties in Javascript but doesn't sound like ES6 adds them anyways, and you do a great job defending the flexibility of JS. I think the tension lies in Javascript offering things like const and Object#freeze but that not being usable in all places.

Could I ask if you actually did accidentally reassign something as you describe, or if you just think the API could be more "correct"?

No accident yet, but my team as a form of habit tends to declare things that don't need to be modified as such up front (either with const or some combination of Object#freeze. If that causes problems with testing then we find ways to work around that rather than spoil the whole codebase for the sake of testing.
Frankly I appreciate the flexibility of Javascript and don't want to turn it into Java but at the same time Javascript has added features like const—but then they are available inconsistently. I.e. in this case we'd prefer to store CHARACTER_LIMIT on Account but not being able to set it as constant means we may implement it differently (i.e. in some map of constants).
Finally, would it be advisable to do something like this when declaring a model or can that cause issues with Bookshelf?
var Account = bookshelf.Model.extend({
    tableName: 'accounts'
})

Object.defineProperty(Account, 'CHARACTER_LIMIT', {
    value: 5,
    writable: false,
    enumerable: true
})

I do think there is a place for constant class properties in Javascript but doesn't sound like ES6 adds them anyways

Yeah, I looked that up while we were having this discussion. No constant members in the class definitions. Hopefully it will be coming in a future spec.

...would it be advisable to do something like this...

Currently there are no issues with that approach. AFAIK the only time that this strategy falls down is when _.extend is used, reading from your object with constant properties. It will turn them all into normal object properties.
var X = _.extend({}, Account);
X.CHARACTER_LIMIT = 'hello';


Check full scope of Iris' usage of dask

From original comment in #2300

Iris' current use of biggus is very limited:

lazy loading of PP, netcdf and Grib data: biggus.OrthoArrayAdapter / biggus.NumpyArrayAdapter
lazy indexing of deferred data content : biggus.Array.getitem
lazy merging of multiple data sources, via biggus.ArrayStack
lazy calculation of 3 statistics only : MEAN, STD + VAR

STOP PRESS
The above list missed cube arithmetic, which adds a significant work item to the above list.

Results of a trawl through Iris code,
listing all the places biggus gets used
analysis
    MEAN, STD_DEV, VARIANCE
    maths
        _assert_compatible : broadcast_arrays
        _binary_op_common : broadcast_arrays
fileformats
    _pyke_rules."fc_rules_cf.krb"
        build_auxiliary_coordinate : OrthoArrayAdapter
        build_cell_measures : OrthoArrayAdapter
    netcdf
        _load_cube() : OrthoArrayAdapter
        Saver._create_cf_data_variable : save
    grib
        GribWrapper((deprecated)) : NumpyArrayAdapter
        .message.GribMessage.data : NumpyArrayAdapter
    pp
        PPField.data : (isinstance) Array
        PPField.__eq__ : (isinstance) NumpyArrayAdapter
        _create_field_data : NumpyArrayAdapter
_merge
    ProtoCube.merge : NumpyArrayAdapter, ArrayStack
coords
    AuxCoord.points(get) : (isinstance) Array
    AuxCoord.points(set) : (isinstance) Array, ConstantArray
    AuxCoord.bounds(get) : (isinstance) Array
    AuxCoord.bounds(set) : (isinstance) Array, ConstantArray
    CellMeasure.data(get) : (isinstance) Array, ndarray
cube
    Cube.__init__ : (isinstance) Array
    Cube.lazy_data() : (isinstance) Array, NumpyArrayAdapter
    Cube.has_lazy_data() : (isinstance) Array
    Cube.__getitem__ : (isinstance) Array
    Cube._intersect : LinearMosaic
    Cube._deepcopy : (isinstance) Array

Why don't we see concatenate in the above list of affected code areas ?

I don't know, it is right here: https://github.com/SciTools/iris/blob/master/lib/iris/_concatenate.py#L845

@ajdawson  I don't know, it is right here ...

Right, I see that now !
I'll review the search I did as something obviously went wrong.
FYI many of these tickets will shortly be re-written or replaced with newer ones, as we will are re-evaluating the whole scope.
I'm re-planning this like mad now, in advance of a devs meeting tomorrow, as we'll be working on this over the next 2 weeks (Mon 13 - Fri 24).

It's here now : #2345


add rbac permissions for nodes/status

How to categorize this PR?

/area networking
/kind cleanup
What this PR does / why we need it:
adds correct RBAC permissions for cilium-agent
Which issue(s) this PR fixes:
Fixes #125
Special notes for your reviewer:
Release note:

Thank you @donCappo for your contribution. Before I can start building your PR, a member of the organization must set the required label(s) {'reviewed/ok-to-test'}. Once started, you can check the build status in the PR checks section below.

/help


Make Array2D and Array3D const correct

This is low priority, but may provide small performance gains and const is always god.

There wasn't much I could do here.
Array2D serves its purpose, but It may be time for us to replace it with boost's ND array.
The original purpose of implementing Array2D on our own was to keep the logic equivalent on the CPU and GPU (for use in pathfinding) but I don't think that's a priority anymore.

Merged into Dev


Modifications of dosomder's "Show authentication error in web-ui"

As we wanted some changes to @dosomder's pull request #612 and he stated that he unfortunately cannot spend time on the project at the moment, I took the liberty to create a new pull request including the original commit and a further change making sure we're not exposing potentially sensitive data when an authentication error occurs.

Looks good to me!


Remove duplicate line in dim.c

A line was duplicated in dim.c; remove one copy.

This is no longer needed; a different pull request deleted both of the duplicated lines so this no longer applies.


Opir exited with non-zero exit code 127

I get this error:

/home/grishkin/TestAtlasWorkspace/futhark/src/futhark.nim(717, 7) Hint: Running: opir -I/home/grishkin/TestAtlasWorkspace/graphlib -I/usr/lib/llvm-14/lib/clang/14.0.0/include /home/grishkin/.cache/nim/test0_d/futhark-includes.h [User]
stack trace: (most recent call last)
/home/grishkin/TestAtlasWorkspace/futhark/src/futhark.nim(726, 9) importcImpl
/home/grishkin/TestAtlasWorkspace/graphlib/test0.nim(5, 1) template/generic instantiation of importc from here
/home/grishkin/TestAtlasWorkspace/futhark/src/futhark.nim(661, 14) template/generic instantiation of importcImpl from here
/home/grishkin/TestAtlasWorkspace/futhark/src/futhark.nim(726, 9) Error: Opir exited with non-zero exit code 127.
Opir output:
/bin/sh: 1: opir: not found

The test file is very simle:
import futhark

importc:
    foo.h

FYI: I have an atlas workspace and a testproject beneath this.

Well the error message is protty clear:
/bin/sh: 1: opir: not found

Opir simply can't be found. I assume Atlas maybe doesn't build packages it installs, or it places them somewhere not generally accessible.

You are correct. This seems to be the case because I used nimble instead and it worked fine.


Updated requirements and code

Installing the packages on cloud devices is hard because of outdated packages, do you consider updating packages and revising the code? Thanks for great project!

In addition, a docker container may be very useful for beginners.


WHY was it replaced? What is different? Is ANYTHING different?

"This command has been replaced by the cd command"
This isn't helpful. It doesn't explain WHY ChDir was replaced by CD. More importantly it doesn't explain whether there is any difference between ChDir and CD, which seems to be a frequently asked question (and one which is critical to users). The CD page makes no reference at all to ChDir other than a link to this page.

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

ID: 96df7b0f-6dab-fa92-4b7c-719d9f4eeff0
Version Independent ID: a2df7846-4c1a-5be6-4bc7-ec23368c03a6
Content: chdir
Content Source: WindowsServerDocs/administration/windows-commands/chdir.md
Product: windows-server
Technology: windows-commands
GitHub Login: @JasonGerend
Microsoft Alias: jgerend

We hugely appreciate your contribution, feedback, and support to our technical documentation.
We’ve phased out GitHub Issues on this repository as the feedback mechanism for content and have replaced it with a new feedback system. For more information see, Content User Feedback. As part of this rollout, we are migrating your issue where our team will use your comments to improve the documentation experience. Unfortunately, this does mean you won't be able to access this issue after the migration is complete.
All issues will be migrated by Thursday 29th August 2024.
Once again, thank you for your valuable feedback, we hope you’ll continue to contribute using our new feedback system.


Added small arrow

Added a small arrow beside the GitHub icon as the issue described

@Kruthardh11 LGTM 👍🏻

Great


Kmeans

Kmeans with Kmeans++ initialization option. Implemented in spirit with torch NN modules, works with gradient descent.

@sagarwaghmare69 Looks good. Can you add some documentation? Maybe an example training script?

Cool. Yes, I will add documentation.

@nicholas-leonard added documentation along with a sample example.

@nicholas-leonard I added sample example in the doc itself. Let me know if you would like independent example script.