LXD hanging on restart (and snapd seems to love restarting it regularly)

Required information

Distribution: Ubuntu
Distribution version: 18.04
The output of "lxc info" or if that fails:

Kernel version: 5.3.0-53-generic
LXC version: 4.1
LXD version: 4.1
Storage backend in use: zfs

Issue description
snapd is restarting lxd, probably when installing a new version. Yesterday it upgraded it from v3 to v4 and it was hanging for many hours and snapd was spinning on a core. lxd itself was quiesced and unresponsibe to API requests.
I rebooted and it seemed to cure it. Today again snapd seems to have restarted it overnight and the same thing has happened again If I kill the lxd process it will restart and hang again. The last thing in the lxd log is "Initializing global database".
Steps to reproduce
As above.
Information to attach

[ ] Any relevant kernel output (dmesg)
[ ] Container log (lxc info NAME --show-log)
[ ] Container configuration (lxc config show NAME --expanded)
[X] Main daemon log (at /var/log/lxd/lxd.log or /var/snap/lxd/common/lxd/logs/lxd.log)
[ ] Output of the client with --debug
[ ] Output of the daemon with --debug (alternatively output of lxc monitor while reproducing the issue)

t=2020-05-27T08:17:09+1000 lvl=info msg="LXD 4.1 is starting in normal mode" path=/var/snap/lxd/common/lxd
t=2020-05-27T08:17:09+1000 lvl=info msg="Kernel uid/gid map:"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - u 0 0<PHONE_NUMBER>"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - g 0 0<PHONE_NUMBER>"
t=2020-05-27T08:17:09+1000 lvl=info msg="Configured LXD uid/gid map:"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - u 0 1000000<PHONE_NUMBER>"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - g 0 1000000<PHONE_NUMBER>"
t=2020-05-27T08:17:09+1000 lvl=info msg="Kernel features:"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - netnsid-based network retrieval: yes"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - uevent injection: yes"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - seccomp listener: yes"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - seccomp listener continue syscalls: yes"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - unprivileged file capabilities: yes"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - cgroup layout: hybrid"
t=2020-05-27T08:17:09+1000 lvl=warn msg=" - Couldn't find the CGroup blkio.weight, I/O weight limits will be ignored"
t=2020-05-27T08:17:09+1000 lvl=warn msg=" - Couldn't find the CGroup memory swap accounting, swap limits will be ignored"
t=2020-05-27T08:17:09+1000 lvl=info msg=" - shiftfs support: disabled"
t=2020-05-27T08:17:09+1000 lvl=info msg="Initializing local database"
t=2020-05-27T08:17:10+1000 lvl=info msg="Starting /dev/lxd handler:"
t=2020-05-27T08:17:10+1000 lvl=info msg=" - binding devlxd socket" socket=/var/snap/lxd/common/lxd/devlxd/sock
t=2020-05-27T08:17:10+1000 lvl=info msg="REST API daemon:"
t=2020-05-27T08:17:10+1000 lvl=info msg=" - binding Unix socket" inherited=true socket=/var/snap/lxd/common/lxd/unix.socket
t=2020-05-27T08:17:10+1000 lvl=info msg=" - binding TCP socket" socket=[::]:8443
t=2020-05-27T08:17:10+1000 lvl=info msg="Initializing global database"

@freeekanayaka

@bigjools so to unstick things you'll want to:

Stop the LXD daemon with: systemctl stop snap.lxd.daemon snap.lxd.daemon.unix.socket
If that hangs, give it the good old pkill -9 lxd that usually motivates it
Make a tarball of /var/snap/lxd/common/lxd/database and e-mail that to me if possible (helps reproducing the issue at will)
Do a manual startup with lxd --debug --group lxd to see if you get more details when it hangs
Show me a listing of /var/snap/lxd/common/lxd/database/global/

In most cases, it's stuck on a corrupted or otherwise weird last segment, identifying it and removing it usually fixes things.

Is there going to be any private info in the database? I don't care about IP addresses, just stuff from inside the containers. Cheers.

root@jeeves:/var/snap/lxd/common/lxd/database/global# ls -l
total 119852
-rw------- 1 root root  909312 Jan 26 08:26<PHONE_NUMBER>027273-0000000000027362
-rw------- 1 root root  599304 Jan 27 04:31<PHONE_NUMBER>027363-0000000000027421
-rw------- 1 root root  268680 Jan 27 10:36<PHONE_NUMBER>027422-0000000000027448
-rw------- 1 root root  764616 Jan 28 11:36<PHONE_NUMBER>027449-0000000000027523
-rw------- 1 root root 4484184 Feb  4 09:51<PHONE_NUMBER>027524-0000000000027959
-rw------- 1 root root 1864032 Feb  7 05:01<PHONE_NUMBER>027960-0000000000028142
-rw------- 1 root root 7331640 Feb 18 11:52<PHONE_NUMBER>028143-0000000000028853
-rw------- 1 root root  830832 Feb 19 15:47<PHONE_NUMBER>028854-0000000000028936
-rw------- 1 root root 1198560 Feb 21 10:18<PHONE_NUMBER>028937-0000000000029053
-rw------- 1 root root  574464 Feb 22 05:07<PHONE_NUMBER>029054-0000000000029109
-rw------- 1 root root 1756488 Feb 24 21:02<PHONE_NUMBER>029110-0000000000029280
-rw------- 1 root root 5387688 Mar  2 21:38<PHONE_NUMBER>029281-0000000000029782
-rw------- 1 root root  380064 Mar  2 21:48<PHONE_NUMBER>029783-0000000000029817
-rw------- 1 root root 7322688 Mar 13 10:52<PHONE_NUMBER>029818-0000000000030518
-rw------- 1 root root  586416 Mar 14 03:21<PHONE_NUMBER>030519-0000000000030569
-rw------- 1 root root 2231760 Mar 17 11:32<PHONE_NUMBER>030570-0000000000030786
-rw------- 1 root root  227352 Mar 17 17:21<PHONE_NUMBER>030787-0000000000030809
-rw------- 1 root root  475320 Mar 18 08:36<PHONE_NUMBER>030810-0000000000030856
-rw------- 1 root root  785328 Mar 19 10:21<PHONE_NUMBER>030857-0000000000030934
-rw------- 1 root root 3223632 Mar 24 10:17<PHONE_NUMBER>030935-0000000000031247
-rw------- 1 root root 1285296 Mar 26 08:16<PHONE_NUMBER>031248-0000000000031372
-rw------- 1 root root  867936 Mar 27 13:42<PHONE_NUMBER>031373-0000000000031457
-rw------- 1 root root  206688 Mar 27 18:01<PHONE_NUMBER>031458-0000000000031478
-rw------- 1 root root  785280 Mar 28 19:12<PHONE_NUMBER>031479-0000000000031555
-rw------- 1 root root 1735872 Mar 31 09:31<PHONE_NUMBER>031556-0000000000031725
-rw------- 1 root root 2087112 Apr  3 11:37<PHONE_NUMBER>031726-0000000000031928
-rw------- 1 root root 2401296 Apr  7 00:52<PHONE_NUMBER>031929-0000000000032163
-rw------- 1 root root 1058088 Apr  8 13:07<PHONE_NUMBER>032164-0000000000032267
-rw------- 1 root root 2625288 Apr 10 15:17<PHONE_NUMBER>032268-0000000000032478
-rw------- 1 root root 4896888 Apr 11 15:27<PHONE_NUMBER>032479-0000000000032832
-rw------- 1 root root 3280992 Apr 16 05:58<PHONE_NUMBER>032833-0000000000033144
-rw------- 1 root root  310008 Apr 16 14:52<PHONE_NUMBER>033145-0000000000033175
-rw------- 1 root root  520824 Apr 17 05:37<PHONE_NUMBER>033176-0000000000033227
-rw------- 1 root root  433992 Apr 17 19:22<PHONE_NUMBER>033228-0000000000033270
-rw------- 1 root root  433992 Apr 18 09:12<PHONE_NUMBER>033271-0000000000033313
-rw------- 1 root root 2768712 Apr 22 10:02<PHONE_NUMBER>033314-0000000000033578
-rw------- 1 root root 4401528 Apr 29 04:58<PHONE_NUMBER>033579-0000000000034006
-rw------- 1 root root 5251776 May  6 11:28<PHONE_NUMBER>034007-0000000000034501
-rw------- 1 root root 5868384 May 15 08:58<PHONE_NUMBER>034502-0000000000035067
-rw------- 1 root root 7190568 May 26 01:43<PHONE_NUMBER>035068-0000000000035757
-rw------- 1 root root      48 May 26 06:34<PHONE_NUMBER>035758-0000000000035758
-rw------- 1 root root  124032 May 26 06:40<PHONE_NUMBER>035759-0000000000035771
-rw------- 1 root root      48 May 26 09:18<PHONE_NUMBER>035772-0000000000035772
-rw------- 1 root root      48 May 26 09:52<PHONE_NUMBER>035773-0000000000035773
-rw------- 1 root root  644448 May 27 01:22<PHONE_NUMBER>035774-0000000000035832
-rw------- 1 root root      48 May 27 08:05<PHONE_NUMBER>035833-0000000000035833
-rw------- 1 root root      48 May 27 08:17<PHONE_NUMBER>035834-0000000000035834
-rw------- 1 root root  421888 May 27 01:22 db.bin
-rw------- 1 root root   32768 Sep 16  2018 db.bin-shm
-rw------- 1 root root 3506152 May 27 01:22 db.bin-wal
-rw------- 1 root root      32 Dec  9 16:00 metadata1
-rw------- 1 root root      32 Dec  9 16:00 metadata2
-rw------- 1 root root 8388608 May 27 08:17 open-1
-rw------- 1 root root 8388608 May 27 08:17 open-2
-rw------- 1 root root 8388608 May 27 08:17 open-3
-rw------- 1 root root 2424280 May  6 07:59 snapshot-30-34492-5566138967
-rw------- 1 root root      56 May  6 07:59 snapshot-30-34492-5566138967.meta
-rw------- 1 root root  681520 May 22 03:58 snapshot-30-35516-6934105325
-rw------- 1 root root      56 May 22 03:58 snapshot-30-35516-6934105325.meta
root@jeeves:/var/snap/lxd/common/lxd/database/global# lxd --debug --group lxd
DBUG[05-27|11:31:32] Connecting to a local LXD over a Unix socket
DBUG[05-27|11:31:32] Sending request to LXD                   method=GET url=http://unix.socket/1.0 etag=
INFO[05-27|11:31:32] LXD 4.1 is starting in normal mode       path=/var/snap/lxd/common/lxd
INFO[05-27|11:31:32] Kernel uid/gid map:
INFO[05-27|11:31:32]  - u 0 0<PHONE_NUMBER>
INFO[05-27|11:31:32]  - g 0 0<PHONE_NUMBER>
INFO[05-27|11:31:32] Configured LXD uid/gid map:
INFO[05-27|11:31:32]  - u 0 1000000<PHONE_NUMBER>
INFO[05-27|11:31:32]  - g 0 1000000<PHONE_NUMBER>
INFO[05-27|11:31:32] Kernel features:
INFO[05-27|11:31:32]  - netnsid-based network retrieval: yes
INFO[05-27|11:31:32]  - uevent injection: yes
INFO[05-27|11:31:32]  - seccomp listener: yes
INFO[05-27|11:31:32]  - seccomp listener continue syscalls: yes
INFO[05-27|11:31:32]  - unprivileged file capabilities: yes
INFO[05-27|11:31:32]  - cgroup layout: hybrid
WARN[05-27|11:31:32]  - Couldn't find the CGroup blkio.weight, I/O weight limits will be ignored
WARN[05-27|11:31:32]  - Couldn't find the CGroup memory swap accounting, swap limits will be ignored
INFO[05-27|11:31:32]  - shiftfs support: yes
INFO[05-27|11:31:32] Initializing local database
DBUG[05-27|11:31:32] Initializing database gateway
DBUG[05-27|11:31:32] Start database node                      address= role=voter id=1
DBUG[05-27|11:31:33] Connecting to a local LXD over a Unix socket
DBUG[05-27|11:31:33] Sending request to LXD                   method=GET url=http://unix.socket/1.0 etag=
DBUG[05-27|11:31:33] Detected stale unix socket, deleting
DBUG[05-27|11:31:33] Detected stale unix socket, deleting
INFO[05-27|11:31:33] Starting /dev/lxd handler:
INFO[05-27|11:31:33]  - binding devlxd socket                 socket=/var/snap/lxd/common/lxd/devlxd/sock
INFO[05-27|11:31:33] REST API daemon:
INFO[05-27|11:31:33]  - binding Unix socket                   socket=/var/snap/lxd/common/lxd/unix.socket
INFO[05-27|11:31:33]  - binding TCP socket                    socket=[::]:8443
INFO[05-27|11:31:33] Initializing global database
DBUG[05-27|11:31:33] Dqlite: connected address=1 attempt=0

