RemoveDuplicates doesn't work as expected

Here my kubernetes version
kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14+", GitVersion:"v1.14.9-eks-c0eccc", GitCommit:"c0eccca51d7500bb03b2f163dd8d534ffeb2f7a2", GitTreeState:"clean", BuildDate:"2019-12-22T23:14:11Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}

version of descheduler
descheduler version
Descheduler version {Major:0 Minor:10+ GitCommit:eff8185d7ca801033ee593486fc221c19fd41b42 GitVersion:v0.10.0-2-geff8185d7 BuildDate:2020-02-17T13:17:21+0000 GoVersion:go1.13.4 Compiler:gc Platform:linux/amd64}

I have duplicated pods in one worker node and run descheduler with version v0.10.0 as a job, however, it didn't work as expected. I set the log level to 9 and checked the logs and found out the response of request doesn't contain the list of complete pods in the queried node. For example, for the request https://<IP_ADDRESS>:443/api/v1/pods?fieldSelector=spec.nodeName%3Dip-10-107-193-192.eu-central-1.compute.internal%2Cstatus.phase%21%3DFailed%2Cstatus.phase%21%3DSucceeded  there are only two pods in the response, but actually there are 39 pods running in this node.
But In the logs I can find the response with http 200 status code.
I0218 14:55:44.684433       1 duplicates.go:50] Processing node: "ip-10-107-193-192.eu-central-1.compute.internal"
I0218 14:55:44.707379       1 round_trippers.go:443] GET https://<IP_ADDRESS>:443/api/v1/pods?fieldSelector=spec.nodeName%3Dip-10-107-193-192.eu-central-1.compute.internal%2Cstatus.phase!%3DFailed%2Cstatus.phase!%3DSucceeded 200 OK in 22 milliseconds
I'm not sure, if the pods list is completely written in log or not.
When I run kubectl proxy on my localmachine und open url http://localhost:8001/api/v1/pods?fieldSelector=spec.nodeName=ip-10-107-193-192.eu-central-1.compute.internal,status.phase%21%3DFailed%2Cstatus.phase%21%3DSucceeded in a browser, it took definitive much longer than 22 milliseconds, but I got the complete list with 39 pods.
Can I increase the timeout value for this request to wait a little longer?
Thanks

/kind bug

@jia2 can you try the latest release, v0.18.0, and see if you see the same behavior?

@seanmalloy I tried with v0.18.0. It doesn't work yet. Here are loads of work nodes in my k8s cluster:
[jia@10-105-21-115 (⎈ |abn:kube-system)] ~ $ k top node
NAME                                              CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
ip-10-107-208-158.eu-central-1.compute.internal   1392m        35%    12238Mi         43%
ip-10-107-208-54.eu-central-1.compute.internal    1138m        29%    18999Mi         67%
ip-10-107-208-9.eu-central-1.compute.internal     1809m        46%    17296Mi         61%
ip-10-107-209-10.eu-central-1.compute.internal    1275m        32%    19591Mi         69%
ip-10-107-209-14.eu-central-1.compute.internal    1159m        29%    20616Mi         73%
ip-10-107-209-65.eu-central-1.compute.internal    1815m        46%    18039Mi         64%
ip-10-107-210-10.eu-central-1.compute.internal    1425m        36%    20906Mi         74%
ip-10-107-210-110.eu-central-1.compute.internal   1565m        39%    17132Mi         60%
for example, on worker node ip-10-107-208-54.eu-central-1.compute.internal I can see 3 deployments with duplicates pod are running. After running descheduler job, those pods are still running on the same worker node.
I checked the log of the job, the work node was processed by descheduler,
11:51:57.466555       1 duplicates.go:49] Processing node: "ip-10-107-208-54.eu-central-1.compute.internal"
And the request below also got a response of PodList, however it is truncated due to too long text in log
11:51:57.498850       1 round_trippers.go:443] GET https://<IP_ADDRESS>:443/api/v1/pods?fieldSelector=spec.nodeName%3Dip-10-107-208-54.eu-central-1.compute.internal%2Cstatus.phase%21%3DFailed%2Cstatus.phase%21%3DSucceeded 200 OK in 32 milliseconds

I'm not sure, what did I wrong, that the strategy "RemoveDuplicates" doesn't work for me.

/remove-lifecycle stale
@jia2 please provide the below information, so that we can continue to assist with troubleshooting.

descheduler CLI options you are using
descheduler policy ConfigMap
namespace that the pods in question are running in
kubectl describe pod output for all of the pods in question
k8s version you are using

descheduler CLI option

          command:
            - "/bin/descheduler"
          args:
            - "--policy-config-file"
            - "/policy-dir/policy.yaml"
            - "--v"
            - "9"

descheduler policy ConfigMap

    apiVersion: "descheduler/v1alpha1"
    kind: "DeschedulerPolicy"
    strategies:
      "RemoveDuplicates":
         enabled: true
      "RemovePodsViolatingInterPodAntiAffinity":
         enabled: true
      "LowNodeUtilization":
         enabled: true
         params:
           nodeResourceUtilizationThresholds:
             thresholds:
               "cpu" : 20
               "memory": 20
               "pods": 20
             targetThresholds:
               "cpu" : 70
               "memory": 70
               "pods": 50

namespace that the pods in question are running in
It is in a custom namespace, cloudia-abn

kubectl describe pod output

k describe pod ppr-timetableout-camadapter-v01-deploy-7589b4858c-fkgmm
Name:                 ppr-timetableout-camadapter-v01-deploy-7589b4858c-fkgmm
Namespace:            cloudia-abn
Priority:             1000600
Priority Class Name:  ppr-priorityclass
Node:                 ip-10-107-209-28.eu-central-1.compute.internal/<IP_ADDRESS>
Start Time:           Thu, 11 Jun 2020 01:20:18 +0200
Labels:               app=cloudia
                      creation_date=08.06.20_1535
                      docker_image_tag=OW_AMQ_WMQ_LOOP-v0.1.1624-SADe_06_2020
                      environment=cloudia-abn
                      name=ppr-timetableout-camadapter-v01-pod
                      pod-template-hash=7589b4858c
                      serviceversion=ppr-timetableout-camadapter-v01_1.3.3_3573
                      svc=ppr-timetableout-camadapter-v01
Annotations:          kubernetes.io/psp: eks.privileged
Status:               Running
IP:                   <IP_ADDRESS>
Controlled By:        ReplicaSet/ppr-timetableout-camadapter-v01-deploy-7589b4858c
Init Containers:
  ppr-timetableout-camadapter-v01-init:
    Container ID:  docker://cc56c328a4b637cdbfc9fc3e1eeaa395bff63d6a8377b980d6092fef9c403bff
    Image:<PHONE_NUMBER>33.dkr.ecr.eu-central-1.amazonaws.com/cloudia/aws-cli:1.18
    Image ID:      docker-pullable://368971480733.dkr.ecr.eu-central-1.amazonaws.com/cloudia/aws-cli@sha256:37ff2cda184f684c87732cd4d6fc5dd263bac99a149a00e789f7244f99c09b81
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -c
      aws s3 cp --quiet s3://$(S3_BUCKET)/$(S3_SERVICE_FOLDER) . --recursive;
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 11 Jun 2020 01:20:38 +0200
      Finished:     Thu, 11 Jun 2020 01:20:45 +0200
    Ready:          True
    Restart Count:  0
    Environment:
      S3_SERVICE_FOLDER:  cloudia-abn/services/ppr-timetableout-camadapter-v01
      S3_BUCKET:<PHONE_NUMBER>33-cloudia-deploy
    Mounts:
      /project from configdir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rts8 (ro)
