CertificateSigningRequest / user creation

Version:
v1.17.4+k3s1 (3eee8ac3)
To Reproduce
SERVER_ADDRESS=<IP_ADDRESS>

openssl req -new -newkey rsa:4096 -nodes -keyout key -out csr -subj "/CN=user/O=kuber-users"
cat <<- EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
  name: user-k8s-access
spec:
  groups:
  - system:authenticated
  uid: user
  username: user
  request: $(cat csr | base64 -w0)
  usages:
  - client auth
EOF

kubectl certificate approve user-k8s-access
kubectl get csr user-k8s-access -o jsonpath='{.status.certificate}' > crt.b64
kubectl config view -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' --raw > k8s-ca.crt.b64

cat > kubeconfig <<- EOF
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: $(cat k8s-ca.crt.b64)
    server: https://${SERVER_ADDRESS}:6443
  name: default
contexts:
- context:
    cluster: default
    user: user
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: user
  user:
    client-key-data: $(cat key | base64 -w0)
    client-certificate-data: $(cat crt.b64)
EOF

Then certificate is actually approved and seem like everything is fine:
$ kubectl get csr user-k8s-access
NAME              AGE   REQUESTOR   CONDITION
user-k8s-access   24s   admin       Approved,Issued

and kubectl get csr user-k8s-access -o yaml produces:
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {<JSON>}
  creationTimestamp: "2020-05-06T17:35:01Z"
  name: user-k8s-access
  resourceVersion: "175450"
  selfLink: /apis/certificates.k8s.io/v1beta1/certificatesigningrequests/user-k8s-access
  uid: a160f6aa-e78d-4873-9938-5d8f6132b9f4
spec:
  groups:
  - system:masters # <- WHY???
  - system:authenticated
  request: <CSR>
  uid: admin # <- WHY UID IS ADMIN?
  usages:
  - client auth
  username: admin # <- WHY USERNAME IS ADMIN?
status:
  certificate: <CERT>
  conditions:
  - lastUpdateTime: "2020-05-06T17:35:01Z"
    message: This CSR was approved by kubectl certificate approve.
    reason: KubectlApprove
    type: Approved

Expected behavior
I should be able to use generated kubeconfig as config for kubectl
Actual behavior
error: You must be logged in to the server (Unauthorized)

and in logs:
May 06 19:42:54 master-node k3s[218927]: E0506 19:42:54.843059  218927 authentication.go:104] Unable to authenticate the request due to an error: x509: certificate signed by unknown authority