No, the DB doesn't contain any data about the content of the containers.
It contains the list of all containers, snapshots, images, networks, storage pools, storage volumes, ... and their config.
But LXD doesn't store any runtime data from within the instances in the database.

Sending that over shortly then, thanks.

Ok, so let's try with the 3 segments from today, one at a time:

0000000000035834-0000000000035834
0000000000035833-0000000000035833
0000000000035774-0000000000035832

One at a time, move them aside (or remove them since you have a backup tarball), then try running lxd --debug --group lxd and see if it makes it through then.

I moved the one ending in 34 (first in your list) and it gives:
EROR[05-27|12:11:14] Failed to start the daemon: Failed to start dqlite server: raft_start(): io: closed segment<PHONE_NUMBER>035835-0000000000035835 is past last snapshot snapshot-30-35516-6934105325

Should I move aside each one cumulatively or each one on its own?

Hmm, I didn't expect that particular result, so it stills knows about 35835 somehow...
Can you move back any segment you moved away and instead move away the 3 files named open-?

I need @freeekanayaka to give me another lesson about the on-disk structure of dqite :)
I thought I understood snapshots (raft snapshots on clean shutdown, worse case we can wipe everything except them and you'll be back to the 22nd of May), then segments are transactions on top of that getting you to the current state. But I don't recall what's going on with the 3 open files, presumably those are open segments that haven't been committed yet but I'm a bit confused as to why we have 3 of those...

I've removed open* and it hangs as before.

ok, then slightly bigger hammer time, move away:

open-1
open-2
open-3
0000000000035834-0000000000035834
0000000000035833-0000000000035833
0000000000035774-0000000000035832

That should make it forget about the 27th of May and hopefully go back up this time?

Ok done. It comes up but hangs again.

FWIW it recreated the open- files, which are still there after I ctrl-c

Ok and it hangs at the exact same spot of Dqlite: connected address=1 attempt=0 ?

yes

ok, looks like we'll need that tarball to poke at it some more and track it down as it seems to have gotten into a funny state somehow.
What filesystem does /var/snap/lxd/common/lxd/database reside on?

That's on ext4

Ok, so that should support all the fancy async io bits that dqlite uses, kernel matches what we use on most our test systems too, so really wondering what's making it hang.

Can you e-mail the tarball to stgraber at ubuntu dot com and free dot ekanayaka at canonical dot com?
I'm way past EOD and about to go to bed but Free should be up in the next 4-5 hours and can figure it out for you.

It fixed it last time I rebooted so it doesn't seem permanent.

Maybe some state hanging around somewhere under /tmp?

Ok tarball sent. Cheers!

I had to reboot because for some reason the messing around above stopped all my containers, and one of them is running my DNS. Everything came back up ok afterwards. Hopefully this will give you a clue as to what's wrong.

Hmm, I didn't expect that particular result, so it stills knows about 35835 somehow...
Can you move back any segment you moved away and instead move away the 3 files named open-?

This happened because there is a mismatch between the directory listing posted above and the actual directory listing at the time @bigjools tried to remove<PHONE_NUMBER>035834-0000000000035834. The actual listing has an additional<PHONE_NUMBER>035835-0000000000035835 segment which presumably was added after the initial directory listing was posted in this issue (this would indicate that the database was working fine, or at least to the extent of committing a new transaction).
The additional segment is present i the tarball we got by email, and I can reproduce the same result here. If instead of removing<PHONE_NUMBER>035834-0000000000035834 I remove<PHONE_NUMBER>035835-0000000000035835 (which is the actual last one), the daemon starts fine, as you were probably expecting to see.
Note however that removing<PHONE_NUMBER>035835-0000000000035835 does not seem to be necessary: the database included in the tarball does not seem to be in a corrupted state, and the daemon starts fine with it (in terms of bringing up the database).

Ok so if the DB is OK, why is the daemon hanging at startup :)
It feels like maybe there's a stuck socket that is cleared on a reboot.

I need @freeekanayaka to give me another lesson about the on-disk structure of dqite :)

Hehe. There is a bit of documentation in the include/raft/uv.h file, I now created https://github.com/canonical/raft/pull/140 to make it a bit more visible. Should help in getting some more insights on the disk format.

I thought I understood snapshots (raft snapshots on clean shutdown, worse case we can wipe everything except them and you'll be back to the 22nd of May)

That's correct. Except that we don't quite take snapshots at shutdown (we probably used to in the hashicorp/raft implementation), we do however dump the database into db.bin, just for safety.

then segments are transactions on top of that getting you to the current state. But I don't recall what's going on with the 3 open files, presumably those are open segments that haven't been committed yet but I'm a bit confused as to why we have 3 of those...

Almost correct. The segment files named MMM-NNN are closed (no more entries will be added to them), while the segment files named open-N are open (more entries might be added to them). There are several open-N segments because they get fallocate'd, so we can start writing to a new open segment as soon as the current one gets full. A segment gets closed when it gets full. Note that commitment is in general an orthogonal concept, if you have more than one node you'll typically have entries written on disk (either in open or closed segments) that aren't committed yet, because no quorum was reached yet.

Looking at the source code, the next log message we should see after Initializing global database is Firewall loaded driver, which however doesn't appear in the output above.
@stgraber @tomponline perhaps we get stuck in the
d.firewall = firewall.New()

call in daemon.go:828?
Just thinking loud.

@freeekanayaka if you enable debug logging you should see some additional output such as Firewall detected "nftables" incompatibility if it was trying to load multiple drivers. The function itself runs some commands to detect which firewall driver is in use, so its possible I suppose, but doesn't seem likely unless one of those external commands is hanging perhaps.

When I ran from the CLI with --debug, the last message was still Initializing global database.

And looking at ps fauxww doesn't show any sub-process hanging under lxd?

Built a debug version of 4.1 which will log a LOT more around that part of startup.
If it's hanging in firewall rather than dqlite, with that one, we'll know :)
To use it, do:

curl https://dl.stgraber.org/lxd-7446 -o /var/snap/lxd/common/lxd.debug
chmod +x /var/snap/lxd/common/lxd.debug
lxd --debug --group lxd

sha256 is 2541b4ea07f6a83b02aacd36f68a2a74ce5716e5eba9d1cbe106ab6d67caada3

Built a debug version of 4.1 which will log a LOT more around that part of startup.
If it's hanging in firewall rather than dqlite, with that one, we'll know :)
To use it, do:
* curl https://dl.stgraber.org/lxd-7446 -o /var/snap/lxd/common/lxd.debug

* chmod +x /var/snap/lxd/common/lxd.debug

* lxd --debug --group lxd

sha256 is 2541b4ea07f6a83b02aacd36f68a2a74ce5716e5eba9d1cbe106ab6d67caada3

Cool, can you paste the diff wrt 4.1? If you didn't yet, maybe I can add some other debug messages to narrow down the database setup phase as well.

https://paste.ubuntu.com/p/vNDpC5JDDV/

That's on top of current master as 4.1 -> master doesn't have any changes that would prevent a subsequent downgrade.

Ok, looks noisy enough to get started :)

Snapd has not tried to restart lxd today so it's still working fine. I have done a manual restart systemctl restart snap.lxd.daemon and it recreated the issue immediately.
root@jeeves:~# ps -fe|grep lxd
root      1126     1  0 09:10 ?        00:00:00 /bin/sh /snap/lxd/15161/commands/daemon.start
root      1317     1  0 09:10 ?        00:00:00 lxcfs /var/snap/lxd/common/var/lib/lxcfs -p /var/snap/lxd/common/lxcfs.pid
root      1389  1126  2 09:10 ?        00:00:01 lxd --logfile /var/snap/lxd/common/lxd/logs/lxd.log --group lxd
root      1390  1126  0 09:10 ?        00:00:00 lxd waitready
root      1391  1126  0 09:10 ?        00:00:00 /bin/sh /snap/lxd/15161/commands/daemon.start

