centos 7.1，hyper run ubuntu:latest failed

# hyper run ubuntu:latest
hyper ERROR: Error from daemon's response: mkdir /var/lib/hyper/overlay/c77ba8af4d5376a197700d8d8c0355b5c4469e6b8dca365c8514d9d1bd674daa-init/merged/dev/shm: invalid argument
# mkdir /var/lib/hyper/overlay/c77ba8af4d5376a197700d8d8c0355b5c4469e6b8dca365c8514d9d1bd674daa-init/merged/dev/shm
mkdir: cannot create directory '/var/lib/hyper/overlay/c77ba8af4d5376a197700d8d8c0355b5c4469e6b8dca365c8514d9d1bd674daa-init/merged/dev/shm': No such file or directory
# ls -l /var/lib/hyper/overlay/c77ba8af4d5376a197700d8d8c0355b5c4469e6b8dca365c8514d9d1bd674daa-init/merged/
total 0
# hyper info

Images: 4
Containers: 0
PODs: 0
Storage Driver: overlay
Backing Filesystem: extfs
Hyper Root Dir: /var/lib/hyper
Index Server Address: https://index.docker.io/v1/
Execution Driver: kvm
Total Memory: 125.6 MB
Operating System: CentOS Linux 7 (Core)

maybe should be "mkdir -p ..." ?

this should related with a issue from rh kernel, could you try the following steps

install the RPM here: https://github.com/hyperhq/hyper/pull/135#issuecomment-159552340
in /etc/hyper/config, set StorageDriver=devicemapper
remove hyperd and hyper under /usr/local/bin, and restart the service

and try again?
We are building and testing native packages for the distros, if you met any problem, please tell us.
Thank you

And updated RPMs for test: https://github.com/hyperhq/hyper/pull/135#issuecomment-161171532

thx for reply.
I've cleard old files, and installed the tow rpms,  and  set StorageDriver=devicemapper, but...
execute 'systemctl start hyperd' ,  nothing output, and no hyperd process found.
then I execute 'hyperd' directly, hyperd started.
hyper pull ubuntu:latest   OK.
# hyper run ubuntu:latest
POD id is pod-kLUxapNTOm
(after about 10 Secs...)
Successfully attached to pod(pod-kLUxapNTOm)
End of CmdExec(), Waiting for hijack to finish.
/var/log/hyper/hyperd.ERROR

[HYPER ERROR 1202 12:46:44 29486 qmp_handler.go] QMP initialize timeout
[HYPER ERROR 1202 12:46:44 29486 vm_states.go] QMP Init timeout
[HYPER ERROR 1202 12:46:44 29486 vm_states.go] Shutting down because of an exception: Fail during init pod running environment
[HYPER ERROR 1202 12:46:44 29486 init_comm.go] Cannot connect to hyper socket dial unix /var/run/hyper/vm-tDIlfLtWUz/hyper.sock: connect: connection refused
[HYPER ERROR 1202 12:46:44 29486 qmp_handler.go] failed to connected to /var/run/hyper/vm-tDIlfLtWUz/qmp.sock dial unix /var/run/hyper/vm-tDIlfLtWUz/qmp.sock: connect: connection refused
[HYPER ERROR 1202 12:46:44 29486 tty.go] Cannot connect to tty socket dial unix /var/run/hyper/vm-tDIlfLtWUz/tty.sock: connect: connection refused
[HYPER ERROR 1202 12:46:54 29486 vm_states.go] Shutting down because of an exception: vm terminating timeout
[HYPER ERROR 1202 12:47:04 29486 pod.go] VM response data is nil
[HYPER ERROR 1202 12:47:04 29486 server.go] Handler for POST /pod/start returned error: VM response data is nil
[HYPER ERROR 1202 12:47:04 29486 server.go] HTTP Error: statusCode=500 VM response data is nil

PS,  qemu-x86_64 version is 2.4.1,  compile & install form source code.

@ptptptptptpt
for the systemd issue: the old systemd use /usr/local/bin/hyperd instead of /usr/bin/hyperd, and the new rpm shipped with an updated systemd config. If you met the problem with the new rpm (hyper-0.4-2.el7.centos.src.rpm), let me know and I will check it again.
for the qemu problem, did you compiled qemu with virtfs enabled?
Thank you

1, yes, I do use hyper-0.4-2, and hyperd.service is correct.

# rpm -qa | grep hyper
hyperstart-0.4-1.el7.centos.x86_64
hyper-0.4-2.el7.centos.x86_64

# systemctl enable hyperd
ln -s '/usr/lib/systemd/system/hyperd.service' '/etc/systemd/system/multi-user.target.wants/hyperd.service'
# ll /etc/systemd/system/multi-user.target.wants/hyperd.service
lrwxrwxrwx 1 root root 38 Dec  2 13:30 /etc/systemd/system/multi-user.target.wants/hyperd.service -> /usr/lib/systemd/system/hyperd.service
# cat /etc/systemd/system/multi-user.target.wants/hyperd.service
[Unit]
Description=hyperd
Documentation=http://docs.hyper.sh
After=network.target
Requires=
[Service]
ExecStart=/usr/bin/hyperd
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
2, yes, I did

./configure --enable-virtfs

@ptptptptptpt thank you for your information, we will check it

@ptptptptptpt you can modify the  ExecStart line to
ExecStart=/usr/bin/hyperd --nondaemon

or for detailed log
ExecStart=/usr/bin/hyperd --nondaemon -v=1

'--nondaemon'  and '--nondaemon -v=1' both work. Now 'systemctl start hyperd' succeed.

'hyper run ubuntu:latest' still fails.