As far as I understand (according to thread in rancher/k3s#684 and #245) k3s needs user client certificate to be signed by /var/lib/rancher/k3s/server/tls/client-ca, but after some digging with I found out that by CSR it is being signed by /var/lib/rancher/k3s/server/tls/server-ca. Don't know where exactly bug lies (in decision to require some client signature or in signing CSRs with some server signature) but it's unfortunate that I can't create new users in k3s following most manuals out there and even more unfortunate that I need to SSH on master to create new user. Also it's kinda strange that user on resulting CSR is admin Oo

You don't appear to have included a signerName in your CSR
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#certificatesigningrequestspec-v1beta1-certificates-k8s-io
https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/#signers
Does it get signed by the correct CA if you set the signerName to kubernetes.io/kube-apiserver-client?

Also, I haven't really dug into the certificate auth stuff, but I don't believe kubernetes supplies a full authorization provider, so all you have for certificates is the core k8s ClientCAContentProvider which extracts effective user and groups from the certificate subject if it's in the form  o=<group>,cn=<username>.
Can you provide the output of openssl x509 -noout -text -in ${certsDir}/crt.b64 ?

@saksmt as of #1704 the default admin user now uses client cert auth. If possible, you might try upgrading to one of the master builds that includes this change to see if it works better for you.

@brandond That API seems to only exist in 1.18, currently I'm using 1.17 so that fails with error validating data: ValidationError(CertificateSigningRequest.spec): unknown field "signerName" in io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec and of course disabling validation with --validate=false results in nothing. Is there another way to achieve same CA selection besides updating to 1.18?
Yeah I know how it should work and as you can see from snippet I've set correct CN and O.
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            d0:c2:80:b7:81:2f:80:84:49:4d:9e:df:16:48:a5:90
    Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN=k3s-server-ca@1588606646
        Validity
            Not Before: May  6 17:30:01 2020 GMT
            Not After : May  6 17:30:01 2021 GMT
        Subject: O=kuber-users, CN=user
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:d0:fe:0f:73:f8:a8:75:d4:6e:4a:8b:d8:be:fd:
                    82:88:ed:e3:39:10:2d:de:1c:62:01:03:fc:12:97:
                    77:14:a9:73:c7:f0:d0:7d:97:ed:e8:32:3c:0b:0d:
                    b9:72:4b:d9:68:1f:67:20:9d:28:59:96:eb:5c:7d:
                    e8:1b:5f:ce:45:f9:c3:c0:a7:e5:88:cb:f0:f6:ac:
                    12:22:5d:31:ba:57:5d:33:8a:68:1d:5c:cd:9d:52:
                    76:1a:f2:66:8a:90:63:d7:d5:ce:56:3b:d2:84:1d:
                    69:b0:3a:e3:a8:c7:87:18:4e:03:f4:62:5a:80:df:
                    a0:c3:60:b7:9f:dc:44:6d:f8:a9:c3:66:0a:31:0c:
                    5e:96:1a:15:f0:86:eb:9e:fb:69:d0:67:06:37:96:
                    11:81:4d:00:a1:55:a4:00:1b:62:23:ac:66:63:81:
                    27:45:c1:47:06:c5:f8:47:cf:84:22:1f:dc:51:95:
                    14:39:ea:e8:49:ef:6f:56:76:48:5d:3e:53:3a:84:
                    10:0a:c7:df:93:67:60:78:fc:fc:bf:b6:e5:13:e6:
                    34:b5:4a:9a:cd:59:a7:93:24:7d:7f:17:2b:5f:da:
                    80:dc:7d:82:c8:f9:4b:61:e3:77:e3:71:38:8c:4a:
                    f8:60:8e:19:49:b7:ea:54:71:f8:ba:7a:b2:74:15:
                    24:23:e9:81:23:39:ec:eb:b4:ca:65:29:0a:a3:80:
                    f6:e1:b5:42:60:21:7e:1f:9b:16:8c:8a:a5:ce:1d:
                    a7:86:57:2a:74:cb:40:60:68:66:dc:77:66:34:9c:
                    f7:f2:5f:dd:6c:a9:2c:4e:c8:72:d6:0f:4d:94:03:
                    c0:8c:d6:2a:a7:36:f7:0d:9c:54:37:53:97:d7:43:
                    27:bf:3a:0a:c2:c1:6c:ec:06:00:98:59:05:db:03:
                    37:10:df:79:0f:9d:53:ef:e0:ba:95:14:5f:1c:5b:
                    3c:f0:98:2a:bf:6c:55:27:b4:68:74:9c:27:d8:67:
                    98:7f:9e:07:7f:4d:cf:e0:ac:9f:5a:ec:e4:fc:9d:
                    b4:41:3c:2f:13:12:b4:ff:e8:c1:3f:5c:85:b3:5a:
                    8a:a9:1f:02:84:71:eb:a4:52:04:d6:6a:85:f7:c9:
                    f6:0f:1e:86:05:77:30:5f:99:0b:ad:65:06:50:f9:
                    24:e7:20:68:60:25:e6:4d:20:12:a7:6c:86:19:80:
                    0e:7b:d2:63:98:40:d6:c8:9c:a1:ef:48:7d:3e:90:
                    d5:ad:1b:25:c2:dc:43:8d:1e:1f:d7:35:89:fe:ec:
                    3c:10:3a:db:f1:ff:e4:32:b6:34:f4:da:b5:48:a0:
                    3d:d8:32:38:87:30:fc:48:e8:2e:ad:11:08:d5:37:
                    d5:e1:53
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:34:1c:08:a0:50:52:da:23:f7:52:fd:b1:0f:75:
         04:e8:4b:81:93:3a:0d:7d:ae:ab:98:d0:34:8d:29:42:72:9c:
         02:21:00:d1:ce:8e:f3:1a:02:88:b2:22:dd:b3:12:e8:36:f8:
         74:f2:d7:04:56:d8:d4:d7:cb:d0:96:ec:e7:fa:ef:e6:50

And AFAICT problem is that signer is k3s-server-ca@1588606646 and not<EMAIL_ADDRESS>

I'd have to go read through the 1.17 code to see how it selects the signer, but I suspect the answer is going to be 'upgrade' either way.

FWIW, it's doesn't work right on the latest master build either. The certificate ends up getting signed by the server CA regardless of what signerName I specify. I'm trying to find where in the code the CA selection even occurs.
To answer your question about the username and groups, these are audit fields and record the information from the user that created the CSR. You should not include them in your manifest; the values are ignored and set by the server. The actual username and groups associated with the CSR are determined by the certificate subject.

Without looking at the KEP for certificate signing, it appears that the current signer controller only uses the signerName to validate usages:
https://github.com/kubernetes/kubernetes/blob/release-1.18/pkg/controller/certificates/signer/signer.go#L141
All certificates signed by this controller use a single CA, specified by the cluster-signing-cert-file and cluster-signing-key-file arguments to kube-controller-manager. Since k3s configures kube-controller-manager to use the ServerCA and ServerKey, all certs signed by the signer controller issue from that CA.
This seems to be somewhat broken, since the documentation for the signer controller suggests that it should be able to use different CAs depending on the signerName field... but this doesn't appear to have actually been implemented yet.
I might try changing this to point at the ClientCA and see if anything breaks...

Also, I suspect that having the ServerCA and ClientCA both be self-signed may turn out to be a problem. They probably both need to be set up as intermediate CAs off the main root CA.

I switched the signing keys over to use the ClientCA in #1768, and I am now able to use the cert issued by an approved CertificateSigningRequest to authenticate to the API server. I even set up a new ClusterRole and ClusterRoleBinding that match the unique group in the certificate's subject, so I can confirm that all works properly as well.

@brandond Don't know if it is a good idea to switch defaults in master, it may break backward compatibility for those who expect CA to be server's although not sure if there are users with such expectations. Anyway thanks for figuring this out!

I kinda doubt anyone was using it in the current state in k3s, given that the ServerCA isn't trusted by anything but agents. Upstream k8s configures the signer to use a separate ClientCA, which is what the PR does.
From reading the KEP, it was originally just meant to be used for bootstrapping kubelet client certs, since they don't have access to the master root CA. It's been expanded a bit since then but still doesn't seem to have much direct use.

Don't know about that, didn't see how istio or linkerd are implemented but it may be possible that they use CSRs for mTLS in mesh, although it is highly unlikely
Well, anyway can't wait till this feature can be used properly :slightly_smiling_face:

I kinda doubt anyone was using it in the current state in k3s, given that the ServerCA isn't trusted by anything but agents. Upstream k8s configures the signer to use a separate ClientCA that's trusted by the api server, which is what the PR does.

Spent an hour working out why Vault was failing with mismatched certs.
https://www.vaultproject.io/docs/platform/k8s/helm/examples/standalone-tls
The cert from kubectl config view --raw --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}' | base64 -d > ${TMPDIR}/vault.ca is the server-ca but the following CSR is signed by client-ca.
█Mahamed@REDACTED██      home██master ≡  ~3 ?6█ kubectl get csr -o yaml vault-csr
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"certificates.k8s.io/v1","kind":"CertificateSigningRequest","metadata":{"annotations":{},"name":"vault-csr"},"spec":{"groups":["system:authenticated"],"request":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJRExUQ0NBaFVDQVFBd0pURWpNQ0VHQTFVRUF3d2FkbUYxYkhRdGMyVnlkbVZ5TFhSc2N5NTJZWFZzZEM1egpkbU13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRGZiK0xacjljTFFsRkhkWmVhCnJ0YVVKSWNqaU0yN1BSMWRjUkRhZWs3LzlQZkdhYytaeGdpNjNIK0g2dHpvV1RCU0YwR2xiaEUwVDNMUjhUK2wKUlB4cXJOSGo0d2tQV0pYTlFxL0xnYWhRUFhnQnJ2b0hLcVVEcXF1WWc0dGpJUjNBV21Nb3lZQVZFajZDL01YSQpSL0VGZFRyZXN1TENKd0JTVWNoOFQ1Yjg2NEtiRXRFOENpSFFyMWxhZVdTZmNPUnh1TUJqaHNJUGwxSVorNW1MCnlDQi9qVXRna0xTV0d4YjVGbmdyY1NnK1ZENEVFSWFabWpFMENrTGwyc1lDeUdNSFczSVRTUzlzOGg5TnAxd2gKMlV4czZ1MnNpN3phaFRMTklBdjR2VXVRUlRJZm1zNDBpcytPMWNOMGpDMDlQQmNpU1VHMzEzSlNuYVFVVWc1UgppUnhUQWdNQkFBR2dnY0l3Z2I4R0NTcUdTSWIzRFFFSkRqR0JzVENCcmpBSkJnTlZIUk1FQWpBQU1Bc0dBMVVkCkR3UUVBd0lGNERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFjREFUQi9CZ05WSFJFRWVEQjJnaEIyWVhWc2RDMXoKWlhKMlpYSXRkR3h6Z2haMllYVnNkQzF6WlhKMlpYSXRkR3h6TG5aaGRXeDBnaHAyWVhWc2RDMXpaWEoyWlhJdApkR3h6TG5aaGRXeDBMbk4yWTRJb2RtRjFiSFF0YzJWeWRtVnlMWFJzY3k1MllYVnNkQzV6ZG1NdVkyeDFjM1JsCmNpNXNiMk5oYkljRWZ3QUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBYWhGYUV3RGUxOGx1WTlNSDg5VlIKdmw2UnVZbU9TUmlRT1h2MWRYQnlGdHpLcldoRGU2RDBnRTJqQjZocHNjRlQ4dkNzYXNSWnNzR2p6Rm5mT3BDSAo2LzV0NU4vTytIVWpDWFEwUjNqY0JabXQvWE1GR1JpWk9lY2dhU3FRTDYzQmpyKzQxaGRJN3A3VG5MQ3RhTzVmCnJEcXBkSGYyR2Jhc2tQNW5GTXFwcHJtdDMrSGpOaVFzS1R4elhnOW9BQ2dTWS9QVUgvbklEZW5TWWJIeEMwbk0KR09UT2diUE9DU3gzakdxM0grc3dsZkNMcmJUdXV2VmpJSnlFcTRMeTZxQXpDdDRiN2FuQ1FxMGc5c3lrd1Z2TwpUN3JMMy9yd3dZYlNzTHZ1Vi9yYWhRUlVYVjRSSjJvMFgyaEFuaTU5Q0dSbnhQdlJyeGtuaGlMamlYTDZFVkg3ClpBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tCg==","signerName":"kubernetes.io/kubelet-serving","usages":["digital signature","key encipherment","server auth"]}}
  creationTimestamp: "2021-08-05T22:01:08Z"
  name: vault-csr
  resourceVersion: "1083626"
  uid: b4c3e60a-19f8-46c7-b2f7-664b2ea1f919
spec:
  groups:
  - system:masters
  - system:authenticated
  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJRExUQ0NBaFVDQVFBd0pURWpNQ0VHQTFVRUF3d2FkbUYxYkhRdGMyVnlkbVZ5TFhSc2N5NTJZWFZzZEM1egpkbU13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRGZiK0xacjljTFFsRkhkWmVhCnJ0YVVKSWNqaU0yN1BSMWRjUkRhZWs3LzlQZkdhYytaeGdpNjNIK0g2dHpvV1RCU0YwR2xiaEUwVDNMUjhUK2wKUlB4cXJOSGo0d2tQV0pYTlFxL0xnYWhRUFhnQnJ2b0hLcVVEcXF1WWc0dGpJUjNBV21Nb3lZQVZFajZDL01YSQpSL0VGZFRyZXN1TENKd0JTVWNoOFQ1Yjg2NEtiRXRFOENpSFFyMWxhZVdTZmNPUnh1TUJqaHNJUGwxSVorNW1MCnlDQi9qVXRna0xTV0d4YjVGbmdyY1NnK1ZENEVFSWFabWpFMENrTGwyc1lDeUdNSFczSVRTUzlzOGg5TnAxd2gKMlV4czZ1MnNpN3phaFRMTklBdjR2VXVRUlRJZm1zNDBpcytPMWNOMGpDMDlQQmNpU1VHMzEzSlNuYVFVVWc1UgppUnhUQWdNQkFBR2dnY0l3Z2I4R0NTcUdTSWIzRFFFSkRqR0JzVENCcmpBSkJnTlZIUk1FQWpBQU1Bc0dBMVVkCkR3UUVBd0lGNERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFjREFUQi9CZ05WSFJFRWVEQjJnaEIyWVhWc2RDMXoKWlhKMlpYSXRkR3h6Z2haMllYVnNkQzF6WlhKMlpYSXRkR3h6TG5aaGRXeDBnaHAyWVhWc2RDMXpaWEoyWlhJdApkR3h6TG5aaGRXeDBMbk4yWTRJb2RtRjFiSFF0YzJWeWRtVnlMWFJzY3k1MllYVnNkQzV6ZG1NdVkyeDFjM1JsCmNpNXNiMk5oYkljRWZ3QUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBYWhGYUV3RGUxOGx1WTlNSDg5VlIKdmw2UnVZbU9TUmlRT1h2MWRYQnlGdHpLcldoRGU2RDBnRTJqQjZocHNjRlQ4dkNzYXNSWnNzR2p6Rm5mT3BDSAo2LzV0NU4vTytIVWpDWFEwUjNqY0JabXQvWE1GR1JpWk9lY2dhU3FRTDYzQmpyKzQxaGRJN3A3VG5MQ3RhTzVmCnJEcXBkSGYyR2Jhc2tQNW5GTXFwcHJtdDMrSGpOaVFzS1R4elhnOW9BQ2dTWS9QVUgvbklEZW5TWWJIeEMwbk0KR09UT2diUE9DU3gzakdxM0grc3dsZkNMcmJUdXV2VmpJSnlFcTRMeTZxQXpDdDRiN2FuQ1FxMGc5c3lrd1Z2TwpUN3JMMy9yd3dZYlNzTHZ1Vi9yYWhRUlVYVjRSSjJvMFgyaEFuaTU5Q0dSbnhQdlJyeGtuaGlMamlYTDZFVkg3ClpBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tCg==
  signerName: kubernetes.io/legacy-unknown
  usages:
  - digital signature
  - key encipherment
  - server auth
  username: system:admin
status:
  certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2ekNDQXBHZ0F3SUJBZ0lSQU14elk2L3oveGlERkU5NkNkOEtvZEl3Q2dZSUtvWkl6ajBFQXdJd0l6RWgKTUI4R0ExVUVBd3dZYXpOekxXTnNhV1Z1ZEMxallVQXhOakkzT0RVNE9ESXhNQjRYRFRJeE1EZ3dOVEl4TlRZMApNVm9YRFRJeU1EZ3dOVEl4TlRZME1Wb3dKVEVqTUNFR0ExVUVBeE1hZG1GMWJIUXRjMlZ5ZG1WeUxYUnNjeTUyCllYVnNkQzV6ZG1Nd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURmYitMWnI5Y0wKUWxGSGRaZWFydGFVSkljamlNMjdQUjFkY1JEYWVrNy85UGZHYWMrWnhnaTYzSCtINnR6b1dUQlNGMEdsYmhFMApUM0xSOFQrbFJQeHFyTkhqNHdrUFdKWE5RcS9MZ2FoUVBYZ0Jydm9IS3FVRHFxdVlnNHRqSVIzQVdtTW95WUFWCkVqNkMvTVhJUi9FRmRUcmVzdUxDSndCU1VjaDhUNWI4NjRLYkV0RThDaUhRcjFsYWVXU2ZjT1J4dU1CamhzSVAKbDFJWis1bUx5Q0IvalV0Z2tMU1dHeGI1Rm5ncmNTZytWRDRFRUlhWm1qRTBDa0xsMnNZQ3lHTUhXM0lUU1M5cwo4aDlOcDF3aDJVeHM2dTJzaTd6YWhUTE5JQXY0dlV1UVJUSWZtczQwaXMrTzFjTjBqQzA5UEJjaVNVRzMxM0pTCm5hUVVVZzVSaVJ4VEFnTUJBQUdqZ2Rnd2dkVXdEZ1lEVlIwUEFRSC9CQVFEQWdXZ01CTUdBMVVkSlFRTU1Bb0cKQ0NzR0FRVUZCd01CTUF3R0ExVWRFd0VCL3dRQ01BQXdId1lEVlIwakJCZ3dGb0FVVHcxclUrcEpJa1E2ZGFTQgpXbXBKVGFGaGc4d3dmd1lEVlIwUkJIZ3dkb0lRZG1GMWJIUXRjMlZ5ZG1WeUxYUnNjNElXZG1GMWJIUXRjMlZ5CmRtVnlMWFJzY3k1MllYVnNkSUlhZG1GMWJIUXRjMlZ5ZG1WeUxYUnNjeTUyWVhWc2RDNXpkbU9DS0haaGRXeDAKTFhObGNuWmxjaTEwYkhNdWRtRjFiSFF1YzNaakxtTnNkWE4wWlhJdWJHOWpZV3lIQkg4QUFBRXdDZ1lJS29aSQp6ajBFQXdJRFNBQXdSUUloQU9PSm4vbDJLalNOMStqQ1dkNC9kdTdMb2FLamF2VjEyNjZHOURjT3N3eXJBaUJSCnNta1dFY3RkNHNWcXBaMWpGNmNCeUZwWENBVVB3MFEyYmdKR1hsOTJVdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
  conditions:
  - lastTransitionTime: "2021-08-05T22:01:41Z"
    lastUpdateTime: "2021-08-05T22:01:40Z"
    message: This CSR was approved by kubectl certificate approve.
    reason: KubectlApprove
    status: "True"
    type: Approved

and
kubectl config view --raw --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}'
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUyTWpjNE5UZzRNakV3SGhjTk1qRXdPREF4TWpNd01ESXhXaGNOTXpFd056TXdNak13TURJeApXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUyTWpjNE5UZzRNakV3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUd2RVbUFJY0xiQnl2Yjh1ZHVLVXRoZmlYZ3R3bkxsaWM0NG9DNkRtOUoKekd1ODBiL1pWdE85SHVvZzBtT1FuR1RGNm9xSE1wY2xaYnBCVEgwV2xkYk1vMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUtNbkdiaWMrMFR2bktXdkFabVJCClVCQWpmSjB3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWncrdlF4WnR1VWJHNTBvSVZKL05GTXpCc002Qk9DeUcKYTJIRm9VaVFXbjRDSUFyNFJGUUh3YW5rbUVUVGZXVnV0ck9yUWdIRlRaeXEvNTZzeFRBWWpla0kKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=

