Running in Minimal Container

Seems to be a similar issue as https://github.com/coreos/fleet/issues/1280 where the kubelet, kube-proxy and kubectl in a minimal container such as Alpine Linux doesn't run but the kube-apiserver, kube-controller-manager and kube-scheduler does.
How to reproduce
$ docker run --rm -it alpine sh
/ # apk add -U ca-certificates
/ # for i in kube-apiserver kube-proxy kube-scheduler kube-controller-manager kubelet kubectl; do wget https://storage.googleapis.com/kubernetes-release/release/v0.20.2/bin/linux/amd64/$i; chmod +x $i; done
/ #
/ # ./kube-apiserver -h
Usage of ./kube-apiserver:
      --address=<IP_ADDRESS>: DEPRECATED: see --insecure-bind-address instead
      --admission-control="AlwaysAdmit": Ordered list of plug-ins to do admission control of resources into cluster. Comma-delimited list of: SecurityContextDeny, NamespaceLifecycle, NamespaceExists, NamespaceAutoProvision, DenyExecOnPrivileged, AlwaysDeny, ServiceAccount, ResourceQuota, LimitRanger, AlwaysAdmit
      --admission-control-config-file="": File with admission control configuration.
      --advertise-address=<nil>: The IP address on which to advertise the apiserver to members of the cluster. This address must be reachable by the rest of the cluster. If blank, the --bind-address will be used. If --bind-address is unspecified, the host's default interface will be used.
      --allow-privileged=false: If true, allow privileged containers.
      --alsologtostderr=false: log to standard error as well as files
      --api-burst=200: API burst amount for the read only port
      --api-prefix="/api": The prefix for API requests on the server. Default '/api'.
      --api-rate=10: API rate limit as QPS for the read only port
      --authorization-mode="AlwaysAllow": Selects how to do authorization on the secure port.  One of: AlwaysAllow,AlwaysDeny,ABAC
      --authorization-policy-file="": File with authorization policy in csv format, used with --authorization-mode=ABAC, on the secure port.
      --basic-auth-file="": If set, the file that will be used to admit requests to the secure port of the API server via http basic authentication.
      --bind-address=<IP_ADDRESS>: The IP address on which to serve the --read-only-port and --secure-port ports. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank, all interfaces will be used (<IP_ADDRESS>).
      --cert-dir="/var/run/kubernetes": The directory where the TLS certs are located (by default /var/run/kubernetes). If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.
      --client-ca-file="": If set, any request presenting a client certificate signed by one of the authorities in the client-ca-file is authenticated with an identity corresponding to the CommonName of the client certificate.
      --cloud-config="": The path to the cloud provider configuration file.  Empty string for no configuration file.
      --cloud-provider="": The provider for cloud services.  Empty string for no provider.
      --cluster-name="kubernetes": The instance prefix for the cluster
      --cors-allowed-origins=[]: List of allowed origins for CORS, comma separated.  An allowed origin can be a regular expression to support subdomain matching.  If this list is empty CORS will not be enabled.
      --etcd-config="": The config file for the etcd client. Mutually exclusive with -etcd-servers.
      --etcd-prefix="/registry": The prefix for all resource paths in etcd.
      --etcd-servers=[]: List of etcd servers to watch (http://ip:port), comma separated. Mutually exclusive with -etcd-config
      --event-ttl=1h0m0s: Amount of time to retain events. Default 1 hour.
      --external-hostname="": The hostname to use when generating externalized URLs for this master (e.g. Swagger API Docs.)
      --httptest.serve=: if non-empty, httptest.NewServer serves on this address and blocks
      --insecure-bind-address=<IP_ADDRESS>: The IP address on which to serve the --insecure-port (set to <IP_ADDRESS> for all interfaces). Defaults to localhost.
      --insecure-port=8080: The port on which to serve unsecured, unauthenticated access. Default 8080. It is assumed that firewall rules are set up such that this port is not reachable from outside of the cluster and that port 443 on the cluster's public address is proxied to this port. This is performed by nginx in the default setup.
      --kubelet-certificate-authority="": Path to a cert. file for the certificate authority.
      --kubelet-client-certificate="": Path to a client key file for TLS.
      --kubelet-client-key="": Path to a client key file for TLS.
      --kubelet-https=true: Use https for kubelet connections
      --kubelet-port=10250: Kubelet port
      --kubelet-timeout=5s: Timeout for kubelet operations
      --log-backtrace-at=:0: when logging hits line file:N, emit a stack trace
      --log-dir=: If non-empty, write log files in this directory
      --log-flush-frequency=5s: Maximum number of seconds between log flushes
      --logtostderr=true: log to standard error instead of files
      --long-running-request-regexp="(/|^)((watch|proxy)(/|$)|(logs|portforward|exec)/?$)": A regular expression matching long running requests which should be excluded from maximum inflight request handling.
      --master-service-namespace="default": The namespace from which the kubernetes master services should be injected into pods
      --max-requests-inflight=400: The maximum number of requests in flight at a given time.  When the server exceeds this, it rejects requests.  Zero for no limit.
      --min-request-timeout=1800: An optional field indicating the minimum number of seconds a handler must keep a request open before timing it out. Currently only honored by the watch request handler, which picks a randomized value above this number as the connection timeout, to spread out load.
      --old-etcd-prefix="/registry": The previous prefix for all resource paths in etcd, if any.
      --port=8080: DEPRECATED: see --insecure-port instead
      --profiling=true: Enable profiling via web interface host:port/debug/pprof/
      --public-address-override=<IP_ADDRESS>: DEPRECATED: see --bind-address instead
      --runtime-config=: A set of key=value pairs that describe runtime configuration that may be passed to the apiserver. api/<version> key can be used to turn on/off specific api versions. api/all and api/legacy are special keys to control all and legacy api versions respectively.
      --secure-port=6443: The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all.
      --service-account-key-file="": File containing PEM-encoded x509 RSA private or public key, used to verify ServiceAccount tokens. If unspecified, --tls-private-key-file is used.
      --service-account-lookup=false: If true, validate ServiceAccount tokens exist in etcd as part of authentication.
      --service-cluster-ip-range=<nil>: A CIDR notation IP range from which to assign service cluster IPs. This must not overlap with any IP ranges assigned to nodes for pods.
      --service-node-port-range=: A port range to reserve for services with NodePort visibility.  Example: '30000-32767'.  Inclusive at both ends of the range.
      --ssh-keyfile="": If non-empty, use secure SSH proxy to the nodes, using this user keyfile
      --ssh-user="": If non-empty, use secure SSH proxy to the nodes, using this user name
      --stderrthreshold=2: logs at or above this threshold go to stderr
      --storage-version="": The version to store resources with. Defaults to server preferred
      --tls-cert-file="": File containing x509 Certificate for HTTPS.  (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to /var/run/kubernetes.
      --tls-private-key-file="": File containing x509 private key matching --tls-cert-file.
      --token-auth-file="": If set, the file that will be used to secure the secure port of the API server via token authentication.
      --v=0: log level for V logs
      --version=false: Print version information and quit
      --vmodule=: comma-separated list of pattern=N settings for file-filtered logging
/ # ./kube-controller-manager -h
Usage of ./kube-controller-manager:
      --address=<IP_ADDRESS>: The IP address to serve on (set to <IP_ADDRESS> for all interfaces)
      --allocate-node-cidrs=false: Should CIDRs for Pods be allocated and set on the cloud provider.
      --alsologtostderr=false: log to standard error as well as files
      --cloud-config="": The path to the cloud provider configuration file.  Empty string for no configuration file.
      --cloud-provider="": The provider for cloud services.  Empty string for no provider.
      --cluster-cidr=<nil>: CIDR Range for Pods in cluster.
      --cluster-name="kubernetes": The instance prefix for the cluster
      --concurrent-endpoint-syncs=5: The number of endpoint syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load
      --concurrent-rc-syncs=5: The number of replication controllers that are allowed to sync concurrently. Larger number = more reponsive replica management, but more CPU (and network) load
      --deleting-pods-burst=10: Number of nodes on which pods are bursty deleted in case of node failure. For more details look into RateLimiter.
      --deleting-pods-qps=0.1: Number of nodes per second on which pods are deleted in case of node failure.
      --httptest.serve=: if non-empty, httptest.NewServer serves on this address and blocks
      --kubeconfig="": Path to kubeconfig file with authorization and master location information.
      --log-backtrace-at=:0: when logging hits line file:N, emit a stack trace
      --log-dir=: If non-empty, write log files in this directory
      --log-flush-frequency=5s: Maximum number of seconds between log flushes
      --logtostderr=true: log to standard error instead of files
      --master="": The address of the Kubernetes API server (overrides any value in kubeconfig)
      --namespace-sync-period=5m0s: The period for syncing namespace life-cycle updates
      --node-monitor-grace-period=40s: Amount of time which we allow running Node to be unresponsive before marking it unhealty. Must be N times more than kubelet's nodeStatusUpdateFrequency, where N means number of retries allowed for kubelet to post node status.
      --node-monitor-period=5s: The period for syncing NodeStatus in NodeController.
      --node-startup-grace-period=1m0s: Amount of time which we allow starting Node to be unresponsive before marking it unhealty.
      --node-sync-period=10s: The period for syncing nodes from cloudprovider. Longer periods will result in fewer calls to cloud provider, but may delay addition of new nodes to cluster.
      --pod-eviction-timeout=5m0s: The grace peroid for deleting pods on failed nodes.
      --port=10252: The port that the controller-manager's http service runs on
      --profiling=true: Enable profiling via web interface host:port/debug/pprof/
      --pvclaimbinder-sync-period=10s: The period for syncing persistent volumes and persistent volume claims
      --register-retry-count=10: The number of retries for initial node registration.  Retry interval equals node-sync-period.
      --resource-quota-sync-period=10s: The period for syncing quota usage status in the system
      --root-ca-file="": If set, this root certificate authority will be included in service account's token secret. This must be a valid PEM-encoded CA bundle.
      --service-account-private-key-file="": Filename containing a PEM-encoded private RSA key used to sign service account tokens.
      --stderrthreshold=2: logs at or above this threshold go to stderr
      --sync-node-status=false: DEPRECATED. Does not have any effect now and it will be removed in a later release.
      --v=0: log level for V logs
      --version=false: Print version information and quit
      --vmodule=: comma-separated list of pattern=N settings for file-filtered logging
/ # ./kube-scheduler -h
Usage of ./kube-scheduler:
      --address=<IP_ADDRESS>: The IP address to serve on (set to <IP_ADDRESS> for all interfaces)
      --algorithm-provider="DefaultProvider": The scheduling algorithm provider to use, one of: DefaultProvider
      --alsologtostderr=false: log to standard error as well as files
      --kubeconfig="": Path to kubeconfig file with authorization and master location information.
      --log-backtrace-at=:0: when logging hits line file:N, emit a stack trace
      --log-dir=: If non-empty, write log files in this directory
      --log-flush-frequency=5s: Maximum number of seconds between log flushes
      --logtostderr=true: log to standard error instead of files
      --master="": The address of the Kubernetes API server (overrides any value in kubeconfig)
      --policy-config-file="": File with scheduler policy configuration
      --port=10251: The port that the scheduler's http service runs on
      --profiling=true: Enable profiling via web interface host:port/debug/pprof/
      --stderrthreshold=2: logs at or above this threshold go to stderr
      --v=0: log level for V logs
      --version=false: Print version information and quit
      --vmodule=: comma-separated list of pattern=N settings for file-filtered logging
/ # ./kubelet -h
sh: ./kubelet: not found
/ # ./kube-proxy -h
sh: ./kube-proxy: not found
/ # ./kubectl -h
sh: ./kubectl: not found

Kube-apiserver is statically linked but kubelet is dynamically linked:

/ # ldd ./kube-apiserver
ldd: ./kube-apiserver: Not a valid dynamic program
/ # ldd ./kubelet
	/lib64/ld-linux-x86-64.so.2 (0x7f3e9c1fc000)
	libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f3e9c1fc000)
	libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f3e9c1fc000)