# cat /var/log/hyper/hyperd.INFO
Log file created at: 2015/12/02 13:46:02
Running on machine: sjs_90_62
Binary: Built with gc go1.5.1 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss threadid file:line] msg
[HYPER INFO  1202 13:46:02 14374 hyperd.go] The config file is
[HYPER INFO  1202 13:46:02 14374 docker.go] success to create docker
[HYPER INFO  1202 13:46:02 14374 daemon.go] The config: kernel=/var/lib/hyper/kernel, initrd=/var/lib/hyper/hyper-initrd.img
[HYPER INFO  1202 13:46:02 14374 daemon.go] The config: vbox image=
[HYPER INFO  1202 13:46:02 14374 daemon.go] The config: bridge=, ip=
[HYPER INFO  1202 13:46:02 14374 daemon.go] The config: bios=/var/lib/hyper/bios-qboot.bin, cbfs=/var/lib/hyper/cbfs-qboot.rom
[HYPER INFO  1202 13:46:02 14374 driver.go] [graphdriver] trying provided driver "devicemapper"
[HYPER INFO  1202 13:46:02 14374 deviceset.go] devicemapper: driver version is 4.29.0
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Generated prefix: docker-253:3-133275
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Checking for existence of the pool 'docker-253:3-133275-pool'
[HYPER INFO  1202 13:46:02 14374 deviceset.go] [deviceset] constructDeviceIdMap()
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/2332d8973c9393d58c03693bb4d8ec8bd853bafda3b897d48b391a1d0ba9ffb0
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=2 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/534f866d8a2e0067d4a32a6a09e96b286d75a984c7bcfb99ce15229eaa2e9792
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=17 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/534f866d8a2e0067d4a32a6a09e96b286d75a984c7bcfb99ce15229eaa2e9792-init
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=16 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/8170e0441d8b45605ca02599abbd5f858fca2d55efdb26a68be534c39558e92b
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=15 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/8170e0441d8b45605ca02599abbd5f858fca2d55efdb26a68be534c39558e92b-init
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=14 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/8bdbe93ae1f60e1305335643a9a8d3cfc405fee855d1b880337df430b4e2b0dd
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=13 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/8bdbe93ae1f60e1305335643a9a8d3cfc405fee855d1b880337df430b4e2b0dd-init
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=12 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/a467a7c6794fd7ebd5bd0e2dcb83a656ac8302e549c4a2cc29c524aea5c5623b
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=4 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/base
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=1 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/c35890c8956d50cdc280ce805097ae580c66b5d4070c252cd68e059196e2e45e
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=7 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/c35890c8956d50cdc280ce805097ae580c66b5d4070c252cd68e059196e2e45e-init
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=6 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/c3d46de1864289532a08b5f25eac18de41e14879147bc4ac05b73843a83a1664
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=9 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/c3d46de1864289532a08b5f25eac18de41e14879147bc4ac05b73843a83a1664-init
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=8 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/ca4d7b1b9a51f72ff4da652d96943f657b4898889924ac3dae5df958dba0dc4a
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=5 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/e752cee450407c0ccec0bb611b5b6e338176f3f70188dbb47ee538ec0165af3f
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=11 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/e752cee450407c0ccec0bb611b5b6e338176f3f70188dbb47ee538ec0165af3f-init
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=10 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/ea358092da773eff1664fd484edeffb0011f26b4f1dd34ad11b73db57c91d8ae
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=3 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Loading data for file /var/lib/hyper/devicemapper/metadata/transaction-metadata
[HYPER INFO  1202 13:46:02 14374 deviceset.go] Added deviceId=17 to DeviceIdMap
[HYPER INFO  1202 13:46:02 14374 deviceset.go] [deviceset] constructDeviceIdMap() END
[HYPER INFO  1202 13:46:02 14374 daemon.go] Using graph driver devicemapper
[HYPER INFO  1202 13:46:02 14374 daemon.go] Creating images graph
[HYPER INFO  1202 13:46:02 14374 graph.go] Restored 5 elements
[HYPER INFO  1202 13:46:02 14374 trusts.go] Reloaded graph with 3 grants expiring at 2017-03-22 19:04:46.713978458 +0000 UTC
[HYPER INFO  1202 13:46:02 14374 daemon.go] Creating repository list
[HYPER INFO  1202 13:46:02 14374 daemon.go] Loaded container 534f866d8a2e0067d4a32a6a09e96b286d75a984c7bcfb99ce15229eaa2e9792
[HYPER INFO  1202 13:46:02 14374 daemon.go] Loaded container 8170e0441d8b45605ca02599abbd5f858fca2d55efdb26a68be534c39558e92b
[HYPER INFO  1202 13:46:02 14374 daemon.go] Loaded container 8bdbe93ae1f60e1305335643a9a8d3cfc405fee855d1b880337df430b4e2b0dd
[HYPER INFO  1202 13:46:02 14374 daemon.go] Loaded container c35890c8956d50cdc280ce805097ae580c66b5d4070c252cd68e059196e2e45e
[HYPER INFO  1202 13:46:02 14374 daemon.go] Loaded container c3d46de1864289532a08b5f25eac18de41e14879147bc4ac05b73843a83a1664
[HYPER INFO  1202 13:46:02 14374 daemon.go] Loaded container e752cee450407c0ccec0bb611b5b6e338176f3f70188dbb47ee538ec0165af3f
[HYPER INFO  1202 13:46:02 14374 daemon.go] Loading containers: done.
[HYPER INFO  1202 13:46:02 14374 docker.go] Daemon has completed initialization
[HYPER WARN  1202 13:46:02 14374 hyperd.go] Driver xen is unavailable
[HYPER INFO  1202 13:46:02 14374 hyperd.go] The hypervisor's driver is kvm
[HYPER INFO  1202 13:46:02 14374 network_linux.go] bridge exist
[HYPER INFO  1202 13:46:02 14374 network_linux.go] modprobe br_netfilter failed modprobe br_netfilter failed
[HYPER INFO  1202 13:46:02 14374 hyperd.go] Hyper daemon: 0.4.0 0
[HYPER INFO  1202 13:46:02 14374 job.go] +job acceptconnections()
[HYPER INFO  1202 13:46:02 14374 job.go] -job acceptconnections() OK
[HYPER INFO  1202 13:46:02 14374 hyperd.go] Daemon has completed initialization
[HYPER INFO  1202 13:46:02 14374 daemon.go] c35890c8956d50cdc280ce805097ae580c66b5d4070c252cd68e059196e2e45e
[HYPER INFO  1202 13:46:02 14374 daemon.go] 534f866d8a2e0067d4a32a6a09e96b286d75a984c7bcfb99ce15229eaa2e9792
[HYPER INFO  1202 13:46:02 14374 daemon.go] 8170e0441d8b45605ca02599abbd5f858fca2d55efdb26a68be534c39558e92b
[HYPER INFO  1202 13:46:02 14374 daemon.go] c3d46de1864289532a08b5f25eac18de41e14879147bc4ac05b73843a83a1664
[HYPER INFO  1202 13:46:02 14374 daemon.go] 8bdbe93ae1f60e1305335643a9a8d3cfc405fee855d1b880337df430b4e2b0dd
[HYPER INFO  1202 13:46:02 14374 daemon.go] e752cee450407c0ccec0bb611b5b6e338176f3f70188dbb47ee538ec0165af3f
[HYPER INFO  1202 13:46:02 14374 daemon.go] Get the pod item, pod is pod-pod-YhVypfByID!
[HYPER INFO  1202 13:46:02 14374 job.go] +job serveapi(unix:///var/run/hyper.sock)
[HYPER INFO  1202 13:46:02 14374 daemon.go] Get the pod item, pod is pod-pod-ZvqiWkpnWo!
[HYPER INFO  1202 13:46:02 14374 server.go] Listening for HTTP on unix (/var/run/hyper.sock)
[HYPER INFO  1202 13:46:02 14374 daemon.go] Get the pod item, pod is pod-pod-hGOFUQfogE!
[HYPER INFO  1202 13:46:02 14374 daemon.go] Get the pod item, pod is pod-pod-kLUxapNTOm!
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /container/info
[HYPER INFO  1202 13:46:02 14374 daemon.go] Get the pod item, pod is pod-pod-pKggcxNhCc!
[HYPER INFO  1202 13:46:02 14374 daemon.go] Get the pod item, pod is pod-pod-vRySjkbabR!
[HYPER INFO  1202 13:46:02 14374 pod.go] podArgs: {"id":"ubuntu-latest-5152491391","containers":[{"name":"ubuntu-latest-5152491391","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}
[HYPER INFO  1202 13:46:02 14374 container.go] ready to get the container(c35890c8956d50cdc280ce805097ae580c66b5d4070c252cd68e059196e2e45e) info
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /container/logs
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /info
[HYPER INFO  1202 13:46:02 14374 pod.go] Found exist container ubuntu-latest-5152491391 (c35890c8956d50cdc280ce805097ae580c66b5d4070c252cd68e059196e2e45e), image: ubuntu:latest
[HYPER INFO  1202 13:46:02 14374 pod.go] Process the Containers section in POD SPEC
[HYPER INFO  1202 13:46:02 14374 pod.go] trying to init container ubuntu-latest-5152491391
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /images/get
[HYPER INFO  1202 13:46:02 14374 daemon.go] leveldb: not found for pod-YhVypfByID
[HYPER INFO  1202 13:46:02 14374 pod.go] podArgs: {"id":"ubuntu-latest-4950975322","containers":[{"name":"ubuntu-latest-4950975322","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /list
[HYPER INFO  1202 13:46:02 14374 container.go] ready to get the container(534f866d8a2e0067d4a32a6a09e96b286d75a984c7bcfb99ce15229eaa2e9792) info
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /pod/info
[HYPER INFO  1202 13:46:02 14374 pod.go] Found exist container ubuntu-latest-4950975322 (534f866d8a2e0067d4a32a6a09e96b286d75a984c7bcfb99ce15229eaa2e9792), image: ubuntu:latest
[HYPER INFO  1202 13:46:02 14374 pod.go] Process the Containers section in POD SPEC
[HYPER INFO  1202 13:46:02 14374 pod.go] trying to init container ubuntu-latest-4950975322
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /service/list
[HYPER INFO  1202 13:46:02 14374 daemon.go] leveldb: not found for pod-ZvqiWkpnWo
[HYPER INFO  1202 13:46:02 14374 pod.go] podArgs: {"id":"ubuntu-latest-4057894779","containers":[{"name":"ubuntu-latest-4057894779","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}
[HYPER INFO  1202 13:46:02 14374 server.go] Registering GET, /version
[HYPER INFO  1202 13:46:02 14374 container.go] ready to get the container(8170e0441d8b45605ca02599abbd5f858fca2d55efdb26a68be534c39558e92b) info
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /image/push
[HYPER INFO  1202 13:46:02 14374 pod.go] Found exist container ubuntu-latest-4057894779 (8170e0441d8b45605ca02599abbd5f858fca2d55efdb26a68be534c39558e92b), image: ubuntu:latest
[HYPER INFO  1202 13:46:02 14374 pod.go] Process the Containers section in POD SPEC
[HYPER INFO  1202 13:46:02 14374 pod.go] trying to init container ubuntu-latest-4057894779
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /service/update
[HYPER INFO  1202 13:46:02 14374 daemon.go] leveldb: not found for pod-hGOFUQfogE
[HYPER INFO  1202 13:46:02 14374 pod.go] podArgs: {"id":"ubuntu-latest-7160879927","containers":[{"name":"ubuntu-latest-7160879927","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}
[HYPER INFO  1202 13:46:02 14374 container.go] ready to get the container(c3d46de1864289532a08b5f25eac18de41e14879147bc4ac05b73843a83a1664) info
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /tty/resize
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /container/create
[HYPER INFO  1202 13:46:02 14374 pod.go] Found exist container ubuntu-latest-7160879927 (c3d46de1864289532a08b5f25eac18de41e14879147bc4ac05b73843a83a1664), image: ubuntu:latest
[HYPER INFO  1202 13:46:02 14374 pod.go] Process the Containers section in POD SPEC
[HYPER INFO  1202 13:46:02 14374 pod.go] trying to init container ubuntu-latest-7160879927
[HYPER INFO  1202 13:46:02 14374 daemon.go] leveldb: not found for pod-kLUxapNTOm
[HYPER INFO  1202 13:46:02 14374 pod.go] podArgs: {"id":"ubuntu-latest-8512941493","containers":[{"name":"ubuntu-latest-8512941493","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /container/rename
[HYPER INFO  1202 13:46:02 14374 container.go] ready to get the container(8bdbe93ae1f60e1305335643a9a8d3cfc405fee855d1b880337df430b4e2b0dd) info
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /exec
[HYPER INFO  1202 13:46:02 14374 pod.go] Found exist container ubuntu-latest-8512941493 (8bdbe93ae1f60e1305335643a9a8d3cfc405fee855d1b880337df430b4e2b0dd), image: ubuntu:latest
[HYPER INFO  1202 13:46:02 14374 pod.go] Process the Containers section in POD SPEC
[HYPER INFO  1202 13:46:02 14374 pod.go] trying to init container ubuntu-latest-8512941493
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /pod/stop
[HYPER INFO  1202 13:46:02 14374 daemon.go] leveldb: not found for pod-pKggcxNhCc
[HYPER INFO  1202 13:46:02 14374 pod.go] podArgs: {"id":"ubuntu-latest-0413979585","containers":[{"name":"ubuntu-latest-0413979585","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /auth
[HYPER INFO  1202 13:46:02 14374 container.go] ready to get the container(e752cee450407c0ccec0bb611b5b6e338176f3f70188dbb47ee538ec0165af3f) info
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /pod/create
[HYPER INFO  1202 13:46:02 14374 pod.go] Found exist container ubuntu-latest-0413979585 (e752cee450407c0ccec0bb611b5b6e338176f3f70188dbb47ee538ec0165af3f), image: ubuntu:latest
[HYPER INFO  1202 13:46:02 14374 pod.go] Process the Containers section in POD SPEC
[HYPER INFO  1202 13:46:02 14374 pod.go] trying to init container ubuntu-latest-0413979585
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /pod/run
[HYPER INFO  1202 13:46:02 14374 daemon.go] leveldb: not found for pod-vRySjkbabR
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /service/add
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /vm/create
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /attach
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /container/commit
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /image/create
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /image/build
[HYPER INFO  1202 13:46:02 14374 server.go] Registering POST, /pod/start
[HYPER INFO  1202 13:46:02 14374 server.go] Registering DELETE, /vm
[HYPER INFO  1202 13:46:02 14374 server.go] Registering DELETE, /image
[HYPER INFO  1202 13:46:02 14374 server.go] Registering DELETE, /pod
[HYPER INFO  1202 13:46:02 14374 server.go] Registering DELETE, /service
[HYPER INFO  1202 13:46:02 14374 server.go] Registering OPTIONS,
[HYPER INFO  1202 13:46:08 14374 server.go] Calling POST /pod/create
[HYPER INFO  1202 13:46:08 14374 server.go] Args string is {"id":"ubuntu-latest-2246151429","containers":[{"name":"ubuntu-latest-2246151429","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""},
[HYPER INFO  1202 13:46:08 14374 job.go] +job podCreate({"id":"ubuntu-latest-2246151429","containers":[{"name":"ubuntu-latest-2246151429","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}, )
[HYPER INFO  1202 13:46:08 14374 pod.go] podArgs: {"id":"ubuntu-latest-2246151429","containers":[{"name":"ubuntu-latest-2246151429","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}
[HYPER INFO  1202 13:46:08 14374 pod.go] Process the Containers section in POD SPEC
[HYPER INFO  1202 13:46:08 14374 pod.go] trying to init container ubuntu-latest-2246151429
[HYPER WARN  1202 13:46:08 14374 daemon.go] IPv4 forwarding is disabled. Networking will not work
[HYPER INFO  1202 13:46:08 14374 tags.go] LookupImage Name is ubuntu:latest
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [deviceset] AddDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init basehash=ca4d7b1b9a51f72ff4da652d96943f657b4898889924ac3dae5df958dba0dc4a)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] registerDevice(18, e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [deviceset] AddDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init basehash=ca4d7b1b9a51f72ff4da652d96943f657b4898889924ac3dae5df958dba0dc4a) END
[HYPER INFO  1202 13:46:08 14374 deviceset.go] activateDeviceIfNeeded(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [deviceset] AddDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 basehash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] registerDevice(19, e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [deviceset] AddDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 basehash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init) END
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] UnmountDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] Unmount(/var/lib/hyper/devicemapper/mnt/e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] Unmount done
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] deactivateDevice(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] removeDevice START(docker-253:3-133275-e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] removeDevice END(docker-253:3-133275-e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] deactivateDevice END(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] UnmountDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-init) END
[HYPER INFO  1202 13:46:08 14374 deviceset.go] activateDeviceIfNeeded(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] UnmountDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] Unmount(/var/lib/hyper/devicemapper/mnt/e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] Unmount done
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] deactivateDevice(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] removeDevice START(docker-253:3-133275-e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] removeDevice END(docker-253:3-133275-e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] deactivateDevice END(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1)
[HYPER INFO  1202 13:46:08 14374 deviceset.go] [devmapper] UnmountDevice(hash=e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1) END
[HYPER INFO  1202 13:46:08 14374 container.go] ready to get the container(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1) info
[HYPER INFO  1202 13:46:08 14374 job.go] -job podCreate({"id":"ubuntu-latest-2246151429","containers":[{"name":"ubuntu-latest-2246151429","image":"ubuntu:latest","command":[],"workdir":"/","entrypoint":[],"ports":[],"envs":[],"volumes":[],"files":[],"restartPolicy":"never"}],"resource":{"vcpu":1,"memory":128},"files":[],"volumes":[],"log":{"type":"","config":{}},"tty":false,"type":"","RestartPolicy":""}, ) OK
[HYPER INFO  1202 13:46:08 14374 server.go] Calling POST /pod/start
[HYPER INFO  1202 13:46:08 14374 job.go] +job podStart(pod-VkkSGowjaN, , f7l7r0bj)
[HYPER INFO  1202 13:46:08 14374 pod.go] Pod Run with client terminal tag: f7l7r0bj
[HYPER INFO  1202 13:46:08 14374 pod.go] pod:pod-VkkSGowjaN, vm:
[HYPER INFO  1202 13:46:08 14374 pod.go] podArgs:
[HYPER INFO  1202 13:46:08 14374 vm.go] The config: kernel=/var/lib/hyper/kernel, initrd=/var/lib/hyper/hyper-initrd.img
[HYPER INFO  1202 13:46:08 14374 container.go] ready to get the container(e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1) info
[HYPER INFO  1202 13:46:08 14374 qemu_process.go] cmdline arguments: -machine pc-i440fx-2.0,accel=kvm,usb=off -global kvm-pit.lost_tick_policy=discard -cpu host -drive if=pflash,file=/var/lib/hyper/bios-qboot.bin,readonly=on -drive if=pflash,file=/var/lib/hyper/cbfs-qboot.rom,readonly=on -realtime mlock=off -no-user-config -nodefaults -no-hpet -rtc base=utc,driftfix=slew -no-reboot -display none -boot strict=on -m 128 -smp 1 -qmp unix:/var/run/hyper/vm-hnDZCFUNVu/qmp.sock,server,nowait -serial unix:/var/run/hyper/vm-hnDZCFUNVu/console.sock,server,nowait -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x2 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x3 -chardev socket,id=charch0,path=/var/run/hyper/vm-hnDZCFUNVu/hyper.sock,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charch0,id=channel0,name=sh.hyper.channel.0 -chardev socket,id=charch1,path=/var/run/hyper/vm-hnDZCFUNVu/tty.sock,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charch1,id=channel1,name=sh.hyper.channel.1 -fsdev local,id=virtio9p,path=/var/run/hyper/vm-hnDZCFUNVu/share_dir,security_model=none -device virtio-9p-pci,fsdev=virtio9p,mount_tag=share_dir
[HYPER INFO  1202 13:46:08 14374 qemu_process.go] starting daemon with pid: 15881
[HYPER INFO  1202 13:46:08 14374 pod.go] Container Info is
&{e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 /rootfs /dev/mapper/docker-253:3-133275-e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 ext4  [] [/bin/bash] map[]}
[HYPER INFO  1202 13:46:08 14374 pod.go] configuring log driver [json-file] for pod-VkkSGowjaN
[HYPER INFO  1202 13:46:08 14374 pod.go] configure container log to /var/run/hyper/Pods/pod-VkkSGowjaN/e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1-json.log
[HYPER INFO  1202 13:46:08 14374 pod.go] configured logger for pod-VkkSGowjaN/e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 (/ubuntu-latest-2246151429)
[HYPER INFO  1202 13:46:08 14374 pod.go] Attach client f7l7r0bj before start pod
[HYPER INFO  1202 13:46:08 14374 hypervisor.go] main event loop got message 32(COMMAND_ATTACH)
[HYPER INFO  1202 13:46:08 14374 vm_states.go] attachment log-y5tkpdkw is pending
[HYPER INFO  1202 13:46:08 14374 hypervisor.go] main event loop got message 32(COMMAND_ATTACH)
[HYPER INFO  1202 13:46:08 14374 vm_states.go] attachment f7l7r0bj is pending
[HYPER INFO  1202 13:46:08 14374 hypervisor.go] main event loop got message 22(COMMAND_RUN_POD)
[HYPER INFO  1202 13:46:08 14374 vm_states.go] got spec, prepare devices
[HYPER INFO  1202 13:46:08 14374 context.go] found container e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 at 0
[HYPER INFO  1202 13:46:08 14374 vm_states.go] attach pending client log-y5tkpdkw for e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1
[HYPER INFO  1202 13:46:08 14374 vm_states.go] Connecting tty for e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 on session 1
[HYPER INFO  1202 13:46:08 14374 context.go] found container e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 at 0
[HYPER INFO  1202 13:46:08 14374 vm.go] hyperHandlePodEvent pod pod-VkkSGowjaN, vm vm-hnDZCFUNVu
[HYPER INFO  1202 13:46:08 14374 vm_states.go] attach pending client f7l7r0bj for e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1
[HYPER INFO  1202 13:46:08 14374 vm_states.go] Connecting tty for e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 on session 1
[HYPER INFO  1202 13:46:08 14374 context.go] VM vm-hnDZCFUNVu: state change from  to 'STARTING'
[HYPER INFO  1202 13:46:08 14374 qmp_handler.go] got new session during initializing
[HYPER INFO  1202 13:46:08 14374 hypervisor.go] main event loop got message 13(EVENT_INTERFACE_ADD)
[HYPER INFO  1202 13:46:08 14374 qmp_wrapper.go] send net to qemu at 20
[HYPER INFO  1202 13:46:08 14374 qmp_handler.go] got new session during initializing
[HYPER WARN  1202 13:46:18 14374 qmp_handler.go] Initializer Timeout.
[HYPER ERROR 1202 13:46:18 14374 qmp_handler.go] QMP initialize timeout
[HYPER INFO  1202 13:46:18 14374 hypervisor.go] main event loop got message 36(ERROR_INIT_FAIL)
[HYPER ERROR 1202 13:46:18 14374 vm_states.go] QMP Init timeout
[HYPER ERROR 1202 13:46:18 14374 vm_states.go] Shutting down because of an exception: Fail during init pod running environment
[HYPER INFO  1202 13:46:18 14374 context.go] VM vm-hnDZCFUNVu: state change from STARTING to 'TERMINATING'
[HYPER INFO  1202 13:46:18 14374 vm.go] Get the response from VM, VM id is vm-hnDZCFUNVu!
[HYPER INFO  1202 13:46:18 14374 hypervisor.go] main event loop got message 25(COMMAND_SHUTDOWN)
[HYPER INFO  1202 13:46:18 14374 vm.go] Got response: 15: unexpected event during terminating
[HYPER ERROR 1202 13:46:18 14374 init_comm.go] Cannot connect to hyper socket dial unix /var/run/hyper/vm-hnDZCFUNVu/hyper.sock: connect: connection refused
[HYPER ERROR 1202 13:46:18 14374 init_comm.go] failed to connected to /var/run/hyper/vm-hnDZCFUNVu/console.sock dial unix /var/run/hyper/vm-hnDZCFUNVu/console.sock: connect: no such file or directory
[HYPER INFO  1202 13:46:18 14374 hypervisor.go] main event loop got message 36(ERROR_INIT_FAIL)
[HYPER ERROR 1202 13:46:18 14374 tty.go] Cannot connect to tty socket dial unix /var/run/hyper/vm-hnDZCFUNVu/tty.sock: connect: connection refused
[HYPER WARN  1202 13:46:18 14374 vm_states.go] got unexpected event during terminating
[HYPER INFO  1202 13:46:18 14374 hypervisor.go] main event loop got message 36(ERROR_INIT_FAIL)
[HYPER WARN  1202 13:46:18 14374 vm_states.go] got unexpected event during terminating
[HYPER ERROR 1202 13:46:18 14374 qmp_handler.go] failed to connected to /var/run/hyper/vm-hnDZCFUNVu/qmp.sock dial unix /var/run/hyper/vm-hnDZCFUNVu/qmp.sock: connect: connection refused
[HYPER INFO  1202 13:46:28 14374 hypervisor.go] main event loop got message 3(EVENT_VM_TIMEOUT)
[HYPER WARN  1202 13:46:28 14374 vm_states.go] VM did not exit in time, try to stop it
[HYPER ERROR 1202 13:46:28 14374 vm_states.go] Shutting down because of an exception: vm terminating timeout
[HYPER INFO  1202 13:46:28 14374 vm.go] Got response: 7: vm terminating timeout
[HYPER INFO  1202 13:46:38 14374 qemu_process.go] kill Qemu... 15881
[HYPER INFO  1202 13:46:38 14374 hypervisor.go] main event loop got message 2(EVENT_VM_KILL)
[HYPER INFO  1202 13:46:38 14374 vm_states.go] Got VM force killed message, go to cleaning up
[HYPER INFO  1202 13:46:38 14374 vm_states.go] VM has exit...
[HYPER INFO  1202 13:46:38 14374 devicemap.go] need remove dm file/dev/mapper/docker-253:3-133275-e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1
[HYPER INFO  1202 13:46:38 14374 devicemap.go] remove network card 0: <IP_ADDRESS>
[HYPER INFO  1202 13:46:38 14374 context.go] VM vm-hnDZCFUNVu: state change from TERMINATING to 'DESTROYING'
[HYPER INFO  1202 13:46:38 14374 vm.go] Got response: 2: VM shut down
[HYPER ERROR 1202 13:46:38 14374 pod.go] VM response data is nil
[HYPER INFO  1202 13:46:38 14374 job.go] -job podStart(pod-VkkSGowjaN, , f7l7r0bj) ERR: VM response data is nil
[HYPER ERROR 1202 13:46:38 14374 server.go] Handler for POST /pod/start returned error: VM response data is nil
[HYPER ERROR 1202 13:46:38 14374 server.go] HTTP Error: statusCode=500 VM response data is nil
[HYPER INFO  1202 13:46:38 14374 tty.go] a stdin closed, EOF
[HYPER INFO  1202 13:46:38 14374 tty.go] Close tty f7l7r0bj
[HYPER INFO  1202 13:46:38 14374 hypervisor.go] main event loop got message 14(EVENT_INTERFACE_DELETE)
[HYPER INFO  1202 13:46:38 14374 devicemap.go] interface 0 released
[HYPER INFO  1202 13:46:38 14374 vm_states.go] Unplug interface return with true
[HYPER INFO  1202 13:46:38 14374 hypervisor.go] main event loop got message 9(EVENT_VOLUME_DELETE)
[HYPER INFO  1202 13:46:38 14374 devicemap.go] blockdev /dev/mapper/docker-253:3-133275-e5db785cd9fb823b175165386360cda344b845ad960e4502ca3c4258a53e7ee1 deleted
[HYPER INFO  1202 13:46:38 14374 vm_states.go] release volume return with true

# cat /var/log/hyper/hyperd.ERROR
Log file created at: 2015/12/02 13:46:18
Running on machine: sjs_90_62
Binary: Built with gc go1.5.1 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss threadid file:line] msg
[HYPER ERROR 1202 13:46:18 14374 qmp_handler.go] QMP initialize timeout
[HYPER ERROR 1202 13:46:18 14374 vm_states.go] QMP Init timeout
[HYPER ERROR 1202 13:46:18 14374 vm_states.go] Shutting down because of an exception: Fail during init pod running environment
[HYPER ERROR 1202 13:46:18 14374 init_comm.go] Cannot connect to hyper socket dial unix /var/run/hyper/vm-hnDZCFUNVu/hyper.sock: connect: connection refused
[HYPER ERROR 1202 13:46:18 14374 init_comm.go] failed to connected to /var/run/hyper/vm-hnDZCFUNVu/console.sock dial unix /var/run/hyper/vm-hnDZCFUNVu/console.sock: connect: no such file or directory
[HYPER ERROR 1202 13:46:18 14374 tty.go] Cannot connect to tty socket dial unix /var/run/hyper/vm-hnDZCFUNVu/tty.sock: connect: connection refused
[HYPER ERROR 1202 13:46:18 14374 qmp_handler.go] failed to connected to /var/run/hyper/vm-hnDZCFUNVu/qmp.sock dial unix /var/run/hyper/vm-hnDZCFUNVu/qmp.sock: connect: connection refused
[HYPER ERROR 1202 13:46:28 14374 vm_states.go] Shutting down because of an exception: vm terminating timeout
[HYPER ERROR 1202 13:46:38 14374 pod.go] VM response data is nil
[HYPER ERROR 1202 13:46:38 14374 server.go] Handler for POST /pod/start returned error: VM response data is nil
[HYPER ERROR 1202 13:46:38 14374 server.go] HTTP Error: statusCode=500 VM response data is nil

@ptptptptptpt
Thank you for your logs, It shows the qemu process itself didn't start in 10 seconds, which is weird. We will try to setup a similar environment to re-produce the problem. This may take some time. Sorry for the inconvenience.

Just tried with

CentOS 7.1.1503
hyper rpms
qemu 2.3.0 and 2.4.1 (with ./configure --enable-virtfs --target-list=x86_64-softmmu)

hyper run works
[root@cns-2 bin]# hyper run -t ubuntu /bin/bash
POD id is pod-zmnccvoLlc
root@ubuntu-6826423242:/#

I suspect there are some problem in environment state, and wonder if a reboot could help. And I am considering build qemu rpm package together with hyper RPMs for centOS.

reboot dosen't help...
anyhow, thanks for the anwser, I'll try again.

could you try to remove /var/lib/hyper and /var/run/hyper; re-install hyperstart ; and restart the service. then try again?

tried, and still failed...
replace qemu 2.4.1 by 2.3.1,  problem remains.
Never mind. I intend to install a fedora 22 on my laptop later  :)

I will try to package qemu for centos as well and send it to you for testing.

Expecting for that!  Thank you~


issue: Unexpected layout

If you run this code:
fn main() {
    launch(app);
}

fn app() -> Element {
    rsx!(rect {
        width: "100%",
        height: "100%",
        direction: "horizontal",
        main_align: "end",
        X{}
        Y{}
    })
}

#[component]
fn X() -> Element {
    rsx!(rect {
        background: "blue",
        width: "fill",
        height: "fill",
        label {
            "HELOOOOOOOOOOOOOOOOOOOOOOoeoeoeoeoeeoeoeo"
        }
    })
}

#[component]
fn Y() -> Element {
    rsx!(rect {
        background: "red",
        width: "300",
        height: "fill",
    })
}

The layout of X{} is off by a big margin. You can only read the last latters of HELOO...
If you remove main_align and change the order of x and y it disappears, even though it should be the same effekt  just mirrored.

Hey! It's not wrong, notice how the X component has a fill width, this means that it will take all the remaining space to the right, effectively ignoring the size of Y.
If you swap X and Y width it will work just fine:
fn main() {
    launch(app);
}

fn app() -> Element {
    rsx!(rect {
        width: "100%",
        height: "100%",
        direction: "horizontal",
        main_align: "end",
        X{}
        Y{}
    })
}

#[component]
fn X() -> Element {
    rsx!(rect {
        background: "blue",
        width: "300",
        height: "fill",
        label {
            "HELOOOOOOOOOOOOOOOOOOOOOOoeoeoeoeoeeoeoeo"
        }
    })
}

#[component]
fn Y() -> Element {
    rsx!(rect {
        background: "red",
        width: "fill",
        height: "fill",
    })
}

But, this obviously changes the result, for an actual working code that follows the same idea as yours it would be something like the following:
fn main() {
    launch(app);
}

fn app() -> Element {
    rsx!(rect {
        width: "100%",
        height: "100%",
        direction: "horizontal",
        main_align: "end",
        X{}
        Y{}
    })
}

#[component]
fn X() -> Element {
    rsx!(rect {
        background: "blue",
        width: "calc(100% - 300)",
        height: "fill",
        label {
            "HELOOOOOOOOOOOOOOOOOOOOOOoeoeoeoeoeeoeoeo"
        }
    })
}

#[component]
fn Y() -> Element {
    rsx!(rect {
        background: "red",
        width: "300",
        height: "fill",
    })
}

fill size should only (most of the case at least) be used for the last elements, using it before the last element will cause weird behaviors as you shared. A solution is to use calc() like I did in the second example, it's not perfect but it works for this. A perfect solution would be to have a more flex-like layout supported

Thank you for clearification. Flex like layout would be really cool


Suggestion: Add configuration init with data instead of url

Hei I'm using, and loving, the formatting tool inside my code generator. I embed the config json file into the code as it is a cli tool that runs on linux. This means in my package manifest i use resources: [.embedInCode(swift_format.json)] which would not produce a url but data.
As the let config = try Configuration(contentsOf: url) only accepts an url would it be ok to make a PR and add an init that accepts data?
My current workaround is to create a temporary file but that seams like inefficient.

  let tempFile = try Folder.temporary
    .createFile(
      named: "swift_format.json",
      contents: Data(PackageResources.swift_format_json))

Synced to Apple’s issue tracker as rdar://136347689

This could also serve as an enabler for the command-line tool for getting a future extension to pass the config as a string inline, like clang-format's --style="{key: value, ...}" 👍

Which version of the swift-format package are you using? This was added in https://github.com/swiftlang/swift-format/pull/634, so it should be available in the 6.0 release.

This could also serve as an enabler for the command-line tool for getting a future extension to pass the config as a string inline, like clang-format's --style="{key: value, ...}" 👍

The PR above also added this. We should probably update the README to reflect that, instead of just the argument help text.


esplora crash due timeout

2023-09-02T18:18:57.699Z UNUSUAL plugin-folgore_plugin: client `bitcoind` return an error: code: -1, msg: JSON-RPC error: JSON decode error: EOF while parsing a string at line 1 column 4439951
2023-09-02T18:19:27.731Z UNUSUAL plugin-folgore_plugin: client `esplora` return an error: code: -1, msg: Ureq(Transport(Transport { kind: Io, message: None, url: Some(Url { scheme: \"https\", cannot_be_a_base: false, username: \"\", password: None, host: Some(Domain(\"mempool.space\")), port: None, path: \"/api/v1//blocks/tip/height\", query: None, fragment: None }), source: Some(Custom { kind: TimedOut, error: \"timed out reading response\" }) }))
2023-09-02T18:19:27.755Z **BROKEN** lightningd: /home/vincent/github/folgore/target/debug/folgore_plugin error: bad response to getrawblockbyheight (bad 'result' field: Parsing '{result:': object does not have member result), response was {"error":{"code":-1,"data":null,"message":"Ureq(Transport(Transport { kind: Io, message: None, url: Some(Url { scheme: \"https\", cannot_be_a_base: false, username: \"\", password: None, host: Some(Domain(\"mempool.space\")), port: None, path: \"/api/v1//blocks/tip/height\", query: None, fragment: None }), source: Some(Custom { kind: TimedOut, error: \"timed out reading response\" }) }))"},"id":"cln:getrawblockbyheight#88","jsonrpc":"2.0"}
2023-09-02T18:19:27.757Z **BROKEN** lightningd: FATAL SIGNAL 6 (version v23.08rc2-1-g1f92911)

This should not happens due the retry strategy

This should be fixed by the retry logic https://github.com/coffee-tools/folgore/pull/63


Update 404 link to setuptools docs

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[ ] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[ ] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[ ] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[ ] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

R: @chamikaramj

LGTM.
Thanks.

@chamikaramj who can help get this merged? I see @francesperry is the sdk-py "component lead" in JIRA.

Please add one of the committers as a reviewer to get this merged.

R: @dhalperi


Use local time instead of UTC

Three peak hours are at current stored using UTC time, this might lead to issues for calculating top three as consumption might end up on the wrong date.  It will also cause issues with monthly reset, as consumption in the last hours might be reported on next month, depending on the timezone of the HA installation.
Use local time helper from homeassistant.utils to convert UTC timestamp to local time.

Nice :)


Tab-related issue: Second Grep command overwrites results of first Grep in other tab

I have EasyGrep configured to display results in the location list.
Let's say I have two files in different projects open in different tabs.
I run :Grep pattern1 in the first tab and get results in the location list.
Now I switch to the second tab and run :Grep pattern2. Because of #61 I have to :lopen manually, but if I do so I see the results of the Grep.
However, if I go back to the first tab, the contents of the location list for that tab have been replaced by the results of the second Grep. If I use :lgrep instead of :Grep, the two location lists remain independent.

Sorry for the noise.


[UI] Contrast for pre-set receiving account too low

Issue description
If you have exactly two accounts, firefly fills out the receiving account if you open the "Internal Transfer" tab. The contrast of the pre-filled account is too low and therefore hardly visible.
Wallet version
v0.3.1
System specification
macOS 11.3 Beta
Steps To reproduce the issue

Make sure you have exactly two accounts
Open the "Internal Transfer" tab

Errors

When you have more than 2 accounts the contrast is better:

This should be fixed with the next release, please re-open if there are still issues.


ignoreElements forces to "any" the type of the input variable of a preceding operator

Bug Report
Current Behavior
When ignoreElements() is used after an operator which expects an input, the type of the input of the preceding operator is forced to any
Reproduction

https://stackblitz.com/edit/rxjs-3zaonl

In the following code, the type inferred for the variable data is any while it should be string
  let obs$: Observable<string>
  obs$.pipe(
    tap(data => {
    }),
    ignoreElements()
  );

Expected behavior
The inferred type of the variable of the variable should not change
Possible Solution
The solution is to use generics to define the type of ignoreElements() like
export declare function ignoreElements<T>(): OperatorFunction<T, never>;

I tried to create a PR but was not able to push the branch to https://github.com/ReactiveX/rxjs.git/

It should infer never. It does for me:

https://github.com/ReactiveX/rxjs/blob/3d6e4c5bf2ba2eec31fdf2498a9fcc9ad364511f/src/internal/operators/ignoreElements.ts#L33

I think what @EnricoPicci is reporting is that data is inferred as any when ignoreElements operator is used.
From its stackblitz:
  obs$.pipe(
    tap(data /* <--- is any */ => {
    }),
    ignoreElements()
  );

  obs$.pipe(
    tap(data /* <--- is string */ => {
    }),
  );

With the latest versions of RxJS and TypeScript, it's fine in VS code, so IMO this is not an RxJS issue:

You're right @cartant :+1:
It works in other platfroms (using latest) https://codesandbox.io/s/great-surf-f7bi5?file=/src/index.ts

Thanks, it is clearly not an rxjs issue


Error :Not Implement nn.SpatialUpSamplingBilinear

hi, I wanna convert vrn-unguided.t7 in https://github.com/AaronJackson/vrn
and it said :Not Implement nn.SpatialUpSamplingBilinear
actually，i got vrn_unguided.pth and vrn_unguided.py
but a part of vrn_unguided.py was wrong,
like this:
LambdaReduce(lambda x,y: x+y), # CAddTable,
LambdaMap(lambda x: x, # ConcatTable,
nn.Sequential( # Sequential,
nn.Sequential( # Sequential,
nn.Conv2d(256,256,(1, 1)),
nn.BatchNorm2d(256),
nn.ReLU(),
),
nn.Conv2d(256,200,(1, 1)),
#,
,
n,
n,
.,
S,
p,
a,
t,
i,
a,
l,
U,
p,
S,
a,
m,
p,
l,
i,
n,
g,
B,
i,
l,
i,
n,
e,
a,
r,
,
N,
o,
t,
,
I,
m,
p,
l,
e,
m,
e,
n,
t,
,,
,

Have the same problem, also the vrn code.
Have you solved?

could try to go to the generated .py file and replace it with nn.Upsample


Globals

Setters and getters for global variables, such as time of day, etc.

Created using a master archive thing. Uses pointers. Will add variables and stuff as needed.


Documentation and examples for advanced usage

Currently once can use the Executor directly to query but this isn't documented. This PR adds documentation and an example.

Changes LGTM, unrelated build error has been addressed via #68 in the meantime :shipit:


Consider using wire for platform abstraction

Go Cloud released wire tool (https://github.com/google/go-cloud/blob/master/wire/README.md) that solves the classical dependency injection problem with code generation. We could make use of it to generate builds that are platform-specific.

/assign @kyessenov


extend node decorator to write/read node functions to/from repository

I played a bit with a class that extends the node generator to write the python function to a repository consisting of directories and a python file. Having such a features provide the following advantages:

The user can stay inside the notebook to add new node repositories or nodes to existing ones. Of course, if preferred users can directly add/edit such files outside jupyter using their editor of choice.
Storing and sharing workflows requires to store not only the state of the node but also the node definition. For nodes defined in a local jupyter session, such functionality provides an easy way to store local nodes.
This feature naturally extends our create construction.

A simple application of these classes and their functionality is given below:
Application of the node-based workflow class
Objective: Create a module that looks and feels like pyiron but is based on a nodes. Key criteria are:

Make adding new nodes easy (via decorator or simply adding functions to a file)
Use directories to build up a class schema (e.g. workflow.create.math.numpy)
Make nodes delayed (only node.execute() executes the node

Create an example node
Note: The decorator is a convinience function. You can directly define the node function in the corresponding python file.
from node_store import FunctionToFileConverter

np_nodes = FunctionToFileConverter('nodelib/math/my_numpy.py')
np_nodes.add_code('import numpy as np')
np_nodes.add_code('from typing import List')

from typing import List

@np_nodes
def linspace(i_start:int=0, i_end:int=1, n_steps:int=10) -> List[float]:
    return np.linspace(i_start, i_end, n_steps)

File 'nodelib/math/my_numpy.py' created successfully.

Construct an example workflow
from node_store import Workflow

wf = Workflow('nodelib')
wf

Workflow(nodes=dict_keys([]))

lin = wf.create.math.my_numpy.nodes.linspace()
lin

node: linspace

lin.input.i_start = -1

lin.execute()

array([-1.        , -0.77777778, -0.55555556, -0.33333333, -0.11111111,
        0.11111111,  0.33333333,  0.55555556,  0.77777778,  1.        ])

lin.input

Input Arguments: i_start: int, i_end: int, n_steps: int

lin.output

Output Argument: linspace: List

Since I cannot store .py files in the text I append the code below:
          import inspect
          import ast

          class FunctionToFileConverter:
              def __init__(self, filename):
                  self.filename = filename
                  self.function_dict = {}
                  self.additional_code = ''
                  self._namespace = None

              def __call__(self, func):
                  self.function_dict[func.__name__] = inspect.getsource(func)
                  self.create_file()
                  return func

              def __repr__(self):
                  num_functions = len(self.function_dict)
                  return f"FunctionToFileConverter(filename='{self.filename}', num_functions={num_functions})"

              def create_file(self):
                  with open(self.filename, 'w') as file:
                      file.write(self.additional_code + '\n\n')
                      for func_name, source_code in self.function_dict.items():
                          lines = source_code.strip().split('\n')
                          if len(lines) > 1:
                              function_source = '\n'.join(lines[1:])
                              file.write(function_source + '\n\n')
                  print(f"File '{self.filename}' created successfully.")

              def add_code(self, code):
                  self.additional_code += code + '\n'

          class FileToFunctionConverter:
              def __init__(self, filename, workflow=None):
                  self.filename = filename
                  self.function_dict = self.read_functions()
                  self.additional_code = self.read_added_code()
                  self._namespace = None
                  self._workflow = workflow

              # def __call__(self, func):
              #     print ('call: ', func)
              #     self.function_dict[func.__name__] = inspect.getsource(func)
              #     # self.create_file()
              #     return func

              def __repr__(self):
                  num_functions = len(self.function_dict)
                  return f"FileToFunctionConverter(filename='{self.filename}', num_functions={num_functions})"

              def add_code(self, code):
                  self.additional_code += code + '\n'

              def read_functions(self):
                  function_definitions = {}
                  with open(self.filename, 'r') as file:
                      source_code = file.read()

                  module = ast.parse(source_code)
                  for node in module.body:
                      if isinstance(node, ast.FunctionDef):
                          function_name = node.name
                          function_source = ast.unparse(node).strip()
                          function_definitions[function_name] = function_source

                  self.function_dict = function_definitions
                  return function_definitions

              def read_added_code(self):
                  with open(self.filename, 'r') as file:
                      code = file.read()
                  functions_start = code.find("def")
                  if functions_start != -1:
                      self.additional_code = code[:functions_start]
                  else:
                      self.additional_code = code
                  return self.additional_code

              def create_namespace(self):
                  if self._namespace is None:
                      ns = {}
                      exec(self.additional_code, ns)
                      for func_name, source_code in self.function_dict.items():
                          exec(source_code, ns)
                      self._namespace = ns
                  return self._namespace

              @property
              def nodes(self):
                  return NamespaceWrapper(self.create_namespace(), self.function_dict, self._workflow)

          class NamespaceWrapper:
              def __init__(self, namespace, function_dict, workflow=None):
                  self.namespace = namespace
                  self.function_dict = function_dict
                  self._workflow = workflow

              def __getattr__(self, name):
                  return extract_arguments(self.namespace[name], self._workflow, name)

              def __dir__(self):
                  return list(self.function_dict.keys())

              def __repr__(self):
                  return str(list(self.function_dict.keys()))

          from functools import wraps
          import inspect

          class InputArguments:
              """
              Class representing the input arguments of the wrapped function.

              Provides convenient access to the input arguments and their values.

              """
              def __init__(self, arguments):
                  """
                  Initialize the InputArguments instance.

                  Args:
                      arguments (dict): Dictionary containing the input arguments and their values.

                  """
                  self.arguments = arguments

              def keys(self):
                  """
                  Get the keys of the input arguments.

                  Returns:
                      Keys of the input arguments.

                  """
                  return self.arguments.keys()

              def items(self):
                  """
                  Get the items (key-value pairs) of the input arguments.

                  Returns:
                      Items (key-value pairs) of the input arguments.

                  """
                  return self.arguments.items()

              def values(self):
                  """
                  Get the values of the input arguments.

                  Returns:
                      Values of the input arguments.

                  """
                  return self.arguments.values()

              def __getitem__(self, key):
                  """
                  Get the value of an input argument by its key.

                  Args:
                      key: The key of the input argument.

                  Returns:
                      The value of the input argument.

                  """
                  return self.arguments[key]

              def __setitem__(self, key, value):
                  """
                  Set the value of an input argument by its key.

                  Args:
                      key: The key of the input argument.
                      value: The value to set.

                  """
                  self.arguments[key] = value

              def __getattr__(self, name):
                  """
                  Get the value of an input argument by its name.

                  Args:
                      name: The name of the input argument.

                  Returns:
                      The value of the input argument.

                  """
                  return self.arguments[name]

              def __setattr__(self, name, value):
                  """
                  Set the value of an input argument by its name.

                  Args:
                      name: The name of the input argument.
                      value: The value to set.

                  """
                  if name == "arguments":
                      super().__setattr__(name, value)
                  else:
                      self.arguments[name] = value

              def __dir__(self):
                  """
                  Get the list of attribute names (input argument names).

                  Returns:
                      List of attribute names.

                  """
                  default_attributes = dir(type(self))
                  argument_keys = list(self.arguments.keys())
                  return default_attributes + argument_keys

              def __repr__(self):
                  """
                  Get the string representation of the input arguments.

                  Returns:
                      String representation of the input arguments.
                  """
                  argument_repr = [f"{name}: {type(value).__name__}" for name, value in self.items()]
                  return f"Input Arguments: {', '.join(argument_repr)}"

          class OutputArguments:
              """
              Class representing the output argument (return type) of a function.

              Provides access to the name and type of the output argument.
              """

              def __init__(self, name, return_type):
                  """
                  Initialize the OutputArguments instance.

                  Args:
                      name (str): The name of the output argument.
                      return_type: The type of the output argument.
                  """
                  self.name = name
                  self.return_type = return_type

              def __repr__(self):
                  """
                  Get the string representation of the output argument.

                  Returns:
                      String representation of the output argument.
                  """
                  return f"Output Argument: {self.name}: {self.return_type.__name__}"

          def extract_arguments(func, workflow=None, node_name=None):
              """
              Decorator that extracts the arguments and return type from a function's signature.

              Args:
                  func: The function to be wrapped.

              Returns:
                  The wrapped function with extracted arguments and return type.
              """
              signature = inspect.signature(func)
              parameters = signature.parameters

              class FunctionWrapper:
                  """
                  Wrapper class for the decorated function.

                  Provides access to the input and output arguments, and allows execution of the function.
                  """

                  def __init__(self, *args, **kwargs):
                      """
                      Initialize the FunctionWrapper instance.

                      Args:
                          *args: Positional arguments to be passed to the wrapped function.
                          **kwargs: Keyword arguments to be passed to the wrapped function.
                      """
                      bound_arguments = signature.bind(*args, **kwargs)
                      bound_arguments.apply_defaults()
                      arguments = bound_arguments.arguments

                      input_arguments = InputArguments(arguments)
                      self.inputs_type = {}
                      for name, value in arguments.items():
                          #input_arguments[name] = value
                          #input_arguments[name + "_type"] = parameters[name].annotation
                          self.inputs_type[name] = parameters[name].annotation

                      self.input = input_arguments
                      self.output = OutputArguments(func.__name__, signature.return_annotation)

                      self._workflow = workflow
                      self._name = node_name
                      self._path = None  # TODO: include file path where function has been defined
                      if workflow is not None:
                          if node_name not in workflow.nodes.keys():
                              self._workflow.nodes[node_name] = self
                          else:
                              print ('Node exists already: ', node_name)

                  def execute(self):
                      """
                      Execute the wrapped function with the provided input arguments.

                      Returns:
                          The result of the function execution.
                      """
                      return func(**self.input)

                  def __repr__(self):
                      return f'node: {self._name}'

              return FunctionWrapper

          import os

          class FileDictionary:
              def __init__(self, path, workflow=None):
                  self.path = path
                  self.file_dict = {}
                  self.dir_dict = {}
                  self._workflow = workflow

                  self._create_file_dict()
                  self._create_dir_dict()

              def __getitem__(self, key):
                  if key in self.file_dict:
                      return FileToFunctionConverter(self.file_dict[key], workflow=self._workflow)
                  elif key in self.dir_dict:
                      return FileDictionary(self.dir_dict[key], workflow=self._workflow)
                  else:
                      raise KeyError(f"Key '{key}' not found.")

              def __getattr__(self, name):
                  if (name in self.file_dict) or (name in self.dir_dict):
                      return self.__getitem__(name)
                  else:
                      raise AttributeError(f"Attribute '{name}' not found.")

              def _create_file_dict(self):
                  for file in os.listdir(self.path):
                      if not file.startswith(".") and file.endswith(".py"):
                          file_name = os.path.splitext(file)[0]
                          file_path = os.path.join(self.path, file)
                          self.file_dict[file_name] = file_path

              def _create_dir_dict(self):
                  for item in os.listdir(self.path):
                      item_path = os.path.join(self.path, item)
                      if os.path.isdir(item_path) and not item.startswith("."):
                          self.dir_dict[item] = item_path

              def __dir__(self):
                  default_attributes = dir(type(self))
                  file_keys = list(self.file_dict.keys())
                  dir_keys = list(self.dir_dict.keys())
                  return default_attributes + file_keys + dir_keys

          class DictList:
              def __init__(self, label='DictList'):
                  self._dict = {}
                  self._label = label

              def __setitem__(self, key, value):
                  self._dict[key] = value

              def __getitem__(self, item):
                  return self._dict[item]

              def __getattr__(self, name):
                  if name in self._dict.keys():
                      return self.__getitem__(name)
                  else:
                      raise AttributeError(f"Attribute '{name}' not found.")

              def __repr__(self):
                  return f'{self._label}({[k for k in self._dict.keys()]})'

              def keys(self):
                  return self._dict.keys()

              def values(self):
                  return self._dict.values()

              def __dir__(self):
                  return self._dict.keys()

          class Workflow:
              def __init__(self, path_libs='.'):
                  self._path_libs = path_libs
                  self.create = FileDictionary(path=path_libs, workflow=self)
                  self.nodes = DictList(label='Nodes')
                  self.libs = FileDictionary(self._path_libs)

              def __getattr_rm__(self, name):
                  # print ('workflow.__getattr__')
                  if name.startswith('add.'):
                      func_name = name[4:]
                      return lambda: self.add(func_name, getattr(self, func_name))
                  raise AttributeError(f"'{type(self).__name__}' object has no attribute '{name}'")

              def add(self, node_name, node):
                  self.nodes[node_name] = node

              def __repr__(self):
                  return f"Workflow(nodes={self.nodes.keys()})"

EDIT: github syntax highlighting

@samwaseda, here is the existing thoughts on what we were talking about. Some of it is a bit outdated (e.g. there are no longer fast/slow/single value nodes -- this has all been unified), but other parts are relevant.
I guess what we had in mind may be narrower in scope, i.e. something like
from pyiron_workflow import Workflow

import math

@Workflow.wrap.as_function_node("y")
def Foo(n: int, k: int):
    return math.perm(n, k)

Foo.to_py_file("scratch")

Populating scratch.py with something along the lines of
from pyiron_workflow import Workflow

@Workflow.wrap.as_function_node("y")
def Foo(n: int, k: int):
    import math
    return math.perm(n, k)

Per our conversation, I've assigned you here, but this issue is quite old and I think we can modify the scope of it as we go.
Skimming over this and thinking a bit, I wonder how the export method would handle things if a file already exists? Can it cleverly merge in nodes of the same name by overwriting and simply append nodes of a new name? One of the tricky bits we anticipated was dependency management; if we get merging running how will the merge handle the dependencies changing, e.g. the old version required from foo import bar but the new version does not? Can(should?) we leverage AI for any of this? This sort of "extract and modify very slightly" is something I've found GPT to be passably good at.

Skimming over this and thinking a bit, I wonder how the export method would handle things if a file already exists? Can it cleverly merge in nodes of the same name by overwriting and simply append nodes of a new name? One of the tricky bits we anticipated was dependency management; if we get merging running how will the merge handle the dependencies changing, e.g. the old version required from foo import bar but the new version does not? Can(should?) we leverage AI for any of this? This sort of "extract and modify very slightly" is something I've found GPT to be passably good at.

Can’t we simply set something like overwrite = True? My biggest problem right now is that I don’t really know how we can automatically detect math and write import math` in the file, but whether the line can be correctly exported or we can only see that there are undefined variables, I don’t think it’s a deal breaker to overwrite or not do anything at all when the file already exists. Or did I miss something crucial here maybe?

Finding the necessary dependencies is definitely the more serious issue -- that's rather a deal breaker. Although to get the ball rolling we could do something like say all imports need to happen inside the node definition and if they don't things will break and it's your fault.
Overwriting is fine, but unless we want each node to be completely alone in its own file, we need some way of merging content into an existing node -- at which point we need to be able to tell if we're overriding old content or appending new content. Unlike determining imports, I don't see any fundamental technical barrier here or some missing knowledge, but it's still a matter of doing the legwork to get a parser running that knows (at a minimum) how to isolate and replace the decorated function definition when a new one with the same name is provided.


Remove this.model.paginate not found monkey patch

:tada: This issue has been resolved in version 0.8.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Coalesce the Gateway.spec.servers[] with the same port and protocol

Fixes https://github.com/knative/serving/issues/7294
Benchmark
Setup: 5 Envoy Pods
Baseline: 1 Host
  0.165s The Route is still working to reflect the latest desired specification.
  0.417s Configuration "helloworld-go" is waiting for a Revision to become ready.
  3.182s ...
  3.365s Ingress has not yet been reconciled.
  3.592s Waiting for load balancer to be ready
  4.924s Ready to serve.

Before
100 Hosts
  0.215s The Route is still working to reflect the latest desired specification.
  0.274s Configuration "helloworld-go" is waiting for a Revision to become ready.
  3.150s ...
  3.354s Ingress has not yet been reconciled.
  3.463s Waiting for load balancer to be ready
 43.610s Ready to serve.

200 Hosts
  0.149s The Route is still working to reflect the latest desired specification.
  0.374s Configuration "helloworld-go" is waiting for a Revision to become ready.
  3.234s ...
  3.428s Ingress has not yet been reconciled.
  3.681s Waiting for load balancer to be ready
 74.153s Ready to serve.

1000 Hosts
  0.183s The Route is still working to reflect the latest desired specification.
  0.717s Configuration "helloworld-go" is waiting for a Revision to become ready.
  3.834s ...
  4.042s Ingress has not yet been reconciled.
  4.960s Waiting for load balancer to be ready
  404.941s Ready to serve.

After
100 Hosts
  0.473s Configuration "helloworld-go" is waiting for a Revision to become ready.
  2.720s ...
  2.890s Ingress has not yet been reconciled.
  3.642s Waiting for load balancer to be ready
  4.343s Ready to serve.

200 Hosts
  0.471s The Route is still working to reflect the latest desired specification.
  0.495s Configuration "helloworld-go" is waiting for a Revision to become ready.
  2.315s ...
  2.417s Ingress has not yet been reconciled.
  2.827s Waiting for load balancer to be ready
  3.959s Ready to serve.

1000 Hosts
  0.151s The Route is still working to reflect the latest desired specification.
  0.151s Configuration "helloworld-go" is waiting for a Revision to become ready.
  3.220s ...
  3.459s Ingress has not yet been reconciled.
  3.656s Waiting for load balancer to be ready
  6.053s Ready to serve.

Next
This won't work if the servers are spread across different Gateways.
This code has become quite messy and complex through the refactoring/moving/extension. We should rewrite it and handle that scenario: coalesce by Gateway (by Pod really).

/cc jeremiaswerner
/assign @tcnghia

/lgtm
/approve
This is awesome!

@JRBANCEL wow, awesome!! 🎉


Improving auto batch performance

Closes #14
This should continue to be monitored to make sure the issue doesn't come back with even larger documents.

Codecov Report

Merging #16 (6ea9950) into main (8f2db53) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #16   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           14        14
  Lines          563       564    +1
=========================================
+ Hits           563       564    +1

Impacted Files
Coverage Δ

meilisearch_python_async/index.py
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 8f2db53...6ea9950. Read the comment docs.


Change readme.md hypertext. more understandable

Optional: This book gives a more detailed overview of Agile after that.
I have changed link from "THIS BOOK" to "more detailed overview of Agile"... I think it seems better. That user can understand what kind of book this link is going to.

Awesome work guys! great working with both of you!!!

thanks @dzhonapp and @oraz23 ! Happy contributing!


Custom stepFolderName Generates Files Only in test Folder

When specifying a custom stepFolderName in build.yaml, the generated dart files are unexpectedly created in the test folder instead of the intended directory (where the feature files belong, e.g integration_test). Is it possible when set the stepFolderName it will generate to the integration_test?
Thanks in advanced!

The framework was created and optimized for widget tests, so the assumption was that if you have integration tests then you probably have unit/widget tests as well and you want to reuse the same steps. Having steps under the test folder shouldn't create any issues except for the inconvenience that you write tests in one folder and modify steps in another, however, if you want to fix that, you may use a relative path in the stepFolderName parameter, i.e. instead of
stepFolderName: step

you may write
stepFolderName: ./step

Clearly, if you have a complex folder structure in tests, you may put ../../ or whatever path makes sense.

Hi @olexale, Thank you for the answer! I have tried this out and it didn't work well in my case. If I use ../../ I need to have a certain level for each feature file.
Example:

This will create 2 step folder:

one inside the features folder
the other one, outside of the features folder

Just wondering if we could add testFolderName as an attribute in the build.yaml config

I thought a lot about your proposition. I'm not sure whether it's a good idea to provide too much flexibility to package users as they may do completely wrong stuff. The package was (and still is) optimized for widget tests, that's why it generates everything under the test folder, and integration_test was rather a "why not" bonus on top of that.
However, I see that many users use the package for integration tests only, and I admit that it looks weird that steps are generated in an unexpected place for that case.
The package already has a few special cases to treat integration tests in a special way, and I'm not a fan of that. To avoid making more special cases, I think it might be sufficient if the package generates steps in a folder outside of test.
I made a draft with that. To test the implementation, specify the dependency to the plugin like that:
dev_dependencies:
  bdd_widget_test:
    git:
      url: https://github.com/olexale/bdd_widget_test.git
      ref: feature/absolute_path_to_steps

and then add the following flag in the build.yaml file (or bdd_options.yaml):
stepFolderIsUnderTestFolder: false

Would you please test it and provide your feedback?

Hi @olexale , Thank you for considering my request.
I tried, but it seems like can't find the reference got

Ah, right, apologies. Please try now.

Hello, @AntoniKwok. Did you have a chance to try the modified plugin?


Nested Docker container can "spy" on the host system

Ubuntu Bionic
LXD 3.18 from Snap
Create an LXD container with -c security.nesting=true - set some cpu / ram limits - and then initialize a docker container:
apt update
apt upgrade
apt install docker.io
mkdir -p /mnt/sysdisk
docker run -d --name Cloud9 --restart always -v /mnt/sysdisk/Cloud9:/workspace --net host sapk/cloud9 --auth admin:testcloud9

Enter the container and install / execute htop:
docker exec -it Cloud9 /bin/bash
apt update; apt install htop -y; htop;

You will now notice you can see all host system resources - total number of threads, total CPU use, total amount of memory and overall host system load, despite LXD being configured with snap set lxd lxcfs.loadavg=true
Somehow Docker circumvents all of this.
Running stress reveals system cpu and memory limits are still enforced, fortunately - in addition, the container can only see processes running under the LXD container. So my impression is this is a non-critical issue. Just a bit confusing to customers who see something they do not expect :)

That's not spying, lxcfs is setup in LXD containers for convenience but someone can absolutely unmount it our mount a new instance of proc and see the real values from the system.
As Docker doesn't know how to setup lxcfs, Docker containers see the host resources directly, this is normal.

Thought as much - thanks for confirming, @stgraber :)

how can this problem be solved?


fix onload that does not return a promise

hi, @dobiedad think you want to use redirect for this. sorry, looks like i forgot to document it

see redirect test: https://github.com/featurist/hyperdom/blob/master/test/browser/routerSpec.js#L390


While Starting Train

System Information (please complete the following information):

Model Builder or CLI Version:
Visual Studio Version (if applicable):

Describe the bug

On which page of the tutorial did you run into an issue (URL):
Clear description of the problem:

To Reproduce
Steps to reproduce the behavior:

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

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.

Hi @Chittaranjandell. I need more information to investigate this issue. Can you please include..

Your Model builder version
Steps  you did to get to the error
Screenshots

Thanks!

@Chittaranjandell Any update on the above questions?

Closing this issue. Please respond if you're still having problems. Thanks!


[Feature] Custom Notification for Empty Search Field Instead of Browser's Native Modal

Problem

Currently, when the search field is empty and the search button is clicked, the browser shows a default native modal with the message: "search.creativecommons.org says please enter a value." This behavior feels inconsistent with the overall user experience and design of the site. The native modal can be abrupt and less user-friendly, especially since it doesn’t match the site's visual style.
Description

I propose introducing a custom notification or prompt system for situations where a required input field is left empty (like the search field). Instead of relying on the browser’s default modal, we could display a properly styled and branded message within the page itself. This could be a subtle popup, a toast notification, or an inline error message that aligns with the overall UI design, improving user experience.
Alternatives

An alternative solution could be to use a small, inline error message directly below the input field. This would avoid popups and keep the user interface clean and accessible. However, a custom notification or toast would be more visible and engaging, especially on larger screens.
Additional context

This feature would improve the consistency and usability of the search functionality, making error handling smoother and more intuitive. It could also reduce the dependence on browser-specific error handling, which may behave differently across various browsers.
Implementation

[x] I would be interested in implementing this feature.

I'd love to see a more specific spec for how this would be implemented. Something inline is likely the best UX. Moving to https://github.com/creativecommons/search/issues?q=state%3Aopen label%3A"🧹 status%3A ticket work required" until there's a more concise direction here.

@possumbilities thank you for the feedback!
I agree that an inline error message below the search field would offer the best UX. It would appear when the user submits an empty input, styled to match the site's design (e.g., red text). This can be implemented with JavaScript for validation.
Let me know if this approach works, and I can provide more detailed specs.

Hello @SylviaUzoh1 and @possumbilities . This issue was already opened here #238 and the implementation was agreed. Opening it again duplicates it. I think we can work on it since the status is "Ready for Work" .


Weasyprint blocks Billing Reviewer confirmation action

Description:
After creating Public Cloud product, on the billing review stage, billing-reviewer can't make Confirm action, because of backend error coming from Weasyprint:

The log in the pltsvc pod:

The error text in app:

Error: connect ECONNREFUSED <IP_ADDRESS>:8080

The error text in the pltsvc pod:
"address":"<IP_ADDRESS>",
"cause":{"address":"<IP_ADDRESS>",
"code":"ECONNREFUSED",
"errno":-111,
"port":8080,"syscall":"connect"},
"code":"ECONNREFUSED",
"config":{"adapter":["xhr","http","fetch"],
"baseURL":"http://weasyprint:8080",
"data":"{\"html\":\"

Printed on 2024-12-16 02:21:29 PM

Service Agreement

This agreement is between;

The Office of the Chief Information Officer
Hereby referred to as “the OCIO”

And

The Artem Test Dec 16.1
Hereby referred to as “the Ministry”

For the following services;

  Cloud compute, storage, and container management services, which will be accessible to the Ministry’s teams, on the Amazon Web Services platform, through the Government of Canada Cloud Brokering Service.

  AWS and the Government of Ca...

This is fixed.


Update CustomInputSource.cs

Enable Navigation Gesture emulation using the mouse. Until know only the Manipulation Gesture would work.
Overview
Enables the navigation Gesture.
I measured and compared its behavior to the Hololens emulator available in Unity when an xbox controller is connected.
Changes
Only adds the navigation gestuure functionality

Fixes: # .

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: MrDChristop sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

@MrDChristop this made it into the dev branch already, correct?


[PySpark][Minor] Update sql example, so that can read file correctly

To run Spark, default will read file from HDFS if we don't set the schema.

Test build #30929 has started for   PR 5684 at commit 19fe145.

Test build #30929 has finished for   PR 5684 at commit 19fe145.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30929/
Test PASSed.

Thanks. I've merged this in master.


Sensitive to the order inputs and outputs are listed?

Thank you for your work on both ninja and this project - the simplicity and speed is great.
I considerably prefer the progress output of n2, so have been looking at moving our build over to it. The first issue I ran into was #39, and that was an easy fix (though resolving the variables at build.ninja creation time increased the build.ninja size from about 1.6M to 1.9MB).
The other issue took considerably longer to debug - I was seeing some rules being rebuilt on subsequent invocations of n2, and had no idea why. I couldn't resort to using ninja -d explain, as the issue didn't happen there, and n2 has no native explain tool. I ended up hacking together a solution that dumps the mtime of files on each run and compares them to make it clear what root change is triggering a build step to be rebuilt, and finally figured out that it wasn't the mtimes that were changing, but the order of the input and output files in build.ninja. Our build generator was writing the cmdlines consistently, but the inputs/outputs were being accumulated into hashmaps before being written out, leading to non-deterministic output.
Once I knew what the problem was, it was easy to do the sorting in the build generator, but I thought I would mention it in case you feel it's worth solving on n2's end for consistency with ninja, or at least documenting as a migration gotcha.

Making sure I follow, it's something like
build foo: bar baz1 baz2 baz3
  command = ... no mention of $in ...

and you reordered baz1/baz2/baz3?

Pretty much, yep. The inputs were listed as implicit dependencies, and then listed out in the command line as well. The dependency line was changing, but not the command line. I think the same issue existed for implicit outputs as well.

Hrmm.  On the one hand, this might be easy to fix.  On the other, it feels like if you're changing your build file around it's not so bad for ninja to rebuild?  How would you feel about this if there were better debugging output available?

Better debugging facilities would be great - it's useful for a bunch of other cases as well, and "build file change triggers rebuild" does make sense.

Thinking about it more, n2 doesn’t have as much debug info available (see the discussion of manifests on https://neugierig.org/software/blog/2022/03/n2.html ), hrm…

Thanks for implementing that. Yeah, I remember reading your note about hashes losing information about the build when I read that article, and I encountered it when using Bazel as well.
The approach I used in my quick-and-dirty hack was to gather the same data the hash uses and serialize it:
diff --git a/src/graph.rs b/src/graph.rs
index 506023d..f1f60a6 100644
--- a/src/graph.rs
+++ b/src/graph.rs
@@ -377,7 +377,7 @@ const UNIT_SEPARATOR: u8 = 0x1F;
 fn hash_files(
     hasher: &mut std::collections::hash_map::DefaultHasher,
     graph: &Graph,
-    file_state: &mut FileState,
+    file_state: &FileState,
     ids: &[FileId],
 ) {
     for &id in ids {
@@ -395,6 +395,31 @@ fn hash_files(
     }
 }

+pub fn dump_files(
+    dump: &mut Vec<(String, i64)>,
+    graph: &Graph,
+    file_state: &FileState,
+    ids: &[FileId],
+) {
+    for &id in ids {
+        let name = &graph.file(id).name;
+        let mtime = file_state
+            .get(id)
+            .unwrap_or_else(|| panic!("no state for {:?}", name));
+        let mtime = match mtime {
+            MTime::Stamp(mtime) => mtime,
+            MTime::Missing => panic!("missing file: {:?}", name),
+        };
+        dump.push((
+            name.clone(),
+            mtime
+                .duration_since(SystemTime::UNIX_EPOCH)
+                .unwrap()
+                .as_millis() as i64,
+        ));
+    }
+}
+
 // Hashes the inputs of a build to compute a signature.
 // Prerequisite: all referenced files have already been stat()ed and are present.
 // (It doesn't make sense to hash a build with missing files, because it's out
@@ -417,6 +442,27 @@ pub fn hash_build(
     Ok(Hash(hasher.finish()))
 }

+#[derive(Default, Debug, serde::Serialize, serde::Deserialize, PartialEq)]
+pub struct BuildDump {
+    pub ins: Vec<(String, i64)>,
+    pub outs: Vec<(String, i64)>,
+    pub cmdline: String,
+}
+
+pub fn dump_build(
+    graph: &Graph,
+    file_state: &FileState,
+    build: &Build,
+) -> std::io::Result<BuildDump> {
+    let mut dump = BuildDump::default();
+    dump_files(&mut dump.ins, graph, file_state, build.dirtying_ins());
+    dump_files(&mut dump.ins, graph, file_state, build.discovered_ins());
+    dump_files(&mut dump.outs, graph, file_state, build.outs());
+    dump.cmdline = build.cmdline.clone().unwrap_or_default();
+    assert!(build.rspfile.is_none());
+
+    Ok(dump)
+}
 #[derive(Default)]
 pub struct Hashes(HashMap<BuildId, Hash>);

diff --git a/src/work.rs b/src/work.rs
index 227f5bb..9363c6f 100644
--- a/src/work.rs
+++ b/src/work.rs
@@ -4,8 +4,10 @@ use crate::{
     canon::canon_path, db, densemap::DenseMap, graph::*, progress, progress::Progress, signal,
     smallmap::SmallMap, task, trace,
 };
+use std::collections::HashMap;
 use std::collections::HashSet;
 use std::collections::VecDeque;
+use std::path::Path;
 use std::path::PathBuf;
 use std::time::Duration;

@@ -292,6 +294,7 @@ pub struct Work<'a> {
     last_hashes: &'a Hashes,
     build_states: BuildStates,
     runner: task::Runner,
+    dump: HashMap<String, BuildDump>,
 }

 impl<'a> Work<'a> {
@@ -315,6 +318,7 @@ impl<'a> Work<'a> {
             last_hashes,
             build_states: BuildStates::new(builds, pools),
             runner: task::Runner::new(parallelism),
+            dump: Default::default(),
         }
     }

@@ -598,6 +602,13 @@ impl<'a> Work<'a> {
         // so compare the hash against the last hash.
         // TODO: skip this whole function if no previous hash is present.
         let hash = hash_build(self.graph, &mut self.file_state, build)?;
+
+        assert!(build.cmdline.is_some());
+        self.dump.insert(
+            build.cmdline.clone().unwrap(),
+            dump_build(self.graph, &self.file_state, build)?,
+        );
+
         Ok(self.last_hashes.changed(id, hash))
     }

@@ -725,6 +736,37 @@ impl<'a> Work<'a> {
         // "interrupted by user" and exit with success, and in that case we
         // don't want n2 to print a "succeeded" message afterwards.
         let success = tasks_failed == 0 && !signal::was_interrupted();
+        if success {
+            let dump_path = Path::new(".n2-dump");
+            if dump_path.exists() {
+                let previous_dump: HashMap<String, BuildDump> =
+                    serde_json::from_slice(&std::fs::read(dump_path).unwrap()).unwrap();
+
+                for (k, current) in &self.dump {
+                    match previous_dump.get(k) {
+                        Some(prev) => {
+                            if prev != current {
+                                let old = serde_json::to_string(prev).unwrap();
+                                let new = serde_json::to_string(current).unwrap();
+                                println!(
+                                    "{k}: {:#?}",
+                                    json_diff::compare_jsons(&old, &new).unwrap()
+                                );
+                            }
+                        }
+                        None => {
+                            println!("not seen before: {}", k);
+                        }
+                    }
+                }
+
+                for (k, v) in previous_dump {
+                    // add any previous entries that are missing to current dump
+                    self.dump.entry(k).or_insert(v);
+                }
+            };
+            std::fs::write(dump_path, serde_json::to_vec(&self.dump).unwrap()).unwrap();
+        }
         Ok(success.then(|| tasks_done))
     }

If the extra work were gated behind a tool like explain so the extra costs were only paid when debugging, could that be a possible solution to the all-we-have-is-a-hash problem?

Ok, I did this.  I made it indirect through a trait so the debug-printer and real calculation are guaranteed to cover the same data.
Output looks like:
$ ./target/release/n2 -d explain -C ~/projects/llvm-project-16.0.0.src/build lib/Support/CMakeFiles/LLVMSupport.dir/Caching.cpp.o
explain: build.ninja:660: input changed
in:
<PHONE_NUMBER>117 /Users/evmar/projects/llvm-project-16.0.0.src/llvm/lib/Support/Caching.cpp
discovered:
<PHONE_NUMBER>000 /Users/evmar/projects/llvm-project-16.0.0.src/llvm/include/llvm/Support/Caching.h
<PHONE_NUMBER>000 /Users/evmar/projects/llvm-project-16.0.0.src/llvm/include/llvm/Support/Error.h
[...]

Thanks Evan, this is great - I already found myself reaching for it today while debugging a build issue.
After those initial migration issues I mentioned previously, everything has been smooth sailing, and I'm still loving the new status output. Wish I'd made the switch earlier!

Wow thanks!  I think Anki is super cool so please let me know if there's anything else you'd like in n2, even something minor!


Background looks inconsistent in some parts

Describe the bug
Sometimes the background looks inconsistent, it happens when I open nvim-tree or the cmd float input.
Only happening with gruvbox.
To Reproduce
Steps to reproduce the behavior:
Using almost the basic configuration
-- set dark background
vim.opt.background = "dark"

gruvbox.setup({
  italic = {
    strings = false,
  },
  contrast = "", -- options: soft|hard|empty
})

-- set colorscheme
vim.cmd([[ colorscheme gruvbox ]])

Expected behavior
See background color working good in all cases, even when plugins like nvim-tree are opened.
Screenshots
https://github.com/ellisonleao/gruvbox.nvim/assets/45423661/318674d0-f951-4df6-ac0e-0b75c9a008f9
Additional context
nvim version: 0.9.4
os: macOs Sonoma 14.1
terminal: iTerm2 build 3.4.22

hey @diegoulloao unfortunately some plugins use custom background colors and not links for their colors. We need to understand first which color group they are using for the background and they match our one. Makes sense?

I understand. I fixed some of them by overwriting the groups, Idk if the best solution, but works.

I leave some of the groups that I overwrote, could be useful for someone:
-- fix
-- git signs column bg
vim.cmd([[ hi! SignColumn guibg=NONE ]])

-- fix
-- winbar bg
vim.cmd([[ hi! WinBar guibg=NONE ]])
vim.cmd([[ hi! WinBarNC guibg=NONE ]])

-- fix
-- noice cmd line bg
vim.cmd([[ hi! NoiceCmdlinePopup guibg=#282828 ]])
vim.cmd([[ hi! NoiceCmdlinePopupBorder guibg=#282828 ]])

-- fix
-- telescope selection bg
vim.cmd([[ hi! TelescopeSelection guibg=#3c3836 guifg=#fe8019 gui=bold ]])

-- fix
-- diagnostics sign bg
vim.cmd([[ hi! DiagnosticSignOk guifg=#b8bb26 guibg=#282828 ]])
vim.cmd([[ hi! DiagnosticSignInfo guifg=#83a598 guibg=#282828 ]])
vim.cmd([[ hi! DiagnosticSignWarn guifg=#fabd2f guibg=#282828 ]])
vim.cmd([[ hi! DiagnosticSignError guifg=#fb4934 guibg=#282828 ]])

-- fix
-- lsp saga bg
vim.cmd([[ hi! SagaNormal guibg=#282828 ]])


Typo in config/rollup/es5.js

I think template strings should be used here.

Fixed with 7f17640cf1fa7ca439ef7d4bc6e8250ef20b7485.


chore: mark book/src/support_matrix.html as generated

Description
I noticed that github shows book/src/support_matrix.html diffs. That's not really helpful, it is fully generated and CI checked. So, add it to .gitattributes with some magic.
See github docs for background.
Issues/PRs references

Open Questions

Change checklist

[ ] I have cleaned up my commit history and squashed fixup commits.
[ ] I have followed the Coding Conventions.
[ ] I have performed a self-review of my own code.
[ ] I have made corresponding changes to the documentation.

(last commit is for testing, will remove before merging)


TNT-39269 - ContextProvider

ContextProvider implementation for ODD

Is it my deja vu?  I seem to review some files in previous PR.  Is it possible to rebase to remove the files that were already merged to main branch?