`
The fix for me would be to chain vault to client-ca but how do I get the CSR to sign it with root-ca. I tried all the different signerName options and it keeps falling back to the unknown one.


titans store has a air for sale

Describe the bug
i was looking in the market on titan and was looking at the furniture shop and saw under all the couches there was air for sale for 200
Expected behavior
to be removed from shop
Username:
killercreechan
Server name (all applicable):
titan maybe all servers

This seems to no longer be an issue!  Thanks for the report!


Fix typo in test names

This PR just renames two test files: existence is misspelled in the name.

Thanks :)


opera: 90.0.4480.84 -> 91.0.4516.20

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/opera/versions.
meta.description for opera is: "Web browser"
meta.homepage for opera is: "https://www.opera.com"
meta.changelog for opera is: ""
Updates performed

Version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 91.0.4516.20 with grep in /nix/store/nzw4r21kxl95c65k06cmz6mlsarph5ys-opera-91.0.4516.20
found 91.0.4516.20 in filename of file in /nix/store/nzw4r21kxl95c65k06cmz6mlsarph5ys-opera-91.0.4516.20

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
opera

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/nzw4r21kxl95c65k06cmz6mlsarph5ys-opera-91.0.4516.20 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A opera https://github.com/r-ryantm/nixpkgs/archive/420dec27f8f65844af80cff57fb320a050b0d645.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/nzw4r21kxl95c65k06cmz6mlsarph5ys-opera-91.0.4516.20
ls -la /nix/store/nzw4r21kxl95c65k06cmz6mlsarph5ys-opera-91.0.4516.20/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

opera

Maintainer pings

Superseded by #210376.


Bug: for wxFrame, wxDialog and wxPopupTransientWindow forms without a style defined, the const style value is wrongly generated

Description:

wxUIEditor v1.1.1 (beta)
For wxFrame, wxDialog and wxPopupTransientWindow forms without a style defined, the const style value is wrongly generated; perhaps even wxPanel is affected.
Instead of const int form_style = ; it should be const int form_style = 0;
As I see it, even the following code in class constructor seems wrong.
long style = wxDEFAULT_DIALOG_STYLE should by long style = 0
example for wxDialog

This affects all properties that use a string for their value -- it is possible that the string will be empty, and if that is used as the value to assign, then the code generation is wrong. For each of the string properties that have a possible const_value, a check for an empty string must be made and an appropriate assignment made if it's empty. See BaseCodeGenerator::GenerateClassHeader().

This affects all properties that use a string for their value -- it is possible that the string will be empty, and if that is used as the value to assign, then the code generation is wrong. For each of the string properties that have a possible const_value, a check for an empty string must be made and an appropriate assignment made if it's empty.


bug(MatFormField): layout glitch on long mat-label

Is this a regression?

[X] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
14
Description
The mat label text is not shown correctly. it exceeds the limit of the field.

Reproduction
StackBlitz link:
Steps to reproduce:

Set a long mat label text

Expected Behavior
form field label is shown correctly and ellipsis is shown if text is too long. no interference with mat-icon suffix or date-picker toggle.
Actual Behavior
Text reachs the field end
Environment

Angular: 16.2.10
CDK/Material: 16.2.9
Browser(s): Chrome
Operating System (e.g. Windows, macOS, Ubuntu): Windows

Hello folks,
This issue is being closed as a duplicate of issue #27952. The issue being closed is essentially the same as the issue that is referenced.
For more information, please refer to the original issue.
If you have any questions, please feel free to comment on the original issue. Commenting or reacting with :+1: on the original issue is a great way to tell us that the issue affects you.
Thank you for your understanding.

Try adding this to your global styles for now:
.mdc-button .mdc-button__label {   overflow: hidden;   text-overflow: ellipsis; }


python3Packages.equinox: init at 0.10.11

Description of changes
Add equinox, a neural network library in JAX.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 247925 run on aarch64-darwin 1

4 packages built:

python310Packages.jaxtyping
python310Packages.jaxtyping.dist
python311Packages.jaxtyping
python311Packages.jaxtyping.dist


Context Menu Integration

Description of the new feature/enhancement
The feature that I would like and I think most programmers want is the ability to open the terminal in a specified directory. In that said the feature is when a client/user right click on a folder he/she will be given an option to open the terminal in the specified directory.

this will is a good way to open terminal in a directory easily.
Proposed technical implementation details (optional)
You see, I was trying to create this feature by myself so that I can actually open the terminal in the directory. the problem is that it seems I cant able to work. Please check the images bellow.
this is the bat files the I created to easily add and removes in the registry.

if you run the install.bat, you will be able to get this options when right clicking to a folder or inside a folder.

the problem was when I tried to click Open Winders Terminal here. The terminal shows this error.

the source code is in my repo.
MyRepo

/dup https://github.com/microsoft/terminal/issues/6111

I'm sorry--we can't look at that code. It doesn't have an open-source license (or any license at all), and it is therefore proprietary software.
Based on your error message, you are using new instead of new-tab and you are not passing the -d option.
You may want to look at the output of wt new-tab --help to validate how the starting directory should be passed. :)
(Our built-in shell extension doesn't support directory/desktop backgrounds because of a Windows bug ☹ #6414)


operation not permitted, mkdir

[22:39:06] Error in plugin 'run-sequence(spici.prepare)'
Message:
    EPERM: operation not permitted, mkdir 'D:\Web\Deploy\Bachelors'
Details:
    errno: -4048
    code: EPERM
    syscall: mkdir
    path: D:\Web\Deploy\Bachelors
Stack:
Error: EPERM: operation not permitted, mkdir 'D:\Web\Deploy\Bachelors'
    at Error (native)

This happens when you still have an Explorer window open in this folder.

I have been trying to reproduce this error. The first couple times I managed to do so by opening an explorer window in testcases/prepare/create_some_subfolder and then calling mocha test/prepare.test.js. The output of the error is
{ Error: EPERM: operation not permitted, mkdir 'C:\Users\Danko\GitHub\studyportals - node\product-deploy\testcases\prepare'
    at Error (native)
  errno: -4048,
  code: 'EPERM',
  syscall: 'mkdir',
  path: 'C:\\Users\\Danko\\GitHub\\studyportals - node\\product-deploy\\testcases\\prepare' }
  1) Should ensure the folder exists and is empty.

  0 passing (62ms)
  1 failing

  1)  Should ensure the folder exists and is empty.:
     Error: EPERM: operation not permitted, mkdir 'C:\Users\Danko\GitHub\studyportals - node\product-deploy\testcases\prepare'
      at Error (native)

I would expect that running this command would trigger the error reproducible but somehow I don't see the error anymore and the test command is executed just fine:
mkdir -p testcases/prepare/create_some_subfolder && start testcases\\prepare\\create_some_subfolder && mocha test/prepare.test.js


Client.py for a tap of stream type SQL being overwritten during project initialization

Migrated from GitLab: https://gitlab.com/meltano/sdk/-/issues/354
Originally created by @BuzzCutNorman on 2022-03-29 18:54:20

Summary
When you initialize a SQL project with Meltano SDK 0.4.4 the client.py file's contents does not match up with that of the template designated for it.  Thanks to ptd's troubleshoot this issue and let me know in slack that the file is being overwritten because the evolution for another client.py file is also true so it overwrites the correct client.py file.
Steps to reproduce
cookiecutter https://gitlab.com/meltano/sdk --directory="cookiecutter/tap-template"

source_name [MySourceName]: test
admin_name [FirstName LastName]: Dan Norman
tap_id [tap-test]:
library_name [tap_test]:
Select stream_type:
1 - REST
2 - GraphQL
3 - SQL
4 - Other
Choose from 1, 2, 3, 4 [1]: 3
Select auth_method:
1 - API Key
2 - Bearer Token
3 - Basic Auth
4 - OAuth2
5 - JWT
6 - Custom or N/A
Choose from 1, 2, 3, 4, 5, 6 [1]: 3
Select include_cicd_sample_template:
1 - GitHub
2 - None (Skip)
Choose from 1, 2 [1]:

What is the current bug behavior?
When you run cookiecutter with the tap-template the clinet.py file's contents does not match the contents of the template on gitlab.  The file actually matches the client.py file designated for streams types that are not REST or GraphQL
{%if cookiecutter.stream_type not in ('REST', 'GraphQL')%}client.py{%endif%}
What is the expected correct behavior?
The client.py file's contents should match up with the client.py designated for SQL stream type
{%if 'SQL' == cookiecutter.stream_type %}client.py{%endif%}
Relevant logs and/or screenshots
DEBUG cookiecutter.utils: Making sure path exists: /home/dannorman/development/tap-test/tap_test/tests
DEBUG cookiecutter.utils: Created directory at: /home/dannorman/development/tap-test/tap_test/tests
DEBUG cookiecutter.generate: Processing file {{cookiecutter.library_name}}/{%if 'SQL' == cookiecutter.stream_type %}client.py{%endif%}
DEBUG cookiecutter.generate: Created file at /home/dannorman/development/tap-test/tap_test/client.py
DEBUG cookiecutter.generate: Check {{cookiecutter.library_name}}/{%if 'SQL' == cookiecutter.stream_type %}client.py{%endif%} to see if it's a binary
DEBUG cookiecutter.generate: Writing contents to file /home/dannorman/development/tap-test/tap_test/client.py
DEBUG cookiecutter.generate: Processing file {{cookiecutter.library_name}}/{%if cookiecutter.auth_method in ('OAuth2', 'JWT')%}auth.py{%endif%}
DEBUG cookiecutter.generate: The resulting file name is empty: /home/dannorman/development/tap-test/tap_test/
DEBUG cookiecutter.generate: Processing file {{cookiecutter.library_name}}/{%if 'SQL' != cookiecutter.stream_type %}streams.py{%endif%}
DEBUG cookiecutter.generate: The resulting file name is empty: /home/dannorman/development/tap-test/tap_test/
DEBUG cookiecutter.generate: Processing file {{cookiecutter.library_name}}/{%if cookiecutter.stream_type not in ('REST', 'GraphQL')%}client.py{%endif%}
DEBUG cookiecutter.generate: Created file at /home/dannorman/development/tap-test/tap_test/client.py
DEBUG cookiecutter.generate: Check {{cookiecutter.library_name}}/{%if cookiecutter.stream_type not in ('REST', 'GraphQL')%}client.py{%endif%} to see if it's a binary
DEBUG cookiecutter.generate: Writing contents to file /home/dannorman/development/tap-test/tap_test/client.py

Possible fixes
I would propose changing the client.py evaluation for not in REST or GraphQL from:
{%if cookiecutter.stream_type not in ('REST', 'GraphQL')%}client.py{%endif%}
to the following:
{%if 'Other' == cookiecutter.stream_type %}client.py{%endif%}
My reasoning is that there are 4 streams types REST, GraphQL, SQL, and Other.  REST, GraphQL and SQL all have designated client.py files which leaves only a stream type of Other without a designated client.py file.

View 2 previous comments from the original issue on GitLab


trying to run deepseek-coder-v2 but fails around 25 lines every time

trying to run deepseek-coder-v2 but fails around 25 lines every time.
I am running this on a i9 cpu with 32gb ram.
I am able to run Ollama from term with very large requests, however when I run it with Ollama Autocoder it simple stops at around line 25 any ideas. if I check the Ollama ps its still running in the background but Ollama Autocoder has stoped streaming.
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. Windows, Linux, MacOS]
IDE [e.g. VSCode, VSCodium]
Version [e.g. 1.94.0]

Additional context
Add any other context about the problem here.

Can you share what lines you were trying to autocomplete, or make an example that can be reproduced? Are there any errors in the notifications tray when this happens?


[Test] Power Supplys for RaspberryPi 4

In the last days I tested different models of power supplys and want to share you my results:
Testsetups:

Raspiblitz
Raspiblitz 1.3 rc5
Samsung 950 pro 1TB
ShimFan
LCD

Raspiblitz
Raspiblitz 1.3 rc5
Samsung 960 pro 1TB
passive cooler metal case
LCD

Power Supply:

Apple 61W USB-C Power Adapter MRW22ZM/A
passed all testsetups

Apple 29W USB-C Power Adapter MJ262Z/A
warnings on all testsetups

Anker 15W PowerPort C1 USB C
warnings with some criticals in the long therm (first all was fine)

Anker 60W Anker PowerPort+
warnings with some criticals on all testsetups

Stotronics USB-C Power Supply - 5.1V 3A, RPI-18PFCA-05
passed all testsetups

Raspberry Pi 15.3W USB-C Power Supply
warnings with many criticals on all testsetups

So the best deal until know is the Stotronics which you can order from https://shop.pimoroni.com or the more expensive Anker PowerPort C1.
If you have some other experiences, I whould be glad if you add them.

This was tested on Pi3 or Pi4? I did not find this Stontronics PS on Pimoroni or anywhere else.
Also if any of these PS's use USB cable instead of their own wire that should be listed too because the wire can make a big difference to drops in voltage.

All on Raspberry Pi4. The Stontronics is the alternative from Pimoroni to the original. You can see this at the order package https://shop.pimoroni.com/products/raspberry-pi-4
That power supplys that don't have a own cable, i used Anker Powerline II USB C to USB-C 2.0 cabel 1,8M length.

All on Raspberry Pi4. The Stontronics is the alternative from Pimoroni to the original. You can see this at the order package https://shop.pimoroni.com/products/raspberry-pi-4
That power supplys that don't have a own cable, i used Anker Powerline II USB C to USB-C 2.0 cabel 1,8M length.

Ah OK good to know.  So you mean the "Worldwide" (universal) PS here sold on Pimoroni here.
Sontronics also known as "TT Electronics"

Raspiblitz
Raspiblitz 1.3 rc5
Seagate Expansion Portable 1TB (STEA1000400)
ShimFan
LCD
I get low power errors on the
-Stontronics power supply
-Original Raspberry USB-C power supply
62.0'C  600/1500 MHz 0.8384V
--> Power CRITICAL detected
--> Power WARN detected

I commented about this on the Telegram channel.  This is most likely are result of this particular (unpowered) Seagate HDD. If you read reviews about this drive on Amazon and Newegg you will see other people, particularly using a notebook or a Pi saying it pulled too much power and needs a powered USB hub to work in their config.
Also, IMO Seagate drives have iffy QA and durability/longevity quality compared to WD, Toshiba, Samsung, etc.  I personally would stay away from Seagate drives except perhaps for less often used backup drives.

We did see before that the Voltage is not the same on all the boards: https://github.com/rootzoll/raspiblitz/issues/673#issuecomment-507701909
I would suggest running the hardware test with everything connected and if there is a fault with all peripherals (LCD, HDD) disconnected too.
If there is a difference in the Volt values then it is likely to be a problem of the peripherals (likely the disk) drawing too much power.
If there is no difference I would suggest to carry on installing/syncing and if there are no further problems we should adapt the powertest to the lower numbers.

In the long term I discovered now that the:
Anker 15W PowerPort C1 USB C
now throws warnings and criticals - so no more recommendations on this one!

I have had nothing but problems with this setup. I have lost count of reinstallation of SD card, format HDD, different power supplies, but problems and more problems. Then a friend set up the exact parts like me, same Pi4/4GB, same SD card, same HDD (Seagate Expansion 1TB USB) and touchscreen. And official 3A USB-C power supply. Installation was a breeze and passed all tests. Copied over a downloaded blockchain just like I did. Everything is running fine. So I am returning the Pi4 to get a new one. Hopefully this will solve all the problems.

I am working en an RPI4 4GB, a 1TB MX500, shim fan and a LCD. I power my ingredients by use of the official raspberry PI supply. I consistently get the EXT4-fs errors during the download of the blockchain (after 5 to 30 minutes of downloading). I was reading many issues regarding the supply, but since i am working with the recommended hardware I would not expect issues like this.
I tried to download without FAN or without LCD but any of these worked. Then i tried to attach a variable external supply to the PI (instead of the USB C supply), I've set the voltage to 5.1V ~ 5.2V and ever since the PI is flawlessly downloading the chain.
Do you think i am dealing with malfunctioning hardware or should i go for the Stontronics ?

Thanks for your testing - I removed the Official Power Supply from most Shopping lists and recommending there now the Stontronics. I will keep the issue open for now for further testing and results .. but my get closed when no further reports comming until end of 2019.

Any updates on this testing? (changes with existing chargers. New chargers..?)


Fix mitmweb export copy failed in non-secure domain

https://github.com/mitmproxy/mitmproxy/issues/5264
Description
The browser disables the navigator.clipboard object for non-secure domains.

startup parameters: mitmweb -p 8888 --web-host <IP_ADDRESS>
browser console error : Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'writeText')

The security domain includes addresses for local access and TLS security authentication, such as https protocol addresses, <IP_ADDRESS> or localhost.
So I submit a PR:

Use navigator.clipboard in the secure domain to improve efficiency, and fall back to document.execCommand('copy'); in the non-secure domain to ensure that the function is available.

Checklist

[x] I have updated tests where applicable.
[x] I have added an entry to the CHANGELOG.

Thank you very much for the PR, much appreciated! 🍰


feat: adds french language

Describe what changes this pull request brings
This pull request adds French language.
Useful links:
Link to the language selection design in the footer in Figma
Steps to test:

Open the index page, what-is-ebpf page, get-started page, case-studies page, contribute page
Confirm that everything looks and works as expected

TODO:

[x]  Language switch select in header
[x]  Translation of header navigation
[x]  Translation of footer navigation
[ ]  Translation all text for case-studies page
[x]  There is no translation for the title and subtitle on the "case-studies" page
[x]  On the main page in the first block there is no translation for the "Project Landscape" and "What is eBPF" buttons
[ ]  Translation all text for what-is-ebpf page (On the "what is ebpf" page in the last block "Further Reading" only the headings are translated)
[x]  Translation SEO meta tags

In the section Lectures complémentaires the different sub-sections are in English:
Lectures complémentaires
Documentation
Tutorials --> Tutoriels
Talks
Books --> Livres
Articles & Blogs

Remove the additional coma: (updated in the google doc as a suggestion)

À moins qu’une option dédiée ne soit activée,,

--> À moins qu’une option dédiée ne soit activée,

@prosazhin where is the actual content living?
Also would it be possible to have the language selector at the top of the page like we had before with different flags?

There is a sentence in English that has not been translated, my bad sorry.

Programs may not use any uninitialized variables or access memory out of bounds.

Translation:
Les programmes ne peuvent pas utiliser des variables non initialisées ou accéder à de la mémoire en dehors des limites.
Added a suggestion in the gdoc.

BCC cible principalement les cas d’uqui impliquent

--> BCC cible principalement les cas qui impliquent
Suggestion added to gdoc.

@prosazhin where is the actual content living?
Also would it be possible to have the language selector at the top of the page like we had before with different flags?

@xmulligan  I've conveyed to the designer that the language switch select in the header needs to be created.

@prosazhin where is the actual content living?
Also would it be possible to have the language selector at the top of the page like we had before with different flags?

@xmulligan All content for translated pages into English and French is located in the data folder

@doniacld Made changes to the French text

For the language selector can you also make it the flag rather than a generic globe?

Then is this ready to ship?

For the language selector can you also make it the flag rather than a generic globe?

I passed this on to our designer, he will prepare the flag icons. As soon as this is ready, I will change them in the code.

@xmulligan Added icons of country flags to the language selector in the site header

@doniacld can you translate the header and footer?
@prosazhin where can we find the SEO text that needs to be translated? And what text is missing on the what is ebpf page?
We are going to leave the case studies page as is for now because we will be updating it

@xmulligan On the "what is ebpf" page in the last block "Further Reading" only the headings are translated

@xmulligan On the main page in the first block there is no translation for the "Project Landscape" and "What is eBPF" buttons

@xmulligan There is no translation for the title and subtitle on the "case-studies" page

@xmulligan Data for SEO meta tags is located along the path "src/data/shared/seo-data.js"

@doniacld can you also translate "Project Landscape" and "What is eBPF" buttons, title and subtitle on the "case-studies" page, and the SEO metadata?

@prosazhin final translations are here https://docs.google.com/document/d/1KHo92adRqHkWlvOmIBrw4BA5fKSN45mUtDSMhwAhNn8/edit

@xmulligan Ready to check

@prosazhin thanks. It looks like there are still some conflicts to resolve. Also on the homepage when you click on the landscape button it 404s. I think it is because you didn't set up the french translation for the landscape pages

@xmulligan Ready to check

Sorry @prosazhin one last thing. When you click on the landscape, it switches to the english version of the website. Can you keep it on the French version? Otherwise people might get confused


Terraform storage in Azure

We will need to provision storage resources in terraform in Azure.
See below an example of creating storage account & container.
provider "azurerm" {
  version = "=2.0.0"
  features {}
}

data "azurerm_resource_group" "stage" {
  name = "rg-wcollarchive-stage"
}

resource "azurerm_storage_account" "storage" {
  location                  = data.azurerm_resource_group.stage.location
  name                      = "wellcomecollectionstage"
  resource_group_name       = data.azurerm_resource_group.stage.name
  account_kind              = "StorageV2"
  account_tier              = "Standard"
  account_replication_type  = "ZRS"
}

resource "azurerm_storage_container" "replica" {
  name                  = "replica"
  storage_account_name  = azurerm_storage_account.storage.name
  container_access_type = "private"
}

To terraform in azure you will need to install the Azure CLI, then sign in with the az login command.

Closing for now – we know enough to get started here. Creating the permanent resources will come later.


Stardist seems not to work with python 3.9

Tested on Windows and Linux. Installation with pip worked flawlessly using python 3.8.9. With python 3.9.4 h5py seems to have some kind of problem during the installation. Would be great to add this to the readme so people can simply use the old python version.
Regards
Cocomolch4000

Hi, the latest stable version of TensorFlow currently doesn't support Python 3.9, which is required by StarDist.
Hence, we haven't even tested StarDist with Python 3.9+.
Best,
Uwe

Hi,
alright! I just thought that it might be helpful to indicate this on your github page.
There, it is indicated that stardist works for python >3.6. So maybe indicating >3.6 <3.9 would be helpful for other users.
Just a suggestion.
Best
Cocomolch4000

Hi @Cocomolch4000 ,
This is a good point - we've just updated the Readme to reflect this. Thanks for the feedback!

No problem, thanks for the great tool!

I may be running into a similar issue when attempting to install into a new Python 3.8.8 conda environment on Mac.  The latest stable version of TensorFlow requires h5py~=3.1.0, while csbdeep 0.6.1 requires h5py<3.

Hi @alandegenhart ,
Yes, there has been an issue  with h5py>2.10 for older tensorflow versions, which is why we pinned the h5py version to 2.10. So reinstalling it via pip install -U h5py should work for you.
PS: @Cocomolch4000: Just some moments ago, tensorflow 2.5.0 was released, so python 3.9 should be then also work (in principle :).

Good to hear! :)

Python 3.9 support was added from version 0.7.0 on


Fix tracing for WebDriver#getPageSource

The tracing for sending the getPageSource command instead identified the command as getAllWindowHandles

Makes sense.  Going to try to upstream?

On i just opened this accidentally. There is an upstream one.

https://github.com/SeleniumHQ/selenium/pull/1262


revokeTokens and removeUser doesn't deauthenticate the user.

When the user logs out I call
auth.revokeTokens();
auth.removeUser();

But the user can still access a protected route and when I log
const auth = useAuth();
console.log(auth);

Auth shows user info and that they are still authenticated, including id_token
Is this a bug or is there a correct/better way to remove authentication?

You will need to sign out from the authz server. They typically place a cookie in your browser to recognize you again... You can do so by calling signoutRedirect (https://github.com/authts/oidc-client-ts/blob/main/src/UserManager.ts#L470) or signoutPopup.

@pamapa That worked but it redirects the user to the keycloak "you've been logged out" page. Is there a way, with the library, to have the user redirected to a different location? I'd like the user redirected back to the login screen.

Further digging I found I could pass post_logout_redirect_uri into the method (auth.signoutRedirect({ post_logout_redirect_uri: <string | undefined> }))

You already setup post_logout_redirect_uri during configuration its part of OidcClientSettings too (see https://authts.github.io/oidc-client-ts/interfaces/OidcClientSettings.html#post_logout_redirect_uri)...

@pamapa  I am having the same issue. after I call auth.signoutRedirect  even though I pass the post_logout_redirect_uri as a param it is not redirected there. Also, I don't see an ?redirectUrl on the auth server logout URL.

You have to validate the post logout URL in keycloak client's configuration ("Valid post logout redirect URIs")


FAQ page

Add page for frequently asked questions opensac.org/faq.
Figma design is here.
Tasks

[x] Implement Figma design
[ ] Finalize Q&As

Awaiting feedback about what to add for FAQ questions and answers. We will discuss this at the Community Action Night.

The FAQ questions and answers can be viewed in the FAQ section of the Web Content document.


fix(TDI-38911):If SAS is invalid, Azure wizard test connection fail

without any error message.
What is the current behavior? (You can also link to an open issue here)
https://jira.talendforge.org/browse/TDI-38911
What is the new behavior?
Please check if the PR fulfills these requirements

[ ] The commit message follows Talend standard
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features) ?
[ ] The code coverage on new code >75%
[ ] The new code does not introduce new technical issues (sonar / eslint)

What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build / CI related changes
[ ] Other... Please describe:

Does this PR introduce a breaking change?

[ ] Yes
[ ] No

If this PR contains a breaking change, please describe the impact and migration path for existing applications: ...
Other information:

Pull request test result: failure :x:

Pull request test result: failure :x:

Pull request test result: success :star:

Pull request test result: success :star:


ios_content_validation_test flaked: Crash when compiling scroll_notification_observer.dart "NoSuchMethodError: Class 'int' has no instance getter 'name'."

[ios_content_validation_test] [STDOUT] stdout:            error: [+5172 ms] Unhandled exception:
[ios_content_validation_test] [STDOUT] stdout:                       Crash when compiling package:flutter/src/widgets/scroll_notification_observer.dart:
[ios_content_validation_test] [STDOUT] stdout:                       NoSuchMethodError: Class 'int' has no instance getter 'name'.
[ios_content_validation_test] [STDOUT] stdout:                       Receiver: 3322010
[ios_content_validation_test] [STDOUT] stdout:                       Tried calling: name
[ios_content_validation_test] [STDOUT] stdout:
[ios_content_validation_test] [STDOUT] stdout:                       #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:38:5)
[ios_content_validation_test] [STDOUT] stdout:                       #1      SourceFunctionBuilderImpl.computeFormalParameterScope (package:front_end/src/fasta/source/source_function_builder.dart:215:22)

https://ci.chromium.org/p/flutter/builders/prod/Mac_ios ios_content_validation_test/9122
https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8790312798644413297/+/u/run_ios_content_validation_test/test_stdout
Failed once, then passed on the rerun.

/cc @hellohuanlin

Do we still see these flaky errors with the latest version of Flutter ?

@keyonghan do you know if there's a way to search the build logs to see if this recently flaked?

@keyonghan do you know if there's a way to search the build logs to see if this recently flaked?

Does this test still exist in the CI? https://flutter-dashboard.appspot.com/#/build?repo=flutter&branch=master&taskFilter=ios_content_validation_test returns nothing.

@keyonghan it lives in the tool_host_cross_arch_tests tests now https://github.com/flutter/flutter/pull/142272
https://github.com/flutter/flutter/blob/master/packages/flutter_tools/test/host_cross_arch.shard/ios_content_validation_test.dart
However this crash wouldn't be specific to this test, are we able to search logs for any version of this crash?

No. It's not supported as of today. But @vashworth has a proposal flutter.dev/go/ci-post-test-analysis


[WIP] Updated the availability checker to leverage the new availability_check action in the sources api

Updated the availability checker to leverage the new availability_check action in the sources api, as it will be enhanced to not only do the sources endpoint check but also trigger the application type specific checks.

WIP as it depends on:

[ ] https://github.com/RedHatInsights/sources-api/pull/128
[ ] updated sources-api client for above
[ ] Testing


README: fix git remote url

https://gitlab.com/groups/web-eid/webextension/ has no code.
This project lives on GitHub;  use HTTPS to make copy/paste always work.
Signed-off-by: Klemens Nanni<EMAIL_ADDRESS>

Thanks, good point, merged!


Srr cleanup 223 extension

PR puts in place the option of extending Brick with all of the 223 standard, by importing extensions/brick_extension_s223_extension.shapes.ttl (graph https://brickschema.org/extension/s223extension) into Brick.ttl. It includes being able to partially interpret 223 data files into Brick entities, and expands some Brick inference rules and constraints to allow for 223 concepts.

I put this back to draft until the ref: ontology settles down.

Cleaned up the extensions folder to not rely on imports


python312Packages.grpcio-testing: 1.65.4 -> 1.66.2

Diff<EMAIL_ADDRESS>Changelog: https://github.com/grpc/grpc/releases/tag/v1.66.2

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 346855 at ac9677e5 run on aarch64-darwin 1

:fast_forward: 4 packages marked as broken and skipped:

chatgpt-retrieval-plugin
open-webui
python311Packages.kserve
python312Packages.kserve

:white_check_mark: 4 packages built:

python311Packages.grpcio-testing
python311Packages.pymilvus
python312Packages.grpcio-testing
python312Packages.pymilvus

Result of nixpkgs-review pr 346855 run on x86_64-linux 1

2 packages marked as broken and skipped:

chatgpt-retrieval-plugin
chatgpt-retrieval-plugin.dist

14 packages built:

open-webui
open-webui.dist
python311Packages.grpcio-testing
python311Packages.grpcio-testing.dist
python311Packages.kserve
python311Packages.kserve.dist
python311Packages.pymilvus
python311Packages.pymilvus.dist
python312Packages.grpcio-testing
python312Packages.grpcio-testing.dist
python312Packages.kserve
python312Packages.kserve.dist
python312Packages.pymilvus
python312Packages.pymilvus.dist


v4.0.0 super early demo

Hello, you lovely people.
Version 4 is on the way! And it’s got all sorts of awesome new stuff in it. Including date ranges and using it without an input element :smile:.
Another major upgrade is the picker now uses HTML Elements instead of strings to build out the templates. This results in huge performance boosts and faster rendering/paint times :+1:. This also allows the opportunity to easily customize the picker's template, for example to show two months in a view, etc.
The demo
The design is definitely not finalized, but you can take a peak here: http://jsbin.com/wanis/3/edit?html,js,output ...and the source code is here: https://github.com/amsul/pickadate.js/tree/4.0.0.
I’d love to hear your thoughts!
![Gitter](https://badges.gitter.im/Join Chat.svg)

The main things remaining are:

[x] Allow date ranges
[x] Allow multiple dates
[x] Allow multiple date ranges
[ ] Allow disabling/enabling dates
[ ] Add a method to check if a date is disabled
[ ] Add keyboard controls
[ ] Implement jQuery extension as closely to the current API as possible
[ ] Finalize design
[ ] Write documentation on new API

...and probably lots more. I’ll add more as I remember them.

any updates on when v4 might be out?

yes any update I need multiple calander dates for classic UI.

hey,
is v4.0 still in development? I'd love to use this version but I need to disable dates and apparently v4 don't have yet.
And 3.5.5 has it?

+1 for being able to have users only select a month/year. Any ETA?

this is looking awesome, excited for the full release

Nice One :+1:

Any update on release?

Wow!, this is the best datepicker I've used.
Have you considered use moment.js to manage the dates?, that will make this datetime picker the best!. Thank you!!

I want to disable multiple dates in pickadate. and I am getting dates as array from database from this @holidays.collect{|holiday| [holiday.date]}
Output comes from :- 2015-08-15,2015-01-26,2015-06-11
But I am not able to disable these days in pickadate. disable multiple dates is not working on official site
(http://amsul.ca/pickadate.js/api/#method-get-disable)also . Please guide me how to implement this issue in pickadate?

Wow, it looks so goog!!, it is nice to have new features for this awesome date and time picker, i love it because it can be used for desktop and mobile apps.
Also it would be nice to implement some cool features this other datepicker has:
https://github.com/dangrossman/bootstrap-daterangepicker
Cheers!

#SUGGESTION: This great version would become more popular if supports more calendars; Persian Calendar (also known as Jalali) is one of them.

Hi Amsul, was just wondering if there is any news on the v4 development?

Having a month/year selector similar to the bootstrap would be great. Especially, since I prefer this lighter more versatile version.

So what's up with this release? : )

The last commit to the 4.0.0 branch was Nov 2014. Is this still is development? We're all anxiously awaiting an update because we all love the plugin.

Any news about dev status?

Congrats, looks awesome. What I am trying to do is to create a timepicker depends on what selected in datepicker. I think this one will resolve my problem.

Hi there! My calendar selects several dates at once.
He sometimes responds to mouse at hover. How to fix it? Thanks.

does anyone still working on this version or is it dead?

awesome news, but first please checkout our pull requests :D

did anyone make it work v4.0 ? It is a great calendar but when click on the month i would like to show the whole 12 months inside the calendar. See example

Maybe a flag to allow customization using only data-attributes?


EWSUtilities.getXSDurationToTimeSpan fix

This pull request fixes the problem with wrong parsing of Bias in Period.

Fixes  #357, #398 and #343

Problem:

TimeSpan for this one -PT3H30M will be parsed as:

negative true
year 0
month 30
day 0
hour 3
minute 30
seconds 0

The big M for months and minutes seems to be correct according to ISO 8601 and the only difference is 'T' in the middle. For example this one P1Y2M10DT2H30M is a correct Time interval.

Fix:

Two method are refactored getXSDurationToTimeSpan() and getXSDurationToTimeSpanValue().

For parsing of TimeSpan, an Joda-Time Period is now used instead of row Java Regex.

Period.parse() can automatically parse any value in form P1Y2M10DT2H30M, except of leading '-' symbol. For parsing '-' Java Regex is still used.

Test

Corresponding tests are added to new class TimeSpanUtilsTest

Hi @itbw, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
We will now validate the agreement and then real humans will evaluate your PR.
TTYL, AZPRBOT;


Navigation Arrow Key

Add a down arrow key next to the navigation table list:

Tickets
Priority

This is so that users won't be confused that the buttons are dropdowns instead of navigation pages.

May coincide with table npm. Getting a table npm may reduce the tabs on the navigation bar, and may eliminate the need to separate tickets and priority. Work in progress.


Use of run stage causing ordering problems

Brandon, I've made some substantial modifications to puppet-rvm to add both support for using an RPM package as well as selinux support (everything is optional/backwards compatible), which I will make available soon in a pull request after additional testing.  In the meantime, my testing has turned up a problem with run stages.  My puppet environment uses a "pre" run stage to set up yum repos, otherwise every single package install would depend on those repos.  The problem is that there is no relationship between my run stage and the one in your module, so it accidentally trumps my "pre" stage and then tries to install a bunch of RPMs from yum repos that don't exist yet, thus causing my puppet config to blow up when building a new box.
Can you explain the rationale behind the run stage?  It seems like something that is better handled with dependencies, and I'm not sure that having a module implement a run stage is a good idea, but it's entirely possible that I haven't considered all the angles since I didn't write your module.  :)
Thanks.

The puppet providers included in this module (rvm_system_ruby, rvm_gemset, and rvm_gem) need the RVM binary located in /usr/local/rvm/bin/rvm.  This binary is installed by the RVM installer.  Unfortunately, puppet determines if a provider is suitable (able to determine if the given resource is installed) before provider dependencies are calculated and installed.  This produces a chicken and egg problem, as include rvm (technically exec system-rvm) installs RVM, but rvm_system_ruby is not suitable before RVM is installed.  You can make rvm_system_ruby depend on exec system-rvm, but this won't help because provider suitability is determined before dependencies are considered.  Determining suitability after dependencies are installed is called late binding and is not (yet) supported by puppet.
There are two supported ways for dealing with this problem:

Two-pass install.  Install RVM on the first puppet pass.  Install rubies, gemsets and gems on a second pass.  To achieve this you can wrap everything RVM related (except include rvm) in an if block (if $rvm_installed == "true").
Run stages.  Provider suitability is reevaluated for every run stage.  So if we install RVM before the main stage, /usr/local/rvm/bin/rvm will be available when determining provider suitability in the main stage.

I agree that having a module implement a run stage is probably not a great idea.  I was trying to make the module easy to use without requiring too much configuration in manifest files.
So I guess we have a few options:

Remove run stages from this module, and include instructions in the README about how to set up run stages.

Somehow tell the rvm-install stage to depend on the pre stage in your manifest.  I haven't tested this, but do you think something like this would work (probably not):
 include rvm
 Stage['rvm-install'] <- Stage['pre']

Or maybe we could allow passing parameters to the rvm module that would allow configuring the rvm run stage:
 class {'rvm': $before_stage => 'main', $after_stage => 'pre'}

I'm just thinking out loud.  Thoughts?

So I've been using method #1 (the two-pass install) as you describe above.  What confuses me is the theory that run stages solve this, because I'm not seeing that.  When I removed the "if $rvm_installed" logic from my node and try to rebuild it, with the rvm install in an early run stage, the whole manifest still blows up with:
puppet-agent[1214]: Failed to apply catalog: Could not find a default provider for rvm_system_ruby
Have you actually had success with getting run stages to install rvm before the manifest blows up due to lack of a provider?  It's not working for me on puppet 2.6.12.

Yes I have had success with run stages.  It works great for me on 2.7.10.  I'll admit I haven't tested it with older versions of puppet.
I do still see the "Could not find a default provider for rvm_system_ruby" when running in --noop mode.  This is an unavoidable side effect of making a provider suitable in an earlier run stage.  When actually running puppet, the error messages do not show up and everything is installed in one pass.
Also, you may want to make sure you have pulled the latest changes from master, as I refactored it slightly a few days ago due to run stages not behaving correctly in 2.7.1.

Interesting, maybe there is a difference between 2.6.12 and 2.7.10 with respect to run stages and providers.  I'll have to test 2.7 at some point; for now I will continue to rely on the two-pass method.  What I did to solve the run stage problem is parameterize the run stage used (defaulting to rvm-install).  That way I can elect to supply my own run stage that has whatever ordering I want.  That patch will be included with the rest as soon as I send you a pull request (no later than tomorrow hopefully).
I do have the latest changes - I applaud the change of entry point into the module.  Including "rvm::system" instead of "rvm" was kind of odd.


Create future features wiki page

Create wiki page which will contains ideas for future features and release.

Aggregated to issue https://github.com/iivchenko/ShogunLib/issues/18


add replicated stats, update linux amd64

Please update examples https://github.com/tursodatabase/go-libsql/blob/main/example/sync/main.go#L60

Otherwise looks good to me


Fix solution description to WidgetFactoryInitializationException

Q
A

Is bugfix?
✔

New feature?
❌

Breaks BC?
❌

Fixed issues
#49

Maybe add to solution full example?

Done.


Use replace_endpair when expanding with endwise

This PR fixes an issue when expanding an endwise rule, the rules' custom end pair (using replace_endpair) was not used - but the rules' original end pair was.
Originally, I was trying to implement a rule that works like vim-closer. It tries to close all of the opened pairs in that line when pressing <CR>.
Example usage
The following gist implements a rule that acts like vim-closer, described above:
https://gist.github.com/yardnsm/3818a56526d3d56343b00a03aa2b0269
Input:
(function () { |

After pressing <CR>:
(function () {
    |
})

can you refactor a bit . re use  cond_opt  on line 584
then i will merge
Thank

maybe you can post your rule on wiki page . Thank you
https://github.com/windwp/nvim-autopairs/wiki/Custom-rules

Great! I've updated the PR and will add the rule to the wiki once it'll be merged since it depends on it.
Thanks! 😄

Thanks!


Keyboard control not working on 6.0.x

Has anything change re: keyboard control (arrow keys on input focus to move to the options dropdown), as it stopped working for me some versions ago, maybe when going to v6. It doesn't seem to work for me on Chrome 105 on your homepage examples either, so not sure if this is now something the dev has to apply themselves. Have not seen any recent issues about it.

Good catch! I broke this myself in https://github.com/janosh/svelte-multiselect/commit/50bb45e which was released as the currently latest version v6.0.2 3 days ago. Luckily it's a simple fix. I'll also add a test to prevent future regressions.


Refresh mobile app icons

The current mobile app icons are not branded ODK-X, and do not clearly communicate the core app function.
This task is to redesign the app icons to be:

Recognisable as applications in the ODK-X suite of tools
Ideally incorporating the ODK-X logo (note this issue for Logo refresh https://github.com/odk-x/tool-suite-X/issues/355)
can be distinguished as Services, Survey or Tables without accompanying text
Preferably does not rely on the app name in the icon

App icons should be created as SVG format and be clear and legible at small sizes, such as 20x20px

Will be separated into separate issues for different apps.


Dev - Copying text that has style adds lines above & below the copied text when pasting the text

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open an existing chat
Write in composer '>' followed by message
Send the message
Hover over the sent message & click on 'Copy to clipboard' icon
Paste the content to the composer

Expected Result:
Line shouldn't be added above and below the copied text
Actual Result:
Line is added above and below the copied text
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: DEV
Reproducible in staging?: dev
Reproducible in production?: dev
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/a65444d4-d720-4f02-8d86-aefd5812e85c
Expensify/Expensify Issue URL:
Issue reported by:  @Natnael-guchima
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1690881943610289
View all open jobs on GitHub

@youssef-lr - here's hoping you can reproduce this on DEV 🙏

Unable to reproduce this in dev. @kavimuru could you try again please?

Sorry @youssef-lr - when you get the chance, can you add a video for reproduction? It means I can go back to the reporter to double-check.

I am seeing this on Dev now. This might be a device specific issue. And I can't reproduce this issue on staging. If it is a bug, I think it should be reproducible on staging too by now. I think we can close this one @sophiepintoraetz

Sorry I missed your comment @sophiepintoraetz, I still can't reproduce this.
https://github.com/Expensify/App/assets/9680864/8a3b0e65-44fe-4d11-9388-fc61cf38b2e4

@youssef-lr I can't test in dev


Simplify utils

Codecov Report

Merging #112 into master will increase coverage by 0.03%.
The diff coverage is 97.33%.

@@            Coverage Diff             @@
##           master     #112      +/-   ##
==========================================
+ Coverage   95.73%   95.76%   +0.03%
==========================================
  Files          34       34
  Lines        1429     1417      -12
==========================================
- Hits         1368     1357      -11
+ Misses         61       60       -1

Impacted Files
Coverage Δ

scvi/metrics/adapt_encoder.py
100% <ø> (ø)
:arrow_up:

scvi/inference/variational_inference.py
92.8% <100%> (ø)
:arrow_up:

scvi/metrics/clustering.py
95% <100%> (-0.66%)
:arrow_down:

scvi/models/classifier.py
100% <100%> (ø)
:arrow_up:

scvi/metrics/log_likelihood.py
100% <100%> (ø)
:arrow_up:

scvi/dataset/data_loaders.py
95.09% <100%> (+0.59%)
:arrow_up:

scvi/inference/classifier_inference.py
96.42% <100%> (+0.13%)
:arrow_up:

scvi/metrics/classification.py
98.11% <100%> (-0.17%)
:arrow_down:

scvi/metrics/imputation.py
100% <100%> (ø)
:arrow_up:

scvi/metrics/differential_expression.py
97.14% <100%> (+1.9%)
:arrow_up:

... and 1 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 40e65e9...6b10bc3. Read the comment docs.


gulp completion is very slower

I used gulp zsh completion, and it's very slower.
Please improve it.

@tkellen

@fundon Do you have any suggestions on improvements?

No good idea.
When runnng gulp --tasks-simple will load many third-modules, many seconds will be used, then list tasks.

Hmm.  Seems we need to memoize the result of --tasks-simple (mtime caching against the gulpfile, perhaps).

@fundon It helps to lazily require modules, just before they are needed. So instead of writing:
var gulp = require('gulp');
var plugin1 = require('plugin1')
var plugin2 = require('plugin3')
var plugin3 = require('plugin3')

gulp.task('task1',function(){
return gulp.src('*')
          .pipe(plugin1)
          .pipe(plugin2)
          .pipe(plugin3)
          pipe(gulp.dest('.')
});

Better write:
var gulp = require('gulp');

gulp.task('task1',function(){
var plugin1 = require('plugin1')
var plugin2 = require('plugin3')
var plugin3 = require('plugin3')
return gulp.src('*')
          .pipe(plugin1)
          .pipe(plugin2)
          .pipe(plugin3)
          pipe(gulp.dest('.')
});

There are also some node modules and gulpfriendly plugins which help in lazy requiring modules.

@tkellen caching the task names :+1:

@geekflyer Thanks.
But it is not elegance.

Hmm. Seems we need to memoize the result of --tasks-simple (mtime caching against the gulpfile, perhaps).

That won't be enough if tasks are split across multiple files.

I discovered this too. As a temporary solution if hashing gulpfile.js to check for changes and caching the results to a separate .json file. I didn't know about the "multiple file" thing though; that definitely poses a problem. All the more reason to have a built-in solution.

Is anyone going to tackle this?  I don't think it's a big deal.

Would using gulp-load-plugins help with this issue? I've never experienced this issue (I didn't even know completion was a thing), but from what I've read below, the lazy-loading approach that gulp-load-plugins takes would help speed things up here.

load lazily or use gulp-load-plugins

I added a small Gist that gives you a dumb, but fast autocompletion for Gulp.js.
For me, waiting 2 sec for an autocomplete was unusable.
I don't say it is a perfect solution, however can be a good alternative, until it get's better, or anyone takes the time to fix it:
https://gist.github.com/leventebalogh/ba862a284d21c39a80ed03af7be128b5

@leventebalogh your solution is very specific to your use case since it relies on directory structure and making each gulp task it's own module/file.  That's actually the reason why your completion is so slow due to the require time.  I'm glad you found a solution for your workflow but we can't include that solution in our CLI.

I just cached the task list to a json file based on the hash of the
gulpfile. But that gives the opposite problem - if my tasks are defined in
other files, the hash won't change. If we could traverse the requires like
browserify or webpack we could generate a proper hash... That'd make it
quick.
On Aug 3, 2016 11:24 AM, "Blaine Bublitz"<EMAIL_ADDRESS>wrote:

@leventebalogh https://github.com/leventebalogh your solution is very
specific to your use case since it relies on directory structure and making
each gulp task it's own module/file. That's actually the reason why your
completion is so slow due to the require time. I'm glad you found a
solution for your workflow but we can't include that solution in our CLI.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/gulpjs/gulp/issues/851#issuecomment-237323472, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABD7pmEbbdd0LTwTe6gDK4TkO0yOZbVyks5qcNvngaJpZM4DOEEH
.

@phated, yea, I know it cannot be included in the CLI and I don't even expect that :)
I have just posted it here as an alternative solution, so if anyone has the same issue they can find it. (I think it is might quite common for bigger projects to start separating the tasks to multiple files so make them easier to maintain)


Make sure number of newlines are counted correctly.

If there is more than one newline \s* will match all but one of them. This breaks syntax
highlighting since the line number counter will be off. Here we simply solve that be counting the number of newlines in the token value

Current coverage is 96.53%

Merging #34 into master will not affect coverage as of 699762d

@@            master     #34   diff @@
======================================
  Files           20      20
  Stmts          751     751
  Branches         0       0
  Methods          0       0
======================================
  Hit            725     725
  Partial          0       0
  Missed          26      26

Review entire Coverage Diff as of 699762d

Uncovered Suggestions

+0.54% via ...racc/model/ruling.py#25...28
+0.40% via ...yoracc/atf/atflex.py#481...483
+0.40% via ...racc/model/corpus.py#32...34
See 7 more...

Powered by Codecov. Updated on successful CI builds.

@jamespjh any opinion on this

Thanks, that was a fix I had in mind to do but never ticketed.

@raquel-ucl  ready for review


[raymath] Adding a new Vector2MultiplyValue function.

This one is missing and I as I had to use it recently, I think that is a good idea to be included for consistency.
// Multiply vector and float value
RMAPI Vector2 Vector2MultiplyValue(Vector2 v, float mult) {
	Vector2 result = {v.x * mult, v.y * mult};
	return result;
}

@cos1110 It already exists, it is named Vector2Scale()

OK, it seems then that this issue is completed. Thanks.


ignore skipped cmsRun steps for setting aggregate Chirp_WMCore_cmsRun_ExitCode

Impact of the bug
ElasticSearch job records are harder to interpret, making debugging harder
Describe the bug
When we get a cmsRun failure in a StepChain step, all later steps are skipped, as they should. Skipping a step has a special exit code though (99108), so the later steps all have that exit code. The aggregate cmsRun exit code Chirp_WMCore_cmsRun_ExitCode takes the last step cmsRun exit code though, so for such jobs it always shows 99108, which is not very useful.
How to reproduce it
Look at any failed step chain jobs in ElasticSearch.
Expected behavior
For debugging it would be much better to have the aggregate cmsRun exit code contain the last "meaningful" cmsRun exit code and ignore any skipped steps.
Additional context and error message
Add any other context about the problem here, like error message and/or traceback. You might want to use triple back ticks to properly format it.

Thanks for filing this bug report, Dirk.
I think WMStats has a logic similar to this, something like: we go through all the steps in a job (assuming they are properly ordered), and the first != 0 exit code is what gets shown to the end user. We might do the same here, and return 0 in case none of the steps had != 0 exit code.
As we discussed over slack, you'll try to look into it in your spare time (so I'm assigning it to you for the moment to make sure that nobody else will work on it in parallel ;)). Thanks

I have the needed code changes, but no real way to test them. What should I do with them? Make a pull request and we take it from there?

Yes, please


fix tests issues for PR Bump github.com/IBM/vpc-go-sdk from 0.47.0 to 0.48.0

https://github.com/np-guard/cloud-resource-collector/pull/194


Historical test results for test cases in MTM when tests are run by Run Functional Tests Task

When a test is run by Run Functional Tests Task multiple times, it seems we do not have the ability to view its historical results in MTM. The only result it displays is the last result.
What's the recommended way to view historical test results of a test case? I know we can view Test Runs from the web portal, but there's no easy way to tie the test run(s) back to a specific test case.

I bumped into a workaround for this by accident. If I manually mark the test case as Pass/Fail, then when I go back to MTM, and "View Results" again for this test case, it will all of a sudden display everything in its history, including the automated test runs generated by builds or releases.
It seems like a bug in the MTM UI, but this works for now. However, is there a way to view historical results of a test case in web portal?
Screenshot 1: Before manual intervention. No history is displayed.

Screenshot 2: After a manual pass/fail of the test case, all of a sudden, all of the old history is displayed.


Unable to set boolean value false to object using "set" function

For example,
import { set } from 'radash'
const obj = { id: true }
let obj2 = set(obj, id, false)
console.log(obj2)
// => { id = true }

Confirmed with falsy number values, too, e.g.,
set({}, 'foo', 0);
// => {}

Hey @rayepps, could you please look into it?

Should be resolved by #263 which will get published today in v11.0.0


Automatic execution

I've tried to disable automatic execution via saiku.properties with key:
saiku.olap.query.automatic_execution = false
and with relative button in ui but this seems to be broken because dragging new measures or dimension triggers query execution.
Another thing, in previous version the query was sent only when rows and column had dimensions or measures but in current snapshot the query is sent also if you specify elments in only row or column.

this should all be fixed now
if you dont think so.. just let me know!

p.s. just download the latest version from CI to test it


Cancel doesn't work

I'm using this with
(ionChanged)="setDate($event);"
No matter if I click ok or cancel the setDate function is called. I need setDate to be called only when OK button is called. Thanks!

It would also help if I could get rid of OK and Cancel button and only clicking on a date would dismiss the calendar.

As a workaround, I manually fixed this function after install in my nod_modules folder:
DatePickerComponent.prototype.onCancel = function(e) {
        if (this.date)
            this.selectedDate = this.date || new Date();
        this.callback.emit("Cancel"); //----------> Emit Cancel instead
        // this.callback.emit(this.selectedDate);
        this.viewCtrl.dismiss();
    };;

I am not reporting on an issue here, just wanted to say thank you for a brilliant job! There were no problems installing, it worked on the first try, and it was not hard to change any functionality to my needs. I also changed the UI to fit in with my design. Once again - thank you very much!

Perhaps there should be no emit at all?
This is a lil bit confusing if you just set and don't check whether its undefined.

The latest commit (https://github.com/misha130/datepicker-ionic2/commit/f766e74ae015d510a24e7eb721e21034d36336b30) fixes this problem with the cancel button by adding an ionCanceled which will be emitted when cancel is clicked.
On the other issue, I don't really want to clutter the configuration too much unless I really must so I wouldn't be adding the removal of ok/cancel at this point.

index.js is missing in the new version. I get this error:
no such file or directory, open '....\node_modules\datepicker-ionic2\index.js'

Check your npm log to see if there are any errors on installation.
I checked on several different projects and it worked fine

Thanks for your reply. Here is the log:
npm install https://github.com/misha130/datepicker-ionic2 --save plusone@ C:\Users\ourar\Documents\GitHub\BETA\upfront-client +-- UNMET PEER DEPENDENCY<EMAIL_ADDRESS>+-- UNMET PEER DEPENDENCY<EMAIL_ADDRESS>+-- UNMET PEER DEPENDENCY<EMAIL_ADDRESS>--<EMAIL_ADDRESS>(git+https://github.com/misha130/datepicker-ionic2.git#f766e74ae015d510a24e7eb721e21034d36336b3)
`--<EMAIL_ADDRESS>npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.`

do npm install datepicker-ionic2 instead


Feat/containerize application

NOTE: this is currently dependent on https://github.com/SovereignCloudStack/rookify/pull/23

added Dockerfile for rookify: python3-rados is installed with apt-get and version is checked to be in accordance with requirements.txt. Note: build discontinues if correct version is not found
added Makefile to build and run container of rookify
added Makefile command to setup venv locally with simlinks to python3-rados

see #2

ok in the last commit I just added I changed some bigger things (please review):

using ceph container now (quincy v17.2.7), note: runs on python3.6 but has rados2.0.0
added some more information to pyproject.toml because build would not run otherwise
adapted Makefile a little (this MR will have most important changes)
remove rados from requirements.txt because the ceph container will contain it

@NotTheEvilOne @brueggemann

ok so set the tag differently in the makefile as requested.
Also set container to latest ceph image. Small annoyance (but I think nothing critical): python version in the container is still 3.6. But the build is works. After installing python 3.9 librados.so.2.0.0 is found anyhow.

ok tested some more. Interestingly enough,  the build works fine, but running rookify in the container does not work, because it cannot find rados for python 3.9.
Problem is here: as far as I know, there are simply no ceph containers that use a higher python version than 3.6.
Furthermore I could not find an rpm in the centos repos for python3-rados that offers interfaces for python 3.9 or higher.

Since we're having a little bit of an chicken-egg-problem by either using the official ceph container image or the official python image we've decided to (try to) target ubuntu:24.04 (and its corresponding official packages) instead.
Pros:

Canonical "ensures" that import rados should always work after installing the official packages
24.04 is a LTS release

Cons:

No (more) explicit control over ceph and python versions but 3.12 is perfectly fine and librados2 seems very settled and therefore unlikely to change drastically in the next years. If necessary, we can always include upstream ceph repositories to upgrade ceph/librados2.

I've now updated Dockerfile to reflect the changes @b1-luettje described above and merged main to fix a TODO while working on it. It's ready to get merged in my eyes. Please have a look again @brueggemann and @yeoldegrove :)


Runnable example

Would it be possible to include a runnable example please? Thanks for all the hard work on this project.

Hi. Building blocks are here:

Create AwesomeProject (follow React Native Getting started)
Follow the instruction in this repo
Xopy index.ios.promise.js or index.ios.callback.js from react-native-sqlite-storage test dir to home dir of Awesome Project as index.ios.js

Run Awesome Project in simulator


misuse of cv_iterator_traits

Shouldn't it be std::iterator_traitsin the next line?
https://github.com/vreverdy/bit/blob/67446ab8756f8bd5a670b92d9d75549959ba3de9/cpp/bit_iterator.hpp#L33

I don't think so. This is an implementation detail, only used to get the correctly cv-qualified word type (see the definition of word_type in bit_iterator). std::iterator_traits erases the cv-qualification of value_type. Does that answer the question?

Sorry, I misunderstood the intent.


How to generate gradlew.bat file?

Command
flutter --no-color run --machine --track-widget-creation --device-id=0a2315780805 lib\main.dart

I am facing some issues with Flutter Please help me. Sometimes I face error as

gradlew.bat is not present
exit code 1
exit code -1

I have implement most of suggestions what is discussed related gradlew.bat
Logs
ArgumentError: Invalid argument(s): Cannot find executable for C:\Users\Anshul singh suryan\AndroidStudioProjects\flutter_app\android\gradlew.bat.
#0      _getExecutable (package:process/src/interface/local_process_manager.dart:127:5)
#1      LocalProcessManager.start (package:process/src/interface/local_process_manager.dart:43:30)
#2      _DefaultProcessUtils.start (package:flutter_tools/src/base/process.dart:462:28)
#3      _DefaultProcessUtils.stream (package:flutter_tools/src/base/process.dart:480:35)
#4      buildGradleApp (package:flutter_tools/src/android/gradle.dart:384:35)
#5      _AndroidBuilderImpl.buildApk (package:flutter_tools/src/android/android_builder.dart:102:13)
#6      AndroidDevice.startApp (package:flutter_tools/src/android/android_device.dart:513:28)
#7      _rootRunUnary (dart:async/zone.dart:1192:38)
#8      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#9      _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#10     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#11     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#12     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#13     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:556:7)
#14     _rootRun (dart:async/zone.dart:1184:13)
#15     _CustomZone.run (dart:async/zone.dart:1077:19)
#16     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
#17     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
#18     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#19     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)

[✓] Flutter (Channel stable, v1.17.0, on Microsoft Windows [Version 10.0.18363.836], locale en-IN)
    • Flutter version 1.17.0 at C:\src\flutter\flutter
    • Framework revision e6b34c2b5c (2 weeks ago), 2020-05-02 11:39:18 -0700
    • Engine revision 540786dd51
    • Dart version 2.8.1

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at C:\Users\Anshul singh suryan\Android
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = C:/Users/Anshul singh suryan/Android
    • Java binary at: C:\Program Files\Android\Android Studio1\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)
    ✗ Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.

[✓] Android Studio (version 3.6)
    • Android Studio at C:\Program Files\Android\Android Studio1
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.8052
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)

[✓] VS Code (version 1.45.0)
    • VS Code at C:\Users\Anshul singh suryan\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.10.1

[✓] Connected device (1 available)
    • Redmi 6 Pro • 0a2315780805 • android-arm64 • Android 9 (API 28)

! Doctor found issues in 1 category.

Flutter Application Metadata
Type: app
Version: 1.0.0+1
Material: true
Android X: false
Module: false
Plugin: false
Android package: null
iOS bundle identifier: null
Creation channel: stable
Creation framework version: e6b34c2b5c96bb95325269a29a84e83ed8909b5f

Hi @anshulsinghsuryan
please follow up on https://github.com/flutter/flutter/issues/56975,
I'm closing the current one as duplicate.
If you disagree please write in the comments and I will reopen it


helm delete doesn't remove jobs

ran a helm delete controlplane -n cp
expecting everything installed by the chart to be removed, but found this hanging around:
kubectl get jobs -n cp
NAME                                       COMPLETIONS   DURATION   AGE
controlplane-kong-init-migrations          0/1           26m        26m
controlplane-kong-pre-upgrade-migrations   0/1           10m        10m

Had to do a kubectl delete jobs controlplane-kong-init-migrations controlplane-kong-pre-upgrade-migrations to get things cleaned up.

That's expected. The migration jobs are handled via hooks, which create resources that aren't managed by the release, so deleting the release does not delete them. Looks kinda odd when you see it, I'll admit, but that's how Helm works :woman_shrugging:
We use the default before-hook-creation deletion policy, so they're normally deleted upon the next job of the same sort. That's kinda what we want for the upgrade jobs on the off-chance there's something you want to inspect in their logs, as leaving them around after completion doesn't really cause any harm--there's only ever one of each per release, so they at least don't balloon infinitely.
Kubernetes has a TTL mechanism that would allow us to strike a good middle ground between keeping the logs around for inspection and discarding them after they're unlikely to be useful (e.g. after 3 days or so). However, that's been stuck in beta forever for whatever reason, with the upshot that managed providers often don't support it.
On our long-term radar, but it's mostly a cosmetic thing, so I'm fine waiting til the ideal K8S-native solution comes out of beta.


Update sending.rst - Note using Mailcatcher

Referencing change to the documentation regarding the Mailcatcher #415 , since it does not support encryption

Thank you @twify93.


Added a new button

Look this

Fix this and push.

Merged! Thanks for your contribution. 🚀
Star the repo 🌟


Be more linient in AccessPath matching.

We consider IndirectionAccess and VariableAccess equal with overtaint.

Can you elaborate?

Is this one still active?

Closing due to inactivity.


Fix "Undefined symbol" linker error with default argument for inherited initializer

Explanation: When a subclass inherits initializers from a base class in another module, it wasn't correctly configuring parameters with default argument values. This led to callers expecting to find a symbol that doesn't exist. Additionally, trying to use the initializer in a generic context led to a crash in SILGen, so the PR also puts in a narrow fix for that, with SR-3808 filed to investigate more later.
Scope: Affects inherited initializers, plus a few other places where parameter lists are cloned.
Issue: rdar://problem/30167924
Reviewed by: @DougGregor, @slavapestov
Risk: Low. The intent is that this only changes code that would have led to either linker errors or compiler crashers in 3.0.
Testing: Added compiler regression tests.

@swift-ci Please test

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - 89bfedb53cccf601127b5e050bffa09a97fed10d
Test requested by - @jrose-apple

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - 89bfedb53cccf601127b5e050bffa09a97fed10d
Test requested by - @jrose-apple

Ah, I forgot to use the old mangling again.

@swift-ci Please test

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - 89bfedb53cccf601127b5e050bffa09a97fed10d
Test requested by - @jrose-apple

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - 89bfedb53cccf601127b5e050bffa09a97fed10d
Test requested by - @jrose-apple

/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVOpenGLESTexture.h:23:2: error: malformed or corrupted AST file: 'SourceLocation remap refers to unknown module'

(https://ci.swift.org/job/swift-PR-osx/5339/consoleFull#-1445105749ee1a197b-acac-4b17-83cf-a53b95139a76)
@bcardosolopes, look familiar?

@swift-ci Please test macOS

@jrose-apple, never seen this one - looks like some inconsistency in ModuleMgr. Is this reproducible? any chance to give it a try with a clean cache?

This is the first time I've seen it, and the retest didn't reproduce it. Guess we'll have to leave it for now. Sorry!

@jrose-apple np, thanks for pointing out though!


Writing performance of driver v6.5 is slower than sqljdbc41.jar (1.4 to 2.6 times slower)

Driver version or jar name
mssql-jdbc-6.5.0.jre8-preview.jar
SQL Server version
SQL Server 2014
Client operating system
Windows 10
Java/JVM version
Example: java version "1.8.0", IBM J9 VM
Table schema
CREATE TABLE [jpoetest] ([mystring] varchar(200))
CREATE TABLE [jpoetest] ([mystring] varchar(200), [GEOM] geometry)
Problem description
We noticed a significant performance drop when switching from sqljdbc41.jar to mssql-jdbc-6.5.0.jre8-preview.jar, both with and without geometry columns.
Without geometry columns, the new driver is 1.4 times slower. (old: 1m40s, new: 2m21s)
With one geometry column, the new driver is 2.5 times slower. (old: 1m55s, new: 4m49s)
This is when writing using batched PreparedStatement (more of how we're using this driver under Repro Code)
Expected behavior and actual behavior
the newer driver should have roughly the same performance as sqljdbc41.jar
Repro code
int batchCount = 0;

Connection connection = getConnection();
PreparedStatement statement = connection.prepareStatement("INSERT INTO [jpoetest] ([mystring], [GEOM]) VALUES (?, ?)");
ParameterMetaData pmd = statement.getParameterMetaData();

List<MyTuple> entriesToAdd = getEntriesToAdd();

for (MyTuple entry : entriesToAdd) {
  for (int i = 1; pmd.getParameterCount(); ++i) {
    switch (pmd.getParameterType(i)) {
    case 12: // varchar type
      statement.setString(i, entry.getMyString());
      break;
    case -157: // geometry type
      statement.setBytes(i, entry.getGeomAsByteArray());
      break;
    }
  }
  statement.addBatch();
}

statement.ExecuteBatch();
connection.commit();

Hi @jpoernomoatsafe, can you provide the version of sqljdbc41.jar you're using.

hello @rene-ye
it was  sqljdbc_4.1.5605.100_enu.tar.gz, from https://msdn.microsoft.com/en-us/data/aa937725

Hi @jacobovazquez, I attempted to reproduce the performance degradation described above, and did not receive similar results. The most I saw was about 15%, and that compares a worst case run to a best case run. Do you have any more information on the following that could help me reproduce the issue:

The average size of the strings you're trying to add to the batch.
The number of entries.
All connection properties set (either set through string or set through connection object itself).

It's worth noting that 4.1 is a very old version of the driver, and the driver has changed a lot since then. I'd also like to take the time now to ask whether you're using the new Geometry setters with the new driver. I see here you're calculating the byte[] yourself, and just setting the Geometry type as a raw byte[]. The spatial datatype support introduced in 6.5.0 will not affect this use case.

@jpoernomoatsafe, sorry for the lapse in communication. After some further investigation, I've concluded that there is degradation in Statement.getParameterMetaData(). This is caused by recent changes to cache statement metadata. If your application is calling this function frequently, turning on caching by adding "disableStatementPooling=false" and "statementPoolingCacheSize=10" to the connection properties should actually improve performance. There have been some suggestions on further improving this feature, and the team will look into minimizing impact when the caching is off.

@rene-ye
those connection properties have really improved performance for both our SQL Azure and SQL Server writers. thanks for those!


Amino acid abbreviations not being parsed as nouns

Two amino acid abbreviations (out of 20) clash with words: 'his' is parsed as a possessive pronoun and 'pro' as a foreign word. This means that they do not get recognized as entities and just 'disappear' from many sentences. Can anything be done about this?

Can you please use it in a sentence? :)
Please add examples for both. Can we use capitalization, or other hints there?