IIUC, @UserTaken is using Alpine Linux, which requires position-independent executables for security reasons, and a statically linked program is not a position-independent executable.
@ArtfulCoder or @lavalamp it looks like you touched some code related to static linking, so I wonder if you know why we chose we chose to statically link some targets and not others.  Would it be possible to provide an env var used by the build script to force dynamic linking?
@UserTaken how inconvenient is it for you to build from source for now?

KUBE_STATIC_OVERRIDES=kubectl hack/build-go.sh cmd/kubectl

@lavalamp the user wants to make things be dynamic, not static.

Ah, I see. In that case, you'd have to edit the bash function that uses KUBE_STATIC_OVERRIDES to always return false.

@UserTaken is this blocking you or do you have a workaround?  If you are stuck, I can try to suggest a workaround.  To do that, it would help if you tell me which getting-started guide and which cloud provider you are using.

@erictune My guess would be the docker deployment guide and I also saw an issue from @UserTaken on a k8s docker image I rolled for simple testing: https://github.com/kelseyhightower/kubeos
docker run -d --net=host --privileged --name=kubestack \
-v /sys:/sys:ro \
-v /:/rootfs:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run:/var/run:rw \
-v /var/lib/kubelet/:/var/lib/kubelet:rw \
-v /var/lib/docker/:/var/lib/docker:ro \
kelseyhightower/kubestack:0.20.2

The kubeos container is pretty large (360MB), and we would save about ~150MB if we could run the binaries on Alpine linux.
One thing that I think will be a blocker is that Alpine Linux uses musl and not glibc, so I think we will need to build the k8s binaries under Alpine Linux and the golang package built using musl

Related:
https://github.com/blang/golang-alpine-docker

@erictune As a workaround I decided to build my own minimal Buildroot base container with the necessary dependencies. For normal testing I am using Fleet + Rkt to deploy the individual components so I'm not inconvenient by this.

Alpine is one of the most used/loved tiny base image and may well be officially supported by Nginx for example. The main thing blocking it to run on Kubernetes seems the be the DNS lookup especially the search argument.

@ArtfulCoder @thockin See above DNS related question.

Alpine now has support for DNS search paths, but ONLY in the alpine:edge container.  Once that gets promoted to a :latest image, I would feel comfortable telling people to go nuts.  In the mean time, please try it out!

@thockin Yes I saw that but I tried and it seems the DNS lookup is still broken even if I use latest alpine:edge and latest Kuberentes.

How so?  It works for me.
$ kubectl run egde --tty -i --restart=Never --image=alpine:edge sh
Waiting for pod default/egde-fv2xf to be running, status is Pending, pod
ready: false
Waiting for pod default/egde-fv2xf to be running, status is Pending, pod
ready: false

Hit enter for command prompt

/ # nslookup kubernetes
nslookup: can't resolve '(null)': Name does not resolve

Name:      kubernetes
Address 1: <IP_ADDRESS>
/ # nslookup kube-dns.kube-system
nslookup: can't resolve '(null)': Name does not resolve

Name:      kube-dns.kube-system
Address 1: <IP_ADDRESS>
/ #

On Thu, Mar 3, 2016 at 3:55 AM, Werner Beroux<EMAIL_ADDRESS>wrote:

@thockin https://github.com/thockin Yes I saw that but I tried and it
seems the DNS lookup is still broken even if I use latest alpine:edge and
latest Kuberentes.
—
Reply to this email directly or view it on GitHub
https://github.com/kubernetes/kubernetes/issues/10732#issuecomment-191724575
.

I changed an Nginx from Debian to Alpine and after the change it says:
2016/03/04 16:12:53 [emerg] 1#0: host not found in upstream "php" in /etc/nginx/conf.d/default.conf:39

php is an existing service name. The only thing that changed is the image. Services and so one remained as before.
I changed the Nginx configuration so that it doesn't try to reach php and did:
$ nslookup php
nslookup: can't resolve '(null)': Name does not resolve

nslookup: can't resolve 'php': Name does not resolve

