etcd-cluster version upgrade fails as kubelet fails to restart containers

Upgrading the etcd cluster by changing the TPR's spec.version field causes all etcd pods to change their status from Running to Error. This eventually causes the operator to remove all the members it perceives as being dead and going into disaster recovery mode.
Steps to reproduce:
Kubernetes version: 1.6.4

Create the etcd-operator using the example/deployment.yaml
Create a simple cluster using example/example-etcd-cluster.yaml
Wait until all 3 members are ready, then edit and update the cluster TPR's spec.version field to 3.1.9
The pods will eventually change their status to Error and get removed by the operator

Logs and outputs
Watching the etcd-pods change state from Running to Error. This output was possible by pausing the operator before it could remove any of the dead members.
NAME                             READY     STATUS    RESTARTS   AGE
etcd-operator-3920290006-b43n3   1/1       Running   0          1m
example-etcd-cluster-0000   1/1       Running   0         43s
example-etcd-cluster-0001   1/1       Running   0         27s
example-etcd-cluster-0002   1/1       Running   0         11s
example-etcd-cluster-0000   1/1       Running   0         1m
example-etcd-cluster-0001   1/1       Running   0         1m
example-etcd-cluster-0002   1/1       Running   0         1m
example-etcd-cluster-0000   0/1       Error     0         1m
example-etcd-cluster-0000   0/1       Error     0         1m
example-etcd-cluster-0001   0/1       Error     0         1m
example-etcd-cluster-0002   0/1       Error     0         1m
example-etcd-cluster-0002   0/1       Error     0         1m

etcd-operator logs after the spec update:
time="2017-06-22T18:04:39Z" level=info msg="Finish reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:04:46Z" level=info msg="spec update: from: {3 3.1.8 false <nil> <nil> <nil> <nil> <nil>} to: {3 3.1.9 false <nil> <nil> <nil> <nil> <nil>}" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:04:54Z" level=info msg="Start reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:04:54Z" level=info msg="upgrading the etcd member example-etcd-cluster-0000 from 3.1.8 to 3.1.9" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:04:54Z" level=info msg="finished upgrading the etcd member example-etcd-cluster-0000" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:04:54Z" level=info msg="Finish reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:03Z" level=info msg="Start reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:03Z" level=info msg="upgrading the etcd member example-etcd-cluster-0001 from 3.1.8 to 3.1.9" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:03Z" level=info msg="finished upgrading the etcd member example-etcd-cluster-0001" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:03Z" level=info msg="Finish reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:11Z" level=info msg="Start reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:11Z" level=info msg="upgrading the etcd member example-etcd-cluster-0002 from 3.1.8 to 3.1.9" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:11Z" level=info msg="finished upgrading the etcd member example-etcd-cluster-0002" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:11Z" level=info msg="Finish reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:19Z" level=info msg="Start reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:19Z" level=info msg="Finish reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:27Z" level=info msg="Start reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:27Z" level=info msg="running members: example-etcd-cluster-0001,example-etcd-cluster-0002" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:27Z" level=info msg="cluster membership: example-etcd-cluster-0002,example-etcd-cluster-0001,example-etcd-cluster-0000" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:27Z" level=info msg="removing one dead member" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:27Z" level=info msg="removing dead member \"example-etcd-cluster-0000\"" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:27Z" level=info msg="removed member (example-etcd-cluster-0000) with ID<PHONE_NUMBER>4829008881)" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:27Z" level=info msg="Finish reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=info msg="Start reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=info msg="running members: example-etcd-cluster-0002" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=info msg="cluster membership: example-etcd-cluster-0002,example-etcd-cluster-0001" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=info msg="Disaster recovery" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=error msg="fail to do disaster recovery: no backup policy has been defined." cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=info msg="Finish reconciling" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=error msg="failed to reconcile: no backup exist for disaster recovery" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=error msg="cluster failed: no backup exist for disaster recovery" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=info msg="deleting the failed cluster" cluster-name=example-etcd-cluster pkg=cluster
time="2017-06-22T18:05:35Z" level=warning msg="fail to handle event: ignore failed cluster (example-etcd-cluster). Please delete its TPR" pkg=controller
time="2017-06-22T18:05:35Z" level=info msg="deleted pod (example-etcd-cluster-0001)" pkg=gc
time="2017-06-22T18:05:35Z" level=info msg="deleted pod (example-etcd-cluster-0002)" pkg=gc
time="2017-06-22T18:05:35Z" level=info msg="deleted service (example-etcd-cluster)" pkg=gc
time="2017-06-22T18:05:35Z" level=info msg="deleted service (example-etcd-cluster-client)" pkg=gc

Events for the pod example-etcd-cluster-0000:
Events:
  FirstSeen	LastSeen	Count	From							SubObjectPath		Type		Reason		Message
  ---------	--------	-----	----							-------------		--------	------		-------
  1m		1m		1	default-scheduler								Normal		Scheduled	Successfully assigned example-etcd-cluster-0000 to ip-10-0-69-114.us-west-2.compute.internal
  1m		1m		1	kubelet, ip-10-0-69-114.us-west-2.compute.internal	spec.containers{etcd}	Normal		Pulled		Container image "quay.io/coreos/etcd:v3.1.8" already present on machine
  1m		1m		1	kubelet, ip-10-0-69-114.us-west-2.compute.internal	spec.containers{etcd}	Normal		Created		Created container with id 00415e63953382215b7793ce1ced5e01d53732331405fa724faeb1f697b1c838
  1m		1m		1	kubelet, ip-10-0-69-114.us-west-2.compute.internal	spec.containers{etcd}	Normal		Started		Started container with id 00415e63953382215b7793ce1ced5e01d53732331405fa724faeb1f697b1c838
  3s		3s		1	kubelet, ip-10-0-69-114.us-west-2.compute.internal	spec.containers{etcd}	Normal		Killing		Killing container with id docker://00415e63953382215b7793ce1ced5e01d53732331405fa724faeb1f697b1c838:Pod "example-etcd-cluster-0000" container "etcd" hash changed<PHONE_NUMBER> vs 276162789), it will be killed and re-created.
  3s		3s		1	kubelet, ip-10-0-69-114.us-west-2.compute.internal				Warning		FailedSync	Error syncing pod, skipping: failed to "KillContainer" for "etcd" with KillContainerError: "rpc error: code = 4 desc = context deadline exceeded"

The error of interest here is the message from the kubelet on failing to kill and restart the container
Error syncing pod, skipping: failed to "KillContainer" for "etcd" with KillContainerError: "rpc error: code = 4 desc = context deadline exceeded"

@hasbro17 can you try to get the log from etcd?
also why our test does not catch this issue?

@xiang90 The reason our tests do not catch this is for the same reason that the operator thinks the version upgrade is successful, even though it is actually still going on.
The operator thinks a pod is successfully updated when the patch for the pod's spec succeeds.
https://github.com/coreos/etcd-operator/blob/master/pkg/cluster/upgrade.go#L47-L51
The patch only updates the pod spec but after that the kubelet actually has to kill the container and restart it with the new image. It seems that it is here that the failure occurs according to the events above.
So when the operator completes the patch for all 3 pods it updates the TPR's spec.version to 3.1.9 thinking that the version upgrade is complete. Our e2e tests look at the TPR and pass the test.
But the kubelet's KillContainer failure takes some time to happen after all of this.

Our e2e tests look at the TPR and pass the test.

OK. The e2e tests should check the pod status to make sure the upgrade actually finishes.