Doing that has also killed all my running containers :angry:

EROR[05-28|09:20:35] stgraber: open db
INFO[05-28|09:20:35] Initializing global database
DBUG[05-28|09:20:35] Dqlite: connected address=1 attempt=0
EROR[05-28|09:20:35] stgraber: OpenCluster success
EROR[05-28|09:20:35] stgraber: DB opened
EROR[05-28|09:20:35] stgraber: in Firewall New
EROR[05-28|09:20:35] stgraber: checking nft
EROR[05-28|09:20:35] stgraber: in nftables compat
EROR[05-28|09:20:35] stgraber: nft: got uname
EROR[05-28|09:20:35] stgraber: nft: found binary
EROR[05-28|09:20:35] stgraber: nft: got version
EROR[05-28|09:20:35] stgraber: nft: compared version
EROR[05-28|09:20:35] stgraber: nft parse: running nft --json nn list ruleset
EROR[05-28|09:20:35] stgraber: nft parse: spawned subcommand
EROR[05-28|09:20:35] stgraber: nft parse: parsed output
EROR[05-28|09:20:35] stgraber: nft parse: processed output
EROR[05-28|09:20:35] stgraber: nft parse: returning
EROR[05-28|09:20:35] stgraber: nft: parsed the rules
EROR[05-28|09:20:35] stgraber: checking xtables
EROR[05-28|09:20:35] stgraber: in xtables compat
EROR[05-28|09:20:35] stgraber: xtables: looking for iptables
EROR[05-28|09:20:35] stgraber: xtables: found iptables
EROR[05-28|09:20:35] stgraber: xtables: checked iptables for compat
EROR[05-28|09:20:35] stgraber: xtables: looking for ip6tables
EROR[05-28|09:20:35] stgraber: xtables: found ip6tables
EROR[05-28|09:20:35] stgraber: xtables: checked ip6tables for compat
EROR[05-28|09:20:35] stgraber: xtables: looking for ebtables
EROR[05-28|09:20:35] stgraber: xtables: found ebtables
EROR[05-28|09:20:35] stgraber: xtables: checked ebtables for compat
EROR[05-28|09:20:35] stgraber: xtables: checking iptables use

and then it hangs

Interesting, thanks for that. Do you see any hanging iptables processes running? Its interesting the longs are apparently out-of-order too.

@freeekanayaka  @stgraber this potentially may be the issue https://github.com/lxc/lxd/pull/7453 as each iptables call to check whether each table is in use is using a defer cmd.Wait() which could mean multiple iptables processes waiting to be finished fully. This could conceivably cause locking issues, although I've not been able to re-create the issue so not sure.

Interesting, thanks for that. Do you see any hanging iptables processes running? Its interesting the longs are apparently out-of-order too.

Sorry, I rebooted before I saw your message. I'll check next time.

@bigjools could you also post the output of iptables-save thanks.

@bigjools could you also post the output of iptables-save thanks.

It's huge, I am running fail2ban on my ssh port!

@bigjools OK, I suspect that may be the issue, I've updated my PR above to use a single call of iptables-save rather than call iptables once for each table, so hopefully that will resolve it.

That would make sense, if lxd gets started at bootup before fail2ban restores the tables.

@bigjools please can you try my custom build with the PR above using the same steps as @stgraber posted earlier, but using https://tomp.uk/files/lxd-7446 instead. Thanks

Will do, I have a plan to do an upgrade to 20.04 later so I'll add that into the mix.

@bigjools thanks, it would be good to test this before the upgrade so that nothing else changes in the test. Thanks

That's the plan since I will have to reboot anyway

I can confirm that your 7446 binary works a charm, thanks!

@bigjools thanks, please can you re-download the binary and re-test as I've modified it to revert to using iptables rather than iptables-save but with fixes to avoid the hang. Thanks

@bigjools also once this lands in the official snap, be sure to remove  /var/snap/lxd/common/lxd.debug and reload the LXD service to ensure you're not stuck on the custom build. Thanks

Yes, works fine. Just to confirm, sha256 is:
db4102bdef1874ad0d78127b4c9da4af47f01a4f8bee16af5e758fedfa5d0761

Why is it restarting all the containers when I restart lxd? That seems unnecessary.

@bigjools yep thats the correct has.
@stgraber is restarting lxd intentionally restarting instances? Does "reload" just restart lxd?

systemctl reload snap.lxd.daemon is what you want to just bounce LXD.
systemctl restart snap.lxd.daemon will restart all instances.

Ok thanks. I'm not sure how that's at all useful and seems very dangerous. If you want to restart all containers I think it should be a command under lxd, given that if you restart the daemon, it needs it to start the containers up anyway. Please consider changing this behaviour.

restart is just stop and start as far as the service is concerned and we can't distinguish stop as part of a restart from stop because the system is going down.

Some of that is also made extra hard because of the snap being in charge of the systemd units, so some of the tricks we could use to distinguish between a restart and a host shutdown are not directly accessible to us.

Is there any reason restart can't just be a link to reload ?

Systemd doesn't let you alias restart to reload. systemctl does offer a reload-or-restart command though.