However if I include the namespace (in which it is so normally I shouldn't have to), it works:
$ nslookup php.my-namespace
Name:      php.alc
Address 1: <IP_ADDRESS>

Can you show me /etc/resolc.conf?  That doesn't align with my experience...
On Fri, Mar 4, 2016 at 8:25 AM, Werner Beroux<EMAIL_ADDRESS>wrote:

I changed an Nginx from Debian to Alpine and after the change it says:
2016/03/04 16:12:53 [emerg] 1#0: host not found in upstream "php" in /etc/nginx/conf.d/default.conf:39
php is an existing service name. The only thing that changed is the
image. Services and so one remained as before.
I changed the Nginx configuration so that it doesn't try to reach php and
did:
$ nslookup php
nslookup: can't resolve '(null)': Name does not resolve
nslookup: can't resolve 'php': Name does not resolve
However if I include the namespace (in which it is so normally I shouldn't
have to), it works:
$ nslookup php.my-namespace
Name:      php.alc
Address 1: <IP_ADDRESS>
—
Reply to this email directly or view it on GitHub
https://github.com/kubernetes/kubernetes/issues/10732#issuecomment-192342564
.

$ cat /etc/resolv.conf
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
search my-namespace.svc.cluster.local svc.cluster.local cluster.local c.pmy-roject-id.internal. google.internal.
options ndots:5

Ahh, musl still queries nameservers in parallel.  I think you are just
losing the race.  In v1.2 we are moving to a single nameserver line.  Can
you try that?
On Mar 5, 2016 3:33 AM, "Werner Beroux"<EMAIL_ADDRESS>wrote:

$ cat /etc/resolv.conf
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
search my-namespace.svc.cluster.local svc.cluster.local cluster.local c.pmy-roject-id.internal. google.internal.
options ndots:5
—
Reply to this email directly or view it on GitHub
https://github.com/kubernetes/kubernetes/issues/10732#issuecomment-192624874
.

Once v1.2 is release on GKE sure (I'm waiting impatiently on it). I wish it the alpha and/or beta would be on GKE as well.

Any news here?

@thockin I got it working on Kubernetes v1.2 with alpine:3.4 (alpine:3.3 will not work).

Ok to close this?
On Jun 9, 2016 12:59 PM, "Werner Beroux"<EMAIL_ADDRESS>wrote:

@thockin https://github.com/thockin I got it working on Kubernetes v1.2
with alpine:3.4 (alpine:3.3 will not work).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/kubernetes/issues/10732#issuecomment-225008282,
or mute the thread
https://github.com/notifications/unsubscribe/AFVgVJZwoMxGnDRTFyptZ4pU7mfz3cWWks5qKHCDgaJpZM4FSTh8
.

Out of curiosity, what changed in 3.4 to make it work?

Can you confirm that all the alpine images I'm using from Docker Hub will now work with Kubernetes ?
I'm using for all my websites a single host Docker-based setup now with almost only Alpine images, and I'm setting up a little Kubernetes cluster to try to make all of this fault-tolerant and load-balanced.
I would like to know if I have to change all of my images to Debian-based images.

Only Alpine 3.4 and later.
On Sat, 30 Jul 2016 at 20:41 Yann Kempf<EMAIL_ADDRESS>wrote:

Can you confirm that all the alpine images I'm using from Docker Hub will
now work with Kubernetes ?
I'm using for all my websites a single host Docker-based setup now with
almost only Alpine images, and I'm setting up a little Kubernetes cluster
to try to make all of this fault-tolerant and load-balanced.
I would like to know if I have to change all of my images to Debian-based
images.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/kubernetes/issues/10732#issuecomment-236382177,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAI5A7Q4mwOSmXvlNzMGKtBhbd4iWeO2ks5qa5rzgaJpZM4FSTh8
.


Command for using only FedNCM

Hi @GwenLegate,
Thanks for sharing the code of your work.
I wanted to implement only the FedNCM part without fine-tuning. Is there a way to do that using the commands, or do I need to update the code for that?
Thanks.

The issue is resolved.


top level scheduling doc

We need to add a top level scheduling_overview.md file, per https://github.com/kubernetes/kubernetes/issues/33188.
Alternatively we can update the docs in community, but i assume that we at this point want the scheduler to be in the user docs given the increasing complexity/configuratbility w/ affinity and so on.
Suggested format:  (if we agree on this, ill submit the PR, ihave it mostly set up now, it pulls from the implemented design proposals, diagrams and other tidbits that are spread around).
@timothysc @ConnorDoyle @davidopp PTAL the format below, if SGTM, i will issue the PR in the morning.  I have a (mostly) complete overview for end users which we can start with for the 1.6 stabilization release.
The Kubernetes Scheduler
The scheduling algorithm
Predicates and priorities policies
Scheduler extensibility
Predicates and Priorities in detail
Ranking the nodes
Advanced Topics:
Affinity
Controller Conflicts and Pod Equivalence
Rescheduling
Taints and Tolerations

@jayunit100 Can you clarify what the target audience is? Users? Admins? Developers? Today we have the following docs (unless I am forgetting some):
User documentation

https://kubernetes.io/docs/user-guide/node-selection/
https://kubernetes.io/docs/user-guide/compute-resources/

Admin documentation

https://kubernetes.io/docs/admin/multiple-schedulers/

Developer documentation

https://github.com/kubernetes/community/blob/master/contributors/devel/scheduler.md
https://github.com/kubernetes/community/blob/master/contributors/devel/scheduler_algorithm.md

Design docs

https://github.com/kubernetes/community/blob/master/contributors/design-proposals/multiple-schedulers.md
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/nodeaffinity.md
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/podaffinity.md
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/taint-toleration-dedicated.md
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduler_extender.md

[ I have intentionally omitted the rescheduling documents because we are going to change that soon and I think the current state of affairs and terminology is super-confusing. But anyway, the current admin guide documentation for it is here. ]
The current state of affairs for documentation is not ideal, but I would suggest that the two principles we should use in changing any of the documentation is
(1) keep the "what users and admins need to know" stuff separated from the "what developers need to know" stuff, as it is today -- don't overwhelm users and admins with stuff they don't need to know (e.g. inner workings of scheduler), but it's fine to give a link to the more detailed developer docs (just as its fine to link from developer docs to design docs)
(2) build on the existing docs rather than creating more
cc/ @kubernetes/sig-docs-misc

Thanks for linking all of those, yes, much of that information is what I was consolidating.  The audience is users , but developers and admins also can be users at times: and they need a canonical place to start reading about the scheduler , even if we link some content to other places.
For users, references on how the scheduler works, without diving too deep, should be consolidated in the docs.  Right now somewhat scattered with node-selection sort of being a good starting point.

parts of design docs (like affinity, multiple sched) should be upleveled or at least linked from a canonical scheduling page in the top level docs.

predicate and priority workflows should be exposed to the user, since after all we expose the rollup of those via kubectl and they are the most common reason that a user fails to get an app running.

And of course, since scheduler extensions are a user feature, I guess those should be exposed to in the user docs.

I'm under the assumption that community/devel docs not guaranteed to be maintained for end users and so there needs to be a periodic movement into top level docs once features are hardened.  If not, community/Devel will be the de facto standard for granular docs and that may not be very convenient.

I guess the only outstanding question is: What should be the canonical reference point for the scheduler docs?

docs: node-selection (we could rename it)
devel: scheduler.md (we could promote it to the docs repo)
other candidates

Is this part of a particular release? Is there existing content for it? Have you connected with anyone in the docs team?

yeah we all do have the goal of 1.6 release doc clean ups. The only real question is how to handle deduplication and sprawl across the many repos that we have now.
After David's earlier feedback, My main suggestion is a canonical source of truth which links out to other sources. Just want to make sure we are on the same page before we start the work to cleanup or consolidate as necessary

Adding @chenopis and @devin-donnelly who are working on the structure of the Kubernetes docs.

Yeah, I'm all for a canonical source of truth. Let's see where @devin-donnelly thinks that should be.

FYI from sig-scheduling meeting, we've all agreed canonical single integration point is the first step.  im pulling the data together now for that.


Switch from libjsoncpp to nlohmann::json.

I propose that we switch to the nlohmann json library.

Performance Twice as fast, more standards compliant, smaller code size [1]
Activeness Fewer old issues, more recent commits [2, 3]
Usability Using nlohmann is basically Python dicts (type specifier optional, overloading hides ugliness like ::GetValue, but you can be specific when you want)
JSON Conversion We can avoid inheriting JsonSerializable by declaring to_json and from_json functions in the relevant namespaces for arbitrary types. The library handles the rest.

[1] https://github.com/miloyip/nativejson-benchmark
[2] https://github.com/nlohmann/json
[3] https://github.com/open-source-parsers/jsoncpp

Coverage increased (+0.2%) to 98.148% when pulling fc7316def3b6d09cac1e5095bf0230a707984d5a on lmwnshn:jsonlib into 679610e830b6ac62fb98a751c0b7bee46842ebdc on cmu-db:master.


How to get a product and its metafields?

I'm doing this and looping over a lot of products:
@products = ShopifyAPI::Product.find(:all, params: { limit: 250, ids: product_ids.join(',') })

The problem is in my view, I need to display a product's metafield value.
So I'm doing something like:
<% @products.each do |product| %>

<%= product.title %>

<%= product.metafields.find{|m| m.namespace == 'ABC' and m.key == 'some_key'}.value %>

<% end %>

The problem is when I hit product.metafields I believe that's tapping the API again for each product in the loop, and I'm running into API rate issues.
Is there a way to include metafields in the original Product.find call?

I resorted to GraphQL for this. For anyone else coming here wanting to do the same thing, this is what I did:
@products = ShopifyAPI::Product.find(:all, params: { limit: 250, ids: product_ids.join(',') })
client = ShopifyAPI::GraphQL.client
ids = @products.map{ |p| 'gid://shopify/Product/' + p.shopify_product_id.to_s }
query_vars = {"ids" => ids}
query = client.parse <<-'GRAPHQL'
query($ids: [ID!]!) {
    nodes(ids: $ids) {
        ... on Product {
	    id
	    metafield(namespace:"ABC", key:"some_key") {
	        value
	    }
	}
    }
}
GRAPHQL
result = client.query(query, variables: query_vars)
@product_metafields = {}
result.data.nodes.each do |p|
    @product_metafields[p.id.remove('gid://shopify/Product/').to_i] = p.metafield.value
end

Then I could just grab the product's metafield value by doing:
<% @products.each do |product| %>

<%= product.title %>

<%= @product_metafields[product.id] %>

<% end %>

I'm relatively new to GraphQL, so there may be a more elegant way to do this. But this way worked, and only hit the API twice, instead of X number of times.


Small improvements to music manager

-added Tracks.None enum for invalid track id
-removed cross_fade option since it had no practical use
-cleaned the tween usage in _track_fade by using tween chaining (Note that you don't have to reassign a tween to apply change)
also used TRANS_SINE instead of TRANS_EXPO and changed lowest volum to -20 to make audio fading more seamless, based on this cheat sheet
still working on music as of now...

I was planning to work on the music manager, but you did it first :), I do like the clean implementation though.


chore: Bump Rust toolchain

This PR bumps Rust toolchain to match the version currently used by cubesql.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 89.503%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
8936

Relevant Lines:
9984

💛  - Coveralls


Pdfviewer doesn't smooth scrolling

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

Action Performed:

Open chat
Click on attached pdf
Try to scroll

Expected result:
Smooth scrolling in pdf viewer
Actual result:
Pdf viewer stuck on scroll tume
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

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

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

Version Number: 1.3.6
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43996225/234721048-bac456cd-055f-417c-b691-bf6d0510c10b.mp4
https://user-images.githubusercontent.com/43996225/234721074-73780075-f0ff-46b5-927e-8a503385a0a2.mp4
Expensify/Expensify Issue URL:
Issue reported by: @jaydipramani
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1682484148105269
View all open jobs on GitHub

Triggered auto assignment to @miljakljajic (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

@miljakljajic Huh... This is 4 days overdue. Who can take care of this?

@miljakljajic Huh... This is 4 days overdue. Who can take care of this?

I've been rolling out the monthly leaderboard so I haven't been able to get to this yet.

Apologies in the delay in getting to this - I've attempted to reproduce it using Browserstack and as you can see from the video, the scrolling is smooth on the native android app. Going to close.
https://github.com/Expensify/App/assets/28715117/f10e678f-214c-4a42-b12c-996a6bcd30a3

you are closed the issue but you doesn't understand this issue. you will see in this video pdf was very smoothly scrolling in web and in native app doesn't scroll smoothly.

@miljakljajic
you are closed the issue but you doesn't understand this issue. you will see in this video pdf was very smoothly scrolling in web and in native app doesn't scroll smoothly.

https://drive.google.com/file/d/19BksY7yl9PCJUPgj8z7RQCzQXlDjUpJV/view?usp=drivesdk


[ResourceMover] Add operation: MoveCollections_Delete back

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

Issue: https://github.com/Azure/azure-sdk-for-net/issues/30952 fixed by service team, add operation back.


Help

I started with flutter has some days and I need to put a DXF file in my project but I don't no how to do that, please somebody can help me?

We refactored at version 3.0.0


"Optional" annotation for limit

Summary
Add the Optional annotation for limit in two cases, since it was both times type hinted to be a int, but also accepted None for no limit.
Testing is not needed, since its just annotation for values that already are used for it.

Checklist

[X] If code changes were made then they have been tested.

[ ] I have updated the documentation to reflect the changes.
[ ] I have run task pyright and fixed the relevant issues.

[X] This PR fixes an issue.
[ ] This PR adds something new (e.g. new method or parameters).
[ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
[ ] This PR is not a code change (e.g. documentation, README, ...)

The docstring for audit_logs should probably also be corrected

The docstring for audit_logs should probably also be corrected

Agreed, totally overlooked that one.

@DenverCoder1 Think im done. Docstrings are both right, no other guild.py limit argument was a Optional with wrong annotation.


Replace get_selector_from_name and get_storage_var_address implementations

Closes #580
Introduced changes

Remove uses of starkware.starknet.public.api

replace get_selector_from_name
replace get_storage_var_address

[ ] This PR contains breaking changes

Should these method still be part of the public api? Perhaps it'd make sense to have underscores in their names.

Well, for instance, the Call class is in public api. It takes selector argument, which is easier to pass as get_selector_from_name("some_function") and one can make sure it is the actual function they want to call by just looking at their code (instead of having an int as selector there).

Is eth-hash a good choice of a library? I know that cairo-lang uses it but its readme recommends using higher level eth_utils.keccak(). Perhaps we should consider it?

You're right. Added the higher level eth-utils as a dependency.


Index.html

`

I am John Doe
And I'm a Photographer
Hire me

Page content..
Note that this technique will also make the image responsive: Resize the browser window to see the effect.

`


Remote debug can't hit the breakpoint in remote files

Config:
Dev14 Ent RC + latest PoshTools (http://aka.ms/Get-PoshToolsNightly)
Repro Steps:

Connect to a remote machine through "Enter PowerShell Session” icon in the REPL window
Open remote file and set a breakpoint
F5
Verify breakpoint can be hit.

Expected: Breakpoint can be hit.
Actual: Can't hit breakpoint. Please see below screenshot:

More Info:
Also repro in Dev12.

@v-hedli Thanks for reporting this issue. Looks like there was an fatal error happened before you open Log.ps1 to debug (as the output: there is a problem in powershell host service), would you be able to:

provide how did you run into the error message
try restart VS and do a fresh new remote session debugging, and see if you can have breakpoint hit.

There is this error message because i didn't install powershell 4.0 in my remote machine [which be installed in local machine]. After installing the powershell 4.0, this error is gone.
Fixed above issue and install the latest PoshTools (http://aka.ms/Get-PoshToolsNightly), remote session debugging works well.

re: PowerShell on remote machine... potentially related to https://github.com/Microsoft/poshtools/issues/194 ?

As my last comments said, now the issue has been resolved. Thanks Eric and Andre for looking into this.


ng-timeline nzcolor 自定义颜色无效

Version
0.7.0
Environment
ng5
Reproduction link
https://ng-zorro.github.io/version/0.7.x/components/timeline/zh
Steps to reproduce
无
What is expected?
可以自定义颜色
What is actually happening?
不可以自定义颜色
Other?

请升级至最新版本


ValueError: {'code': -32603, 'message': 'Remote node did not answer to eth_feeHistory correctly'}

Traceback (most recent call last):
File "/hd/honeypot.py", line 47, in
main()
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1128, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1053, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "/hd/honeypot.py", line 36, in main
us.make_trade(token, eth,<PHONE_NUMBER>00000)
File "/usr/local/lib/python3.10/site-packages/uniswap/decorators.py", line 29, in approved
self.approve(token)
File "/usr/local/lib/python3.10/site-packages/uniswap/uniswap.py", line 1073, in approve
tx = self._build_and_send_tx(function)
File "/usr/local/lib/python3.10/site-packages/uniswap/uniswap.py", line 1107, in _build_and_send_tx
transaction = function.buildTransaction(tx_params)
File "/usr/local/lib/python3.10/site-packages/web3/contract.py", line 1079, in buildTransaction
return build_transaction_for_function(
File "/usr/local/lib/python3.10/site-packages/web3/contract.py", line 1648, in build_transaction_for_function
prepared_transaction = fill_transaction_defaults(web3, prepared_transaction)
File "cytoolz/functoolz.pyx", line 250, in cytoolz.functoolz.curry.call
File "/usr/local/lib/python3.10/site-packages/web3/_utils/transactions.py", line 114, in fill_transaction_defaults
default_val = default_getter(web3, transaction)
File "/usr/local/lib/python3.10/site-packages/web3/_utils/transactions.py", line 64, in
web3.eth.max_priority_fee + (2 * web3.eth.get_block('latest')['baseFeePerGas'])
File "/usr/local/lib/python3.10/site-packages/web3/eth.py", line 637, in max_priority_fee
return fee_history_priority_fee(self)
File "/usr/local/lib/python3.10/site-packages/web3/_utils/fee_utils.py", line 45, in fee_history_priority_fee
fee_history = eth.fee_history(*PRIORITY_FEE_HISTORY_PARAMS)  # type: ignore
File "/usr/local/lib/python3.10/site-packages/web3/eth.py", line 863, in fee_history
return self._fee_history(block_count, newest_block, reward_percentiles)
File "/usr/local/lib/python3.10/site-packages/web3/module.py", line 57, in caller
result = w3.manager.request_blocking(method_str,
File "/usr/local/lib/python3.10/site-packages/web3/manager.py", line 198, in request_blocking
return self.formatted_response(response,
File "/usr/local/lib/python3.10/site-packages/web3/manager.py", line 171, in formatted_response
raise ValueError(response["error"])
ValueError: {'code': -32603, 'message': 'the method eth_feeHistory does not exist/is not available'}

web3  version:   5.28.0

The method _build_and_send_tx (a method in the underlying web3 library) is trying to query eth_feeHistory from ganache which is not added yet (See: https://github.com/trufflesuite/ganache/issues/1470). So when you're trying to call a smart contract with this library or the underlying web3 library on a ganache blockchain, this error occurs.
Will update here when I found a workaround.

Workaround
You can prevent the error above if you provide the gas price on your own.
_build_and_send_tx(function, tx_params={"gas_price": 10})

Since _build_and_send_tx is called by the methods you're likely using, you need to override either the transaction building method or the _build_and_send_tx method. Maybe there's another way but that's the first approaches that came to mind.

thx，we find web3 version: 5.24.0


Fix #2362, Add source routing APIs to SB

Checklist (Please check before submitting)

[x] I reviewed the Contributing Guide.
[x] I signed and emailed the appropriate Contributor License Agreement to<EMAIL_ADDRESS>and copied<EMAIL_ADDRESS>
Describe the contribution
Add two new APIs that allow more control over the message routing. These allow the caller to directly specify the route (MsgId) and size of the content, and the message will be delivered based on the passed in values vs. the values inside the message itself.
This restructures the existing/historical API calls to use the same underlying mechanism.  Send/Receive actions have a transaction object associated and this tracks the status and events.  Common event reporting is done based on this transaction object.
Fixes #2362
Testing performed
Build and run CFE including functional test app
Build and run sanity tests
Expected behavior changes
Adds two new APIs.  Existing APIs should be backward compatible, with some possible changes to the expected event IDs that might be generated under some off-nominal conditions.
System(s) tested on
Debian
Additional context
The new API allows the passed object to be any arbitrary data -- it does not need to be a CFE/CCSDS message at all.  Therefore this could be more suitable for things like CFDP PDU packets, etc. as it would not need to be forced to look like a CMD/TLM message.
Contributor Info - All information REQUIRED for consideration of pull request
Joseph Hickey, Vantage Systems, Inc.

Still have some (known) coverage and test workflow issues to solve in here, but wanted to get this going for CCB review today.

I don't understand the driver behind adding complexity to SB to handle blobs of data that aren't self identifiable, this doesn't seem like a "natural" fit for pub/sub.  Why not just wrap it with CCSDS if pub/sub is necessary, or implement point-to-point if it isn't?  Simple tools for simple jobs vs trying to expand SB to do everything.  Is this introducing a pattern of extending a core service beyond original intent, and if so what are the bounds?  There's no longer embedded size, identification, common handling supported by binary blob messages, it's not clear why such an extended change makes sense in the open source context.  Maybe just add a library that does wrapping/unwrapping for you and can be used by anyone who needs to send blobs, or some other way to avoid such major rewrites?  My concern is now receivers need to know if it's a blob or not, which none of the standard receivers handle, so as soon as this is introduced there's an interoperability issue all over (not every subscribed MID can be checked for size or whatever).

Yeah, arbitrary data blobs are not really the emphasis/driving need behind this.  Its more about the routing flexibility.
We already had the notion of the message itself as well as its "envelope" -- the CFE_SB_BuffertD_t that wrapped every message as it traversed the bus.  The latter was used for routing (mostly) but mainly for convenience, some code would still peek at the message.  This change makes the envelope address the authoritative one - that is, once a message gets put into its envelope, that envelope address becomes the one (and only) thing that is used for routing on the bus.
The fact that this permitted the message to be a binary blob was a side benefit - if nothing else, proving that delivery of a random binary blob works ensures that the delivery is being done based only on its envelope information.
This opens up a whole bunch of possibilities for future features:

Messages can be sent through intermediate delivery agent(s) - in case the dest is not directly reachable on the same SB subscription domain - they can go through one or more such hops if needed, on the way to their internal destination.  This is the current need of the stakeholders and the driving reason behind this PR
Envelope size could be bigger than the internal message size, with the extra space for things like a CRC and/or cryptographic signature for authentication.  This is also currently needed by the stakeholders, although there are other was of doing this that have been used, it is more complex and have been a big maintenance issue.  This would simplify.
Envelope content could be encrypted (might not be useful till we get isolated memory spaces, but still...).  Although this is not currently needed by the stakeholders right now, its been on the roadmap for some time.

If the concern has to do with the (possibility) of sending a binary blob and confusing a subscriber, we could conceivably restrict content to "Valid messages" even with this new API, and add some checks that the message attempting to be sent seems like an actual message.  I think all we could do is confirm that the CFE_MSG_GetSize() and CFE_MSG_GetMsgId() return reasonable values, which is really the only checks the currently calls do (that is, today one could generate a message that is complete garbage but as long as these two calls output values that are within range, the blob can be sent).   That isn't a particularly robust test of a message sanity, but its all we can do, and all we ever really did up to this point even with the current APIs.

While I get you could do these things all within SB using the SB internal "envelope" concept, I don't agree with such a temporary nature or adding complexity to SB to do things that also could require changes to every sender/receiver.  This concept seems to tie directly with SB, where it's dependent on these new APIs, only SB has the envelope information, it's gone as soon as delivered, etc.  If the envelope is part of the message (wrapped) that dependency is eliminated, the CCSDS spacepacket header is already an envelope and you can layer as needed to add all the functionality above yet maintain independences from SB "envelope" magic.  Wrapping w/ additional protocols (or encapsulating protocols in CCSDS space packets) has been common practice and eliminates the strict dependency on SB to get this all done.  You could keep the SB/MSG independence and just update MSG to handle whatever envelope/wrapper information is needed and it can be customized/localized to the specific projects that need it.  If folks really want this to work seamlessly across the common apps I just don't see how adding APIs and requiring special handling on the receiving side is the preferred approach.


header not found error for X compilation with system llvm

How to reproduce

Download and extract llvm release 14.0.0 to, say, /tmp/llvm-14
change toolchain_roots to  default to /tmp/llvm-14 for llvm_toolchain_with_sysroot (in tests/WORKSPACE)
in the tests dir, run scripts/run_xcompile_test.sh.

Here is the snapshot of the build failure on my Ubuntu 18.04

What's more:
If we add the following sysroot for arm64 (in tests/WORKSPACE)
http_archive(
    name = "chromium_sysroot_linux_arm64",
    build_file_content = """
filegroup(
  name = "sysroot",
  srcs = glob(["*/**"]),
  visibility = ["//visibility:public"],
)
""",
    sha256 = "0d4ba53fa4aed14e50c07a65131d078f2a3ee2f53e695ed93855facf4860bea5",
    urls = [
        "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/1126d9b629c97385a503debac7a1b59e60a3ab1b/debian_stretch_arm64_sysroot.tar.xz",
    ],
)

And defines a platform:
platform(
    name = "linux-aarch64-cross",
    exec_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:x86_64",
    ],
    constraint_values = [
        "@platforms//os:linux",
        "@platforms//cpu:aarch64",
    ],
)

Running
/usr/bin/bazel --bazelrc=/dev/null build --incompatible_enable_cc_toolchain_resolution --platforms=@com_grail_bazel_toolchain//platforms:linux-aarch64-cross --extra_toolchains=@llvm_toolchain_with_sysroot//:cc-toolchain-aarch64-linux --symlink_prefix=/ --color=yes //:stdlib_test

failed with:

This is a bug. Thanks for reporting. I am not handling paths properly when using absolute paths and sysroots.

Can you check now please?

Can you check now please?
Great! It works now!


state change event could include path

Right now the event just yields the new state, but including the updated path would also be helpful for integrating with eg PouchDB.

eg this event https://github.com/steida/este/blob/master/src/lib/state.js#L22 maybe could be called from https://github.com/steida/este/blob/master/src/lib/state.js#L40

Fork it, change api to meet your needs, send pull request. Or we can discuss it in forum.


Support pattern matching in  directives

Hey all,
Maybe this has been raised before but its something I would really like to see supported in TS.  Basically I would like the ability to support referencing TS files using patterns.  For example
This
/// <reference path="../../helpers/promiseHelper.ts" />
/// <reference path="../../helpers/loggingHelper.ts" />

could be
/// <reference path="../../helpers/*Helper.ts" />

or folder patterns
/// <reference path="/app/specs/**/*.ts" />

Thoughts?

while i see the value, this makes tooling much harder and more complex. now an IDE has to add a directory watcher on possibly the whole file system, so that eveytime you add a new file that matches your wild card it gets picked up.

In addition to what Mohamed mentioned, /// references in general are a little unwieldy and hopefully the future is more weighted towards tsconfig.json and ES6 modules.

I am not sure why this has been closed without and discussion. Currently you have to manage all these references manually and on very large apps this becomes painful.

one approach that i have seen to alleviate this issue is to to have smaller files that you would import instead of all files. so you would have something like helpers\index.ts:
/// <reference path="./promiseHelper.ts" />
/// <reference path="./loggingHelper.ts" />

then you would include that directly as /// <reference path="../../helpers/index.ts" /> instead of /// <reference path="../../helpers/*.ts" />

Yeah this is our current strategy, but this is just moving the location of the reference to a more local location to the file itself, you still have to manage them all still as well as managing the index file.

I think the ultimate fix is an easier way to breakup your code into "projects". this is tracked by #3469. this way you do not even need a reference.
also possibly related, is supporting globs in tsconfig.

👍

Any change regarding this issue? I want to create a system of modules. Each one of them gets connected to the state store. So I need to extend the AppState interface from each module without creating hardcoded imports. Some modules might not be around when I build the app. I thought of ambient declarations but they don't work with imports. Then I checked namespaces but again they need hardcoded imports. So I thought maybe reference path can do a wildcard trick.


Feature Request:  Reactive Landscape -- landscape deformation for footprints, trails and trample affects

Take a look at this example:
https://www.youtube.com/watch?v=HoeTIUf8Qs8&t=1s
He also has an in depth tutorial with a sample project of how he created this effect
https://www.youtube.com/playlist?list=PLNTm9yU0zou7mhiQRuEiysFqjtnizdvUM
This one has a nice feature of mud getting on your boots and then drying off
https://www.youtube.com/watch?v=uuJi5QfRiGI&t=112s

Yeah. Thanks for this info. I will add this to the roadmap & some other terrain tailing effects.
As of now, you have to customize the material.  Check our Core Customization guide.


FGRM222 does not advertise support for Multilevel Switch CC

Discussed in https://github.com/zwave-js/node-zwave-js/discussions/6976

Originally posted by @Patator33 July  4, 2024
Checklist

[X] I have read and followed the above instructions

[X] I have checked the troubleshooting section and my problem is not described there.

[X] I have read the changelog and my problem was not mentioned there or the fix did not work.

Describe the issue
What is happening?
Since 12.12.1, the FGRM222 (v22.22) have no multilevel switch. So i can just open and close with a binary switch.
When i use the wall switch manually, a multlilevel Switch v0 appear with just a current value.
With a FGR222, i have a multilevel switch v3 with possible action like target value.
What did you expect to happen instead?
have a complete multilevel swtich with positionning
Steps to reproduce the behavior:
re-interview node wiil do nothing but the multilevel swtch v0 desappear.
Anything else we should know?
Software versions
zwave-js-ui: 9.14.4
zwave-js: 12.12.1
home id:<PHONE_NUMBER>
home hex: 0xd242963c
install on LXC promox with tteck script
Device information
Manufacturer: Fibaro
Model name: FGRM 222
Node ID: ...
Checklist

[X] I made sure to provide a driver log on level debug.

[X] The log includes a re-interview of the problematic device (if applicable).

[X] The log includes the problematic interaction with the device (if applicable).

[X] I provided the node ID of the problematic device (if applicable).

Upload Logfile
zwavejs_2024-07-04.log

@Patator33 please test this config file. This page describes how to do that.
Note that you have to restart Z-Wave JS UI and re-interview the device afterwards.

I have do this and no multilevel switch.
Any other test to do ?

Please make a driver log, loglevel debug and attach it here as a file (drag & drop into the text field).
The log should include the startup of the driver (this happens when you enable log to file in the settings and save), as well as a re-interview.

I've restarted my ZwaveJS a couple of time after placing the device file into store/config into a file named fgrm222 (not sure this is correct and I do not know how to tell it's being picked up).
Reinterviewing node 23 does has not brought back the multilevel switch. Drvier debug log attached
zwave-js-ui-store.zip

Drvier debug log attached

That's not the driver log.

a file named fgrm222

It needs to be end in .json, otherwise it won't be picked up.

Ok, I've renamed the file in config. The multilevel switch is still missing after interviews. I've noticed there is a ManufacturerProprietary parameter which allows me to control the blinds including tilt fine. It does not get picked up by HA unfortunately.
Here is the new driver log. Node 23 is the one that I reinterviewed.
zwave-js-ui-store (1).zip

Yes this works now! HA repair picks up that there is a new config file. Brilliant. Thanks!

It's working for me. Sorry for my last message.
Thanks a lot !

Juste one thing, the manufacturer, the product and the product code have desappear.
Can we restore these information into zwavejsui by modifying the json file ?

switch entity

Do you mean the Binary Switch? I can remove that too.

Yes I mean exactly the binary switch. No need for it since the multivalue switch handles it all.

Ok, should be included in one of the upcoming releases. You can then remove your custom file afterwards.


Copy over filetype settings from vim-elixir

As discussed with @mhanberg, the maintainer

This plugin should set b:undo_ftplugin

@goto-engineering please add the following to the bottom of the file
let b:undo_ftplugin = 'setlocal sw< sts< et< isk< com< cms<'

I'll include it, thanks.


Document Language Tree

Motivation
While working on #1772, it took considerable time trying to understand LanguageTreeNodes and how they tie into the system.
The documentation of treebeard does also not help with understanding properties like lft or rgt, while the link to the referenced idea which they implemented is dead.
Proposed Solution

Add documentation about the Language Tree and what it tries to achieve (define deterministic structure for resolving (in part) automatic translations, ?), and let veteran members verify everything it is used for is described.
Add brief documentation to AbstractTreeNode about the lft, rgt and tree_id properties implemented in treebeard.ns_tree.NS_Node  just enough to understand the concept, if in a pinch.
Try to contribute the documentation upstream

Alternatives

Don't improve documentation and risk having to spend a lot of time researching how the Language Tree and NS_Nodes work next time
Additional Context

Lacking documentation in treebeard (excerpt). The second link in the first paragraph is dead.

Timo dropped a bit of knowledge in https://github.com/digitalfabrik/integreat-cms/pull/1930#discussion_r1042632899


ITK 5.3.0 Does not compile on Windows using Visual Studio 17 2022 x64

FAILED: complex/Plugins/ITKImageProcessing/CMakeFiles/ITKImageProcessing.dir/Debug/src/ITKImageProcessing/Filters/ITKMorphologicalWatershedImage.cpp.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe  /nologo /TP -DCOMPLEX_ENABLE_MULTICORE -DEbsdLib_BUILT_AS_DYNAMIC_LIB -DFMT_SHARED -DH5Support_USE_MUTEX -DH5_BUILT_AS_DYNAMIC_LIB -DH5_USE_110_API -DITKImageProcessing_EXPORTS -DTBB_USE_DEBUG -D_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING -DCMAKE_INTDIR=\"Debug\" -IE:\Workspace1\complex\src\Plugins\ITKImageProcessing\src -IE:\Workspace1\DREAM3D-Build\NX-ninja-v143\complex\Plugins\ITKImageProcessing\generated -IE:\Workspace1\complex\src -IE:\Workspace1\DREAM3D-Build\NX-ninja-v143\complex\generated -external:IE:\Workspace1\vcpkg-installed-v143\x64-windows\include -external:IE:\Workspace1\vcpkg-installed-v143\x64-windows\share\eigen3\..\..\include\eigen3 -external:IE:\Workspace1\vcpkg-installed-v143\x64-windows\include\ITK-5.3 -external:W0 /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /wd4275 /wd4251 /we4706 /we4715 /we4456 /we4457 /we4458 /we4459 /permissive- /MP /bigobj /showIncludes /Focomplex\Plugins\ITKImageProcessing\CMakeFiles\ITKImageProcessing.dir\Debug\src\ITKImageProcessing\Filters\ITKMorphologicalWatershedImage.cpp.obj /Fdcomplex\Plugins\ITKImageProcessing\CMakeFiles\ITKImageProcessing.dir\Debug\ /FS -c E:\Workspace1\complex\src\Plugins\ITKImageProcessing\src\ITKImageProcessing\Filters\ITKMorphologicalWatershedImage.cpp
E:\Workspace1\vcpkg-installed-v143\x64-windows\include\ITK-5.3\itkShapedNeighborhoodIterator.h(182): error C2516: 'itk::ShapedNeighborhoodIterator<TImage,TBoundaryCondition>::ConstIterator': is not a legal base class
E:\Workspace1\vcpkg-installed-v143\x64-windows\include\ITK-5.3\itkShapedNeighborhoodIterator.h(171): note: see declaration of 'itk::ShapedNeighborhoodIterator<TImage,TBoundaryCondition>::ConstIterator'
E:\Workspace1\vcpkg-installed-v143\x64-windows\include\ITK-5.3\itkShapedNeighborhoodIterator.h(182): note: the template instantiation context (the oldest one first) is
E:\Workspace1\vcpkg-installed-v143\x64-windows\include\ITK-5.3\itkShapedNeighborhoodIterator.h(265): note: see reference to class template instantiation 'itk::ShapedNeighborhoodIterator<TImage,TBoundaryCondition>' being compiled
E:\Workspace1\vcpkg-installed-v143\x64-windows\include\ITK-5.3\itkShapedNeighborhoodIterator.h(209): note: see reference to class template instantiation 'itk::ShapedNeighborhoodIterator<TImage,TBoundaryCondition>::Iterator' being compiled

Looks like it is this: https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2516?view=msvc-170
and looks like in those files there is that exact situation.
When can we get a fix and an ITK 5.3.1 release?

I think that ITK 5.3.0 compiles with an older VS2022. ITK 5.4 final is around the corner, you can try 5.4RC2.


Make pnpm run clean work

I don't think there's any reason to force users to install rimraf. I don't have it installed.

#1195  👈
develop

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @myieye and the rest of your teammates on  Graphite

Merge activity

Oct 31, 10:35 PM EDT: Graphite rebased this pull request as part of a merge.


Add metrics to track split affinity ratio

It would be interesting to know how often we end up picking the searcher with the best affinity.

i think this metric will be non-trivial to interpret. If it's at 100% or 0%, we are definitely doing perfectly, the worst case seemingly being 50%. But if every other split uses the 2nd best affinity, and does so consistency, we'll see 50% on that metric, yet 100% hit in practice.


feat: closes #65

Proposed changes
wrapper for parsers and theme
Types of changes

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation Update (if none of the other choices apply)

Checklist

[x] I have read the CONTRIBUTING doc
[x] Lint and unit tests pass locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have added necessary documentation (if appropriate)
[x] Any dependent changes have been merged and published in downstream modules

Codecov Report

Merging #66 (bbf6e32) into main (c20e612) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #66   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           40        41    +1
  Lines          603       629   +26
  Branches        95        99    +4
=========================================
+ Hits           603       629   +26

Impacted Files
Coverage Δ

packages/hooks/src/useTheme.ts
100.00% <ø> (ø)

packages/web/src/utils/resetCss.ts
100.00% <ø> (ø)

packages/cli/src/utils/buildTheme.ts
100.00% <100.00%> (ø)

packages/cli/src/utils/getCSSClasses.ts
100.00% <100.00%> (ø)

packages/core/src/morfeo.ts
100.00% <100.00%> (ø)

packages/svelte/src/morfeoAction.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


automate checksum check for easier updating coreos image

I was about to install up to date version of OCP. I noticed the checksum comparison could be simpler.
Now one needs to download the coreos image, and unzip it and check the checksum manually, and put it back to ansible configs. There would already be checksum for the gzipped version of image at download site: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.4/4.4.3/sha256sum.txt
I suggest the following change, so that the checksum check can be made automatic, and no need for such manual steps and config changes:

if coreos gzip is donwloaded, download also the checksum file
verify the checksum of gzip file
gunzip the coreos
create new checksum of the current image, and store it as a file next to coreos image. e.g. {{ coreos_image_location }}.sha256.txt
on later runs, if coreos image is found from system, just verify the csum against the file.

The steps 1-4 are only done if the coreos is not already found, but needs downloading.
This would remove the manual steps from process, and it would be easier to update the coreos versions.

That would check the checksum of the zip not of the actually qcow2 image. right?  The goal was to check the qcow2 checksum to avoid problems with the qcow2.

Nope, it would check them both. So first that the downloaded gzip is ok, and then after extracting, it would be made sure it stays like that, just like now.

Hmmm, I couldn't let this be, so I made a fix for it. This removes the need for manual checksum calculation, and get's rid of checksum variable in the cluster.yml. I'll fit it into playbooks later, I just made a schetch, proof of concept:
---

- name: download coreos
  hosts: all
  vars:
    coreos_version: 4.4.3
    coreos_download_url:
      "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/\
      {{ coreos_version.split('.')[:2]|join('.') }}/latest/\
      rhcos-{{ coreos_version }}-x86_64-qemu.x86_64.qcow2.gz"
    coreos_csum_url: "https://mirror.openshift.com/pub/openshift-v4/\
      dependencies/rhcos/{{ coreos_version.split('.')[:2]|join('.') }}/\
      latest/sha256sum.txt"
    coreos_file: rhcos-{{ coreos_version }}-x86_64-qemu.x86_64.qcow2
    coreos_path: /tmp
  tasks:

    - name: check if coreos image already downloaded and get checksum
      stat:
        checksum_algorithm: sha256
        path: "{{ coreos_path }}/{{ coreos_file }}"
      register: coreos_old_image

    - name: verify existing coreos image is valid
      lineinfile:
        name: "{{ coreos_path }}/{{ coreos_file }}.sha256.txt"
        line: "{{ coreos_old_image.stat.checksum }}  {{ coreos_file }}"
        state: present
      check_mode: true
      register: csum_check
      failed_when: (csum_check is changed) or (csum_check is failed)
      ignore_errors: true
      when: coreos_old_image.stat.exists

    - name: Download fresh coreos image if previous doesn't exist
      block:

        - name: download coreos
          get_url:
            url: "{{ coreos_download_url }}"
            dest: "{{ coreos_path }}/{{ coreos_file }}.gz"
            checksum: "sha256:{{ coreos_csum_url }}"
          register: coreos_download

        - name: unzip the coreos
          command: "gunzip {{ coreos_path }}/{{ coreos_file }}.gz"
          args:
            chdir: "{{ coreos_path }}"
            creates: "{{ coreos_path }}/{{ coreos_file }}"
          register: unzip

        - name: calculate checksum of the new coreos image
          stat:
            checksum_algorithm: sha256
            path: "{{ coreos_path }}/{{ coreos_file }}"
          register: coreos_csum

        - name: store the checksum of the file
          copy:
            dest: "{{ coreos_path }}/{{ coreos_file }}.sha256.txt"
            content: "{{ coreos_csum.stat.checksum }}  {{ coreos_file }}\n"

      when: >
        (not coreos_old_image.stat.exists) or
        csum_check.changed or
        csum_check.failed

This one download the image only if the stored checksum doesn't match. While downloading, it verifies the checksum of the downloaded image before unzip. After unzip it stores the checksum in automated way this time. So image validity should be 100%.


[Kernel] Configure code formatter for Java Code

Which Delta project/connector is this regarding?

[ ] Spark
[ ] Standalone
[ ] Flink
[x] Kernel
[ ] Other (fill in here)

Description

This configures a code formatter using google-java-format for the Java code in the Kernel (similarly to how it was done in https://github.com/unitycatalog/unitycatalog/commit/54b76d88255dd2baa3f11e515159cfd34cb295e2).
Code can be checked by running build/sbt javafmtCheckAll. Code can automatically be formatted build/sbt javafmtAll.
Once this PR is in, we should open follow-up PRs where the code in the Kernel is properly formatted.
After that we can enforce the new code style during compilation
How was this patch tested?

Does this PR introduce any user-facing changes?

Btw @nastra  - from your experience, what benefit is there to javafmtchecks as well as checkstyle checks?

Can we make it so we apply this check/formatting by default? (Note: not necessarily right now in this PR, but perhaps in a followup PR)

Yes that is the plan once this PR is in and we re-formatted the code for the kernel project(s)

Can we add a param --skip-fmt (or something else) that skips formatting for quick local iteration? i.e. to let devs code quickly and then just worry about foramtting at the end. and our CI will check foramtting by default.

I don't think this makes sense to have. If a Dev types --skip-fmt then he can also type javafmtAllto apply formatting. Besides that, we can also run formatting as part of compilation so that you don't have to type anything to get the code formatted (well you need to trigger compilation at least)

Btw @nastra - from your experience, what benefit is there to javafmtchecks as well as checkstyle checks?

Both can co-exist and I see lots of projects that use both. Checkstyle has still lots of value in enforcing things like naming, using imports from shaded/non-shaded dependencies and a bunch of other things while the code formatter takes care of the style of the code.


Ctrl Clicking the link in the Terminal produces a 404

Problem encountered on https://dotnet.microsoft.com/en-us/learn/aspnet/microservice-tutorial/run
Operating System: windows
Provide details about the problem you're experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.
Created the WebAPI project per the steps but when running the application and clicking the URL produces a 404 error.

/cc @erjain @nishanil

The terminal doesn't give you the full path. You need to add /weatherforecast to the URL produced in the terminal.
Have you tried that?


Unhandled error in lazy lookup plugin

python: 2.7.9
windows 10
flexget 2.10.94
2017-09-24 22:18 ERROR    lazy_lookup   fetch-series    Unhandled error in lazy lookup plugin
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\flexget\utils\lazy_dict.py", line 37, in __getitem__
    func(self.store)
  File "c:\python27\lib\site-packages\flexget\plugins\metainfo\thetvdb_lookup.py", line 125, in lazy_series_lookup
    return self.series_lookup(entry, language, self.series_map)
  File "c:\python27\lib\site-packages\flexget\utils\database.py", line 34, in wrapper
    return func(*args, **kwargs)
  File "c:\python27\lib\site-packages\flexget\plugins\metainfo\thetvdb_lookup.py", line 117, in series_lookup
    session=session
  File "c:\python27\lib\site-packages\flexget\utils\database.py", line 31, in wrapper
    return func(*args, **kwargs)
  File "c:\python27\lib\site-packages\flexget\plugins\internal\api_tvdb.py", line 529, in lookup_series
    _update_search_strings(series, session, search=name)
  File "c:\python27\lib\site-packages\flexget\plugins\internal\api_tvdb.py", line 476, in _update_search_strings
    search.lower()] if search else []
AttributeError: 'NoneType' object has no attribute 'lower'

config:
tasks:
  fetch-series:
    priority: 1
    disable: builtins
    trakt_list:
      username: '{? trakt.username ?}'
      account: '{? trakt.username ?}'
      list: ishows-added
      type: shows
    accept_all: yes
    thetvdb_lookup: yes
    tvmaze_lookup: yes
    set:
      title: "{{tvdb_series_name|default(tvmaze_series_name)|default(series_name)}}"
    exec:
      # auto_escape: yes
      on_start:
        phase: del %USERPROFILE%\flexget\series.txt
      on_output:
        for_entries:
          - echo "{{title}}" >> %USERPROFILE%\flexget\series.txt

i locally modified the line from the error to be:
search.lower()] if search and hasattr(search, 'lower') else []

and it got by... not sure what the non-string/not-none value of search is...

I am getting this one with some frequency as well, about once a week or so. Any thing I can provide to help?
2017-10-08 07:02 ERROR    lazy_lookup   TV_Private      Unhandled error in lazy lookup plugin Traceback (most recent call last):   File "/usr/local/lib/python2.7/dist-packages/flexget/utils/lazy_dict.py", line 37, in __getitem__     func(self.store)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/thetvdb_lookup.py", line 158, in lazy_episode_lookup     episode = lookup_episode(**lookupargs)   File "/usr/local/lib/python2.7/dist-packages/flexget/utils/database.py", line 34, in wrapper     return func(*args, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/internal/api_tvdb.py", line 584, in lookup_episode     series = lookup_series(name=name, tvdb_id=tvdb_id, only_cached=only_cached, session=session)   File "/usr/local/lib/python2.7/dist-packages/flexget/utils/database.py", line 31, in wrapper     return func(*args, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/internal/api_tvdb.py", line 527, in lookup_series     updated_series = TVDBSeries(series.id, language)   File "<string>", line 4, in __init__   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/state.py", line 414, in _initialize_instance     manager.dispatch.init_failure(self, args, kwargs)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__     compat.reraise(exc_type, exc_value, exc_tb)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/state.py", line 411, in _initialize_instance     return manager.original_init(*mixed[1:], **kwargs)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/internal/api_tvdb.py", line 174, in __init__     series = TVDBRequest().get('series/%s' % self.id, language=language)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/internal/api_tvdb.py", line 84, in get     result = self._request('get', endpoint, **params)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/internal/api_tvdb.py", line 62, in _request     headers = {'Authorization': 'Bearer %s' % self.get_auth_token(),   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/internal/api_tvdb.py", line 39, in get_auth_token     auth_token = session.query(TVDBTokens).filter(TVDBTokens.name == self.auth_key).first()   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2755, in first     ret = list(self[0:1])   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2547, in __getitem__     return list(res)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2855, in __iter__     return self._execute_and_instances(context)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2878, in _execute_and_instances     result = conn.execute(querycontext.statement, self._params)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 945, in execute     return meth(self, multiparams, params)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection     return connection._execute_clauseelement(self, multiparams, params)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement     compiled_sql, distilled_params   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context     context)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1402, in _handle_dbapi_exception     exc_info   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause     reraise(type(exception), exception, tb=exc_tb, cause=cause)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context     context)   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 470, in do_execute     cursor.execute(statement, parameters) OperationalError: (sqlite3.OperationalError) database is locked [SQL: u'SELECT tvdb_tokens.id AS tvdb_tokens_id, tvdb_tokens.name AS tvdb_tokens_name, tvdb_tokens.token AS tvdb_tokens_token, tvdb_tokens.refreshed AS tvdb_tokens_refreshed \nFROM tvdb_tokens \nWHERE tvdb_tokens.name = ?\n LIMIT ? OFFSET ?'] [parameters: (u'default', 1, 0)]

This is unrelated to the original issue


Log calls to clearDatabase()

Try to figure out what is going on with WQ tests

test this please

test this please

test this please

@ericvaandering, Eric, this is just for the test not to be merged, correct?

Correct, not to be merged.

retest this please

retest this please


[BUG] First load can't load photo from google place image because of the google restriction

first load

refresh

OK, I got it.
I've searched and found that The place autocomplete is a part of Google Maps JavaScript API, so an API key with HTTP referrer restriction works well.
The Google place photo is a part of Places API web service. The web services support only IP address restrictions, they will fail with HTTP referrer restrictions on API keys.
Reference: from Stackoverflow

Closing with details above.


Connecting over VPN

Covid-19 forces me to work from home. I can no longer connect to my remote database either with or without VPN. My remote server is Centos 7, running postgres 9.6 and I have configured the firewall with the vpn addresses and updated pg_hba.conf. I have tried all sorts of options. (I can log into the server and fiddle with these things remotely.)
I get:
LibPQ.Errors.PQConnectionError("could not connect to server: No route to host. Is the server running on host \"<server ip addr>\" and accepting TCP/IP connections on port 5432?")
Googling around I came across this

The solution was to add the following parameters to my connection url: ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

relating to Java Stackoverflow. What is the equivalent for LibPQ.jl?
I have tried adding sslmode = require to my connection command, which always worked pre-vpn.
Not really an issue, more a plea for help/advice,

sslmode=require is equivalent to that Java suggestion.
Can you connect using psql?

Can you connect using psql?
Good point. I will install postgresql locally to test this.

Same error. OK, so it's not LibPQ.jl :)

@iamed2 Thank you for your suggestion.


deprecated npm packages

npm WARN deprecated<EMAIL_ADDRESS>graceful-fs version 3 and before will fail on newer node releases. Please update to<EMAIL_ADDRESS>as soon as possible.
npm WARN deprecated<EMAIL_ADDRESS><EMAIL_ADDRESS>is no longer maintained. Upgrade to<EMAIL_ADDRESS>npm WARN deprecated<EMAIL_ADDRESS>graceful-fs version 3 and before will fail on newer node releases. Please update to<EMAIL_ADDRESS>as soon as possible.
npm WARN deprecated<EMAIL_ADDRESS>This package is no longer maintained. See its readme for upgrade details.
npm WARN prefer global<EMAIL_ADDRESS>should be installed with -g

i'm getting those too.  not sure if that's the cause of my big problem.