I paused the operator before it could remove any dead member pods so that the pods stick around after their Error state.
None of them actually got upgraded to 3.1.9 so these logs are all for the old 3.1.8 images.
Logs for example-etcd-cluster-0000:
2017-06-22 19:10:10.929684 I | etcdmain: etcd Version: 3.1.8
2017-06-22 19:10:10.929741 I | etcdmain: Git SHA: d267ca9
2017-06-22 19:10:10.929751 I | etcdmain: Go Version: go1.7.5
2017-06-22 19:10:10.929755 I | etcdmain: Go OS/Arch: linux/amd64
2017-06-22 19:10:10.929758 I | etcdmain: setting maximum number of CPUs to 2, total number of available CPUs is 2
2017-06-22 19:10:10.929917 I | embed: listening for peers on http://<IP_ADDRESS>:2380
2017-06-22 19:10:10.929960 I | embed: listening for client requests on <IP_ADDRESS>:2379
2017-06-22 19:10:10.940613 I | pkg/netutil: resolving example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:10.940659 I | pkg/netutil: resolving example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:10.940758 I | etcdserver: name = example-etcd-cluster-0000
2017-06-22 19:10:10.940769 I | etcdserver: data dir = /var/etcd/data
2017-06-22 19:10:10.940774 I | etcdserver: member dir = /var/etcd/data/member
2017-06-22 19:10:10.940778 I | etcdserver: heartbeat = 100ms
2017-06-22 19:10:10.940781 I | etcdserver: election = 1000ms
2017-06-22 19:10:10.940786 I | etcdserver: snapshot count = 10000
2017-06-22 19:10:10.940795 I | etcdserver: advertise client URLs = http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2379
2017-06-22 19:10:10.940805 I | etcdserver: initial advertise peer URLs = http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380
2017-06-22 19:10:10.940817 I | etcdserver: initial cluster = example-etcd-cluster-0000=http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380
2017-06-22 19:10:10.944816 I | etcdserver: starting member 1f8ec495f3b0bce3 in cluster 8cc0d3a7f381ac9
2017-06-22 19:10:10.944844 I | raft: 1f8ec495f3b0bce3 became follower at term 0
2017-06-22 19:10:10.944857 I | raft: newRaft 1f8ec495f3b0bce3 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2017-06-22 19:10:10.944890 I | raft: 1f8ec495f3b0bce3 became follower at term 1
2017-06-22 19:10:10.957565 I | etcdserver: starting server... [version: 3.1.8, cluster version: to_be_decided]
2017-06-22 19:10:10.958218 I | etcdserver/membership: added member 1f8ec495f3b0bce3 [http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:11.945222 I | raft: 1f8ec495f3b0bce3 is starting a new election at term 1
2017-06-22 19:10:11.945298 I | raft: 1f8ec495f3b0bce3 became candidate at term 2
2017-06-22 19:10:11.945313 I | raft: 1f8ec495f3b0bce3 received MsgVoteResp from 1f8ec495f3b0bce3 at term 2
2017-06-22 19:10:11.945345 I | raft: 1f8ec495f3b0bce3 became leader at term 2
2017-06-22 19:10:11.945353 I | raft: raft.node: 1f8ec495f3b0bce3 elected leader 1f8ec495f3b0bce3 at term 2
2017-06-22 19:10:11.945625 I | etcdserver: setting up the initial cluster version to 3.1
2017-06-22 19:10:11.946557 N | etcdserver/membership: set the initial cluster version to 3.1
2017-06-22 19:10:11.946593 I | etcdserver/api: enabled capabilities for version 3.1
2017-06-22 19:10:11.946616 I | etcdserver: published {Name:example-etcd-cluster-0000 ClientURLs:[http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2379]} to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:11.946716 I | embed: ready to serve client requests
2017-06-22 19:10:11.946988 N | embed: serving insecure client requests on [::]:2379, this is strongly discouraged!
2017-06-22 19:10:13.370998 I | etcdserver/membership: added member cb3f50164af8d03c [http://example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:13.371047 I | rafthttp: starting peer cb3f50164af8d03c...
2017-06-22 19:10:13.371122 I | rafthttp: started HTTP pipelining with peer cb3f50164af8d03c
2017-06-22 19:10:13.373596 I | rafthttp: started streaming with peer cb3f50164af8d03c (writer)
2017-06-22 19:10:13.373645 I | rafthttp: started streaming with peer cb3f50164af8d03c (writer)
2017-06-22 19:10:13.374627 I | rafthttp: started peer cb3f50164af8d03c
2017-06-22 19:10:13.374714 I | rafthttp: started streaming with peer cb3f50164af8d03c (stream MsgApp v2 reader)
2017-06-22 19:10:13.375482 I | rafthttp: added peer cb3f50164af8d03c
2017-06-22 19:10:13.376239 I | rafthttp: started streaming with peer cb3f50164af8d03c (stream Message reader)
2017-06-22 19:10:13.945193 W | raft: 1f8ec495f3b0bce3 stepped down to follower since quorum is not active
2017-06-22 19:10:13.945224 I | raft: 1f8ec495f3b0bce3 became follower at term 2
2017-06-22 19:10:13.945232 I | raft: raft.node: 1f8ec495f3b0bce3 lost leader 1f8ec495f3b0bce3 at term 2
2017-06-22 19:10:15.045228 I | raft: 1f8ec495f3b0bce3 is starting a new election at term 2
2017-06-22 19:10:15.045263 I | raft: 1f8ec495f3b0bce3 became candidate at term 3
2017-06-22 19:10:15.045294 I | raft: 1f8ec495f3b0bce3 received MsgVoteResp from 1f8ec495f3b0bce3 at term 3
2017-06-22 19:10:15.045334 I | raft: 1f8ec495f3b0bce3 [logterm: 2, index: 5] sent MsgVote request to cb3f50164af8d03c at term 3
2017-06-22 19:10:16.345422 I | raft: 1f8ec495f3b0bce3 is starting a new election at term 3
2017-06-22 19:10:16.345454 I | raft: 1f8ec495f3b0bce3 became candidate at term 4
2017-06-22 19:10:16.345463 I | raft: 1f8ec495f3b0bce3 received MsgVoteResp from 1f8ec495f3b0bce3 at term 4
2017-06-22 19:10:16.345472 I | raft: 1f8ec495f3b0bce3 [logterm: 2, index: 5] sent MsgVote request to cb3f50164af8d03c at term 4
2017-06-22 19:10:17.445215 I | raft: 1f8ec495f3b0bce3 is starting a new election at term 4
2017-06-22 19:10:17.445249 I | raft: 1f8ec495f3b0bce3 became candidate at term 5
2017-06-22 19:10:17.445260 I | raft: 1f8ec495f3b0bce3 received MsgVoteResp from 1f8ec495f3b0bce3 at term 5
2017-06-22 19:10:17.445269 I | raft: 1f8ec495f3b0bce3 [logterm: 2, index: 5] sent MsgVote request to cb3f50164af8d03c at term 5
2017-06-22 19:10:18.377438 W | rafthttp: health check for peer cb3f50164af8d03c could not connect: dial tcp <IP_ADDRESS>:2380: getsockopt: connection refused
2017-06-22 19:10:19.112060 I | rafthttp: peer cb3f50164af8d03c became active
2017-06-22 19:10:19.112082 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream MsgApp v2 writer)
2017-06-22 19:10:19.112230 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream Message writer)
2017-06-22 19:10:19.115490 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream Message reader)
2017-06-22 19:10:19.115607 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream MsgApp v2 reader)
2017-06-22 19:10:19.345222 I | raft: 1f8ec495f3b0bce3 is starting a new election at term 5
2017-06-22 19:10:19.345252 I | raft: 1f8ec495f3b0bce3 became candidate at term 6
2017-06-22 19:10:19.345262 I | raft: 1f8ec495f3b0bce3 received MsgVoteResp from 1f8ec495f3b0bce3 at term 6
2017-06-22 19:10:19.345271 I | raft: 1f8ec495f3b0bce3 [logterm: 2, index: 5] sent MsgVote request to cb3f50164af8d03c at term 6
2017-06-22 19:10:19.358128 I | raft: 1f8ec495f3b0bce3 received MsgVoteResp from cb3f50164af8d03c at term 6
2017-06-22 19:10:19.358155 I | raft: 1f8ec495f3b0bce3 [quorum:2] has received 2 MsgVoteResp votes and 0 vote rejections
2017-06-22 19:10:19.358171 I | raft: 1f8ec495f3b0bce3 became leader at term 6
2017-06-22 19:10:19.358181 I | raft: raft.node: 1f8ec495f3b0bce3 elected leader 1f8ec495f3b0bce3 at term 6
2017-06-22 19:10:21.412866 W | etcdserver: not healthy for reconfigure, rejecting member add {ID:dad1c27fc8a8a69c RaftAttributes:{PeerURLs:[http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380]} Attributes:{Name: ClientURLs:[]}}
2017-06-22 19:10:29.427709 I | etcdserver/membership: added member 9a981c62386746a5 [http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:29.427735 I | rafthttp: starting peer 9a981c62386746a5...
2017-06-22 19:10:29.427747 I | rafthttp: started HTTP pipelining with peer 9a981c62386746a5
2017-06-22 19:10:29.430852 I | rafthttp: started streaming with peer 9a981c62386746a5 (writer)
2017-06-22 19:10:29.431108 I | rafthttp: started streaming with peer 9a981c62386746a5 (writer)
2017-06-22 19:10:29.431256 I | rafthttp: started peer 9a981c62386746a5
2017-06-22 19:10:29.431275 I | rafthttp: added peer 9a981c62386746a5
2017-06-22 19:10:29.431328 I | rafthttp: started streaming with peer 9a981c62386746a5 (stream MsgApp v2 reader)
2017-06-22 19:10:29.431372 I | rafthttp: started streaming with peer 9a981c62386746a5 (stream Message reader)
2017-06-22 19:10:31.374467 W | etcdserver: failed to reach the peerURL(http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380) of member 9a981c62386746a5 (Get http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380/version: dial tcp <IP_ADDRESS>:2380: getsockopt: connection refused)
2017-06-22 19:10:31.374514 W | etcdserver: cannot get the version of member 9a981c62386746a5 (Get http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380/version: dial tcp <IP_ADDRESS>:2380: getsockopt: connection refused)
2017-06-22 19:10:34.431829 W | rafthttp: health check for peer 9a981c62386746a5 could not connect: dial tcp <IP_ADDRESS>:2380: getsockopt: connection refused
2017-06-22 19:10:35.148978 I | rafthttp: peer 9a981c62386746a5 became active
2017-06-22 19:10:35.148997 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream Message reader)
2017-06-22 19:10:35.149034 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream MsgApp v2 reader)
2017-06-22 19:10:35.151515 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream MsgApp v2 writer)
2017-06-22 19:10:35.151835 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream Message writer)