Ok, I'll get to the root problem.
What's really unacceptable is that Snap can restart my containers via
restarting LXD, with no warning, and this Git Issue has highlighted that
for me. I'm at the point where I am going to uninstall snap, because using
this stuff on servers running essential servers is bonkers. I don't know
who decided snap should do this by default and have no way to turn it off,
but I don't know a single person who thinks it's a good idea apart from
people at Canonical (that's not to say anything about you guys, BTW).
Thanks for the help with this one anyway, LXD and you guys keep showing me
how good it is.
Cheers

@bigjools This is actually one of the reasons that forced a decision to pack my own deb packages for LXD. You are welcome to use them also.
https://github.com/s3rj1k/lxd-repack

One thing worth noting here is that LXD snap refreshes do not call restart, they effectively call reload, specifically because we agree that it's unacceptable for the containers to be restarted on upgrades.
As for the auto-refresh behavior of snaps, there are many ways to control this behavior.
@tomponline is working on a LXD focused bit of documentation for that, explaining the various options available to choose what you may get through refresh (by selecting one of our specific channels), when those refreshes can happen, how to hold a specific snap on your system (or systems) for up to 3 months on a particular revision, how companies can centrally control what revision to deploy and how you can also just bring the whole thing offline if you feel the need to.
All that said, we're certainly fine with folks building from source or using alternative packages, so long as they're able to update such packages to a supported combination of components when reporting issues.

As for the auto-refresh behavior of snaps, there are many ways to control this behavior.
@tomponline is working on a LXD focused bit of documentation for that, [...]

Is this available anywhere yet?  Thanks!

@foozlevazquez yes, sorry we didnt post it sooner, its here https://discuss.linuxcontainers.org/t/managing-the-lxd-snap/8178


[SPARK-12991] [SQL] Establish a link between SparkPlan and LogicalPlan nodes

This is a prerequisite for reusing RDDs corresponding to shared query
fragments between different Spark SQL queries, which helps improve
performance significantly on many analytical workloads even without
explicitly caching any tables.

Test build #50614 has started for PR 11036 at commit b79fd07.

Did you link to the corrected JIRA ticket? And what's your whole design? This is a big change and we need to discuss if it worth.

Test build #50614 has finished for PR 11036 at commit b79fd07.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

Sorry -- linked to the wrong JIRA ticket. Should be https://issues.apache.org/jira/browse/SPARK-12991.

@cloud-fan : the whole design for the feature this is needed for (query fragment RDD reuse) is at https://issues.apache.org/jira/browse/SPARK-11838, but this seems to be the only part that cannot be done without modifying the Spark SQL code, because we need to find logical plans corresponding to generated RDDs somehow.

This is not going to work at all with whole-stage codgen, in which we collapse all pipelinable operators into a single generated function.

Even in that case, we could still obtain RDDs corresponding to SparkPlan nodes at stage boundaries, right? We would still find that useful in our query workload.

How would the change here help you with that?

Test build #51606 has started for PR 11036 at commit b79fd07.

Test build #51606 has finished for PR 11036 at commit b79fd07.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

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

Merged build finished. Test PASSed.


Update Composer dependencies (2020-07-25-00-05)

Visual regression test passed!
View the visual regression test report


Checkbox returns incorrect checked status for onClick and onChange and onBeforeChange

When Checkbox is checked it returns false and when its not checked it returns true. so should be reverse of current behavior.

Fixed by: https://github.com/DigitalRiver/react-atlas/pull/279


Convert JavascriptString::EntryLocaleCompare to use LogicalStringCompare

Resolves #4841
I didn't change the error message, since I'm not sure if a new error message should be added to rterros.h or throw the error from GetLastError() .

Sorry for taking so long. I squashed the commits, and I think I've fixed the issue you mentioned with the emulation of CompareStringEx on Windows ICU.

No worries on the delay, I have been busy doing infrastructure work so I probably wouldn't have seen any updates anyways. @dilijev or @MSLaguana want to take a look at this before I merge?

@digitalinfinity this fix impacts --no-icu and Lite builds of ChakraCore. Should it stay in master or go to 1.10?

I'd vote 1.10

Marked as External Contributor as a reminder that a Chakra team member needs to adopt, test, and merge this change.


Parsing failed on Windows 11

Describe the bug
I run cargo tarpaulin and receive error Error: "Parsing failed".
I am using Windows 11 and run this from Git Bash.
Complete ouptut (skipping compilation):
    Finished test [unoptimized + debuginfo] target(s) in 51.35s
May 11 00:51:58.814  INFO cargo_tarpaulin::process_handling: running C:\work\probranchinator\target\debug\deps\probranchinator-5c461d614048b00c.exe
May 11 00:51:58.815  INFO cargo_tarpaulin::process_handling: Setting LLVM_PROFILE_FILE

running 5 tests
test tests::analysis_test::test_analysis_one_branch ...
 ███████████████████████████████████████████████████ 0/1 branches analysed in 0s
ok
test tests::analysis_test::test_analysis_unrelated_branches ... ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░2 branches analysed in 0s
ok
test tests::analysis_test::test_analysis_up_to_date_and_fast_forward ... ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░2 branches analysed in 0s
ok
test tests::repo_test::test_delete_remote_branch ... Pruning origin
URL: file:///C:/Users/strow/AppData/Local/Temp/.tmppCMm2h/my-repo.git/
 * [pruned] origin/test-branch
ok
test tests::repo_test::test_get_repo ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.21s

May 11 00:52:00.254  INFO cargo_tarpaulin::statemachine::instrumented: For binary: target\debug\deps\probranchinator-5c461d614048b00c.exe
May 11 00:52:00.254  INFO cargo_tarpaulin::statemachine::instrumented: Generated: target\tarpaulin\profraws\probranchinator-5c461d614048b00c.exe_12256345248713744009_0-25344.profraw
May 11 00:52:00.254  INFO cargo_tarpaulin::statemachine::instrumented: Merging coverage reports
May 11 00:52:00.260 ERROR cargo_tarpaulin: Parsing failed

I did not pass "--engine", not sure if it is ptrace or llvm instrumentation.
To Reproduce
I am getting it on this repository - https://github.com/strowk/probranchinator
Attached from "target/tarpaulin/profraws":
probranchinator-5c461d614048b00c.exe_12256345248713744009_0-25344.zip
Expected behavior
No errors, result of coverage analysis.

Note, that the output is OK when I run same project via docker like this:
docker run --security-opt seccomp=unconfined -ti -v "$(pwd -W):/volume" xd009642/tarpaulin bash -c " git config --global user.name 'Test Fella' && git config --global user.email<EMAIL_ADDRESS>&&  cargo tarpaulin"

(pwd -W is specific for combination of Mingw and docker in Windows, git config is  for tests as they use git CLI a little bit)
I get "10.40% coverage, 99/952 lines covered" and more output, so this seems a success (barring low coverage, but that's why I want to measure it in the first place).
This run via docker utilizing wsl 2, which is basically linux in VM, so basically same as real linux AFAIK.
This make me think that the issue I have is potentially Windows specific.

Sorry it's taken a while, I did just download the file you uploaded to test to see if there was anything i could glean from it. Running with the llvm tools I get:
error: probranchinator-5c461d614048b00c.exe_12256345248713744009_0-25344.profraw: malformed instrumentation profile data: function name is empty

There's a chance this may be OS specifc as these tools aren't designed to parse files generated on different architectures to the host and I'm running on Linux. I'll get access to a windows machine some point next week and test it there as the project works fine on linux for me in tarpaulin.

It happens to me also.

I reproduced this on Linux.
It seems that this is broken on Nightly rust, on Stable, things work just fine.

So releasing a new version today that may solve this, let me know how it works - sorry for the delay

I re-ran a workflow that previously failed on one of my personal FOSS projects.
I can confirm this now runs.
Thank you a lot.


Canvas Texture for Tizen 4.0 (latest version) broken on Smart TVs

Hello,
I'm developing smart tv apps using Pixi. I got a problem that canvas textures often end up broken. This is for the latest Samsung Smart TVs Tizen 4.0 (2018). Using the WEBGLRenderer. Right now I have to forceCanvas on the latest Samasung TVs because of that.
I'm pretty sure that something is bad within the Canvas Textures because PIXI.Text and Texture.fromCanvas only has this problem.
https://developer.samsung.com/tv/develop/specifications/tv-model-groups/
https://developer.samsung.com/tv/develop/specifications/web-engine-specifications/

Example of broken textures

A simple app with rendering errors on Samsung Smart tvs 2018 tizen 4.0 devices
https://github.com/EloB/broken-app-tizen

A simple app with rendering errors on Samsung Smart tvs 2018 tizen 4.0 devices
https://github.com/EloB/broken-app-tizen
It looks like the memory is not cleaned properly and it reuses old textures. I managed to get this output and as you can see from the code it isn't possible to have green background and "First time app started" in the end of the Lorem text.

Sometimes it ends up right...

I can't say I've seen this occur on any devices or browsers I've supported before... (android, windows, ios, mac, windows) but I've never targeted Tizen!
The fact that it's not been seen before would lead me to think it's more likely a Browser bug not clearing the state of the window on a reload than anything wrong PIXI is doing....
The only thing vaguely similar are
https://github.com/pixijs/pixi.js/issues/4405
https://github.com/pixijs/pixi.js/issues/4790
https://github.com/pixijs/pixi.js/issues/5121
https://github.com/pixijs/pixi.js/issues/5155
Times when, again, things have not worked on a Samsung browser compared to every other browser. They've a track record for this :/


RT-389: Creating common_base template to be used across resilience tools

Description
Work related to RT-389 and #147
Changes

Create a new template common_base to be used across resilience tools(Forms and Visualisations)

Codecov Report

:exclamation: No coverage uploaded for pull request base (develop@e9d56b7). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             develop     #163   +/-   ##
==========================================
  Coverage           ?   97.51%
==========================================
  Files              ?       65
  Lines              ?     4273
  Branches           ?        0
==========================================
  Hits               ?     4167
  Misses             ?      106
  Partials           ?        0

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 e9d56b7...6a0e42f. Read the comment docs.


Docker image for leveldb

Hi,
Want to check if there is a docker image/Dockerfile for leveldb which is officially supported? I could not find one under dockerhub official images https://hub.docker.com/explore/
If not, want to check if there is any plan to add an official leveldb image to dockerhub?  https://docs.docker.com/docker-hub/official_repos/#how-do-i-create-a-new-official-repository

At the moment, we have no plans for supporting a docker image. Sorry!

Have plans changed in the past year?

Nope, sorry.

Are we revisiting this decision in 2020?
Or is there an official docker image I am not aware of?
Awaiting response from maintainers :)
PS: Great job with LevelDB, keep it up!! 🙌

Sorry @0zAND1z. We've decided to keep the project clear from any and all forms of packaging, install, and alternative build systems. Feel free to check back in 2021 if you want :-)

any updates on it..?

Checking in 2022

Checking in 2023

Checking in 2024


useSetProfileMetadata should update the profile cache returned by useSession

Is your feature request related to a problem? Please describe.
When updating profile metadata with useSetProfileMetadata, the profile returned by useSession is not updated, so one has to reload the page to see the changes in the app.
Describe the solution you'd like
The cache is updated so the views using the old metadata are updated with the new one

@pradel what you are describing seems an issue, the profile from the useSession should update seamlessly. Can you please clarify more about your setup? Are you waiting for the update until its completion (see example code here)?

@cesarenaldi seems like I was missing the waitForCompletion, after adding it everything is working, thanks!


String interpolation of builtin functions

Describe the bug
String interpolation of builtin functions doesn't work.
To Reproduce
print "${cos}"
Expected behavior
Should give
cos
or

Fixed by pull #52


Update pylintrc

This PR updates .pylintrc to conform with newer pylint versions and latest Google Python Style Guide updates.

Hey, as  discussed out of band this LGTM, but I wasn't sure if you wanted to add the documentation changes to this PR or just do it in a separate one.


User should be able to stop running a pipeline

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/1506
Originally created by @bencodezen on 2019-12-20 00:54:38

Problem
Users may accidentally kick of a pipeline accidentally. Should be able to manually stop it.

View 4 previous comments from the original issue on GitLab


PDF not generating Arabic script correctly

I got some user feedback indirectly (copied below).  I haven't verified it myself but I have responded to the user that we are looking into it. --Joyce
Brief Description: error in arabic script titles in autogenerated pdfs of digitized mss
Comment: The autogenerated cover sheet for the pdf of a ms that I downloaded renders the Arabic script title with unconnected words (Arabic is never written in this way, and it is basically unreadable). Not sure if this is a problem you have identified already, but I think it would be important to fix it. I can send a picture of the coversheet if you’d like, but I can’t attach anything in the online formula I am using to send this. Best, Paul Babinski

@joycebcat Thanks for making the ticket.  The PDF cover page generator has some code to connect Arabic letters, but it may not be working correctly.  But I'm not sure if it's failing everywhere, or only for certain items.
Could you provide an example of connected and unconnected Arabic text, to make it easier to identify whether it's working or not?

I wonder if the problem is when we check whether the resource language is Arabic:
https://github.com/pulibrary/figgy/blob/master/app/services/pdf_generator/cover_page_generator.rb#L124
Maybe some items don't have Arabic listed first, or the remote metadata isn't loaded, and so it isn't passing this test and connecting the Arabic letters?  AFAICT, connecting letters on non-Arabic text has no effect, so I think we may want to just remove the language check.

correct:

incorrect:

Moving this issue to Figgy.


Support Linux URL handlers

This may be useful as a hint: shengyou/vscode-handler#installing-on-linux
Please, take a two minutes to look into source, it may work only for open:
https://github.com/shengyou/vscode-handler/blob/master/vscode-handler#L3

shared-mime-info-spec - URI scheme handlers
I think adding a NoDisplay desktop file with MimeType=x-scheme-handler/vscode that launches VS Code with --open-url is what's needed to implement this.

nice relevant gist: https://gist.github.com/peakhmr/9623e8f6da0acbec10d4ae1171bb7c70

VS Code has native support for opening it's own URL scheme via the hidden --open-url argument, I don't think there is a need for wrapper script shenanigans.

I've not checked too far into it (Just subscribed to this to keep up to
date) but the wrapper script is probably there because %u in the standard
would include the "vscode://" prefix.
On Fri, Aug 17, 2018 at 9:53 PM Segev Finer<EMAIL_ADDRESS>wrote:

VS Code has native support for opening it's own URL scheme via the hidden
--open-url argument, I don't think there is a need for wrapper script
shenanigans.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/vscode/issues/48528#issuecomment-414024621,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAG_znDfr84rUO_zmq88oY429Dc1hNK0ks5uR3OwgaJpZM4Thb11
.

I've not checked too far into it (Just subscribed to this to keep up to date) but the wrapper script is probably there because %u in the standard would include the "vscode://" prefix.

That's what should happen, that's what --open-url handles. You can test #56727 if you like. Alternatively you can test this (Which is what the PR adds):
For OSS:
[Desktop Entry]
Name=Code - OSS - URL Handler
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code-oss/code-oss --open-url %U
Icon=code-oss
Type=Application
NoDisplay=true
StartupNotify=true
StartupWMClass=Code - OSS
Categories=Utility;TextEditor;Development;IDE;
MimeType=x-scheme-handler/vscode
Keywords=vscode;