Containers:
  ppr-timetableout-camadapter-v01:
    Container ID:  docker://517b0e94943d12e575369e88e7a3f6f74c0808d5882b33c87bf5ec0a01fc4b5c
    Image:<PHONE_NUMBER>33.dkr.ecr.eu-central-1.amazonaws.com/cloudia/ow_amq_wmq_loop:OW_AMQ_WMQ_LOOP-v0.1.1624-SADe_06_2020
    Image ID:      docker-pullable://368971480733.dkr.ecr.eu-central-1.amazonaws.com/cloudia/ow_amq_wmq_loop@sha256:a27e221ef8d6a4840a060eec390727f88e0927e33ebbe03766e7ff45eab607fc
    Ports:         8443/TCP, 8084/TCP
    Host Ports:    0/TCP, 0/TCP
    Command:
      /bin/sh
      -c
      cd /opt/cloudia/ppr/ppr-timetableout-camadapter-v01; java -DSERVICE_CONTAINER=ppr-timetableout-camadapter-v01 -Dspring.profiles.active=cloudia-abn -Dcom.ibm.mq.cfg.useIBMCipherMappings=false -Dspring.config.location=file:/opt/config/app-config.yaml,file:/opt/config/env.yaml,file:/opt/cloudia-config-secret/cloudia-config-secret.yaml,file:/opt/mq-config-secret/mq-connection.yaml,classpath:config/application-generic-aws.yml,classpath:config/application-utils-aws.yml -Xms1000m -Xmx1000m -jar /opt/ow-amq-wmq-loop.jar
    State:          Running
      Started:      Thu, 11 Jun 2020 01:21:32 +0200
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     400m
      memory:  1000Mi
    Requests:
      cpu:      100m
      memory:   500Mi
    Liveness:   http-get http://:8084/PPR/Timetableout/CAMAdapter/V01/health delay=200s timeout=10s period=80s #success=1 #failure=5
    Readiness:  http-get http://:8084/PPR/Timetableout/CAMAdapter/V01/health delay=220s timeout=5s period=50s #success=1 #failure=3
    Environment:
      STAKATER_PPR_TIMETABLEOUT_CAMADAPTER_V01_CM_CONFIGMAP:  0f49f7a571f36e29f7482eff42e568097fd377e5
      STAKATER_MQ_CONFIG_SECRET_SECRET:                       a715da5e437d474638e45bafc8ba7d755da423a5
      STAKATER_CLOUDIA_TRUSTSTORE_CM_CONFIGMAP:               da39a3ee5e6b4b0d3255bfef95601890afd80709
      STAKATER_CLOUDIA_CONFIG_SECRET_SECRET:                  52370aed941e0d62c296351cfe5d258b8128949f
    Mounts:
      /etc/certs from certs-volume (rw)
      /opt/cloudia-config-secret from cloudia-config-volume (ro)
      /opt/cloudia/ppr/ppr-timetableout-camadapter-v01 from configdir (rw)
      /opt/config from appconfig-volume (rw)
      /opt/mq-config-secret from mq-config-volume (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rts8 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   True
  PodScheduled      True
Volumes:
  configdir:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  appconfig-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      ppr-timetableout-camadapter-v01-cm
    Optional:  false
  certs-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      cloudia-truststore-cm
    Optional:  false
  cloudia-config-volume:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  cloudia-config-secret
    Optional:    false
  mq-config-volume:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  mq-config-secret
    Optional:    false
  default-token-8rts8:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-8rts8
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

k describe pod ppr-timetableout-camadapter-v01-deploy-7589b4858c-f4gmg
Name:                 ppr-timetableout-camadapter-v01-deploy-7589b4858c-f4gmg
Namespace:            cloudia-abn
Priority:             1000600
Priority Class Name:  ppr-priorityclass
Node:                 ip-10-107-209-28.eu-central-1.compute.internal/<IP_ADDRESS>
Start Time:           Thu, 11 Jun 2020 01:20:21 +0200
Labels:               app=cloudia
                      creation_date=08.06.20_1535
                      docker_image_tag=OW_AMQ_WMQ_LOOP-v0.1.1624-SADe_06_2020
                      environment=cloudia-abn
                      name=ppr-timetableout-camadapter-v01-pod
                      pod-template-hash=7589b4858c
                      serviceversion=ppr-timetableout-camadapter-v01_1.3.3_3573
                      svc=ppr-timetableout-camadapter-v01
Annotations:          kubernetes.io/psp: eks.privileged
Status:               Running
IP:                   <IP_ADDRESS>
Controlled By:        ReplicaSet/ppr-timetableout-camadapter-v01-deploy-7589b4858c
Init Containers:
  ppr-timetableout-camadapter-v01-init:
    Container ID:  docker://085cc93a79301ef1a8cca273db5d177802a3856c2b645497dece008c78d16c40
    Image:<PHONE_NUMBER>33.dkr.ecr.eu-central-1.amazonaws.com/cloudia/aws-cli:1.18
    Image ID:      docker-pullable://368971480733.dkr.ecr.eu-central-1.amazonaws.com/cloudia/aws-cli@sha256:37ff2cda184f684c87732cd4d6fc5dd263bac99a149a00e789f7244f99c09b81
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -c
      aws s3 cp --quiet s3://$(S3_BUCKET)/$(S3_SERVICE_FOLDER) . --recursive;
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 11 Jun 2020 01:20:33 +0200
      Finished:     Thu, 11 Jun 2020 01:20:43 +0200
    Ready:          True
    Restart Count:  0
    Environment:
      S3_SERVICE_FOLDER:  cloudia-abn/services/ppr-timetableout-camadapter-v01
      S3_BUCKET:<PHONE_NUMBER>33-cloudia-deploy
    Mounts:
      /project from configdir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rts8 (ro)
Containers:
  ppr-timetableout-camadapter-v01:
    Container ID:  docker://d5164225f71a6b50c4380556979bc7c00fe38613ad16ecd1faeace017bfd1bf9
    Image:<PHONE_NUMBER>33.dkr.ecr.eu-central-1.amazonaws.com/cloudia/ow_amq_wmq_loop:OW_AMQ_WMQ_LOOP-v0.1.1624-SADe_06_2020
    Image ID:      docker-pullable://368971480733.dkr.ecr.eu-central-1.amazonaws.com/cloudia/ow_amq_wmq_loop@sha256:a27e221ef8d6a4840a060eec390727f88e0927e33ebbe03766e7ff45eab607fc
    Ports:         8443/TCP, 8084/TCP
    Host Ports:    0/TCP, 0/TCP
    Command:
      /bin/sh
      -c
      cd /opt/cloudia/ppr/ppr-timetableout-camadapter-v01; java -DSERVICE_CONTAINER=ppr-timetableout-camadapter-v01 -Dspring.profiles.active=cloudia-abn -Dcom.ibm.mq.cfg.useIBMCipherMappings=false -Dspring.config.location=file:/opt/config/app-config.yaml,file:/opt/config/env.yaml,file:/opt/cloudia-config-secret/cloudia-config-secret.yaml,file:/opt/mq-config-secret/mq-connection.yaml,classpath:config/application-generic-aws.yml,classpath:config/application-utils-aws.yml -Xms1000m -Xmx1000m -jar /opt/ow-amq-wmq-loop.jar
    State:          Running
      Started:      Thu, 11 Jun 2020 01:21:42 +0200
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     400m
      memory:  1000Mi
    Requests:
      cpu:      100m
      memory:   500Mi
    Liveness:   http-get http://:8084/PPR/Timetableout/CAMAdapter/V01/health delay=200s timeout=10s period=80s #success=1 #failure=5
    Readiness:  http-get http://:8084/PPR/Timetableout/CAMAdapter/V01/health delay=220s timeout=5s period=50s #success=1 #failure=3
    Environment:
      STAKATER_PPR_TIMETABLEOUT_CAMADAPTER_V01_CM_CONFIGMAP:  0f49f7a571f36e29f7482eff42e568097fd377e5
      STAKATER_MQ_CONFIG_SECRET_SECRET:                       a715da5e437d474638e45bafc8ba7d755da423a5
      STAKATER_CLOUDIA_TRUSTSTORE_CM_CONFIGMAP:               da39a3ee5e6b4b0d3255bfef95601890afd80709
      STAKATER_CLOUDIA_CONFIG_SECRET_SECRET:                  52370aed941e0d62c296351cfe5d258b8128949f
    Mounts:
      /etc/certs from certs-volume (rw)
      /opt/cloudia-config-secret from cloudia-config-volume (ro)
      /opt/cloudia/ppr/ppr-timetableout-camadapter-v01 from configdir (rw)
      /opt/config from appconfig-volume (rw)
      /opt/mq-config-secret from mq-config-volume (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rts8 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   True
  PodScheduled      True
Volumes:
  configdir:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  appconfig-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      ppr-timetableout-camadapter-v01-cm
    Optional:  false
  certs-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      cloudia-truststore-cm
    Optional:  false
  cloudia-config-volume:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  cloudia-config-secret
    Optional:    false
  mq-config-volume:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  mq-config-secret
    Optional:    false
  default-token-8rts8:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-8rts8
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

k8s version

Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2", GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean", BuildDate:"2020-01-18T23:30:10Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.11-eks-af3caf", GitCommit:"af3caf6136cd355f467083651cc1010a499f59b1", GitTreeState:"clean", BuildDate:"2020-03-27T21:51:36Z", GoVersion:"go1.12.17", Compiler:"gc", Platform:"linux/amd64"}

@jia2  I noticed that your pods have EmptyDir volumes:
Volumes:
  configdir:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>

Descheduler will do some checks before evicting pods, and pods with EmptyDir(local storage) won't pass these checks, so they won't be evicted, if you want descheduler to evict them, you can add this annotation descheduler.alpha.kubernetes.io/evict.
You can reference to this section for more information.

The other option is to run the descheduler with the --evict-local-storage-pods CLI option. This will enable evicting pods that have local storage.

Thank @lixiang233 and @seanmalloy for your hints.

/kind documentation
/remove-kind bug
/close
@jia2 I'm closing this issue because this is expected behavior. By default pods with local storage will not be evicted by the descheduler. Feel free to reopen this issue or post in sig-scheduling on k8s Slack if you need further assistance. Thanks!


Add a const call mode to Object, Variant and Script.

For this to work safely (user not call queue_free or something in the expression), a const call mode was added to Object and Variant (and optionally Script).
This mode ensures only const functions can be called, making it safe to use from the editor.
Co-Authored-By: reduz<EMAIL_ADDRESS>

Thanks!


[DEPRECATE] Remove solana provider

Summary
[DEPRECATED] Solana provider no longer supported and removed.
Related Links

Asana: https://app.asana.com/0/1201812548509877/1205263417119010/f
Checklist

[x] Pasted Asana link.
[x] Tagged labels.

Prerequisite/Related Pull Requests

I suppoes we can remove SOL_NET in /src/constants.ts too?

I suppoes we can remove SOL_NET in /src/constants.ts too?

Thanks. Removed in 701b176e


[RFC] Protocols

This is not a request for adding a protocol or interface keyword. Mostly is just a way of extending the functionality of String, Num, et al.
By having a protocol one can create a String like class that inherits String methods. And because this class is not a normal string then it can be extended.
class StringProtocol is String {
   construct new (string) {_string = string}
}

Then one can implement such extensions to string
class EString is StringProtocol {
   toUpper { // upper case _string }
}

if (EString.new("my string").toUpper == "MY STRING") {
  // is uppercase
}

I don't know if this is possible but is just an idea.

You can always create a proxy class, and you can even make it almost a
perfect proxy by overloading is. The only thing you can't fake is the
type interrogation.

The only thing you can't fake is the type interrogation.

Why not?
class StringWrapper {
  construct new(s) { _s = s }
  type { String }
}

AFAIK the compiler populate it so you should not be able to overload it...

It does work (BTW, we should add persistent links to the playground).
It's just a normal method on Object, but you can override it.

Well, I would say it is an error to allow it. While it has no consequence in the VM, the real way to pretend to be some other class should only be overloading the is operator, that was designed for that purpose.
When entering a foreign function, you have to distinguish between the real thing and a proxy. Allowing to override type does not offer wren code to protect itself from entering foreign functions with bad values.

Ok here are some ideas

http://scg.unibe.ch/archive/papers/Ress11a-Talents.pdf
http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf

Solving extending built in classes without subclassing can be achieved by using Traits and Talents.
This would need:

A mechanism to add functions or properties to a class in runtime

A modified algorithm for scope resolution that considers runtime added properties or functions

Adding traits
First we need to add a container to the class. This is an example with String. can be added to the Object class.
class String is Sequence {

 // traits are extensions at the class level
  static traits {
     if (!__traits) {
        __traits = {}
     }
    return __traits
  }

 // talents are similar to traits, but at instance level
 static talents {
   if (!__talents) {
      __talents = {}
   }
   return __talents
 }

}

A trait can be a raw value or a function. If is a function it would receive the class as the first param, other params as an array for the second params.
A talent can be a raw value or a function. If is a function it would receive the instance as the first param, other params as an array for the second param.

Example
Lets add a reverse talent to a String.
// Add a reverse method to the talents
String.talents["reverse"] = Fn.new {|instance| instance[-1..0]}

// Lets use it
var myString = "1234".reverse() // expect: 4321

// Lets add a trait that just returns abc
String.traits["abc"] = "abc"

System.print(String.abc) // expect: abc

Scope Resolution
For this to work it would need a new search inside talents or traits before not found error.
Trait is a function

Search for the expected scope resolution

If not found and is using a class method. Then look inside the traits map for a key with the same name.

If the value inside the key is a function then call it passing the class as the first param and the other params

Return the value from the function

Trait is a value

Search for the expected scope resolution

If not found and is using a class property. Then look inside the traits map for a key with the same name.

If the value inside the key is a value. Then just return it.

Talent is a function

Search for the expected scope resolution

If not found and is using an instance method. Then look inside the talents map for a key with the same name.

If the value inside the key is a function then call it passing the class as the first param and the other params

Return the value from the function

Trait is a value

Search for the expected scope resolution

If not found and is using a class property. Then look inside the traits map for a key with the same name.

If the value inside the key is a value. Then just return it.

This strangely looks like an ECS on steroid, and scope resolution seems over complicated. In particular I don't know how it can solve forward declared traits scope lockups, since scoping seems implies the knowledge of the layout of the trait (unless I'm misunderstanding things).

I will close this since it may need futher development.
I think a good solution for this is the proxy class https://github.com/wren-lang/wren/issues/993#issuecomment-827377311
Or value objects https://en.wikipedia.org/wiki/Value_object

Just a couple of final though. And I don´t know if this is feasible.
Just having an static dictionary for traits. No fancy checks or boilerplate.
class TraitTest {
  static trait(key) {
    return TraitTest.traits[key]
  }

  static trait(key, value) {
      TraitTest.traits[key] = value
  }

  static traits {
    if (!__traits) {
      __traits = {}
    }
    return __traits
  }
}

TraitTest.trait("hello", Fn.new{System.print("World")})
TraitTest.trait("hello").call()

With this you can extend the core classes withouth inheritance.
class String {
  static trait(key) {
    return String.traits[key]
  }

  static trait(key, value) {
      String.traits[key] = value
  }

  static traits {
    if (!__traits) {
      __traits = {}
    }
    return __traits
  }
}

class StringTraits {
  static init() {
    String.trait("hello", Fn.new{System.print("World")})
  }

  static hello() {
    return String.trait("hello").call()
  }
}

StringTraits.init()
StringTraits.hello()


Eat the Fruit Multiplayer

Here's another multiplayer game that we can post on the Home Page on the Multiplayer game row -

Eat the Fruit Multiplayer - https://arcade.makecode.com/S73249-29024-14612-80286
Also, could someone look this over to make sure the code is correct before posting?

This is awesome! Code looks good to me. Wherever the code has to if/else across all the players, we should think about providing a block for what they're doing. For example, a "sprite overlaps player" handler would have been useful here.

From: Jacqueline Russell @.>
Sent: Monday, May 8, 2023 11:25 AM
To: microsoft/pxt-arcade @.>
Cc: Subscribed @.***>
Subject: [microsoft/pxt-arcade] Eat the Fruit Multiplayer (Issue #5885)
Here's another multiplayer game that we can post on the Home Page on the Multiplayer game row -
[image]https://user-images.githubusercontent.com/22108954/236901498-5d4a4a3a-509f-4b4a-b7a6-b17fa946d904.png
Eat the Fruit Multiplayer - https://arcade.makecode.com/S73249-29024-14612-80286
Also, could someone look this over to make sure the code is correct before posting?
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/pxt-arcade/issues/5885 or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC443J37G35LA74DNIUG76LXFE3DHBFKMF2HI4TJMJ2XIZLTSSBKK5TBNR2WLJDUOJ2WLJDOMFWWLO3UNBZGKYLEL5YGC4TUNFRWS4DBNZ2F6YLDORUXM2LUPGBKK5TBNR2WLJLJONZXKZNENZQW2ZNLORUHEZLBMRPXI6LQMWBKK5TBNR2WLKRRGE2TANJVGI4DSN5ENZQW2ZNJNBQXGX3MMFRGK3ECUV3GC3DVMWSHI4TVMWSG4YLNMWXHOYLUMNUF6YLDORUXM2LUPGWHG5LCNJSWG5C7OR4XAZNFJFZXG5LFUZ2G64DJMNZZHAVEOR4XAZNKOJSXA33TNF2G64TZUV3GC3DVMWUTCMJXG43DOMJRG2BKI5DZOBS2K2LTON2WLJLWMFWHKZNKGE3TAMBXGE2DMMRXQKSHI6LQMWSWYYLCMVWKK5TBNR2WLKRRGE2TANJVGI4DSN5HORZGSZ3HMVZKMY3SMVQXIZI.
You are receiving this email because you are subscribed to this thread.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Three backticks(```) at the start of new line causes paragraphs after all treated as code

When I was meant to create inline code block at the start of new line, situation descripted in title happened. Looks like the pakage is looking for another group of 3 backticks at the start of new line to treat content between as code block.

I think I should use single backtick pairs for inline code block. And that works. Sorry :stuck_out_tongue_closed_eyes:


Allow user to pass in service name for naming threads

Also removed the long deprecated public constructor.

minor nit. otherwise LGTM 👍

Build passed. Squash and merge.


Update storage-account-upgrade.md

Although accountname is an alias of name in Set-AzStorageAccount - it is listed in the cmdlet definition as the "name" parameter.
Set-AzStorageAccount [-ResourceGroupName] <string> [-Name] <string> [-Force] [-SkuName <string>] [-AccessTier <string>] [-CustomDomainName <string>] [-UseSubDomain <bool>] [-Tag <hashtable>] [-EnableHttpsTrafficOnly <bool>] [-StorageEncryption] [-AssignIdentity] [-NetworkRuleSet <PSNetworkRuleSet>] [-UpgradeToStorageV2] [-EnableAzureActiveDirectoryDomainServicesForFile <bool>] [-EnableLargeFileShare] [-AllowBlobPublicAccess <bool>] [-MinimumTlsVersion <string>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]

@anwather : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@anwather - Thanks for making that fix!
#sign-off


add --require cli option

It is still quite confusing how to use eyeglass, and I guess part of the problem is that it is not supported by the node-sass cli.
You might argue that this does not belong here. I had first tried to create an eyeglass cli that would mirror node-sass. But that would be a lot of code duplication. The best argument against including this would be if there were other libraries like eyeglass. Obviously we can not add options for all of them. But as far as I know, there is only this one.

I'd rather that node-sass have a public api that could allow projects like eyeglass to automatically load themselves if they conform to that api.
Tho, I guess that's basically the feature that eyeglass gives to node-sass so ¯_(ツ)_/¯

IMHO

It is still quite confusing how to use eyeglass

This is a problem with the eyeglass documentation. It focuses heavily on assets, integrations, and custom function but lacks a good getting started guide. This was something I'd previously hoped to resolve but my plate is very full.

it is not supported by the node-sass cli

I'm not sure these concerns overlap. It's not clear to me what to expect from an --eyeglass flag.

You might argue that this does not belong here

I don't believe this belong in node-sass.

if there were other libraries like eyeglass

I know there is at least sassport. I'm also aware of a handful of projects that integrate node-sass.

I had first tried to create an eyeglass cli

This is what I would have expected.

I'd rather that node-sass have a public api that could allow projects like eyeglass to automatically load themselves if they conform to that api.

I'm not sure what this would look like. We do lack something equivalent to Sass's --require option which might make sense.

We have previously discussed some kind of .sassrc file for configuring custom functions and importers. The idea has come up a few time but didn't get enough traction.

Thanks for the quick and extensive feedback!
After thinking about this again, I now believe that the focus is actually not that much on eyeglass, but on package managing: It feels as eyeglass could be to node-sass what npm is to node. In that regard it is also different from sassport.

We have previously discussed some kind of .sassrc file for configuring custom functions and importers.

I thought about this and it seemed like a good idea at first, but then I realised it would be like re-implementing grunt. I really have no intention of turning node-sass into a fully featured build tool.
I guess the problem is really that node-sass has no build-in support for package managing. Eyeglass solves that problem, but it does not work with standard node-sass cli.
I am not sure what to make of this yet. I will try to look into the autoloading idea mentioned by chriseppstein.

Just a quick idea to hear what you think of this: What if the option was not called --eyeglass but --npm?

We do lack something equivalent to Sass's --require option which might make sense.

I tried this one now. node-sass --require eyeglass should do the same as node-sass --eyeglass did before.

I did not get any feedback for two month now. Is there anything I can do to get this merged?

Sorry for keeping you waiting @xi
I remember I was also very confused trying to start with eyeglass. Can you give me short a short example how things get easier? Maybe we could add it the docs.

Running node-sass --require eyeglass style.scss will use eyeglass to resolve dependencies. But this could also be used as a hook for other tools.

I am not sure why appveyor fails. Looks unrelated to me.


Lungs cannot be detected correctly

Hi,
Thanks for publishing this library, it is super helpful!
One issue I found is that when dealing with a specific data (see attached), it does not return the images correctly. Looks like there is some bug somewhere.

I gave it a flower as input. It still gives out a positive result


lazy promises

I would love promises to be lazy and not get executed on creation - but instead on then.
I know this is not part of the spec - but I still find it very useful.
Seems like there are others interested in this, too. There is a work-around on SO and someone else created a lib for it.
Would love to hear some thoughts on this.

Don't interrupt this as +/-[1|0], but having the .then() be the executioner of the promise seems misleading.
I think a better keyword would be .exec().

I'm pretty confused as to the purpose/concept of this. You would declare a new Promise (which is essentially a function execution), but not execute it?
Why not create a function, then execute it like normal when you need it?
Can you provide general use cases where this feature would be required?

Indeed - an exec would be much clearer. Would also be a fine option in my opinion.
As a use case: I have list of objects. These objects have very expensive function.
{
  load: function() { console.log('loaded') }
}

The function will not necessarily be called on every object. When the function gets called the result should be cached. Given there is other async code that uses Promises, it would be great if one could just call object.load.then(...). It would be straightforward to stick a Promise in there as a possible future.
{
  load: new Promise(function(){ console.log('loaded') })
}

This would work very seamlessly with the other code. The only problem: Creating a Promise executes a Promise.
Thing is: That's not the spec and I wouldn't know how to add it API wise. I only know that the immediate execution (be it the most common use case) suddenly feels quite awkward. Working around it even more so.

https://gitter.im/petkaantonov/bluebird would be a better venue for this discussion.
Lazy .then()  is particularly nice for database query builders when combined with async/await:
const roles = await db.select().from("roles");
console.log(roles);

const users = await db.select().from("users").where({active: true});
console.log(users);

When things feel wrong, it's usually because it is.
Why wouldn't you have a function declaration:
function loadPromise(){
  return new Promise(...);
}

Object.load = function(){
  return loadPromise();
};

That's essentially what you want, right?

@tflanagan that creates a new Promise on every load call and does not make use of value caching. I sure can add caching myself - but that's not the point.
In my use case it's also not the same load function for every object (and adding to Object also feels wrong anyway).
Didn't know about the gitter room. Sure can join there.

Normally I cache the promise:
{
  load() { if (!this._cached) this._cached = getPromise(); return this._cached; }
}

You can write a wrapping function that does that
function cached(field, fn) {
  return function() {
    if (!this[field]) this[field] = fn.call(this)
    return this[field]
  }
}

{
  load: cached('myValue', function() { return getPromise(); })
}

Sorry, I used Object, should've used ``foobar```.
I see what you're getting at, and I see the value in it, but not in adding it to core. I'm -0.
There is already a userland package that does this, it doesn't get many downloads, so the need for this seems minimal.
The wrapper functions themselves aren't too difficult and I can see them being case specific for every user. Caching techniques, execution techniques, etc...

Yeah - I didn't think it was for the core. Just thought I bring it up as a discussion as in my very case it seems quite useful.
But I've come up with a wrapper that works OK for me.
function LazyPromise(fn) {

  var promise = null;
  var fn = fn;

  this.then = function() {
    promise = promise || new Promise(fn);
    return promise.then.apply(promise, arguments);
  }

  this.isFulfilled = function() {
    return promise != null;
  }
}

module.exports = LazyPromise;

What user land package or you referring to? The one I linked?

Please check out my library , it's provide lazy, cancellable and retriable Actions with Promise style api, and from benchmark, it's the only library on earth faster than bluebird.

Promise is not about the action it will run, it's a proxy to the value produced in future, so a lazy Promise basically is just a function return Promise, which may not be what you want.

@tcurdt, @tflanagan, @phpnode, @spion
To give this idea a body, I came up with the following example, as an illustration:
function LazyPromise(cb) {
    this.cb = cb;
    this.exec = function () {
        return new Promise(this.cb);
    };
    this.then = function (func) {
        return this.exec().then(func);
    };
}

var test = new LazyPromise(function (resolve, reject) {
    resolve("test");
});

// initiate lazy promise:
test.then(function (data) {
    console.log(data);
});

Let me know, please, if illustrates the idea well.

So every time you call then, you're creating a new promise using exec, which is exactly what OP want to avoid : )
When you want a promise to be lazy, you're asking promise to remember the underline action and wait your command, but  that's not what a promise is intended to abstract, basically what a promise does are:

schedule the action to be fired.
if the action are running, save any callback who want the value .
when the action finishes, memorize the value it produced, feed the value to previous saved callbacks.
if any future callbacks want to use this value, just use the memorized value.

So after all the process, the underline action will be forgotten and be garbage collected eventually, the value produced in future is the core of promise abstraction.
Generally speaking, a promise doesn't even care when the underline action are scheduled as long as it will be fired some point in future, and that's part of the reason why a lot of promise libraries have different performance characteristic. if you want an action to be saved and waiting for your command, you're not going to use promise because it's simple not designed to do this job.

Note that what described above is what a promise does internally and can't be changed by building any wrapper on it, that's what Promise A+ designed it to be, so please consider add some method on prototype which have the access to internal state if you really want to add manual scheduling control.

I don't think this would belong anywhere in Bluebird - it's not really a promise-thing anymore than a general async challenge.
I wrote a package for lazy-execution of an async job (and reuse of it's promise so that it will never run twice): https://www.npmjs.com/package/smoop#using-promises
Internally it is using Bluebird, but it works with callbacks as well. The async job can be either callback taking or promise returning as well.
Example:
var smoop = require('smoop');

var myQuery = smoop(function(){
    return queryTheDatabase();
});

// return now and queryTheDatabase is never called

myQuery().then(function( result ){
    console.log(result);
});

// queryTheDatabase is called

It is pretty simple (63 SLOC) and has options for expiring the result or continuously refreshing it.

Instead of passing a lazy promise, you can try passing a function that returns an eager promise which has the same effect.

Hi
What do you think about this way ? Just for feedback/better way.
Promise.PromiseLazy = function(func, args, opts){opts=opts||{};
	var PromiseLazy = function(){
		return func.apply(opts.cxt, args)
	}
	PromiseLazy.then = function (resolve, reject) {
		return PromiseLazy().then(resolve, reject);
	}
	PromiseLazy.catch = function (reject) {
		return PromiseLazy().catch(reject);
	}
	return PromiseLazy;
}

Then we use it like this
Primise.PromiseLazy(getPromise, [123])
// Also working
.then(console.log).catch(console.log)
// OR
.then(console.log, function (err) { console.log('Got Error', err); })

// OR
Primise.all([
	Primise.PromiseLazy(getPromise, [123])
	,Primise.PromiseLazy(getPromise, [123])
])
.then(console.log)
.catch(function (err) { console.log('Got Error', err); })

@petkaantonov

Instead of passing a lazy promise, you can try passing a function that returns an eager promise which has the same effect.

Not sure I can follow. What's an "eager promise"? And won't that also be yet another fresh promise instance on calling it twice?


Accordion - Elements must only use allowed ARIA attributes

Description of the issue
Axe DevTools reports "ARIA attribute: aria-labelledby is not well supported. Use a different role attribute or element."
Element location
#accordion-default-content-1
Need to ensure ARIA attributes are allowed for an element's role
Steps to reproduce the issue
Run the accessibility checker with an expanded accordion
Actual vs expected behaviour
Error should not be reported for the expanded accordion
Environment (where applicable)
GOV.UK Frontend v3.14.0
https://design-system.service.gov.uk/components/accordion/default/index.html

Suggestion - add role="region" to the div.govuk-accordion__section-content

          Writing well for the web

This is the content for Writing well for the web.

Adding aria-labelledby to a
 with no explicit role is explicitly disallowed by the 'ARIA in HTML' specification.
Unless we have good evidence that it's useful to make the accordion sections landmark regions (in which case we should probably make them into
s), we should just remove the aria-labelledby attribute entirely.
(Relevant discussion on the use of
s in a GDS Way PR: https://github.com/alphagov/gds-way/pull/781)

This also occurs in axe in Chrome with a collapsed accordion now that hidden="until-found" is used, for info.

Hi @36degrees, I've taken a look at this issue and if everything mentioned in this Github issue is accurate, I think this is a WCAG failure and something we should fix.
This is my theory as for how it's currently failing:

This is an incorrect implementation of WAI-ARIA 1.1 and a failure of WCAG success criterion 4.1.2 Name, Role, Value.

For anyone watching this thread, let me know if you think I've misinterpreted the situation 👍

If this is a WCAG failure, I'd like to add this to our accessibility statement as a known piece of 'non-accessible content', which is the name of the section where we record accessibility issues which constitute failures of WCAG 2.1 AA. It would be noted as a failure in the GOV.UK Frontend codebase and not one of our website products.
This is my drafted note:

The accordion component is currently using an aria-labelledby ARIA attribute on an unsupported
 element. This is an incorrect implementation of WAI-ARIA 1.1 and a failure of WCAG success criterion 4.1.2 Name, Role, Value. We plan to fix this within 2023. Track our progress on the GitHub issue: Accordion - Elements must only use allowed ARIA attributes.

I didn't personally assess it as a failure of 4.1.2, the failure under 4.1.2 is reported by axe DevTools Here's the explainer page from axe DevTools: https://dequeuniversity.com/rules/axe/4.6/aria-allowed-attr?application=AxeChrome
If we doubt that I could do a more thorough double-check.

It's going to catch quite a range of issues, some of which by its own description have 'no effect on the accessibility'. Definitely some of the issues it will catch might mean you fail 4.1.2, but I don't think there's a direct correlation.
Looked at another way, unless I'm missing something, I think the success criterion still holds 'true' despite the incorrect use of aria-labelledby?

For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies

I still agree with fixing it, just not sure it needs to go in the statement unless we can articulate why it's failing.

Sounds good to me 👍🏻

Hello @davidc-gds, I was about to report this issue when I noticed it's open. FYI I found the reference text that states one must not use aria-labelledby in a div unless a role is set. W3 used capital letters as in MUST NOT in the paragraph this links to: https://www.w3.org/TR/html-aria/#example-elements-with-implicit-aria-roles-which-prohibit-naming-from-authors

I was wondering if there are there any timelines around fixing this bug? Thank you

Hello @davidc-gds, I was about to report this issue when I noticed it's open. FYI I found the reference text that states one must not use aria-labelledby in a div unless a role is set. W3 used capital letters as in MUST NOT in the paragraph this links to: https://www.w3.org/TR/html-aria/#example-elements-with-implicit-aria-roles-which-prohibit-naming-from-authors

Hey @eschweitzer78 thanks for locating the text in the 'ARIA in HTML' specification!
At this point, we've added this to our accessibility statement under the category 'Other identified and tracked accessibility concerns'. We still don't have evidence of this being a true WCAG 2.1 AA fail, but it is definitely an incorrect implementation according to the 'WAI-ARIA 1.1' specification. We can now also count it as conflicting with the 'ARIA in HTML' specification, as you've identified.

Hi @stephbatliner thanks for checking in! In our accessibility statement we've set a timeline that says "We plan to fix this within 2023". I don't have a more precise timeline at the moment, but I'll see about resurfacing this.

Adding aria-labelledby to a
 with no explicit role is explicitly disallowed by the 'ARIA in HTML' specification.
Unless we have good evidence that it's useful to make the accordion sections landmark regions (in which case we should probably make them into
s), we should just remove the aria-labelledby attribute entirely.
(Relevant discussion on the use of
s in a GDS Way PR: alphagov/gds-way#781)

Hey @36degrees now that that GDS Way piece has been resolved, is there anything we can learn from that work?
Here's the updated guidance on region landmarks:
https://gds-way.cloudapps.digital/manuals/programming-languages/html.html#region-landmarks

This has broken automated axe testing with the release of aws-core-* 4.8.0 gems. We now get a failing response for accordion sections with aria-labelledby attribute cannot be used on a div with no valid role attribute
Manually adding a role into line https://github.com/alphagov/govuk-frontend/blob/f837f9c003a50f9e64a2fe3476be91e6e228f318/packages/govuk-frontend/src/govuk/components/accordion/template.njk#L54
Like so:

ensures the tests pass

We've just received the Axe 4.8 update for Puppeteer and can confirm our own tests now log the issue:
https://github.com/alphagov/govuk-frontend/actions/runs/6531831782/job/17733984594
@dav-idc Before I add a known Axe exception, are we still confident this is improper usage versus a failure?
Otherwise, do we have a suggested fix we're confident in?
Might be quicker

@colinrotherham here's a message from @36degrees in a duplicate GitHub issue that came up a couple weeks ago:

We're busy working on the next major release at the minute but I'm hoping we'll be able to resolve this issue soon. As far as I know although it's flagged by Axe we're not aware of any problems it would cause users, but it has come up quite a lot so it'd be good to get it fixed anyway!

We lis this in our accessibility statement and say "We plan to fix this within 2023." But as far as when it's fixed and how it interacts with release planning, that's up to devs (you, Ollie, others)

Thanks @dav-idc
I'm happy to add a known exception like we do with the Radios Axe rule for https://github.com/alphagov/govuk-frontend/issues/979
For when this gets picked up would you suggest either we:

Move to
 elements?
Add the role="region" attribute?
Remove aria-labelledby attribute?

I would want @36degrees to weigh in if he has capacity, but I also figured I may as well just try and see what value we're currently getting out of the aria-labelledby attribute.
As far as I can tell when testing quickly with NVDA and JAWS, the `aria-labelledby attribute on the hidden content div area doesn't change NVDA or JAWS annoucements for:

navigating sequentially into the content area using up and down areas
navigating between focusable elements inside and outside the content area using tab and shift-tab

So basically... I don't know what adding aria-labelledby is actually doing for us in practical terms. 🤷
But I'd want someone else to test and confirm.

We did go ahead with the Axe 4.8 update for Puppeteer last week
The violation rule changed to ~aria-allowed-attr~ aria-prohibited-attr but still excluded as a known issue

In case this issue is currently stuck because:

don't want to use

don't want to remove aria-labelledby

You could explore using
 instead of
.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article
Based on the HTML spec for the article element, it seems like an acceptable use in many accordion cases, but probably not fully appropriate for all.
Might still be a decent calculated risk if there's hesitation to use section and hesitation to remove aria-labelledby? Not sure if that's the piece holding this up though.


Update /events endpoint to return wrp struct

/events should return a list of wrp.SimpleEvents
related to:
https://github.com/Comcast/codex/issues/27
https://github.com/Comcast/codex-svalinn/issues/37
https://github.com/Comcast/wrp-go/issues/12

Part of this change includes using https://github.com/Comcast/wrp-go


Need an api GetDbSize

In some usercases, we need to get the totol file size of leveldb, and we need to get this information in our C++ programs directly.
But there is no function in db.h that provide total file size of all level files.
I would like to create a PR to fix this. Please help to review.
Thanks.

Fixed in PR: 319

We'd like to keep the leveldb API small. Any program can easily calculate the database size by stat'ing the files in the leveldb database directory - and do so more accurately than this function which omits logs, etc. leveldb::DB::GetApproximateSizes() is warranted given that it supports a key range, but this looks easy to implement within the client. Please let me know if I've overlooked anything.

Can you explain why leveldb::DB::GetApproximateSizes isn't sufficient? It measures the disk space of the key range (potentially all keys) and ignores files not in the db.

Closing because it is unclear why leveldb::DB::GetApproximateSizes and filesystem size aren't sufficient. Feel free to reopen if necessary.


api: add shellhub envs package

I applied for the new PR, please rebase this on top of the current master branch.


Help!

OPS Build status updates of commit 0612593:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/enterprise-graph-docs-pr, working directory: W:\j5go-s, target branch: master, target branch commit: d08df34b00ffb4b6ca3c9741492656cbcddd7009, source branch: 3638ce60ebef810876cd6fbb8bd88ec9/master, source branch commit: .

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

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
AcrolinxScore
LowestCategoryScore
Issues
Scorecard
Processed

enterprise-graph/api-overview.md
78
44
5
link
:white_check_mark:

enterprise-graph/conflation-concepts.md
76
39
34
link
:white_check_mark:

enterprise-graph/conflation-model-tutorial.md
82
56
19
link
:white_check_mark:

enterprise-graph/conflation-validation-tutorial.md
100
100
0
link
:white_check_mark:

enterprise-graph/deleting-your-ontology.md
92
73
3
link
:white_check_mark:

enterprise-graph/enterprise-graph-use-cases.md
75
51
19
link
:white_check_mark:

enterprise-graph/graph-queries-tutorial.md
80
59
9
link
:white_check_mark:

enterprise-graph/ingestion-tutorial.md
77
45
12
link
:white_check_mark:

enterprise-graph/input-data-concepts.md
80
41
7
link
:white_check_mark:

enterprise-graph/ontology-concepts.md
77
45
25
link
:white_check_mark:

enterprise-graph/quickstart.md
73
47
38
link
:white_check_mark:

enterprise-graph/schema-map-concepts.md
75
48
30
link
:white_check_mark:

enterprise-graph/schema-map-tutorial.md
79
36
7
link
:white_check_mark:

enterprise-graph/source-schema-concepts.md
78
40
23
link
:white_check_mark:

enterprise-graph/source-schema-tutorial.md
78
53
6
link
:white_check_mark:

More info about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues

OPS Build status updates of commit 8593bf2:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/enterprise-graph-docs-pr, working directory: W:\40ub-s, target branch: master, target branch commit: d08df34b00ffb4b6ca3c9741492656cbcddd7009, source branch: 3638ce60ebef810876cd6fbb8bd88ec9/master, source branch commit: .

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

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
AcrolinxScore
LowestCategoryScore
Issues
Scorecard
Processed

enterprise-graph/api-overview.md
78
44
5
link
:white_check_mark:

enterprise-graph/conflation-concepts.md
76
39
34
link
:white_check_mark:

enterprise-graph/conflation-model-tutorial.md
82
56
19
link
:white_check_mark:

enterprise-graph/conflation-validation-tutorial.md
100
100
0
link
:white_check_mark:

enterprise-graph/deleting-your-ontology.md
92
73
3
link
:white_check_mark:

enterprise-graph/enterprise-graph-use-cases.md
75
51
19
link
:white_check_mark:

enterprise-graph/graph-queries-tutorial.md
80
59
9
link
:white_check_mark:

enterprise-graph/ingestion-tutorial.md
77
45
12
link
:white_check_mark:

enterprise-graph/input-data-concepts.md
80
41
7
link
:white_check_mark:

enterprise-graph/ontology-concepts.md
77
45
25
link
:white_check_mark:

enterprise-graph/quickstart.md
73
47
38
link
:white_check_mark:

enterprise-graph/schema-map-concepts.md
75
48
30
link
:white_check_mark:

enterprise-graph/schema-map-tutorial.md
79
36
7
link
:white_check_mark:

enterprise-graph/source-schema-concepts.md
78
40
23
link
:white_check_mark:

enterprise-graph/source-schema-tutorial.md
78
53
6
link
:white_check_mark:

More info about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues

Acrolinx Scorecards
A minimum Acrolinx score of 80 is required.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
AcrolinxScore
LowestCategoryScore
Issues
Scorecard
Processed

enterprise-graph/api-overview.md
78
44
5
link
:white_check_mark:

enterprise-graph/conflation-concepts.md
76
39
34
link
:white_check_mark:

enterprise-graph/conflation-model-tutorial.md
82
56
19
link
:white_check_mark:

enterprise-graph/conflation-validation-tutorial.md
100
100
0
link
:white_check_mark:

enterprise-graph/deleting-your-ontology.md
92
73
3
link
:white_check_mark:

enterprise-graph/enterprise-graph-use-cases.md
75
51
19
link
:white_check_mark:

enterprise-graph/graph-queries-tutorial.md
80
59
9
link
:white_check_mark:

enterprise-graph/ingestion-tutorial.md
77
45
12
link
:white_check_mark:

enterprise-graph/input-data-concepts.md
80
41
7
link
:white_check_mark:

enterprise-graph/ontology-concepts.md
77
45
25
link
:white_check_mark:

enterprise-graph/quickstart.md
73
47
38
link
:white_check_mark:

enterprise-graph/schema-map-concepts.md
75
48
30
link
:white_check_mark:

enterprise-graph/schema-map-tutorial.md
79
36
7
link
:white_check_mark:

enterprise-graph/source-schema-concepts.md
78
40
23
link
:white_check_mark:

enterprise-graph/source-schema-tutorial.md
78
53
6
link
:white_check_mark:

More info about Acrolinx

Install Acrolinx locally for VSCode
False positives or issues

OPS Build status updates of commit 950c29b:
:warning: Validation status: warnings

File
Status
Preview URL
Details

enterprise-graph/graph-queries-tutorial.md
:warning:Warning

Details

enterprise-graph/input-data-concepts.md
:warning:Warning

Details

enterprise-graph/ontology-concepts.md
:warning:Warning

Details

enterprise-graph/source-schema-concepts.md
:warning:Warning

Details

enterprise-graph/source-schema-tutorial.md
:warning:Warning

Details

.acrolinx-config.edn
:white_check_mark:Succeeded

enterprise-graph/api-overview.md
:white_check_mark:Succeeded

enterprise-graph/conflation-concepts.md
:white_check_mark:Succeeded

enterprise-graph/conflation-model-tutorial.md
:white_check_mark:Succeeded

enterprise-graph/conflation-validation-tutorial.md
:white_check_mark:Succeeded

enterprise-graph/deleting-your-ontology.md
:white_check_mark:Succeeded

enterprise-graph/enterprise-graph-use-cases.md
:white_check_mark:Succeeded

enterprise-graph/ingestion-tutorial.md
:white_check_mark:Succeeded

enterprise-graph/project-planning.md
:white_check_mark:Succeeded

enterprise-graph/quickstart.md
:white_check_mark:Succeeded

enterprise-graph/schema-map-concepts.md
:white_check_mark:Succeeded

enterprise-graph/schema-map-tutorial.md
:white_check_mark:Succeeded

enterprise-graph/graph-queries-tutorial.md

Line 44: [Warning] Invalid file link:(~/media/graph-queries-tutorial/entity-details-view.png).

enterprise-graph/input-data-concepts.md

Line 27: [Warning] Invalid file link:(~/../ingesting-data.md).
Line 27: [Warning] Invalid file link:(~/../schema-mapping.md).
Line 27: [Warning] Invalid file link:(~/../creating-your-ontology.md).
Line 27: [Warning] Invalid file link:(~/../create-source-schema.md).

enterprise-graph/ontology-concepts.md

Line 20: [Warning] Invalid file link:(~/media/creating-your-ontology/1_ontology_config.png).
Line 99: [Warning] Invalid file link:(~/media/creating-your-ontology/type_values.png).
Line 103: [Warning] Invalid file link:(~/media/creating-your-ontology/relations_tab.png).

enterprise-graph/source-schema-concepts.md

Line 0: [Warning] Invalid file link:(~/schema-map-concepts).
Line 20: [Warning] Invalid file link:(~/media/creating-your-ontology/1_ontology_config.png).
Line 42: [Warning] Invalid file link:(~/media/creating-your-ontology/create_source_schema.png).
Line 58: [Warning] Invalid file link:(~/media/creating-your-ontology/fields_not_mapped.png).

enterprise-graph/source-schema-tutorial.md

[Warning] Author stflanag cannot be recognized in GitHub.

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


Introduce changelog for KEDA

Introduce changelog for KEDA to report new features & deprecations.
Closes #614
FYI @kedacore/keda-owners, when doing releases these need to be updated.

Ideally we don't copy paste from releases as there is a lot of noise in there.
If ok for everybody, then I get rid of the none impacting changes we did such as Correcting release process doc et al.

Thanks @tomkerkhove. removing non impacting changes like that or readme updates sounds good to me


Add support for optionally ignoring rmask

Some cores do not have read mask support for memory accesses, this PR makes it possible to handle them.

That should not be necessary. Simply set rmaks to all-bits-set. As long as you correctly provide the data for all bits in rdata everything should work just fine.
See the mem_rmask checks in rvfi_insn_check.sv: they only require that the core sets at least the required bits in rmask. It's always correct to read more bytes from memory.


Why Pelee?

What's the meaning of Pelee? Abbreviation for ?

No. I would be grateful if you could help with the meaning of the appropriate acronym. I am not very good at naming. The reason why this model is called Pelee is mainly that I was on vacation at Point Pelee Park when I started this job. Another reason is that Pelee sounds very much like Chinese lightning, which is often used in Chinese to describe the fast speed. Fast is exactly the main goal that this model hopes to achieve.

霹雳！Great!
                            tlzjay

<EMAIL_ADDRESS>

    Signature is customized by Netease Mail Master

On 12/29/2018 11:52, Robert J. Wang wrote: No. I would be grateful if you could help with the meaning of the appropriate acronym. I am not very good at naming. The reason why this model is called Pelee is mainly that I was on vacation at Point Pelee Park when I started this job. Another reason is that Pelee sounds very much like Chinese lightning, which is often used in Chinese to describe the fast speed. Fast is exactly the main goal that this model hopes to achieve.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/Robert-JunWang/Pelee","title":"Robert-JunWang/Pelee","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/Robert-JunWang/Pelee"}},"updates":{"snippets":[{"icon":"PERSON","message":"@Robert-JunWang in #56: No. I would be grateful if you could help with the meaning of the appropriate acronym. I am not very good at naming. The reason why this model is called Pelee is mainly that I was on vacation at Point Pelee Park when I started this job. Another reason is that Pelee sounds very much like Chinese lightning, which is often used in Chinese to describe the fast speed. Fast is exactly the main goal that this model hopes to achieve."}],"action":{"name":"View Issue","url":"https://github.com/Robert-JunWang/Pelee/issues/56#issuecomment-450463086"}}}
[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/Robert-JunWang/Pelee/issues/56#issuecomment-450463086",
"url": "https://github.com/Robert-JunWang/Pelee/issues/56#issuecomment-450463086",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]

No. I would be grateful if you could help with the meaning of the appropriate acronym. I am not very good at naming. The reason why this model is called Pelee is mainly that I was on vacation at Point Pelee Park when I started this job. Another reason is that Pelee sounds very much like Chinese lightning, which is often used in Chinese to describe the fast speed. Fast is exactly the main goal that this model hopes to achieve.

Great.


pseudocode suggests that replaced sequence is longer than necessary

The pseudocode suggest as if the proposed instructions were replacing 4 instruction sequence:
	beqz rs2, 1f
	mv rd, rs1
	j 2f
1:
	mv rd, zero
2:

even though it can be implemented in 3 instructions:
	mv rd, zero
	beqz rs2, 1f
	mv rd, rs1
1:

Of course it doesn't reflect exactly what those instructions are doing, but there is nowhere any mention about the sequence those instructions replace, so the pseudocode defacto takes its role.

This pseudocode is intended to clarify the semantic dependencies on the input operands: the zero-result is predictable from the value of $rs2.
Also note that the shorter sequence proposed does not work for regno(rd) == regno(rs1).

/close

Also note that the shorter sequence proposed does not work for regno(rd) == regno(rs1).

then the inverted sequence should work:
	mv rd, rs1
	bnez rs2, 1f
	mv rd, zero
1:

but in case of  regno(rd) == regno(rs1) compilers would emit 2 instruction sequence instead:
	bnez rs2, 1f
	mv rd, zero
1:

I think that "equivalent sequences" could be covered by other chapter. Table in 2.1 is a one good place.


calicoctl version mismatch when installed via homebrew channel only - Linux AMD64 tested only

This is an interesting one that I could not see reported here on any other GH issue so far - Seems like the package containing calicoctl v3.20.0 (~HEAD) has been wrongly compiled without the leading v in front of the sem. version.
Expected Behavior

Current Behavior
Cannot use calicoctl directly installed from homebrew.
Steps to Reproduce (for bugs)
A shell snippeter of what I did on my Ubuntu WSL2 machine for AMD64.

❯ brew install calicoctl
==> Downloading https://ghcr.io/v2/linuxbrew/core/calicoctl/manifests/3.20.0
Already downloaded: /home/msoutullo/.cache/Homebrew/downloads/3be9317262546b297e4951fbdeebe22b2728874d6c8448a9d353405cc3737b58--calicoctl-3.20.0.bottle_manifest.json
==> Downloading https://ghcr.io/v2/linuxbrew/core/calicoctl/blobs/sha256:28b2289243cf7308983d3fc0d204eb9d7d8bdf1ec184cdd040bd993bba8e7f3f
Already downloaded: /home/msoutullo/.cache/Homebrew/downloads/c93780ad8f4b834804eabce6b4f9294672f117637df791ac3c3f6dd43392d8e2--calicoctl--3.20.0.x86_64_linux.bottle.tar.gz
==> Pouring calicoctl--3.20.0.x86_64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/calicoctl/3.20.0: 5 files, 41.2MB
❯ calicoctl version
Version mismatch.
Client Version:   3.20.0
Cluster Version:  v3.20.0
 Use --allow-version-mismatch to override.%
❯ brew uninstall calicoctl
Uninstalling /home/linuxbrew/.linuxbrew/Cellar/calicoctl/3.20.0... (5 files, 41.2MB)
❯ curl -Ls https://github.com/projectcalico/calicoctl/releases/download/v3.20.0/calicoctl-linux-amd64 -o calicoctl
❯ chmod +x calicoctl
❯ ./calicoctl version
Client Version:    v3.20.0
Git commit:        38b00edd
Cluster Version:   v3.20.0
Cluster Type:      k8s,kdd,bgp
❯ brew info calicoctl
calicoctl: stable 3.20.0 (bottled), HEAD
Calico CLI tool
https://www.projectcalico.org
Not installed
From: https://github.com/Homebrew/linuxbrew-core/blob/HEAD/Formula/calicoctl.rb
License: Apache-2.0
==> Dependencies
Build: go ✔
==> Options
--HEAD
        Install HEAD version
==> Analytics
install: 15 (30 days), 40 (90 days), 170 (365 days)
install-on-request: 15 (30 days), 41 (90 days), 171 (365 days)
build-error: 0 (30 days)

Your Environment
I've upgraded my on-prem K3s cluster to calico v3.20.0 via custom YAML manifests with two simple modifications on ENV variables to specify cluster CIDR range and calico nodes interfaces (IP_AUTODETECTION_METHOD)

I'm going to close this, since the homebrew packagining isn't maintained by this team and I believe the version checking code is working as expected for releases maintained by us.
Rebuilders beware - use the right version!


string matcher: add ignore_case to StringMatcher

Signed-off-by: Yangmin Zhu<EMAIL_ADDRESS>For an explanation of how to fill out the fields, please see the relevant section
in PULL_REQUESTS.md
Description: add ignore_case to StringMatcher that allows case insensitive exact/prefix/suffix string matching
Risk Level: Low
Testing: Unit Tests
Docs Changes: N/A
Release Notes: N/A
[Optional Fixes #Issue]
[Optional Deprecated:]

This needs to be back-ported to 1.2 and 1.3 but it seems I cannot add the backport/review label according to https://github.com/envoyproxy/envoy/blob/master/RELEASES.md#backports.
@lizan @PiotrSikora Could you approve the backport request? Thank you.

/backport

(that's how you add it)


feat: text-to-sql

adds an ai.description table for semantic descriptions of database objects
"set description" functions for tables, views, columns, functions
event triggers to keep the ai.description up-to-date in the face of DDL operations
event trigger tests
ai.post_restore function to true up oids after a dump/restore
dump/restore test

this PR is now significantly out of date from the development. little point in going through the work to merge.


Backport EventType auto-create tests

Backport following changes from upstream:

Added rekt test for channel event autocreate
Move eventtype rekttest pingsource to experiment
Added rekt test for broker eventtype autocreate
change the deprecated string
rekt test to verify only one EventType created for MTBroker
Generalize description of EventType in CRD.

Introduce midstream scripts for executing experimental reconciler tests.

I would like to port the midstream scripts to release-v1.12 and main as well. But will do it manually.
The branch release-v1.12 already has some of the commits that are included in this PR so the PR there will be shorter.

/test 411-test-e2e-aws-ocp-411

/test 411-test-e2e-aws-ocp-411

/test 411-test-reconciler-aws-ocp-411


When tests run properly, the app prints "Application quit abnormally!"

See e.g. this test run:
https://github.com/beeware/rubicon-java/runs/658309145?check_suite_focus=true
IMHO it's not a showstopper for v0.2.0, but I wanted to flag it in so we don't lose track of it.

(Surely introduced by me recently.)


improve rcc and gpio docs

This adds some documentation to the rcc and gpio documentation to make it clear how to aquire instances of their structs. Similar to what the f1 crate already has.
I don't have access to an f3 at the moment, so some of this may be wrong ;)

I was wondering what one gets from reading those.

The way I tend to read the docs for HALs, and/or how I want people to read them, is to pick some feature they want to use and find a function that accomplishes that.
For example, someone wants to toggle a pin so they find the GPIO struct. The docs there tell you to call the split function, it takes AHB as input. However, the autogenerated docs don't tell you how to get your hand on AHB, which is what this adds.
In the F1 HAL, which I am much more familiar with, I kept running into the problem of not remembering where MAPR comes from. It sounds like it might be RCC, but it is not. For someone who isn't familiar with the crate at all, it would be even more difficult.
A "how to read the docs" section would be nice, but it would require people remembering where each struct comes from. Though perhaps one could link to that section instead of addding a bunch of dp = pac::Peripherals.take everywhere

I see how the RCC docs are debatable. It would be nice if there was a better way to figure out from looking at the docs how a type can be constructed. And there is the potential issue of the docs becoming bloated and repetitive if we document that everywhere.
However, keep in mind that the stm32f3xx-hal is probably the one code base that most embedded Rust beginners interact with very early in their learning curve, since that's what's used by the Discovery book. As such I think it doesn't hurt to err on the side of having "too much" documentation. I would also argue that in general we are pretty far away from having too much documentation ;) As such I welcome this change.

Doc-Improvments are always much appreciated. I feel the same way, that the repetitive comments in the rcc module feel more like fighting against the limitation of documentation generation.
But these additions are rather small and I really appreciate these additions as it is really easy to get lost in the generated documentation. And RCC is the module everyone has to use, when working with this crate, which makes good and comprehensible documentation even more important.

Updated with the suggested length changes (though the last line is still quite long because of the URL.
For now, I added a link to the examples on this repo at the currently released version. This is what I do in the f1 hal as well, though it's not without flaws:

Requires updating on release. All the places where that's required can be found fairly easily using grep v0.4.3 on every release though
Will not be correct when people depend on the git version

Oops, fixed :)

Hey @TheZoq2, there are still two open suggestions, have you seen these? They are pretty nitpicky so I'd be fine with merging as is. Just wanted to make sure you didn't miss them.

I only see one open suggestion which I now fixed, did I miss the other?


Update Ubuntu packages

Hi !
The "python3-pylxd" packages for the Focal, Groovy and Hirsute versions of Ubuntu are still pointing to the 2.2.10
Can you push the latest version to these repositories ?
Thanks :)

We don't maintain the packages in Ubuntu/Debian - you're probably best contacting the Debian maintainers - https://tracker.debian.org/pkg/python-pylxd


"Async call timeout exceeded. Timeout: 1000" error in Telegram web

Describe the bug
Getting "Async call timeout exceeded. Timeout: 1000 " error while SDK initialisation in telegram web app (https://web.telegram.org/k)
To Reproduce
Steps to reproduce the behavior:

import and use SDKProvider component
open mini app in telegram web app

Expected behavior
init should be successful as in android telegram app

Do you open your app inside Telegram?
Do you use the latest version of Telegram app?

This problem previously occurred due to incorrect behavior of Telegram application not supporting Telegram Web Apps methods such as web_app_request_theme or web_app_request_viewport

Seems like telegram K version is not supported, i think that is the issue

Hom is it connected with Telegram for Android?

Solution for your problem is in production. Please, use the latest version of SDK


Support for importing prefunded accounts

Fixes # .
Motivation

Solution

Open questions

Pull Request Test Coverage Report for Build 3667

17 of 21 (80.95%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.03%) to 71.723%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/storage/key_storage.go
12
16
75.0%

Totals

Change from base Build 3523:
0.03%

Covered Lines:
1740

Relevant Lines:
2426

💛  - Coveralls


Changed 'future' processing to use 'sequential'

Using plan('multiprocessing') fails to run in environments (e.g. Windows in an enterprise) where users do not have privileges to open ports on the system firewall (even for internal use).
Ideally, we could introduce a configuration parameter that defaults to multiprocess,  but that can be adjusted during installation by attempting to execute a multiprocess plan and trapping the resulting exception to reset the configuration to sequential processing.  I haven't implemented that - this is a hard-coded change.

I'm going to close this, since #240 uses a configuration parameter rather than hardwiring it.