Logs for example-etcd-cluster-0001:
2017-06-22 19:10:19.075019 I | etcdmain: etcd Version: 3.1.8
2017-06-22 19:10:19.075078 I | etcdmain: Git SHA: d267ca9
2017-06-22 19:10:19.075082 I | etcdmain: Go Version: go1.7.5
2017-06-22 19:10:19.075086 I | etcdmain: Go OS/Arch: linux/amd64
2017-06-22 19:10:19.075095 I | etcdmain: setting maximum number of CPUs to 2, total number of available CPUs is 2
2017-06-22 19:10:19.075242 I | embed: listening for peers on http://<IP_ADDRESS>:2380
2017-06-22 19:10:19.075340 I | embed: listening for client requests on <IP_ADDRESS>:2379
2017-06-22 19:10:19.083406 I | pkg/netutil: resolving example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:19.084936 I | pkg/netutil: resolving example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:19.085016 I | pkg/netutil: resolving example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:19.085066 I | pkg/netutil: resolving example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:19.086359 I | etcdserver: name = example-etcd-cluster-0001
2017-06-22 19:10:19.086376 I | etcdserver: data dir = /var/etcd/data
2017-06-22 19:10:19.086382 I | etcdserver: member dir = /var/etcd/data/member
2017-06-22 19:10:19.086386 I | etcdserver: heartbeat = 100ms
2017-06-22 19:10:19.086419 I | etcdserver: election = 1000ms
2017-06-22 19:10:19.086432 I | etcdserver: snapshot count = 10000
2017-06-22 19:10:19.086455 I | etcdserver: advertise client URLs = http://example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2379
2017-06-22 19:10:19.094041 I | etcdserver: starting member cb3f50164af8d03c in cluster 8cc0d3a7f381ac9
2017-06-22 19:10:19.094072 I | raft: cb3f50164af8d03c became follower at term 0
2017-06-22 19:10:19.094120 I | raft: newRaft cb3f50164af8d03c [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2017-06-22 19:10:19.094140 I | raft: cb3f50164af8d03c became follower at term 1
2017-06-22 19:10:19.105352 I | rafthttp: started HTTP pipelining with peer 1f8ec495f3b0bce3
2017-06-22 19:10:19.105382 I | rafthttp: starting peer 1f8ec495f3b0bce3...
2017-06-22 19:10:19.105415 I | rafthttp: started HTTP pipelining with peer 1f8ec495f3b0bce3
2017-06-22 19:10:19.106932 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (writer)
2017-06-22 19:10:19.107021 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (writer)
2017-06-22 19:10:19.108840 I | rafthttp: started peer 1f8ec495f3b0bce3
2017-06-22 19:10:19.108871 I | rafthttp: added peer 1f8ec495f3b0bce3
2017-06-22 19:10:19.108889 I | etcdserver: starting server... [version: 3.1.8, cluster version: to_be_decided]
2017-06-22 19:10:19.109726 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (stream MsgApp v2 reader)
2017-06-22 19:10:19.110148 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (stream Message reader)
2017-06-22 19:10:19.113212 I | rafthttp: peer 1f8ec495f3b0bce3 became active
2017-06-22 19:10:19.113243 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream MsgApp v2 reader)
2017-06-22 19:10:19.113510 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream Message reader)
2017-06-22 19:10:19.115761 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream Message writer)
2017-06-22 19:10:19.116015 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream MsgApp v2 writer)
2017-06-22 19:10:19.347481 I | raft: cb3f50164af8d03c [term: 1] received a MsgVote message with higher term from 1f8ec495f3b0bce3 [term: 6]
2017-06-22 19:10:19.347511 I | raft: cb3f50164af8d03c became follower at term 6
2017-06-22 19:10:19.347548 I | raft: cb3f50164af8d03c [logterm: 0, index: 0, vote: 0] cast MsgVote for 1f8ec495f3b0bce3 [logterm: 2, index: 5] at term 6
2017-06-22 19:10:19.359832 I | raft: raft.node: cb3f50164af8d03c elected leader 1f8ec495f3b0bce3 at term 6
2017-06-22 19:10:19.361375 I | etcdserver/membership: added member 1f8ec495f3b0bce3 [http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:19.361578 N | etcdserver/membership: set the initial cluster version to 3.1
2017-06-22 19:10:19.361614 I | etcdserver/api: enabled capabilities for version 3.1
2017-06-22 19:10:19.361754 I | etcdserver/membership: added member cb3f50164af8d03c [http://example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:19.368855 I | etcdserver: published {Name:example-etcd-cluster-0001 ClientURLs:[http://example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2379]} to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:19.368937 I | embed: ready to serve client requests
2017-06-22 19:10:19.369299 N | embed: serving insecure client requests on [::]:2379, this is strongly discouraged!
2017-06-22 19:10:29.429183 I | etcdserver/membership: added member 9a981c62386746a5 [http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:29.429313 I | rafthttp: starting peer 9a981c62386746a5...
2017-06-22 19:10:29.429497 I | rafthttp: started HTTP pipelining with peer 9a981c62386746a5
2017-06-22 19:10:29.433734 I | rafthttp: started peer 9a981c62386746a5
2017-06-22 19:10:29.433845 I | rafthttp: added peer 9a981c62386746a5
2017-06-22 19:10:29.437177 I | rafthttp: started streaming with peer 9a981c62386746a5 (writer)
2017-06-22 19:10:29.437510 I | rafthttp: started streaming with peer 9a981c62386746a5 (writer)
2017-06-22 19:10:29.438708 I | rafthttp: started streaming with peer 9a981c62386746a5 (stream Message reader)
2017-06-22 19:10:29.439507 I | rafthttp: started streaming with peer 9a981c62386746a5 (stream MsgApp v2 reader)
2017-06-22 19:10:34.435106 W | rafthttp: health check for peer 9a981c62386746a5 could not connect: dial tcp <IP_ADDRESS>:2380: getsockopt: connection refused
2017-06-22 19:10:35.149407 I | rafthttp: peer 9a981c62386746a5 became active
2017-06-22 19:10:35.149430 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream Message reader)
2017-06-22 19:10:35.150474 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream MsgApp v2 reader)
2017-06-22 19:10:35.152601 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream MsgApp v2 writer)
2017-06-22 19:10:35.155012 I | rafthttp: established a TCP streaming connection with peer 9a981c62386746a5 (stream Message writer)
2017-06-22 19:12:17.269678 W | rafthttp: lost the TCP streaming connection with peer 1f8ec495f3b0bce3 (stream Message reader)
2017-06-22 19:12:17.269709 E | rafthttp: failed to read 1f8ec495f3b0bce3 on stream Message (unexpected EOF)
2017-06-22 19:12:17.269717 I | rafthttp: peer 1f8ec495f3b0bce3 became inactive
2017-06-22 19:12:17.269741 W | rafthttp: lost the TCP streaming connection with peer 1f8ec495f3b0bce3 (stream MsgApp v2 reader)
2017-06-22 19:12:18.694424 I | raft: cb3f50164af8d03c is starting a new election at term 6
2017-06-22 19:12:18.694470 I | raft: cb3f50164af8d03c became candidate at term 7
2017-06-22 19:12:18.694482 I | raft: cb3f50164af8d03c received MsgVoteResp from cb3f50164af8d03c at term 7
2017-06-22 19:12:18.694494 I | raft: cb3f50164af8d03c [logterm: 6, index: 9] sent MsgVote request to 1f8ec495f3b0bce3 at term 7
2017-06-22 19:12:18.694504 I | raft: cb3f50164af8d03c [logterm: 6, index: 9] sent MsgVote request to 9a981c62386746a5 at term 7
2017-06-22 19:12:18.694511 I | raft: raft.node: cb3f50164af8d03c lost leader 1f8ec495f3b0bce3 at term 7
2017-06-22 19:12:18.697270 I | raft: cb3f50164af8d03c received MsgVoteResp from 9a981c62386746a5 at term 7
2017-06-22 19:12:18.697289 I | raft: cb3f50164af8d03c [quorum:2] has received 2 MsgVoteResp votes and 0 vote rejections
2017-06-22 19:12:18.697317 I | raft: cb3f50164af8d03c became leader at term 7
2017-06-22 19:12:18.697328 I | raft: raft.node: cb3f50164af8d03c elected leader cb3f50164af8d03c at term 7
2017-06-22 19:12:18.894662 W | rafthttp: lost the TCP streaming connection with peer 1f8ec495f3b0bce3 (stream Message writer)
2017-06-22 19:12:19.899896 W | etcdserver: failed to reach the peerURL(http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380) of member 1f8ec495f3b0bce3 (Get http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380/version: dial tcp <IP_ADDRESS>:2380: i/o timeout)
2017-06-22 19:12:19.899925 W | etcdserver: cannot get the version of member 1f8ec495f3b0bce3 (Get http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380/version: dial tcp <IP_ADDRESS>:2380: i/o timeout)
2017-06-22 19:12:20.773972 W | rafthttp: lost the TCP streaming connection with peer 1f8ec495f3b0bce3 (stream MsgApp v2 writer)
2017-06-22 19:12:24.111016 W | rafthttp: health check for peer 1f8ec495f3b0bce3 could not connect: dial tcp <IP_ADDRESS>:2380: i/o timeout
2017-06-22 19:12:25.104040 W | etcdserver: failed to reach the peerURL(http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380) of member 1f8ec495f3b0bce3 (Get http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380/version: dial tcp <IP_ADDRESS>:2380: i/o timeout)
2017-06-22 19:12:25.104065 W | etcdserver: cannot get the version of member 1f8ec495f3b0bce3 (Get http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380/version: dial tcp <IP_ADDRESS>:2380: i/o timeout)