For release version:
[Desktop Entry]
Name=Visual Studio Code - URL Handler
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code/code --open-url %U
Icon=code
Type=Application
NoDisplay=true
StartupNotify=true
StartupWMClass=Code
Categories=Utility;TextEditor;Development;IDE;
MimeType=x-scheme-handler/vscode
Keywords=vscode;

Drop it into /usr/share/applications or ~/.local/share/applications and run update-desktop-database on that directory. If you test with the official release,


Cast audio only from YouTube?

Hello,
Sorry if this has been answered somewhere but I just can not find it and my memory is not like it used to be.
When I first tried catt I am pretty sure that when I tried to cast YouTube URL to my Google Nest Mini or Google Nest Audio, only audio played. Now when I try it the device starts (blink sound) but nothing is played.
Casting same YouTube URL to my Google Nest Hub works, but there full video plays.
Should this work or not?
Thank you.

catt cast -y "format=bestaudio" <URL> should work.
We could add more devices to our device-detection scheme, so that the extra -y option isn't necessary. If you could post the output from catt scan of any audio-only device you might have, then that would be useful.

catt cast -y "format=bestaudio" <URL> should work.
We could add more devices to our device-detection scheme, so that the extra -y option isn't necessary. If you could post the output from catt scan of any audio-only device you might have, then that would be useful.

Hello,
Tried it. It works. It played audio only from the video. So happy.
Here is output from catt scan command:
Scanning Chromecasts...
<IP_ADDRESS> - Chromecast Audio - Google Inc. Chromecast Audio
<IP_ADDRESS> - Google Bedroom - Google Inc. Google Nest Mini
<IP_ADDRESS> - Google Cabinet - Google Inc. Google Nest Mini
<IP_ADDRESS> - Google Kitchen - Google Inc. Google Nest Hub
<IP_ADDRESS> - Google Lara - Google Inc. Google Nest Hub
<IP_ADDRESS> - Google Living - Google Inc. Nest Audio
<IP_ADDRESS> - Google Zan - Google Inc. Google Nest Hub
<IP_ADDRESS> - KD-55XF7596 - Google Inc. BRAVIA 4K GB ATV3
<IP_ADDRESS> - Living Group - Google Inc. Google Cast Group
<IP_ADDRESS> - Upstairs Group - Google Inc. Google Cast Group

I push this from Home Assistant using shell_command. Would need to do some coding to pass -y only to audio only devices. If you can I kindly ask to add this devices, so -y parameter is not needed.
Thank you very much.

Hello,
Tried it. It works. It played audio only from the video. So happy.
Here is output from catt scan command:
Scanning Chromecasts...
<IP_ADDRESS> - Chromecast Audio - Google Inc. Chromecast Audio
<IP_ADDRESS> - Google Bedroom - Google Inc. Google Nest Mini
<IP_ADDRESS> - Google Cabinet - Google Inc. Google Nest Mini
<IP_ADDRESS> - Google Kitchen - Google Inc. Google Nest Hub
<IP_ADDRESS> - Google Lara - Google Inc. Google Nest Hub
<IP_ADDRESS> - Google Living - Google Inc. Nest Audio
<IP_ADDRESS> - Google Zan - Google Inc. Google Nest Hub
<IP_ADDRESS> - KD-55XF7596 - Google Inc. BRAVIA 4K GB ATV3
<IP_ADDRESS> - Living Group - Google Inc. Google Cast Group
<IP_ADDRESS> - Upstairs Group - Google Inc. Google Cast Group

I push this from Home Assistant using shell_command. Would need to do some coding to pass -y only to audio only devices. If you can I kindly ask to add this devices, so -y parameter is not needed.
Thank you very much.

So audio only devices are:
Google Inc. Chromecast Audio
Google Inc. Google Nest Mini
Google Inc. Nest Audio

I was lucky to find Chromecast Audio in flee market. They are not sold anymore. Works great with my Logitech Z906 speaker with optical input.
Let me know if you need any more details.
Thank you.

So audio only devices are:
Google Inc. Chromecast Audio
Google Inc. Google Nest Mini
Google Inc. Nest Audio

I was lucky to find Chromecast Audio in flee market. They are not sold anymore. Works great with my Logitech Z906 speaker with optical input.
Let me know if you need any more details.
Thank you.

We could add more devices to our device-detection scheme, so that the extra -y option isn't necessary.

As it happens, we are letting PyChromecast decide which devices are audio-only (forgot about that). But the required changes have now been accepted upstream, so you just need to update PyChromecast to 8.0.0 to fix this.

We could add more devices to our device-detection scheme, so that the extra -y option isn't necessary.

As it happens, we are letting PyChromecast decide which devices are audio-only (forgot about that). But the required changes have now been accepted upstream, so you just need to update PyChromecast to 8.0.0 to fix this.

Fantastic, should we pin our requirement to that version so the next release autoupdates people's installations?

Fantastic, should we pin our requirement to that version so the next release autoupdates people's installations?

@skorokithakis Fine with me.

@skorokithakis Fine with me.


Error

Game name: (please, specify the game name)
Engine version: (specify engine version, if known)
Platform: (specify platform, if known)
Error message: Some data left
Stack trace:    в uTinyRipper.Lz4.Lz4DecodeStream.ReadBuffer(Stream stream, Int64 count)
в uTinyRipper.BundleFileScheme.ReadFileStreamMetadata(Stream stream, Int64 basePosition)
в uTinyRipper.BundleFileScheme.ReadScheme(Stream stream)
в uTinyRipper.GameCollection.ReadScheme(SmartStream stream, String filePath, String fileName)
в uTinyRipper.GameCollection.LoadScheme(String filePath, String fileName)
в uTinyRipper.GameStructure.ProcessPlatformStructure(GameStructureProcessor processor, PlatformGameStructure structure)
в uTinyRipper.GameStructure.Load(List1 pathes, LayoutInfo layinfo)    в uTinyRipper.GameStructure.Load(IEnumerable1 pathes, LayoutInfo layinfo)
в uTinyRipperGUI.MainWindow.LoadFiles(Object data)

AssetRipper is actively being developed with the intent to recover games as best as possible. Weekly releases are normally on Sunday or Monday. I encourage you to help out if you're able and willing. Code contributions can be submitted via pull requests.
If you like the work I've done and want to see it continue, please consider sponsoring me. It really does help with development. These are some of the notable things I've implemented since taking over development:

2020+ support
APK, XAPK, and IPA reading with SharpZipLib
Dummy shaders (so everything isn't pink when you open the project)
IL2Cpp support via an integration of Cpp2IL
Better game platform support
Full script decompilation with the ILSpy decompiler
Cross-platform support
Multiple configuration options
Numerous performance improvements
Support for all asset types
Lightmap Recovery
High-quality 3D model export (including static meshes)
Prefab Outlining

Sponsorship Links:

GitHub Sponsors
Patreon
Paypal


Downgrade vscode engine

I work at Meta (previously Facebook) and we have an internal build of vscode. Usually we're running a little behind. Our current version is 1.58.x. Pretty much all of our development is based in vscode, and I'm assuming more people than just me we'll end up using the software.

In this pull request

Downgraded vscode engine, @types and vscode version downloaded for testing.
Compiled the project and ran tests. All succeeded, 55 shown as pending. Not sure what pending means.

I still need this, I just haven't upgraded my work cursorless stuff for the past 4 months.
I plan to refresh all my setup in the following week and will try to prep the pull requests so it can be solved long term (so I and any other ppl with restrictions on the server extensions don't have to make a custom build)

Ok some of these changes are now merged into main as part of #768.  As of that PR, we now test Cursorless against legacy VSCode, but not as far back as 1.58.1.  If you'd like to test that far back, you'll need to figure out how to fix CI; can possibly do it just by checking version in tests and ignoring failures for the ones that are failing if we're on legacy VSCode, as the test failures are fairly minor I believe

Actually a just realized I can install the insider's edition, which is a much fresher built - 1.63 !! Closing this pull request


asyncio version of evohomeclient2

Re: #52 - I have a working (but not fully tested) asyncio version of evomeclient2 at https://github.com/zxdavb/evohome-client/tree/master/evohomeclient3
It is the same as evohomeclient2, with only the minimal changes needed to swap to aiohttp from requests.
I'd be happy to submit as a PR, but wanted to check how you'd best like it packaged?

as a new package in evohome-client (I plan to do an async version of evohomeclient1) ??
as a new repo (I think better option), say aio-evohome-client ??

FYI, here is an example of the new code:
        async with self._session.post(
            url, data=payload, headers=HEADER_BASIC_AUTH,
        ) as response:
            try:
                response_text = await response.text()
                response.raise_for_status()

            except aiohttp.ClientResponseError:
                msg = "Unable to obtain an Access Token"
                if response_text:  # if there is a message, then raise with it
                    msg = msg + ", hint: " + response_text
                raise AuthenticationError(msg)

        try:  # the access token _should_ be valid...
            response_json = response.json()
    ....
        except KeyError:

... and here is the corresponding non-async version:
        response = requests.post(url, data=payload, headers=HEADER_BASIC_AUTH)
        try:
            response.raise_for_status()

        except requests.HTTPError:
            msg = "Unable to obtain an Access Token"
            if response.text:  # if there is a message, then raise with it
                msg = msg + ", hint: " + response.text
            raise AuthenticationError(msg)

        try:  # the access token _should_ be valid...
            response_json = response.json()
    ....
        except KeyError:

Thanks for this. The short answer is I'm not sure! I've not worked with the asyncio stuff before, or used packages that have. I think I probably agree with your preferred option of a different repo unless there's a well established pattern that others have used for other python packages.
If we do go with the separate repo, it presumably makes sense to host it under your github account. I'm obviously more than happy to make sure there are links from github and docs to the other repo to make sure people can find it.

OK, I'll implement as a separate github repo, and a separate pypi package.  The plan will be to make minimal changes, and certainly keep as close as possible to the existing docs:
Old way:
        try:  # this calls client._login
            client = self.client = evohomeclient3.EvohomeClient(
                self.params[CONF_USERNAME],
                self.params[CONF_PASSWORD],
                refresh_token=refresh_token,
                access_token=access_token,
                access_token_expires=access_token_expires
            )

        except (
            requests.exceptions.RequestException,
            evohomeclient2.AuthenticationError,
        ) as err:
            if not _handle_exception(err):
                return False

        finally:
            self.config = client.installation_info[loc_idx][GWS][0][TCS][0]

New way:
        client = self.client = evohomeclient3.EvohomeClient(
            self.params[CONF_USERNAME],
            self.params[CONF_PASSWORD],
            refresh_token=refresh_token,
            access_token=access_token,
            access_token_expires=access_token_expires,
            debug=True
        )
        try:
            await client.login()

        except (
            aiohttp.ClientResponseError,
            evohomeclient2.AuthenticationError,
        ) as err:
            if not _handle_exception(err):
                return False

        finally:
            self.config = client.installation_info[loc_idx][GWS][0][TCS][0]

OK, evohome-async is up, and is based upon your 0.3.3.
evohomeclient2 is (fully?) ported, but evohomeclient1 is not yet ported.
I'd be pleased to give you write access to the github repo and/or pypi package if you wish.


Initial setup with toy HTTP server

Resolves #1
I've created a Console Application, which receives HTTP request, which just prints greetings and the system time as Clients access the server. The guide for building & running the server is included in README.md.

This is the elementary version of a server built on top of .Net Core. I'll extend the features (e.g., RESTful APIs, multi-threads) on this implementation.
@interesaaat Could you kindly take a look when you have time? Thanks!

I will try to take a look this week end
On Fri, Apr 28, 2017 at 9:38 AM, Yunseong Lee<EMAIL_ADDRESS>wrote:

This is the elementary version of a server built on top of .Net Core. I'll
extend the features (e.g., RESTful APIs, multi-threads) on this
implementation.
@interesaaat https://github.com/interesaaat Could you kindly take a
look when you have time? Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/yunseong/.NET-Core-Exercise/pull/2#issuecomment-298046663,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABdo99C6aAAa8UJHJQdq3YeV74vr9ttcks5r0hX9gaJpZM4NLtX7
.

Thanks a lot! Please take your time :)


Why screenshot making process takes 5 seconds?

Hello, your library is a big help as I did not find anything easier to work with but I wonder what makes the process of taking a screenshot take a whole of 5 seconds? For me on MacOS m1 it takes 5 seconds.
Can this be improved?
Thanks

Are you running in release mode？

Nope, this was in dev mode. Is release mode any different? Currently trying it

My bad, it's actually very fast with release mode :)
Thanks for pointing this out!


:arrow_up: RCE fix<EMAIL_ADDRESS>

same as https://github.com/atom/atom/pull/15769 but backport  for 1.21 branch
Requirements

Filling out the template is required. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.
All new code requires tests to ensure against regressions

Description of the Change
Upgrading to the latest 1.6 patch to get the RCE fix: https://electron.atom.io/blog/2017/09/27/chromium-rce-vulnerability-fix

Alternate Designs
Leave RCE vulnerability in

Why Should This Be In Core?
It patches an known exploit.
fixes #13885

Benefits
It patches a known exploit.

Possible Drawbacks
Hackers may have to look elsewhere.

Applicable Issues
https://electron.atom.io/blog/2017/09/27/chromium-rce-vulnerability-fix

#15769 will be backported to the relevant branches once merged.  Thanks for the contributions though!

@50Wliu I still dont see this in 1.21.x branch, does that means this is ignored issue until 1.22.x?


Iroha documentation proposal

Documentation proposal
The document describes some ideas to improve current documentation.

Add Iroha "Get Started" Guides:

Overview of Iroha. Main motivation
Relationship to Fabric and Sawtooth Lake
Mobile and web libraries. Features and focus of mobile applications
Get started: build and install iroha
Simple use case: how to use iroha from client point of view

Iroha core concepts:

Account, User
Peer, Ordering Service, Consensus
Transaction, Query

API:

Overview. Description, libs and current status.
Administration. Configuration, preparing database, monitoring.
Errors. Description of errors in Iroha
Tutorials. Simple use case to demonstrate the Iroha API usage.
Endpoints. Iroha endpoints for grpc
C++ API
Java API
Python API
Node.JS API
C# API

Iroha dev-ops:

Create swarm network of Iroha nodes
How to run Iroha network with Ansible
Testing; How to run testing

Contribution

Policy (code style, pr application, working agreement)
Architecture documentation

I think we need focus on roles of documentation consumers. Such as if u are a newcomer and want to look at the basic functionality - one documentation, you are interested to deploy the system in the production - another documentation.
In this case, need to clarify the consumers and make the focus on it.

Also, keep in mind that this documentation will store in the Iroha's repository and there are possible to make cross-references for code documentation and vice versa.

As it was said above, it would be great if a person can have a section based on his intentions. Please also consider the following structure:
* API documentation
 - C++ API
 - Java API
 - Python API
 - Node.JS API
 - C# API
 - Endpoints

* Iroha guide
 - Install
 - Single peer
 - Cluster

* Business logic (use cases)
 - Simple example
 - List of use cases...
 - Glossary: Description of commands and validations

* Contribution
 - Policy (code style, pr application, working agreement)
 - Architecture documentation
 - DevOps documentation

* Contact us
 - github issues
 - telegram
 - mailing list
 - gitter
 - rocket chat

References:
https://ripple.com/build/
https://www.stellar.org/developers/

Would be nice to add a section for iroha-cli/irohad usage with examples (not as detailed in as in devops section, and not as "high-level" as in getting started)

@grimadas can you please summarise those changes and present a finalised version of docs which we will implement with next release?

I guess we need to finish this work in 2 days (present the structure)

Relationship to Fabric and Sawtooth Lake

why only them?

Contribution
…
Architecture documentation

why architecture is in contribution? @lebdron @muratovv Architectural & design documents are a big part of the project and I am not sure what exactly you want to see there. Can you specify?

Do we have a glossary section?

We can put glossary in iroha core concepts, they pretty much the same.

Relationship to Fabric and Sawtooth Lake

why only them?

As they are the in the same Hyperledger initiative, many questions are related to the comparison of Iroha and Fabric. We can discuss more, compare to all other systems in whitepaper.

Contribution
…
Architecture documentation

why architecture is in contribution? @lebdron @muratovv Architectural & design documents are a big part of the project and I am not sure what exactly you want to see there. Can you specify?

As I understand, this architecture (more of internal documentation) from developer and contributer point of view.  We can also put  a link  to internal documentations, and project (directory) structure here.

Ok!

Lets fix for now the documentation structure and start writing them


Some class parameters are incorrectly passed

In some extracted F* files in libcrux-ml-kem, arguments for classes are passed as explicit parameters. For example, v_K variable here is supposed to be ghost parameter https://github.com/cryspen/libcrux/blob/dev/libcrux-ml-kem/proofs/fstar/extraction/Libcrux_ml_kem.Ind_cca.fst#L89
It's fixed manually in dev_ml_kem_lax branch https://github.com/cryspen/libcrux/blob/dev_ml_kem_lax/libcrux-ml-kem/proofs/fstar/extraction/Libcrux_ml_kem.Ind_cca.fst#L89

Thanks for fixing this, Lucas.

I will reopen this issue because hax mainstream seems to produce the same kind of error for different modules in libcrux-ml-kem
For example here the parameter of t_Operations is suppose to be ghost
https://github.com/cryspen/libcrux/blob/dev_ml_kem_lax/libcrux-ml-kem/proofs/fstar/extraction/Libcrux_ml_kem.Vector.Traits.fsti#L192
and
https://github.com/cryspen/libcrux/blob/dev_ml_kem_lax/libcrux-ml-kem/proofs/fstar/extraction/Libcrux_ml_kem.Polynomial.fsti#L36

The old problems seem to be fixed but nit I got implicit parameters that are supposed to be passed explicitly, here's an example
https://github.com/cryspen/libcrux/blob/dev_ml_kem_lax/libcrux-ml-kem/proofs/fstar/extraction/Libcrux_ml_kem.Vector.Traits.fsti#L7-L8

The previous comment was false alert. However, even with PR https://github.com/hacspec/hax/pull/738 I can still instances of this bug.
https://github.com/cryspen/libcrux/blob/dev_ml_kem_lax/libcrux-ml-kem/proofs/fstar/extraction/Libcrux_ml_kem.Ind_cca.fst#L90
and
https://github.com/cryspen/libcrux/blob/dev_ml_kem_lax/libcrux-ml-kem/proofs/fstar/extraction/Libcrux_ml_kem.Ind_cca.fst#L225

Update: I almost fixed it, but got distracted with other things, I will finish that tomorrow morning.


The ipyvuetify widgets are not rendering in v.2024.8.0 (JavaScript error). It works in v.2024.7.0

Applies To

[X] Notebooks (.ipynb files)
[ ] Interactive Window and/or Cell Scripts (.py files with #%% markers)

What happened?
The ipyvuetify widgets are not rendering and give JavaScript errors in the latest extension. We are using the remote SSH extension. Please try the below code. However, v.2024.7.0 works fine.
import ipyvuetify as v

my_select = v.Select(
    label='Fruits',
    items=['Apple', 'Pear', 'Cherry'])
my_select

Below are the 2 parts of the error.

Below are the important packages
ipykernel                         6.29.5
ipython                           8.27.0
ipyvue                            1.11.1
ipyvuetify                        1.10.0
ipywidgets                        8.1.5
VS Code Version
Version: 1.93.0
Jupyter Extension Version
v.2024.8.0
Jupyter logs
No response
Coding Language and Runtime Version
Python 3.11
Language Extension Version (if applicable)
No response
Anaconda Version (if applicable)
No response
Running Jupyter locally or remotely?
Remote

I ran into the same issue when using the jupyter plugin locally

Does it work when rolling back to the older version of Jupyter extension

Please could you enable logging as follows:

Open settings & go into Jupyter->Logging
Change the value to trace
Reload VS Code,
Attempt to repro the issue & then copy the output from the Jupyter output panel (use the command Jupyter: Show Output to get to the logs).

Yes. It works when rolling back to 2024.7.
I also attached output below.

Jupyter Output
22:23:06.291 [debug] Handle Execution of Cells 0 for <path-to-ipynb>
22:23:06.292 [trace] Execute Notebook <path-to-ipynb>. Step 1
22:23:06.292 [trace] Connect to Kernel <path-to-ipynb>. Step 2
22:23:06.292 [trace] Connected to Kernel <path-to-ipynb>. Step 3
22:23:06.292 [trace] executeCell 0. Step 4
22:23:06.293 [trace] Cell Index:0 sent to kernel
22:23:06.306 [trace] Start cell 0 execution @<PHONE_NUMBER>306 (clear output)
22:23:06.307 [debug] Kernel acknowledged execution of cell 0 @<PHONE_NUMBER>306
22:23:06.505 [trace] Cell 0 completed in 0.199s (start:<PHONE_NUMBER>306, end:<PHONE_NUMBER>505)
22:23:06.506 [trace] Cell 0 executed successfully
22:23:09.731 [debug] Handle Execution of Cells 1 for <path-to-ipynb>
22:23:09.731 [trace] Execute Notebook <path-to-ipynb>. Step 1
22:23:09.732 [trace] Connect to Kernel <path-to-ipynb>. Step 2
22:23:09.732 [trace] Connected to Kernel <path-to-ipynb>. Step 3
22:23:09.732 [trace] executeCell 1. Step 4
22:23:09.733 [trace] Cell Index:1 sent to kernel
22:23:09.753 [trace] Start cell 1 execution @<PHONE_NUMBER>753 (clear output)
22:23:09.754 [debug] Kernel acknowledged execution of cell 1 @<PHONE_NUMBER>753
22:23:09.784 [trace] Widget Message: WidgetManager: Loading class LayoutModel:@jupyter-widgets/base:2.0.0
22:23:09.798 [trace] Widget Message: WidgetManager: Loading class MPLCanvasModel:jupyter-matplotlib:^0.11
22:23:09.802 [trace] Widget Message: WidgetManager: failed, Loading class MPLCanvasModel:jupyter-matplotlib:^0.11
22:23:09.803 [error] Widget load failure {} [ 'jsdelivr.com', 'unpkg.com' ] {
  className: 'MPLCanvasModel',
  moduleName: 'jupyter-matplotlib',
  moduleVersion: '^0.11',
  isOnline: true,
  timedout: false,
  error: '{}'
}
22:23:09.803 [trace] Widget Message: WidgetManager: Loading class LayoutModel:@jupyter-widgets/base:2.0.0
22:23:09.808 [trace] Widget Message: WidgetManager: Loading class ToolbarModel:jupyter-matplotlib:^0.11
22:23:09.814 [trace] Widget Message: WidgetManager: failed, Loading class ToolbarModel:jupyter-matplotlib:^0.11
22:23:09.814 [error] Widget load failure {} [ 'jsdelivr.com', 'unpkg.com' ] {
  className: 'ToolbarModel',
  moduleName: 'jupyter-matplotlib',
  moduleVersion: '^0.11',
  isOnline: true,
  timedout: false,
  error: '{}'
}
22:23:09.818 [trace] Widget Message: Received display data message 8cd9bf2a4ec44999b20da10bfd563eb5
22:23:09.819 [trace] Cell 1 completed in 0.065s (start:<PHONE_NUMBER>753, end:<PHONE_NUMBER>818)
22:23:09.819 [trace] Cell 1 executed successfully
22:23:09.825 [trace] Version of IPyWidgets 8 determined after 0s
22:23:09.827 [trace] Widget Message: Waiting for model to be available before rendering it 8cd9bf2a4ec44999b20da10bfd563eb5
22:23:09.828 [trace] Widget Message: WidgetManager: Loading class ErrorWidgetView:@jupyter-widgets/base:2.0.0
22:23:09.837 [trace] Widget Message: WidgetManager: Loading class LayoutView:@jupyter-widgets/base:2.0.0

I get the same problem when running widgets in 2024.8. They work fine under Jupyter Lab or under VSCode with jupyter 2024.7, but not under VSCode with jupyter 2024.8.
I get the same kind of error message:
15:33:19.775 [error] Widget load failure {} [ 'jsdelivr.com', 'unpkg.com' ] {
  className: 'AnyModel',
  moduleName: 'anywidget',
  moduleVersion: '~0.9.*',
  isOnline: true,
  timedout: false,
  error: '{}'
}

I'm encountering the same issue with ipyvuetify as well as with a custom ipywidget extension I'm developping:
after updating to VSCode 2024.8 ipywidget is unable to render the custom widgets with the error:
Error: No version of module jupyter-vuetify is registered

In the developer tools console of vscode (Help>Toggle Developer Tools) the error is preceded by:
Failed to load resource: the server responded with a status of 401 ()
https://vscode-remote+ssh-[...].vscode-resource.vscode-cdn.net/home/[user]/.vscode-server/data/User/globalStorage/ms-toolsai.jupyter/version-2024.8.0/scripts/a09a86bf64b0468aa0d8dec701f6d16b44d453dadd33fa1e4c3a9e6949c9622a/jupyter/nbextensions/jupyter-vuetify/index.js

followed by failed attempts to load the widget definition from online repo:
ERR [Extension Host] error 10:45:03.535: Jupyter Extension: Widget load failure {} [ 'jsdelivr.com', 'unpkg.com' ] {
  className: 'ThemeModel',
  moduleName: 'jupyter-vuetify',
  moduleVersion: '^1.10.0',
  isOnline: true,
  timedout: false,
  error: '{}'
}

In my understanding, the widget definition used to be loaded from the local files of the jupyter extension (e.g. stored under .conda/share/jupyter/nbextensions/jupyter-vuetify/index.js).
(The file at /home/[user]/.vscode-server/.../vuetify/index.js exists and I'm able to open it manually. The same 401 error occurs when I attempt to use my custom ipywidget extension.)

I'm sorry you are running into this issue, I've identified the cause and have a PR to resolve this.
https://github.com/microsoft/vscode-jupyter/pull/16012

Fix will be

@ndgayan  @liningpan  @juba  @gabriel-lepetitaimon
Pleasercan you try installing the latest pre release version of the Jupyter extension 2024.9.*
That should work, please let me knows i hope it goes
Thanks
Instructions to install pre-release version
Open the extensions page, search for Jupyter and click the button Switch to Pre-Release Version
(Below is a sample, version numbers are not the latest)

Yes, the pre-release version solved the issue for me.
Thanks a lot!

Fixed in the 2024.8.1 version, will  be shipped soon


fix: set client and server streaming

fix: set client and server streaming

It it possible to add a test?
There'a test for identical parsing of descriptors https://github.com/stepancheg/rust-protobuf/blob/master/test-crates/protobuf-codegen-identical-test/tests/diff.rs

test added, PTAL

kindly ping if you missed this @stepancheg

Hi, could you please take a look at this, and release a new version?
We strongly rely on this crate, thanks! @stepancheg

Thanks! Merged.


x/tools/gopls: improve command-line help output

I installed golang.org/x/tools/gopls@latest and tried to look at its command-line tool options (rename, etc).
First I tried -h, since this is a typical way to make Go tools show usage:
$ gopls -h
Usage of gopls:
  -debug string
        Serve debug information on the supplied address
  -listen string
        address on which to listen for remote connections
  -logfile string
        filename to log to. if value is "auto", then logging to a default output file is enabled
  -mode string
        no effect
  -ocagent string
        The address of the ocagent, or off (default "off")
  -port int
        port on which to run gopls for debugging purposes
  -profile.cpu string
        write CPU profile to this file
  -profile.mem string
        write memory profile to this file
  -profile.trace string
        write trace log to this file
  -remote string
        *EXPERIMENTAL* - forward all commands to a remote lsp
  -rpc.trace
        Print the full rpc trace in lsp inspector format
  -v    Verbose output

So this shows the flags (for which command?), but not the actual commands. Next I tried gopls help:
$ gopls help
gopls: Unknown command help
The Go Language source tools.

Usage: gopls [flags] <command> [command-flags] [command-args]

Available commands are:
  serve : run a server for Go code using the Language Server Protocol
  bug : report a bug in gopls
  check : show diagnostic results for the specified file
  format : format the code according to the go standard
  links : list links in a file
  imports : updates import statements
  query : answer queries about go source code
  references : display selected identifier's references
  rename : rename selected identifier
  signature : display selected identifier's signature
  fix : apply suggested fixes
  symbols : display selected file's symbols
  version : print the gopls version information

gopls flags are:

That works, but only accidentally ("Unknown command help"). Also note the trailing "gopls flags are:" followed by no flags.
Finally, I tried running gopls rename -h to see how one uses this tool:
$ gopls rename -h
Usage of rename:
  -d    display diffs instead of rewriting files
  -w    write result to (source) file instead of stdout

This does not provide enough information to actually use gopls rename.
We should improve this situation:

gopls -h should print out the possible commands.
After printing the commands, it should print the common flags (as well as some text explaining that these are flags that apply across all commands), and perhaps some text suggesting the user can run gopls <command> -h to find the flags for a particular command.
Each command's -h output could say what the command actually does and how to use it, not just list the flags.

For bonus points:

gopls help could be a synonym for gopls -h/-help, since that's a common paradigm for "sub-command"-style tools (see go help for example).
The command-line flags markdown page, linked from the gopls user guide, could be fleshed out with a description of how to use the command-line interface. (Compare with the guru user manual.)

I'll work on this one.

Currently all of the commands are printed as a signle list:
Available commands are:
  serve : run a server for Go code using the Language Server Protocol
  bug : report a bug in gopls
  check : show diagnostic results for the specified file
  folding_ranges : display selected file's folding ranges
  format : format the code according to the go standard
  highlight : display selected identifier's highlights
  implementation : display selected identifier's implementation
  imports : updates import statements
  links : list links in a file
  query : answer queries about go source code
  references : display selected identifier's references
  rename : rename selected identifier
  signature : display selected identifier's signature
  fix : apply suggested fixes
  symbols : display selected file's symbols
  version : print the gopls version information

What do you think about separating this into "main" (looking for better naming) commands and "features" that can be run adhoc like this:
Available commands are:
main:
  serve : run a server for Go code using the Language Server Protocol
  bug : report a bug in gopls
  version : print the gopls version information
features:
  check : show diagnostic results for the specified file
  folding_ranges : display selected file's folding ranges
  format : format the code according to the go standard
  highlight : display selected identifier's highlights
  implementation : display selected identifier's implementation
  imports : updates import statements
  links : list links in a file
  query : answer queries about go source code
  references : display selected identifier's references
  rename : rename selected identifier
  signature : display selected identifier's signature
  fix : apply suggested fixes
  symbols : display selected file's symbols

I think it shows intent of the commands more clearly.

@jbszczepaniak: That sounds reasonable to me!

OK, one more question. Should running command without any flag nor command behave like this? I find it confusing:
➜  gopls git:(master) ✗ gopls

gopls: missing Content-Length header

If you'll not provide valid json rpc message it does nothing and when you hit enter you get missing content message. My proposition is to print help whenever you run just gopls and allow feeding stdin with json under additional command. What do you think?

And one more again ;)
Following flags printed when doing gopls -h:
  -debug string
    	Serve debug information on the supplied address
  -listen string
    	address on which to listen for remote connections
  -logfile string
    	filename to log to. if value is "auto", then logging to a default output file is enabled
  -mode string
    	no effect
  -port int
    	port on which to run gopls for debugging purposes
  -rpc.trace
    	Print the full rpc trace in lsp inspector format

concern only gopls serve command. Shouldn't they be printed only with gopls serve -h? I don't think it makes sense to print them on gopls -h

@jbszczepaniak: Both of your comments sound good! We can also have more discussion once you send out a CL for review.

@stamblerre  could you tell me what that is about compatibility thing?
https://github.com/golang/tools/blob/master/internal/lsp/cmd/cmd.go#L117
Because with this my proposal cannot be done.

I decided to submit first change for this issue to keep things small. Things I didn't do:

update README
improvment of usage of each subcommands
removing serve as default command
help is not an alias to --help

I think we should closed this issue, since the PR has already been merged.
cc @stamblerre

Hm, actually I think there is still work to do here (see https://github.com/golang/go/issues/35855#issuecomment-562937746).
gopls help still prints Unknown command help and the list of flags is missing. Also, commands like gopls help rename should probably work.
Dealing with serve as the default command could probably be split out into a separate issue as there's more complexity to it (language clients would need to change how they start gopls).

@stamblerre as far as I'm concerned, we can close this issue. I'll leave it open since you indicated that we should still add gopls help and gopls help rename  but that's more like a small bonus feature whereas the original issue I filed was focused on several UX defects that have all been fixed now.


ibus-engines.mozc: build protobuf dependency using clang.

At the moment, ibus-engines.mozc fails to build because it cannot link protobuf.  mozc is built with clang (upstream requirement), and libprotobuf is built using g++ (at least on Linux).  This PR overrides the protobuf dependency to always be built with clang.
Things done:

[x] Tested using sandboxing (nix-build --option build-use-chroot true or nix.useChroot on NixOS)
Built on platform(s)

[x] NixOS
[ ] OS X
[ ] Linux

[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

More
cc @ericsagnes
Fixes #14261.

I'm not really sure whether overriding protobuf's stdenv is the right solution here.  Should we expect clang to be able to link against system C++ libraries?

With this patch, what happens if I attempt to link against protobuf with g++, the same thing, only in reverse?

So this seems to be a known incompatibility between g++5 and clang++ at the moment: https://llvm.org/bugs/show_bug.cgi?id=23529
The bug links to a patch that should allow clang++ to support the new g++5 ABI, but it's still under review.
So for the moment, building C++ dependencies of clang projects using clang as well really seems to be the only solution.

Should I open a separate PR against 16.03, or just push directly?

Thanks for the fix and the link to the upstream issue!


xWindowsUpdate fails in Azure if it's the only resource

Details of the scenario you tried and the problem that is occurring
Azure DSC Server and Azure VMs
The DSC configuration that is used to reproduce the issue (as detailed as possible)
Single Resource configuration:

  Import-DSCResource -ModuleName xWindowsUpdate
        xWindowsUpdateAgent UpdateNode
        {
            IsSingleInstance = 'Yes'
            UpdateNow        = $true
            Category = @('Security','Important')
            Source           = 'WindowsUpdate'
            Notifications    = 'Disabled'
        }

Multiple Resources Configuration
$ConfigurationData = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            PSDscAllowPlainTextPassword = $true
        }
    )
}

Configuration PostBuildNoDomain

{

    Import-DSCResource -ModuleName ComputerManagementDsc
    Import-DscResource -ModuleName PSDscResources
    Import-DscResource -ModuleName xPSDesiredStateConfiguration
    Import-DSCResource -ModuleName NetworkingDsc
    Import-DSCResource -ModuleName xWindowsUpdate
    #domain credentials to be given here
    $SecureCred = Get-AutomationPSCredential 'ADJoin'

    $TimeZone = 'Mountain Standard Time'

    node localhost
    {

         TimeZone TimeZoneExample
        {
            IsSingleInstance = 'Yes'
            TimeZone         = $TimeZone
		}

		WindowsFeatureSet WindowsFeatureSetExample
        {
            Name                    = @("Windows-Defender")
            Ensure                  = 'Absent'
            IncludeAllSubFeature    = $true
        }

		Registry DisableFloppy
        {
            Ensure      = "Present"
            Key         = "HKLM:\SYSTEM\CurrentControlSet\Services\flpydisk\"
            Force       = $True
            ValueName   = "Start"
            ValueData   = "4"
            ValueType   = "Dword"
        #Hex = $true
        }

        FirewallProfile DisablePublic
        {
            Enabled = "False"
            Name   = "Public"
        }
        FirewallProfile DisablePrivate
        {
            Enabled = "False"
            Name   = "Private"
        }
        FirewallProfile DisableDomain
        {
            Enabled = "False"
            Name   = "Domain"
        }

        xWindowsUpdateAgent UpdateNode
        {
            IsSingleInstance = 'Yes'
            UpdateNow        = $true
            Category = @('Security','Important')
            Source           = 'WindowsUpdate'
            Notifications    = 'Disabled'
        }

    }
}

I've tried in Windows server 16, 19, domain joined and single instance,a ll with the same result.

Do you mean that it fails if you have a configuration like below? In what way does it fail, do you have the verbose log or error message?
Configuration PostBuildNoDomain
{
    Import-DSCResource -ModuleName xWindowsUpdate

    xWindowsUpdateAgent UpdateNode
    {
       IsSingleInstance = 'Yes'
       UpdateNow        = $true
       Category = @('Security','Important')
       Source           = 'WindowsUpdate'
        Notifications    = 'Disabled'
    }
}

@johlju it seems this got fixed after last module update. I'll create a new one if something happens.


You should auto save the content when crash

Today I use atom to write my blog,  but suddenly it crash, when I reopen it, I cannot find the content, it is so bad because it cost me a lot time to write the blog. I'm so sad for this, please fix it.
Atom version: 0.144.0
Mac version: OS X Yosemite 10.10 (14A389)
Reason I guess: Maybe I add about six image at it, I was writting markdown, is it cause of memory?

Closing in favor of #4161


Make rule descriptions easier to visually parse

Yardstick output can be fairly difficult to parse when there are a lot of changes which could be made:

I think some formatting changes could mostly alleviate this.  When it comes to rule descriptions I think we should make the following changes:

[x] Include their YARD tag if possible (only one rule doesn't follow this right now)
For example, prefer:
lib/yardstick.rb:35: Yardstick.measure: The public/semipublic method should include an @example

instead of
lib/yardstick.rb:35: Yardstick.measure: The public/semipublic method should have an example specified

[x] Consistent positioning in description for YARD tag in question.  I would prefer at the beginning of each line.

[ ] API tags and recommended values should be bolded and underlined respectively. I also think colors would make the instructions easier to parse when there are a lot of them. For example:

I agree with all of these.

@dkubb for #34 so far I have the following descriptions:
>> puts Yardstick::Document.registered_rules.map(&:description)
@api should be specified
@api should be public, semipublic, or private
@api should be semipublic or private for protected methods
@api should be private for private methods
@example should be specified for public and semipublic methods
method summary should be specified
method summary should be less than or equal to 79 characters in length
method summary should not end in a period
method summary should be a single line
@return should be specified

@backus should the rule output be ordered according to where the @ tag typically appears within the output? For example, the method summary stuff should be first, with @example second, @api last, and @return just before @api (with @yield and related in between`).

That sounds good to me.  I'll open a separate issue for this since the current PR is just about changing the look of the rule output not the ordering.


Update follower read timestamp to current value

Fixes:

DOC-1416
DOC-9226
DOC-9276

Summary of changes:

Update 'Follower Reads' page with the new timestamp, and with a small SQL example showing how to check the current value.

Update 'AS OF SYSTEM TIME' page with the new timestamp.

Update go.crdb.dev link version tags to match the version of the page in docs.

NB. These changes are applied to the v22.2, v23.1, and v23.2 docs. Also, there will be a separate PR against cockroachdb/cockroach (TBD) to update the mention of the previous value in the generated 'Functions and Operators' docs.

@taroface I'm coming straight to docs review since it's (famous last words) a fairly straightforward update of a constant value.  However let me know if you'd like me to get eng review first and I will


Better Closures for _jth_zernike.

Hi all,
I have realised that extra steps (the definition of _jth_rad_zern and _jth_pol_zern) can be moved into the outer scope of the closure. This will slightly improve the runtime performance. This might be a good place to use the jit(inline=True) feature that I discussed in issue #168.
Regards
Jordan.

Complete. Increased evaluation considerably.


Using a Custom Transform to parse complex JSON with nested objects and arrays?

Your JSON dictionary:
"outer":
   "family": {
      "members":[
         [
            {
               "name": ""
            }
         ],
         [
            {
               "name": ""
            }
         ],
         [
            {
               "name": ""
            }
         ]
      ],
      "details":[
         [
            {
               "stuff": ""
            }
         ],
         [
            {
               "stuff": ""
            }
         ]
      ]
   }
}

Your model:
class Family {
    var members: [FamilyMember]
}

class FamilyMember {
    var name: String
    var details: String
}

I have a complex JSON model and I can't seem to parse it out. I assume that I need a Custom Transform. The members and details arrays inside of family are parallel: details for members[0] are found inside details[0]. I want to combine the data inside these arrays into a single object, as detailed in the FamilyMember model. I also want a Family object that contains all the constituent FamilyMember objects.
However, I am having trouble understanding how to set up the Custom Transform for this JSON. I was hoping that I could get some guidance. I would've posted this on StackOverflow but it seemed that the ObjectMapper questions on there did not garner much attention.
Note: I have no control over the structure of the JSON. I don't particularly agree with how it's built but there's nothing that I can do about it. I am calling an external API and this is the  data they return.

After looking at  a couple examples of custom transforms inside the project, I learned that i just needed to cast value to [String : Any]. From there, I have been able to extract my data. This was just really unclear because the debug description of value was misleading. For example, it replaced square brackets with parentheses so I did not immediately realize that it was a Swift dictionary.