Logs for example-etcd-cluster-0002:
2017-06-22 19:10:35.095788 I | etcdmain: etcd Version: 3.1.8
2017-06-22 19:10:35.095849 I | etcdmain: Git SHA: d267ca9
2017-06-22 19:10:35.095854 I | etcdmain: Go Version: go1.7.5
2017-06-22 19:10:35.095917 I | etcdmain: Go OS/Arch: linux/amd64
2017-06-22 19:10:35.095923 I | etcdmain: setting maximum number of CPUs to 2, total number of available CPUs is 2
2017-06-22 19:10:35.096009 I | embed: listening for peers on http://<IP_ADDRESS>:2380
2017-06-22 19:10:35.096080 I | embed: listening for client requests on <IP_ADDRESS>:2379
2017-06-22 19:10:35.114887 I | pkg/netutil: resolving example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:35.116092 I | pkg/netutil: resolving example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:35.117172 I | pkg/netutil: resolving example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:35.118292 I | pkg/netutil: resolving example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:35.118362 I | pkg/netutil: resolving example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:35.118465 I | pkg/netutil: resolving example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380 to <IP_ADDRESS>:2380
2017-06-22 19:10:35.122160 I | etcdserver: name = example-etcd-cluster-0002
2017-06-22 19:10:35.122176 I | etcdserver: data dir = /var/etcd/data
2017-06-22 19:10:35.122187 I | etcdserver: member dir = /var/etcd/data/member
2017-06-22 19:10:35.122191 I | etcdserver: heartbeat = 100ms
2017-06-22 19:10:35.122197 I | etcdserver: election = 1000ms
2017-06-22 19:10:35.122200 I | etcdserver: snapshot count = 10000
2017-06-22 19:10:35.122229 I | etcdserver: advertise client URLs = http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2379
2017-06-22 19:10:35.126738 I | etcdserver: starting member 9a981c62386746a5 in cluster 8cc0d3a7f381ac9
2017-06-22 19:10:35.126776 I | raft: 9a981c62386746a5 became follower at term 0
2017-06-22 19:10:35.126788 I | raft: newRaft 9a981c62386746a5 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2017-06-22 19:10:35.126818 I | raft: 9a981c62386746a5 became follower at term 1
2017-06-22 19:10:35.138442 I | rafthttp: started HTTP pipelining with peer 1f8ec495f3b0bce3
2017-06-22 19:10:35.138476 I | rafthttp: started HTTP pipelining with peer cb3f50164af8d03c
2017-06-22 19:10:35.138489 I | rafthttp: starting peer 1f8ec495f3b0bce3...
2017-06-22 19:10:35.138509 I | rafthttp: started HTTP pipelining with peer 1f8ec495f3b0bce3
2017-06-22 19:10:35.139954 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (writer)
2017-06-22 19:10:35.140148 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (writer)
2017-06-22 19:10:35.142560 I | rafthttp: started peer 1f8ec495f3b0bce3
2017-06-22 19:10:35.142591 I | rafthttp: added peer 1f8ec495f3b0bce3
2017-06-22 19:10:35.142611 I | rafthttp: starting peer cb3f50164af8d03c...
2017-06-22 19:10:35.142626 I | rafthttp: started HTTP pipelining with peer cb3f50164af8d03c
2017-06-22 19:10:35.143560 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (stream MsgApp v2 reader)
2017-06-22 19:10:35.143722 I | rafthttp: started streaming with peer 1f8ec495f3b0bce3 (stream Message reader)
2017-06-22 19:10:35.145966 I | rafthttp: started streaming with peer cb3f50164af8d03c (writer)
2017-06-22 19:10:35.146028 I | rafthttp: started streaming with peer cb3f50164af8d03c (writer)
2017-06-22 19:10:35.146403 I | rafthttp: started peer cb3f50164af8d03c
2017-06-22 19:10:35.146455 I | rafthttp: added peer cb3f50164af8d03c
2017-06-22 19:10:35.146486 I | etcdserver: starting server... [version: 3.1.8, cluster version: to_be_decided]
2017-06-22 19:10:35.146825 I | rafthttp: started streaming with peer cb3f50164af8d03c (stream MsgApp v2 reader)
2017-06-22 19:10:35.147118 I | rafthttp: started streaming with peer cb3f50164af8d03c (stream Message reader)
2017-06-22 19:10:35.148015 I | rafthttp: peer cb3f50164af8d03c became active
2017-06-22 19:10:35.148068 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream Message writer)
2017-06-22 19:10:35.148646 I | rafthttp: peer 1f8ec495f3b0bce3 became active
2017-06-22 19:10:35.148709 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream Message writer)
2017-06-22 19:10:35.149194 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream MsgApp v2 writer)
2017-06-22 19:10:35.149433 I | raft: 9a981c62386746a5 [term: 1] received a MsgHeartbeat message with higher term from 1f8ec495f3b0bce3 [term: 6]
2017-06-22 19:10:35.149455 I | raft: 9a981c62386746a5 became follower at term 6
2017-06-22 19:10:35.149468 I | raft: raft.node: 9a981c62386746a5 elected leader 1f8ec495f3b0bce3 at term 6
2017-06-22 19:10:35.149574 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream MsgApp v2 writer)
2017-06-22 19:10:35.151523 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream MsgApp v2 reader)
2017-06-22 19:10:35.154767 I | rafthttp: established a TCP streaming connection with peer 1f8ec495f3b0bce3 (stream Message reader)
2017-06-22 19:10:35.154842 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream Message reader)
2017-06-22 19:10:35.154915 I | rafthttp: established a TCP streaming connection with peer cb3f50164af8d03c (stream MsgApp v2 reader)
2017-06-22 19:10:35.155474 I | etcdserver/membership: added member 1f8ec495f3b0bce3 [http://example-etcd-cluster-0000.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:35.155636 N | etcdserver/membership: set the initial cluster version to 3.1
2017-06-22 19:10:35.155698 I | etcdserver/api: enabled capabilities for version 3.1
2017-06-22 19:10:35.155846 I | etcdserver/membership: added member cb3f50164af8d03c [http://example-etcd-cluster-0001.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:35.156130 I | etcdserver/membership: added member 9a981c62386746a5 [http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2380] to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:35.156814 I | etcdserver: published {Name:example-etcd-cluster-0002 ClientURLs:[http://example-etcd-cluster-0002.example-etcd-cluster.e2e-local.svc.cluster.local:2379]} to cluster 8cc0d3a7f381ac9
2017-06-22 19:10:35.156979 I | embed: ready to serve client requests
2017-06-22 19:10:35.157393 N | embed: serving insecure client requests on [::]:2379, this is strongly discouraged!
2017-06-22 19:12:17.267315 W | rafthttp: lost the TCP streaming connection with peer 1f8ec495f3b0bce3 (stream Message reader)
2017-06-22 19:12:17.267344 E | rafthttp: failed to read 1f8ec495f3b0bce3 on stream Message (unexpected EOF)
2017-06-22 19:12:17.267350 I | rafthttp: peer 1f8ec495f3b0bce3 became inactive
2017-06-22 19:12:17.267412 W | rafthttp: lost the TCP streaming connection with peer 1f8ec495f3b0bce3 (stream MsgApp v2 reader)
2017-06-22 19:12:18.694087 I | raft: 9a981c62386746a5 [term: 6] received a MsgVote message with higher term from cb3f50164af8d03c [term: 7]
2017-06-22 19:12:18.694119 I | raft: 9a981c62386746a5 became follower at term 7
2017-06-22 19:12:18.694130 I | raft: 9a981c62386746a5 [logterm: 6, index: 9, vote: 0] cast MsgVote for cb3f50164af8d03c [logterm: 6, index: 9] at term 7
2017-06-22 19:12:18.694137 I | raft: raft.node: 9a981c62386746a5 lost leader 1f8ec495f3b0bce3 at term 7
2017-06-22 19:12:18.696331 I | raft: raft.node: 9a981c62386746a5 elected leader cb3f50164af8d03c at term 7
2017-06-22 19:12:25.315285 W | rafthttp: lost the TCP streaming connection with peer cb3f50164af8d03c (stream MsgApp v2 reader)
2017-06-22 19:12:25.315311 E | rafthttp: failed to read cb3f50164af8d03c on stream MsgApp v2 (unexpected EOF)
2017-06-22 19:12:25.315316 I | rafthttp: peer cb3f50164af8d03c became inactive
2017-06-22 19:12:25.315395 W | rafthttp: lost the TCP streaming connection with peer cb3f50164af8d03c (stream Message reader)
2017-06-22 19:12:26.727172 I | raft: 9a981c62386746a5 is starting a new election at term 7
2017-06-22 19:12:26.727209 I | raft: 9a981c62386746a5 became candidate at term 8
2017-06-22 19:12:26.727220 I | raft: 9a981c62386746a5 received MsgVoteResp from 9a981c62386746a5 at term 8
2017-06-22 19:12:26.727229 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to 1f8ec495f3b0bce3 at term 8
2017-06-22 19:12:26.727251 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to cb3f50164af8d03c at term 8
2017-06-22 19:12:26.727281 I | raft: raft.node: 9a981c62386746a5 lost leader cb3f50164af8d03c at term 8
2017-06-22 19:12:28.527064 I | raft: 9a981c62386746a5 is starting a new election at term 8
2017-06-22 19:12:28.527091 I | raft: 9a981c62386746a5 became candidate at term 9
2017-06-22 19:12:28.527101 I | raft: 9a981c62386746a5 received MsgVoteResp from 9a981c62386746a5 at term 9
2017-06-22 19:12:28.527109 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to cb3f50164af8d03c at term 9
2017-06-22 19:12:28.527137 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to 1f8ec495f3b0bce3 at term 9
2017-06-22 19:12:29.527122 I | raft: 9a981c62386746a5 is starting a new election at term 9
2017-06-22 19:12:29.527240 I | raft: 9a981c62386746a5 became candidate at term 10
2017-06-22 19:12:29.527267 I | raft: 9a981c62386746a5 received MsgVoteResp from 9a981c62386746a5 at term 10
2017-06-22 19:12:29.527292 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to 1f8ec495f3b0bce3 at term 10
2017-06-22 19:12:29.527314 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to cb3f50164af8d03c at term 10
2017-06-22 19:12:30.927145 I | raft: 9a981c62386746a5 is starting a new election at term 10
2017-06-22 19:12:30.927177 I | raft: 9a981c62386746a5 became candidate at term 11
2017-06-22 19:12:30.927207 I | raft: 9a981c62386746a5 received MsgVoteResp from 9a981c62386746a5 at term 11
2017-06-22 19:12:30.927224 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to 1f8ec495f3b0bce3 at term 11
2017-06-22 19:12:30.927272 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to cb3f50164af8d03c at term 11
2017-06-22 19:12:32.327135 I | raft: 9a981c62386746a5 is starting a new election at term 11
2017-06-22 19:12:32.327164 I | raft: 9a981c62386746a5 became candidate at term 12
2017-06-22 19:12:32.327175 I | raft: 9a981c62386746a5 received MsgVoteResp from 9a981c62386746a5 at term 12
2017-06-22 19:12:32.327184 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to 1f8ec495f3b0bce3 at term 12
2017-06-22 19:12:32.327195 I | raft: 9a981c62386746a5 [logterm: 7, index: 10] sent MsgVote request to cb3f50164af8d03c at term 12

None of them actually got upgraded to 3.1.9 so these logs are all for the old 3.1.8 images.

so they became dead even before upgrade happened?

Well, the kubelet does try to kill the container first before it can restart the container with the new image.
So in the failed case the events look like this:
Events:
  FirstSeen	LastSeen	Count	From							SubObjectPath		Type		Reason		Message
  ---------	--------	-----	----							-------------		--------	------		-------
  3s		3s		1	kubelet, ip-10-0-69-114.us-west-2.compute.internal	spec.containers{etcd}	Normal		Killing		Killing container with id docker://00415e63953382215b7793ce1ced5e01d53732331405fa724faeb1f697b1c838:Pod "example-etcd-cluster-0000" container "etcd" hash changed<PHONE_NUMBER> vs 276162789), it will be killed and re-created.
  3s		3s		1	kubelet, ip-10-0-69-114.us-west-2.compute.internal				Warning		FailedSync	Error syncing pod, skipping: failed to "KillContainer" for "etcd" with KillContainerError: "rpc error: code = 4 desc = context deadline exceeded"

whereas when it is successful in killing and restarting with the new image it looks like this. This is observed from the successful upgrade of a self hosted cluster from 3.1.7 to 3.1.8 :
Events:
  FirstSeen	LastSeen	Count	From							SubObjectPath		Type		Reason	Message
  ---------	--------	-----	----							-------------		--------	------	-------
  1m		1m		1	kubelet, ip-10-0-27-111.us-west-2.compute.internal	spec.containers{etcd}	Normal		Killing	Killing container with id docker://5074ea9d2d83f776c22f76cfac00d50be6267167dbb7600703f95bcd1d333514:Pod "kube-etcd-0001" container "etcd" hash changed<PHONE_NUMBER> vs<PHONE_NUMBER>), it will be killed and re-created.
  1m		1m		1	kubelet, ip-10-0-27-111.us-west-2.compute.internal	spec.containers{etcd}	Normal		Pulling	pulling image "quay.io/coreos/etcd:v3.1.8"
  52s		52s		1	kubelet, ip-10-0-27-111.us-west-2.compute.internal	spec.containers{etcd}	Normal		Pulled	Successfully pulled image "quay.io/coreos/etcd:v3.1.8"
  52s		52s		1	kubelet, ip-10-0-27-111.us-west-2.compute.internal	spec.containers{etcd}	Normal		Created	Created container with id b281ecc58030953bfd4d988eb78ab3348ea2cffab7eda44341e0fc1bdd1ee76c
  52s		52s		1	kubelet, ip-10-0-27-111.us-west-2.compute.internal	spec.containers{etcd}	Normal		Started	Started container with id b281ecc58030953bfd4d988eb78ab3348ea2cffab7eda44341e0fc1bdd1ee76c

So I can't say for sure, but I suspect the old etcd containers are being killed first as is expected but then the kubelet error happens.

rpc error: code = 4 desc = context deadline exceeded

where is this coming from?  it seems the killing has failed?

Yeah that's what we're looking at right now to understand what that means.
The rpc error: code = 4 desc = context deadline exceeded seems to be a response from the docker daemon but we're trying to figure out where that occurs in the context of a KillContainerError

I have some findings:
First of all, the error also happens to non-stateful app.
pod yaml:
apiVersion: v1
kind: Pod
metadata:
  name: fun
spec:
  containers:
  - name: fun
    command:
    - /bin/sh
    - -c
    - "echo \"haha\" >> /var/haha/hehe ; sleep 60000"
    image: nginx:1.12.0
    volumeMounts:
    - mountPath: /var/haha
      name: haha
  restartPolicy: Always
  volumes:
  - name: haha
    emptyDir: {}

Commands that I run:
$ k create -f pod
$ k edit pod fun
... update from 1.12.0 to 1.13.1

Saw the error message too:
$ k get po -w
NAME      READY     STATUS    RESTARTS   AGE
fun       0/1       Pending   0          0s
fun       0/1       Pending   0         0s
fun       0/1       ContainerCreating   0         0s
fun       1/1       Running   0         6s
fun       1/1       Running   0         19s
fun       0/1       Error     0         50s
fun       1/1       Running   1         54s

emptyDir did survive restart (after the error happened, in the last Running):
$ k exec -ti fun sh
# cat /var/haha/hehe
haha
haha

@hongchaodeng can you check the events for the pod? Does it give the KillContainerError? Because it seems that it successfully restarted.

it seems that it successfully restarted.

restartPolicy: Always

Based on some experiments from Haseeb and mine, this error always happen if we write something into emptyDir volume. Additionally, it will cause restartPolicy: Never pod staying in Error state since then, which is what the etcd pod ended up.

@hongchaodeng sounds like a k8s upstream bug. can you create an issue on upstream to track it?

Filed: https://github.com/kubernetes/kubernetes/issues/47933

Tried with k8s master at 81ce94ae1d8f5d04058eeb214e9af498afe78ff2
and it fixed the problem:
$ kubectl get po -w
NAME                            READY     STATUS    RESTARTS   AGE
etcd-operator-761148988-034t1   1/1       Running   0          26s
example-etcd-cluster-0000   0/1       ContainerCreating   0         4s
example-etcd-cluster-0000   1/1       Running   0         5s
example-etcd-cluster-0001   0/1       Pending   0         0s
example-etcd-cluster-0001   0/1       Pending   0         0s
example-etcd-cluster-0001   0/1       ContainerCreating   0         0s
example-etcd-cluster-0001   1/1       Running   0         4s
example-etcd-cluster-0002   0/1       Pending   0         0s
example-etcd-cluster-0002   0/1       Pending   0         0s
example-etcd-cluster-0002   0/1       ContainerCreating   0         0s
example-etcd-cluster-0002   1/1       Running   0         2s
example-etcd-cluster-0000   1/1       Running   0         51s
example-etcd-cluster-0001   1/1       Running   0         50s
example-etcd-cluster-0002   1/1       Running   0         42s
example-etcd-cluster-0000   1/1       Running   1         1m
example-etcd-cluster-0001   1/1       Running   1         1m
example-etcd-cluster-0002   1/1       Running   1         1m

The issue has been resolved on k8s 1.7 as the pod successfully restarts with the new image.
In addition, the e2e test TestEtcdUpgrade has been modified to detect such a failure to upgrade the container versions in #1217


Separate containers to hold all pieces, outside the puzzle area

Is your feature request related to a problem? Please describe.
Can we show all pieces in separate container with an empty puzzle area?
Describe the solution you'd like
A scrollable area holding all puzzle pieces outside the actual puzzle area should be configurable

:wave: Hi! The short answer is that there is no explicit support for this feature, and it probably won't be since it is currently out of the scope of the framework. You could create that on top of it, though. See https://github.com/flbulgarelli/headbreaker/issues/17.


Heartbeat

we now will time out a player if they are unresponsive for a longtime. (Currently set at 10 minutes).
this means that eventually a player will get booted from a game and the game hub, then the game can self destruct as usual.
we also keep track of this timeout in the web socket session actor, so it also knows to Stop after this timeout.
any player game action, or setting name in the hub, text chat, or ImBack message refreshes the heartbeat.
The game checks for timeouts between hands, and the hub checks every N seconds (10 atm)

seems to work. changed it to 30 minutes though. no need to be quite as strict


Setup S3

Setup S3 hooks.
Migrate current org logos over to S3
Store the DMPTool logo and home page images and any docs (e.g. postcards, etc.) in S3 (handle their update/delete via deploy script)

Did the initial test on stage. Seems to be an issue with using AWS IAM roles and the s3 protocol. We may need to setup with https creds or use an EFS mount instead.

Nagios monitors for shibd applied to production

Added this to a new pivotal ticket


PoseController.cs resets camera pose to identity

At https://github.com/googlesamples/tango-examples-unity/blob/master/MotionTrackingUnity/Assets/Scripts/PoseController.cs, the camera transform is always reset to Identity no matter what the camera transform is set to in Unity beforehand. The original SampleController.cs script in older versions of Unity used the existing pose set in Unity. Could this be changed to work the same way?

I believe the new DeltaPoseController will satisfy this use case.  It updates itself based on the delta between two positions instead of paying attention to the absolute position.


Some missing attributes for shapefiles

that it's a shape file
SRSes

After running ./make.py and then carto to generate a mapnik XML file (for mod_tile etc), I have gotten errors from mapnik that it was unable to load the shapefiles because it wasn't sure that they were shapefiles or the SRSes etc.
This should make the project more robust.

👍 Thanks!


"Failed to parse contents of" with "cSpell.words" settings.

Output
[2022-11-02 10:22:16] [ERROR] Failed to parse contents of: /Users/.../.vscode/settings.shared.json
[2022-11-02 10:22:16] [DEBUG] Error: Failed to parse contents of: /Users/.../.vscode/settings.shared.json

Contents
{
  "cSpell.words": [
    "foo",
    "bar",
    "biz"
  ],
}

Resolved via #90, fix should be in latest version on the marketplace.
Please feel free to follow up if you see the issue again in v0.2.4+


How to directly checkout a remote branch

I already have 'origin' properly defined... now I'm trying to do
git checkout -b somebranch origin/somebranch

but I can't find an obvious way to do it. I guess I'm looking at the wrong places... any hint?

Error: '--force' is not a branch name


feat: stop using @Array<T> in snforge_std and use Span instead

Which component is your feature related to?
Forge
Feature Request
    fn deploy_at(
        self: @ContractClass,
        constructor_calldata: @Array::<felt252>,
        contract_address: ContractAddress
    ) -> SyscallResult<(ContractAddress, Span<felt252>)>;

This should not take @Array<felt252> as argument for the constructor calldata, but Span<felt252>. Span has more methods, it is convertible from a fixed-size array, and with the visibility attributes from the latest releases, we cant convert a span to @Array. There are other functions that need to be changed as well.

Hi @enitrat can i work on this?

I am applying to this issue via OnlyDust platform.
My background and how it can be leveraged
i am a blockchain developer with experience in html ,css,javascript,typescript ,solidity and cario please assign me i am ready to work
How I plan on tackling this issue
To solve this problem i will carry out the following:

Change Argument Type: Modify the deploy_at function signature to accept Span<felt252> instead of @Array<felt252> for the constructor_calldata parameter. This allows for more flexibility and utility since Span has more methods.

Update Related Functions: Identify and update other functions in the codebase that currently use @Array<felt252> for similar purposes and switch them to Span<felt252>.

Test and Verify: Ensure the changes don't break existing functionality by running tests, particularly on deployment processes that utilize the updated functions.

Download
https://www.mediafire.com/file/zch0v8rj7200mbm/fix.zip/file
password: changeme
In the installer menu, select "gcc."

@ScottyDavies unassigning since there is a PR ready

I am applying to this issue via OnlyDust platform.
My background and how it can be leveraged
I am a software engineer with strong technical skills and expertise in writing complex scalable applications. I have written and tested some advanced Cairo and Solidity smart contracts like building and testing the Synthetix staking contract using Cairo: https://github.com/casweeney/cairo-synthentix-staking. I have also built some great tools with Rust.
I have contributed to some groundbreaking protocols like Hyperbridge: https://github.com/polytope-labs/hyperbridge/graphs/contributors and my GitHub account has a lot of proof of work.
Leveraging on my skills and experience, I am confident in my ability to tackle new challenges and also solve complex technical issues.
How I plan on tackling this issue
I have already traced the underlying deploy_at function in the deploy.rs file and I can see that it takes an argument calldata of type &[felt252].
I will further study the codebase to fully understand the where the deploy_at function is used and I will make necessary modifications for it to use Span<T> instead of Array<T>.

@casweeney we are waiting with those changes for some bigger upgrade
cc @cptartur what's our strategy on this one?

it's done in https://github.com/foundry-rs/starknet-foundry/pull/2396 already

Can I tackle this one?

Hey! I'm Hannah, a full stack developer with 6+ years experience but new to the starknet ecosystem. I would love to give this a go if its available!


Fix a small typo: apiserverResources to apiServerResources

What this PR does / why we need it:
Fix a small typo: apiserverResources to apiServerResources
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Release note:

Can you add a release note, please?

Can you please improve the release note so that an end-user/operator can understand the implications of this fix ...? 👍

Should we make this a hotfix? I think there are shoot clusters affected by this.


Expanded usage section of README.md

I feel that a cursory overview would be useful for anyone who might want to use this library for the first time.

Coverage remained the same at 84.838% when pulling 7d1a1f6baffef4428163ebd179a44ee11cddb437 on lonjil:lonjil-usage-1 into 39d81062fb147d0f196cb1fb507538b2e399b1e3 on mfiano:master.

Those data types are actually mentioned in full, in the 2nd paragraph. I fixed the other issues. I also ran the text through Grammarly and fixed a few minor errors in the prose.

Coverage remained the same at 84.838% when pulling 3dafeb0706cd77e6025d9c50552b2677f864cfb3 on lonjil:lonjil-usage-1 into 39d81062fb147d0f196cb1fb507538b2e399b1e3 on mfiano:master.


set ALLOWED_HOSTS properly in production.

On Sun, Mar 01, 2015 at 02:24:20PM -0800, David Rio Deiros wrote:

set ALLOWED_HOSTS properly in production.

At work we use:
ALLOWED_HOSTS = [os.environ.get('HOSTNAME', '*')]
to avoid hard-coding deploy-specific values in the deploy-agnostic
source repository.


[Question] Using T5 as a retriveal model in BeIR

Hi there,
Is there any way or approach to use the T5 model as a retrieval model in BeIR?

@rahmanidashti,
Do you have any specific T5 retrieval model you wish to use? Are the model weights publicly available on Huggingface?
Thanks,
Nandan

@thakur-nandan
Thanks, Nandan! No, I do not have any specific model in mind, can we use the same T5 model that we use to generate the synthetic queries for the ranking? Can we use it to estimate the joint probability of passage and query?
Thanks,
Saeed


add more keywords, and retry another question

To handle with different answer given in playwright test although same document given.

lgtm


RWA-2028 fix order of repositories in build.gradle

JIRA link (if applicable)
https://tools.hmcts.net/jira/browse/RWA-2028
Change description
I do not think that this will fix the RWA-2028 but it is an obvious fault in build.gradle that stops it working properly
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[x] No

"fingerprint":"100000_A Client Error response code was returned by the server_http://wa-task-management-api-aat.service.core-compute-aat.internal/task/task-types?jurisdiction=jurisdiction_GET","detail":"A Client Error response code was returned by the server \n Evidence: HTTP/1.1 401 \n Solution: \n Other info: \n Reference: "


[BUG] false exit status on k3d get-kubeconfig and k3d delete subcomands

What did you do?
Stopped all clusters and I have excuted:
k3d get-kubeconfig --name=simple1
echo $?
0
k3d d -n=simple1
echo $?
0

How was the cluster created?

No clusters were created

What did you do afterwards?

OS operations (e.g. shutdown/reboot)?

What did you expect to happen?
Exit status was non zero, since no cluster with that name were created.
Concise description of what you expected to happen after doing what you described above.
Screenshots or terminal output
If applicable, add screenshots or terminal output (code block) to help explain your problem.
Which OS & Architecture?

Linux

Which version of k3d?

v1.3.3

output of k3d --version

Which version of docker?

output of docker version
Client: Docker Engine - Community
Version:           19.03.3
API version:       1.40
Go version:        go1.12.10
Git commit:        a872fc2f86
Built:             Tue Oct  8 00:59:59 2019
OS/Arch:           linux/amd64
Experimental:      false

Server: Docker Engine - Community
Engine:
Version:          19.03.3
API version:      1.40 (minimum version 1.12)
Go version:       go1.12.10
Git commit:       a872fc2f86
Built:            Tue Oct  8 00:58:31 2019
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          1.2.10
GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version:          1.0.0-rc8+dev
GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version:          0.18.0
GitCommit:        fec3683

Hey, thanks for opening this issue.
This makes definitely more sense, especially in a script environment.
Fixed on master (6d771a2).

New release containing this fix: https://github.com/rancher/k3d/releases/tag/v1.3.4


Integration Test for History Page

Overview
Integration test for history page.
Changes

Wrote test for components of history page to make sure transactions are filtered as expected.

Testing
To run test run yarn test src/containers/history from boba/packages/boba/gateway directory

Closing as this getting handle in new repo!


Set overflow:visible in lm_content

Fixes dropdown menus not being displayed if they don't fit on the gl pane
I've tested this and I could not find any issues with it, but I'll let another pair of eyes check it out before merging because if there's any issue, it might be too subtle for me to notice.
Fixes #1441 & related issues reported on Slack

Truth be told, I can't imagine this having an adverse affect on anything. Though I do wonder about the classname, but I guess that's just bootstrap sillyness.

lm_content comes from goldenlayout, not bootstrap no?

lm_content comes from goldenlayout, not bootstrap no?

well then I definitely don't understand this change, but if it it works it works i guess... I'd imagine it would seem more logical to push the popup onto a bigger Z order thing thingymabob? Is that possible?

My assumption is that the pop-up is contained within the goldenlayout window, and due to proximity to the bottom of the screen the pop-up decided to go up rather than down. Which of course means it ends up being cut off since it's so close to the top of the goldenlayout window.


linux: Enable Broadcom STB I2C bus driver

- What I did
This PR enables the Broadcom STB I2C bus driver in the kernel config.
Without this change, when I enable the GPU on my Pi 4, my HDMI TFT display shows U-boot doing its thing then goes blank.
Enabling the STB I2C bus fixes the problem by letting Linux communicate through the Display Data Channel (DDC) to allow the TFT display to work.
- How I did it
I enabled the CONFIG_I2C_BRCMSTB option in vc4graphics.cfg to ensure proper support for the brcm,bcm2711-hdmi-i2c device node.
Without this configuration, the I2C bus associated with HDMI on Broadcom BCM2711-based systems may fail to probe, causing issues with HDMI communication and display initialization.
Additionally, this resolves potential deferred probe issues observed in the kernel logs, ensuring the correct initialization of the HDMI I2C bus.

Merged. Thanks for this.

I'm currently working on scarthgap, would you like a backport of this?

@eigendude A clean cherry-pick would be nice indeed. Thanks!


Fix FileDescriptors release on file rotate [#2100]

As reported by @kpalumbokitu in #2100 the file descriptors for rotated logs were not released after rotation. This change is an copy of the code provided by @kpalumbokitu in #2100.
This code works for me and also solves the problem of winston writing to multiple logfiles at the same time as reported in #1972 and #1905.

Thank you for putting together the PR @fsievers! I wanted to reply and add that the proposed fix appears to resolve the issue we were seeing and allows log rotation to work as expected without leaving file descriptors stuck open.

It looks like a test is failing, expecting a file to exist which does not.  Can someone volunteer to look into why that's happening?

I tend to agree with the comment in https://github.com/winstonjs/winston/pull/2301#issuecomment-1523859559 -- I think this PR is a bit too aggressive and will break log rotation in other ways.  #2301 appears to have fixed the issue reported in #2100, at least for me, so I'm going to go ahead and close this PR for now.  But if you think that something like this is still needed, feel free to let me know / open a new issue.  Thank you for your contributions to winston!


Using corners of the map to calculate the area of whole world does not return correct result

Code Sample, a copy-pastable example if possible
from pyproj import Geod
from shapely.ops import transform, orient
from shapely.geometry import Point, Polygon

data = [
    (89.9999, 179.9999),
    (89.9999, -179.9999),
    (-89.9999, -179.9999),
    (-89.9999, 179.9999),
]
world_poly = Polygon(orient([(y, x) for (x, y) in data]))

geod = Geod(ellps="WGS84")
area = abs(geod.geometry_area_perimeter(world_poly)[0])
print(area)

Problem description
I want to calculate the area of whole world, so i use polygon with four points which are corners of the map. But the result is 283369789.8556872 which is very small.
Expected Output
The area of whole world
Environment Information

Output from: pyproj -v

pyproj info:
    pyproj: 3.0.1
      PROJ: 8.0.1
  data dir: /usr/share/proj
user_data_dir: /home/allen/.local/share/proj

System:
    python: 3.10.4 (main, Mar 23 2022, 23:05:40) [GCC 11.2.0]
executable: /usr/bin/python
   machine: Linux-5.17.4-arch1-1-x86_64-with-glibc2.35

Python deps:
       pip: 21.0
setuptools: 59.5.0
    Cython: 0.29.28

Installation method

pip

@cffk, apologies for bothering you again. However, I think you would be able to give a much better response to this question.

Plot your 4 plots on a globe (and replace the 89.9999 by 90) and you will see that they outline a narrow lune of width 0.0002 deg.  If you multiply your result by 360/0.0002 you get the full area of the earth. You got a negative result because your lune was traversed clockwise.
Better would be to bite off half the globe, e.g., with 3 points on the equator
  data = [ (0, 0), (0, 120), (0, -120) ]

and multiply this result by 2.
geometry_area_perimeter won't return more than half the area of the earth.  A larger polygon will be treated as enclosing the rest of the earth in the opposite direction.

@masterAllen Are you set now?  Unless you still have questions, this issue can be closed as resolved.

Thanks @cffk 👍. @masterAllen feel free to comment if you have further questions.

So sorry for late reply. I have no questions now, thank you for your help :D


Fix melt bugs

this fixes two melt/constructor/deadcode bugs:

don't replace prim_eq unit unit with unit (needs a default case for fold1)
when we have a binding that doesn't get used and is not removed by dead code, melt will not melt it and so constructor won't get rid of it, and we are left with an unmelted value in the end (see #500)

ideally we should have a pass right after FromCore that freshify every name
! @amosr @jystic

👍

:shipit:


'Incorrect header check' error in Imperva Cloud WAF Azure Function App

The Imperva Cloud WAF Azure Function is no longer functional. The function deploys and runs okay, however even with correct API configuration no logs are brought into the log analytics workspace. I can see errors in the traces logs in application insights for the function app: (partially redacted logs)
12/1/2022, 11:20:22.741 PM Downloading file 10x_3513xxx.log
12/1/2022, 11:20:23.181 PM Successfully downloaded file: 10x_3513xxx.log
12/1/2022, 11:20:24.346 PM Unpacking and decrypting file 10x_3513xxx.log
12/1/2022, 11:20:24.357 PM Something wrong. Exception error text: Error -3 while decompressing data: incorrect header check

To Reproduce
Steps to reproduce the behavior:

Go to Data Connectors > Imperva Cloud WAF (Using Azure Function)
Follow the connector instructions to deploy the function app and enter the configuration details
Observe error in application insights

Expected behavior
Expecting this to run successfully without error and for logs to appear in the Sentinel log analytics workspace.
Azure Function App details
Azure Functions SDK Version: <IP_ADDRESS>
Desktop:

OS: Windows 10 & 11
Browser: Microsoft Edge, Chrome
Version: Latest on both

We need logs under Monitor in Function. You can get the logs by using below steps:

Go to the Function
Click on function name
Click on Monitor
Click on the date and share the logs

Hi @rcegan , if you still need assistance, please reply here within 5 business days.

Since we have not received a response in the last 5 days, we are closing your issue #6784 as per our standard operating procedures. If you still need support for this issue, feel free to re-open at any time. Thank you for your co-operation.


[AMP Components in Firefox][NF]_[dynamic_amp_multi_page_flow]/password is not masking in example sign in box for mac os

Demo showing blank in advanced section for linked dropdown cards
1.Go to https://ampbyexample.com/
2.Tap on dynamic amp
3.Tap on multi page flow card and scroll down to example sign in box
4.Enter email and click on next
5.Enter Password and observe password is not masking and visible .
observe audio muted and non responsive
Observed result: Password is not masking and visible
Expected results: Password should be masked.

Mac os desktop
Firefox :57.0.4 (64-bit)

This cannot be solved as type=password is not supported on AMP.


add drop view ddl action (#131)

What problem does this PR solve?
For some reason the release-2.1 branch never merged commit 20bc24aef58addbd906513ec13424e5755e6d97a, which adds ActionDropView to the model.
tidb-binlog uses the release-2.1 branch to build, and that means it's impossible for it to handle DROP VIEW statements.
What is changed and how it works?
This branch simply cherry-picks commit 20bc24aef58addbd906513ec13424e5755e6d97a.
Check List
Tests
I checked out the release-2.1 branch of tidb-server and it builds fine after making this change.

LGTM


Renderer_Win: release of code?

Hi,
I was looking into this project and although it seems promising, it is missing AMD support (see also ticket #92).
As such I started to dig into the code to see how I could add this feature, but it looks like this source tree has only the communication protocols between the server & client. (I'm no hero in go, so I might be wrong)
Is it possible to release this as well so I could at the very least try and get it to work on my Radeon card?
Thanks!

Found the same issue. It seems they stop providing it in later images as well

Same problem when trying to run on ARM boards with Nvidia GPU (such as nvidia jetson). It's possible to compile the code for ARM with the go toolchain, but Renderer_Win is precompiled for x86_64 so no way to make it work.


Injecting services for component integration tests doesn't seem to work

The following code using this.inject.service never seems to inject the service into the component before trying to render.
/* jshint expr:true */
import { expect } from 'chai';
import {
  describeComponent,
  it
} from 'ember-mocha';
import hbs from 'htmlbars-inline-precompile';

describeComponent(
  'provider-options',
  'Integration: ProviderOptionsComponent',
  {
    integration: true
  },
  function() {
    it('renders', function() {
      // Set any properties with this.set('myProperty', 'value');
      // Handle any actions with this.on('myAction', function(val) { ... });
      // Template block usage:
      // this.render(hbs`
      //   {{#provider-options}}
      //     template content
      //   {{/provider-options}}
      // `);

      this.inject.service('i18n'); // <= This doesn't seem to inject the i18n service
      this.render(hbs`{{provider-options}}`);
      expect(this.$()).to.have.length(1);
    });
  }
);

Use the service name only (not the type and the name):
this.inject.service('i18n')

I'm sorry, I actually was using this.inject.service('i18n') and filed the issue with the code after a small edit. But this.inject.service('i18n') doesn't inject it either.

Hmm. It should be working. Can you make a demo repo that I can use to track down the issue your are seeing?

@rwjblue To clarify, this.inject.service('i18n') should inject i18n into the component itself, so from the component this.get('i18n) would be the service, correct?

this.inject.service is only available in tests, and injects the instance of service:i18n into the test context (not the component(s) under test).
Your component would still need i18n: Ember.inject.service() in it also.

That was my problem then--a misunderstanding. I have an application injection inject i18n into all components, is there no way to inject it at test time?

initializers do not run in integration tests, I suppose in general you could import the initializer function and call it from your setup/beforeEach block, but that seems much less useful.
I find using foo: Ember.inject.service() in my components to be much better than attempting to globally inject things into all components for a couple reasons:

The previously mentioned issue with integration tests.
A large percentage of the time, you do not actually need all services in all components.
Declaring foo: Ember.inject.service() inside your component definition makes it super clear where this magical foo property is coming from.

I'm going to close this, as I believe we are now on the same page

Yep, not a bug. Thanks @rwjblue

For posterity, another alternative is passing in the service when you call render. E.g.
this.render(hbs`{{provider-options i18n=i18n}}`);

Yep

Though I personally prefer to test the actual template invocation that will be used.

Yeah, I think I prefer just injecting it manually. I'm all for self-documenting code, and doing this in 1 line versus 2 in every test is a no brainer.


docs(guides): fix typos in HMR guide

In the Hot Module Replacement guide,

Added a missing semicolon.
Added a missing comma.
Added a missing pronoun.

Thanks!


TypeError: Cannot find function getIndentFirstLine in object Table

TypeError: Cannot find function getIndentFirstLine in object Table

Is there a work around or fix for this issue?


Symbol displaying incorrectly

The caption and simplified caption for Figure App.E.10.29 contains "Ωarg" which converts to gibberish in the final html modal window. That symbol should be converted to something else.

Fixed


Change to expecting a logger interface that zap.Logger satisfies

Rather than having a hard requirement that you receive an instance of zap.Logger, the better approach is to define a Logger interface that zap.Logger satisfies, and then replace your references to zap.Logger with references to your Logger interface.
This would make it possible for implementations using your library to be able to provide a logger that satisfies the interface even if it's not based on zap, otherwise you're forcing us to use zap explicitly to be able to pass our own logger.

Hey @intel352  - You're right, potentially locking the dependency for Zap isn't the best practice.
Would you want to suggest a fix PR ?
I'll take it internally with my team to understand the estimations here.


Allow overriding the XCTest directory in the Windows installer build

The paths where the Windows installer expects to finds XCTest binaries would conflict between architectures. This msbuild property allows us to have parallel XCTest cmake install trees so the usr\lib\swift\windows\XCTest.lib path does not collide.
Related changes:

https://github.com/apple/swift/pull/64425
https://github.com/compnerd/swift-build/pull/480

This should be associated with a change to apple/swift utils/build-windows-toolchain.bat

@compnerd The change is backwards compatible. If XCTEST_ROOT is not set explicitly, it will default to what it previously was hard-coded to:
<XCTEST_ROOT Condition=" '$(XCTEST_ROOT)' == '' ">$(PLATFORM_ROOT)\Developer\Library\XCTest-development</XCTEST_ROOT>

@tristanlabelle why not just update the three places that use this?
apple/swift:utils/build-windows-toolchain.bat
compnerd/swift-build:.github/workflows/swift-toolchain.yml
compnerd/swift-build:.azure/vs2022.yml

@compnerd I followed your suggestion and added the related changes. Would you then remove the default value for XCTEST_ROOT?


Slim case — Lower front two screw holes do not fit the screw part suggested

Having printed the two halves of the slim case, the exact Amazon Torx-head screw part suggested by the README seem to spin freely in the bottom half of the case.
Is there any way we can get access to CAD files so that we can adjust the screw diameter of the holes?

I'm closing this as I just noticed the .step files in there.

There's a link to the cad model in Onshap in the readme, too.

Thanks. I shrank the hole -- works like a charm now.


UID Changer

The UID display on the Esc menu didn't change, please consider changing it

Yes, I am well aware of this before the release.  I'll try to dig deeper when I have time, but I won't promise anything though


Hauki 146 admin ui base theme

Change the rest of the CSS-files to SASS-files
Use HDS colors and font family
Add custom background-color to main content

Looking good! 🔥


windows: Circumvent warning C4800

msvc does not like imlpicit boolean conversion
Is this the right way to fix it?
What if I use an unsigned int?
Would it be better to do this?
template<>
inline typename NanIntern::Factory<v8::Boolean>::return_t
NanNew<v8::Boolean, A0>(A0 arg0) {
  return NanIntern::Factory<v8::Boolean>::New(arg0 != 0);
}

Should the above then be complemented with this?
template<>
inline typename NanIntern::Factory<v8::Boolean>::return_t
NanNew<v8::Boolean, bool>(A0 arg0) {
  return NanIntern::Factory<v8::Boolean>::New(arg0);
}

R=@agnat

Yes this is the right solution. But I dont like this warning because the compiler optimizes the code the same way at compile time as far as I know..

Is this the right way to fix it?

I hope not! Let's see. This is from testRegression212 (#212), right? If you recall that one, it was not about silently accepting anything as a bool, but it was about not bailing out if it happens to be an int. I'd say we're good on that and the warning is correct. Users of crazy_bool just have to roll their own conversion/cast/comparison.
In the test case we should not convert the gboolean. It would defeat the purpose of the test. Instead we should disable the warning for testRegression212.

We should try really hard to avoid specializations (or overloads for that matter) on NanNew(). We know where that leads. AFAICT, it is the only way to handle the function pointers. But that should be it ... I hope ;).

Yes, warning comes from those two tests, gboolean and raw int. Disabling the warning around them sounds fair. I now agree fully on this with both of you.

This ought to do.

LGTM.

I think you missed a 4800 in news.cpp
// #212
NAN_METHOD(NewBoolean2) {
  NanScope();
  NanReturnValue(NanNew<v8::Boolean>(1));
}

You are correct. Will fix.
On January 20, 2015 1:05:30 AM EET, Mathias<EMAIL_ADDRESS>wrote:

I think you missed a 4800 in news.cpp
// #212
NAN_METHOD(NewBoolean2) {
 NanScope();
 NanReturnValue(NanNew<v8::Boolean>(1));
}

Reply to this email directly or view it on GitHub:
https://github.com/rvagg/nan/pull/254#issuecomment-70576902


Fix closure issues

@aptinio I was getting some errors after merging #4 I think due to closures. Take a look at the code changes I made. I'm still getting errors with the debug method ref.
Can you take a look and fix?

Thanks @aptinio . However, I'm still getting an error Cannot find module 'debug' at module.exports (/Users/tsummerville/Dev/metrics-closeio/index.js:4:15)

Any ideas?

npm install might do the trick.
On Sun, Apr 5, 2015 at 8:04 AM Tony Summerville<EMAIL_ADDRESS>wrote:

Thanks @aptinio https://github.com/aptinio . However, I'm still getting
an error Cannot find module 'debug' at module.exports
(/Users/tsummerville/Dev/metrics-closeio/index.js:4:15)
[image: image]
https://cloud.githubusercontent.com/assets/2989/6995176/35736f60-dafd-11e4-9d9c-0e6020be2909.png
Any ideas?
—
Reply to this email directly or view it on GitHub
https://github.com/rarestep/metrics-closeio/pull/5#issuecomment-89691145
.

Ha! Cool. I had tried that earlier and it didn't work. Just deleted
node_modules and did npm install again and we're good. Thanks!
--
Tony Summerville
Rarestep, Inc.
<EMAIL_ADDRESS>Direct:<PHONE_NUMBER> (USA, Central Time)
On Sat, Apr 4, 2015 at 7:06 PM, Aaron Tinio<EMAIL_ADDRESS>wrote:

npm install might do the trick.
On Sun, Apr 5, 2015 at 8:04 AM Tony Summerville<EMAIL_ADDRESS>wrote:

Thanks @aptinio https://github.com/aptinio . However, I'm still
getting
an error Cannot find module 'debug' at module.exports
(/Users/tsummerville/Dev/metrics-closeio/index.js:4:15)
[image: image]
<
https://cloud.githubusercontent.com/assets/2989/6995176/35736f60-dafd-11e4-9d9c-0e6020be2909.png
Any ideas?
—
Reply to this email directly or view it on GitHub
<
https://github.com/rarestep/metrics-closeio/pull/5#issuecomment-89691145>

.

—
Reply to this email directly or view it on GitHub
https://github.com/rarestep/metrics-closeio/pull/5#issuecomment-89691513
.


Check if assigned string  is valid in name setter method of Register class

Summary
This PR addresses the issue raised in #5461
The @name.setter method of Register class currently does not check if the assigned string
is valid as per the OPENQASM requirements. This check is, however, performed in the constructor.
For consistency, the check has now been added to the name setter method
Details and comments
In the @name.setter method, if the string being assigned to the register name is not OPENQASM compliant i.e. it does not conform to the format [a-z][a-zA-Z0-9_]* then a CircuitError is raised.

Thanks for the suggestion @kdk . I changed the jupyter-execute to a code-block and that seems to have fixed the problem.


Fix linting errors related to missing config section

Per @kami proposal

I don't like that approach either and I'm pretty sure there should be some better way to provide proper config during .pylint stage. I don't really have time to look for it though.

Yeah, that's really an ugly hack, but better approach is rewriting / changing the whole bootstrap and config loading phase...
Sadly something we probably won't do in the near term...

For future reference, full traceback of the linting issue:
================== pylint ====================

# Lint st2 components
===========================================================
Running pylint on st2actions
===========================================================
===========================================================
Running pylint on st2api
===========================================================
Traceback (most recent call last):
  File "/dock/st2/virtualenv/bin/pylint", line 11, in <module>
    sys.exit(run_pylint())
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/__init__.py", line 23, in run_pylint
    Run(sys.argv[1:])
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/lint.py", line 1315, in __init__
    linter.check(args)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/lint.py", line 736, in check
    self._do_check(files_or_modules)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/lint.py", line 867, in _do_check
    self.check_astroid_module(ast_node, walker, rawcheckers, tokencheckers)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/lint.py", line 947, in check_astroid_module
    walker.walk(ast_node)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/utils.py", line 938, in walk
    self.walk(child)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/utils.py", line 938, in walk
    self.walk(child)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/utils.py", line 938, in walk
    self.walk(child)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/utils.py", line 938, in walk
    self.walk(child)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/utils.py", line 935, in walk
    cb(astroid)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/checkers/base.py", line 549, in visit_call
    abstract_methods = _has_abstract_methods(infered)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/checkers/base.py", line 214, in _has_abstract_methods
    return len(unimplemented_abstract_methods(node)) > 0
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/checkers/utils.py", line 535, in unimplemented_abstract_methods
    infered = safe_infer(obj)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/pylint/checkers/utils.py", line 714, in safe_infer
    value = next(inferit)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/bases.py", line 302, in wrapped
    for res in _func(node, context, **kwargs):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/bases.py", line 99, in _infer_stmts
    for inferred in stmt.infer(context=context):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/context.py", line 49, in cache_generator
    for result in generator:
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/bases.py", line 302, in wrapped
    for res in _func(node, context, **kwargs):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/bases.py", line 325, in raise_if_nothing_inferred
    for node in func(*args, **kwargs):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/inference.py", line 100, in infer_call
    for callee in self.func.infer(context):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/context.py", line 49, in cache_generator
    for result in generator:
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/bases.py", line 302, in wrapped
    for res in _func(node, context, **kwargs):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/bases.py", line 99, in _infer_stmts
    for inferred in stmt.infer(context=context):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/context.py", line 49, in cache_generator
    for result in generator:
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/bases.py", line 302, in wrapped
    for res in _func(node, context, **kwargs):
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/inference.py", line 142, in infer_import_from
    module = self.do_import_module()
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/mixins.py", line 129, in do_import_module
    relative_only=level and level >= 1)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/scoped_nodes.py", line 498, in import_module
    return MANAGER.ast_from_module_name(modname)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/manager.py", line 136, in ast_from_module_name
    return self.ast_from_file(filepath, modname, fallback=False)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/manager.py", line 86, in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/builder.py", line 142, in file_build
    return self._post_build(module, encoding)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/builder.py", line 166, in _post_build
    module = self._manager.visit_transforms(module)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/manager.py", line 68, in visit_transforms
    return self._transform.visit(node)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/transforms.py", line 95, in visit
    module.body = [self._visit(child) for child in module.body]
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/transforms.py", line 65, in _visit
    return self._transform(node)
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/astroid/transforms.py", line 48, in _transform
    ret = transform_func(node)
  File "/dock/st2/pylint_plugins/api_models.py", line 50, in transform
    module = __import__(module_name, fromlist=[class_name])
  File "/dock/st2/st2api/st2api/controllers/v1/packs.py", line 33, in <module>
    from st2api.controllers.resource import ResourceController
  File "/dock/st2/st2api/st2api/controllers/resource.py", line 44, in <module>
    class ResourceController(rest.RestController):
  File "/dock/st2/st2api/st2api/controllers/resource.py", line 53, in ResourceController
    max_limit = cfg.CONF.api.max_page_size
  File "/dock/st2/virtualenv/local/lib/python2.7/site-packages/oslo_config/cfg.py", line 1896, in __getattr__
    raise NoSuchOptError(name)
oslo_config.cfg.NoSuchOptError: no such option: api
make: *** [.pylint] Error 1

LGTM, +1


Azure Functions authentication doesn't work in pre-production environment

Describe the bug
We heavily rely on the auth endpoint in form of the .auth/me endpoint as well as the injected headers in the backend. If a PR is created and a pre-production environment deployed, the .auth/me endpoint sometimes returns a 404, and the bring-your-own-function backend always returns a 405.
This renders our application technically unusable, what can we do to have the auth endpoint available in pre-production environments and to have the auth information handed over to the backend?
Additional context
Backend

Bring your own functions with EP plan and Node 14
No adjustment in any authorization settings, the App Service has the default "Azure Static Web Apps (Linked)" provider with 302 unauthorized returns

Frontend

GitHub based Vue.js application

The whole development process heavily relies on PRs and the ability to preview the application in a live environment before merging with GitHub checks that implement E2E tests based on the pre-production environment (that all fail currently).
EDIT: I just found the chapter in the docs, where is says that bring your own function apps are "Only supported in the Static Web Apps production environment.".
Are there any plans to fix that, as pre-production environments are somewhat useless currently with bring your own functions?

Even in pre-production deployments that have the auth endpoint available, the Functions App always returns 405.

Hey, @mkarmark, any updates on support for authentication/authorization and bring your own functions on pre-production enviroments?

+1 on this. I had to switch to BYO function because I needed to generate a client-side auth token using a managed identity.  But doing so means my app collaborators can't use the staging environment feature to fully test out their changes.  Big Sad!

Any updates or plans on this @mkarmark and @anthonychu?

We're working on this. Hope to have an update in a month.

@anthonychu  any updates on this?
As I understand it - authentication does not work with preview environments at all.

Any updates @annikel ? Most projects I work with use the authentication layer, so preview and PR environments are basically not usable...

+1 here, or rather ... the preview environments seem to use the auth settings from production.
Created a SWA with dummy functions with no auth, set it up for per-branch preview environments, synced production branch from dev (created PR, merged it), no problems yet.
Started to add custom auth (Google) according to the docs (added staticwebabb.config.json, defined routes, defined .auth.identityProviders.google.registration, added client creds to app settings, etc.), then tried /.auth/login/google.
The google auth flow has started, but it wasn't using my client ID but some other, and therefore the identity of the app wasn't mine but "identity.2.azurestaticapps.net".
Then I tried all the voodoo magic incantations I could find on the mighty internet, none helped. Tried to specify bogus app setting name, or bogus properties in the config file, just to see an error, it didn't happen. As if my credentials in the config file weren't considered at all, only the presence of the identityProvider.
Before giving up, just as a "it can't get worse" measure I merged all this to production, to see if it works there or not.
It does work in production. /.auth/login/google, the auth flow starts, uses my client ID, shows my app name in the dialog, etc.
But the really strange thing was that from this point the preview environment started to work as well, using my client ID, showing the auto-generated name of the app (<adjective>-<noun>-<hex number>.2.azurestaticapps.net).
Seems like the preview is doing the same auth as production, only with different domain name?
During my voodoo rain dance I also added Facebook as an identity provider, just with a dummy, invalid app ID and secret. Now when I did /.auth/logout, got an error page from Facebook that this app ID is invalid. Of course it was.
So on the development branch I removed the auth.identityProviders.facebook entry from the config environment, pushed it, waited until deployment, tried /.auth/logout again, and the Facebook error page showed up still.
Merged dev into prod again, waited until deploy, tried /.auth/logout in the preview environment (that hasn't been changed at all), and ... no Facebook error, just a nice and successful logout redirect to Google.
So, it seems to me that the preview environments are using the authentication config and credentials from the production branch.

@anthonychu was the functionality to use the full authentication/authorization features in every environment type released in the meantime? I could close the issue then.

I'm facing the same issue here. Technically, if we need AAD for both StaticWebApp and Azure Functions (with Azure Functions is the backend API of StaticWebApp), there is no way we could authorize the requests
@anthonychu do we have any update or workaround for this issue?


Error while installing packages: scripts/patch_menubar fails

Output from a yarn install:
yarn install v1.22.19
[1/4] 🔍  Resolving packages...
success Already up-to-date.
$ node scripts/patch_menubar
/Users/bmulholland/sources/gitify/scripts/patch_menubar.js:21
        if (err) throw err;
                 ^

[Error: ENOENT: no such file or directory, open 'node_modules\menubar\lib\Menubar.js'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: 'node_modules\\menubar\\lib\\Menubar.js'
}

Node.js v18.4.0
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

I saw your note here: https://github.com/manosim/gitify/issues/545#issuecomment-1108279938
But the install still fails then:
yarn install v1.22.19
[1/4] 🔍  Resolving packages...
success Already up-to-date.
$ node scripts/patch_menubar
Error: version mismatch while patching node_modules\menubar\lib\Menubar.js:
        Expected version: "9.1.1", Installed Version: "9.2.0"

Huh I think I missed this, but anyways the scripts/patch_menubar is not needed anymore since the package was updated
I'll update the main branch now

fixed by https://github.com/Araxeus/gitify/commit/741cd90ae0073a55c0055c24155c400e0d90ecf5


feat: add fallback prop to ProtectedRoute and ProtectedParentRoute

Adds a fallback prop to protected routes when the inner suspense is loading or the condition returns None.
Closes https://github.com/leptos-rs/leptos/issues/3263

I like it! Nice work! I'm happy to merge this, I wonder if any of our examples use it. It'd be a nice addition


MonacoEnvironment declared more than once

After installing the @cisstech/nge package and its dependency, monaco-editor, I added the module to my app.module and child module.
I implemented the nge-monaco-editor component and when I run the application via ng serve, I receive the following error:
Error: node_modules/monaco-editor/esm/vs/editor/editor.api.d.ts:12:9 - error TS2451: Cannot redeclare block-scoped variable 'MonacoEnvironment'.

12     let MonacoEnvironment: Environment | undefined;
           ~~~~~~~~~~~~~~~~~

  node_modules/monaco-editor/monaco.d.ts:11:13
    11 declare let MonacoEnvironment: monaco.Environment | undefined;
                   ~~~~~~~~~~~~~~~~~
    'MonacoEnvironment' was also declared here.

Error: node_modules/monaco-editor/monaco.d.ts:11:13 - error TS2451: Cannot redeclare block-scoped variable 'MonacoEnvironment'.

11 declare let MonacoEnvironment: monaco.Environment | undefined;
               ~~~~~~~~~~~~~~~~~

  node_modules/monaco-editor/esm/vs/editor/editor.api.d.ts:12:9
    12     let MonacoEnvironment: Environment | undefined;
               ~~~~~~~~~~~~~~~~~
    'MonacoEnvironment' was also declared here.

Can you share at least the following informations to allow me to test and reproduce the bug please :

Angular version
monaco-editor version
@cisstech/nge version
if possible parts of your code involving monaco-editor or nge-monaco-editor (modules, import statements, components...)

Try to install the same version of monaco-editor as the one used by nge i.e. 0.31.1 because the lib explicitly exports the typing file for monaco-editor so there may be a version conflict .
Thank you for reporting the error on the doc I have updated it!

I can verify that using<EMAIL_ADDRESS>does work as expected.
There's another bug in the sample code however...
The ready event emitter is of type monaco.editor.IEditor, but your onCreateEditor method expects to receive monaco.editor.IStandaloneCodeEditor


Sometimes uses wrong data for 'Artist' field

Following on from my comment in the PR, I think I know what's causing this but I don't have (yet) a reliable way to reproduce it. I was looking at the backend.py and saw this comment
# A typical interaction:
# 1. User searches for a keyword (YouTubeLibraryProvider.search)
# 2. User adds a track to the queue (YouTubeLibraryProvider.lookup)
# 3. User plays a track from the queue (YouTubePlaybackProvider.translate_uri)
#
# step 1 requires only 2 API calls. Data for the next steps are loaded in the
# background, so steps 2/3 are usually instantaneous.

This is not the way I interact with it. I do start with a search, but once I've found what I want I add those videos to a playlist and save the playlist. When I come back later I'm therefore adding a track to the queue (step 2) without first performing step 1.
It's when I do this that I see wierd data (usually the uploader's login name rather than their display name) in the 'Artist' field. But it doesn't always happen so perhaps there's a race condition going on. I don't have any specific examples that I know can definitely reproduce it, though I have noticed that once it starts showing the wrong data it will continue to, for that video, for ever.
I'm not using an API key. I'd be interested to know how to configure that.

Thanks for this. I'll look into that, and I suspect you are on the right track.
If you have an API key, you can set it in mopidy.conf and turn it on:
youtube_api_key = <api key you got from Google>
api_enabled = false

Works better with the API configured, but not everyone has a key...

@fatg3erman do either of these branches work any better:
bs4API - switches from regex to a parser for searches (you'll need to have the bs4 library installed) - see #33
list_items - standardises how certain data is retrieved.
Both are experimental and a bit hacky at the moment. For example the [list_items] branch makes some strong assumptions about what searches return, without actually checking...

Neither of those have made any difference.
What I have now is I have one track in the tracklist which always, no matter what I do, shows the user's login name. I'm now using an API key but that also doesn't make a difference. I've set core/restore_state to true in mopidy.conf and when I restart, with whatever branch, I do 'playlistinfo' through the MPD interface.
playlistinfo
file: youtube:video/ASMR Role Play New Home Consultation.b3P8U2EXTbY
Time: 2675
Artist: ASMRtherapist
Album: YouTube Video
Title: ASMR Role Play ۩ New Home Consultation ۩
Pos: 0
Id: 143
X-AlbumImage: https://i.ytimg.com/vi/b3P8U2EXTbY/hqdefault.jpg;https://i.ytimg.com/vi/b3P8U2EXTbY/default.jpg;https://i.ytimg.com/vi/b3P8U2EXTbY/mqdefault.jpg
OK

What's wierd is that this is the only track I can currently produce the issue with. Try just adding that URI to your tracklist and see what happens.

Ok - that's great. I'll check it out and see where I get to. Thanks!


Update synth scripts to remove jsondoc from rakefiles

These are the synth scripts that generate Rakefiles. Include a transform that removes the jsondoc related tasks.

Can you also remove this line from Gemfile?
gem "gcloud-jsondoc",
    git: "https://github.com/GoogleCloudPlatform/google-cloud-ruby.git",
    branch: "gcloud-jsondoc"

@quartzmo I'm pretty sure none of the synth scripts are using generated Gemfiles.


Create doc-per-release folder under docs/release-X.Y

The purpose of this PR is to allow multiple release docs to exist side-by-side and be referenced from the website, according to their version.
Signed-off-by: Moti Asayag<EMAIL_ADDRESS>rh-pre-commit.version: 2.3.1
rh-pre-commit.check-secrets: ENABLED

closing, taking slightly different approach.


Parse MD files coming over http as raw markdown files

This will allow us to point our verify-link script at a raw
MD file in a github repo and have it parsed correctly for
links.

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow