-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Device connection state metric #9527
Comments
Sounds reasonable. I'd probably make it a gauge on the number of connections, so zero is disconnected and then positive numbers for connected devices. |
Oh, then I probably didn't phrase it good enough 😅 My plan was to do it specific to the device ID, e.g.,
|
I agree, but a single device can have an arbitrary number of active connections nowadays. So, what you're proposing, but
|
Got it, thanks for clarifying. I'll try to implement it and open a PR 🙂 |
After looking around a bit I found I however don't know if this is the best location. I've also found |
I think the accounting functions you found are a good place. There's probably some map or slice there that has the number of connections you can get the length of, or just pair the inc/dec as you say. |
#9528) ### Purpose Adds a new metric `syncthing_connections_active` which equals to the amount of active connections per device. Fixes #9527 <!-- Describe the purpose of this change. If there is an existing issue that is resolved by this pull request, ensure that the commit subject is on the form `Some short description (fixes #1234)` where 1234 is the issue number. --> ### Testing I've manually tested it by running syncthing with these changes locally and examining the returned metrics from `/metrics`. I've done the following things: - Connect & disconnect a device - Increase & decrease the number of connections and verify that the value of the metric matches with the amount displayed in the GUI. ### Documentation https://github.com/syncthing/docs/blob/main/includes/metrics-list.rst needs to be regenerated with [find-metrics.go](https://github.com/syncthing/docs/blob/main/_script/find-metrics/find-metrics.go) ## Authorship Your name and email will be added automatically to the AUTHORS file based on the commit metadata. --------- Co-authored-by: Jakob Borg <jakob@kastelo.net>
* main: (45 commits) build: Use Go 1.22.3 at minimum build: Use Go 1.22.3 at minimum gui: Add Hindi (hi) translation template (syncthing#9530) gui, man, authors: Update docs, translations, and contributors lib/connections: Add syncthing_connections_active metric (fixes syncthing#9527) (syncthing#9528) etc: Use 7MiB buffer size (syncthing#9524) gui: Fix Firefox bookmark favicon (fixes syncthing#9506) (syncthing#9507) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors lib/nat: Don't crash on empty address list (fixes syncthing#9503) (syncthing#9504) lib/db: Drop indexes for outgoing data to force refresh (ref syncthing#9496) (syncthing#9502) gui: Fix missing link to device editor for names with superscript (ref syncthing#9472) (syncthing#9494) lib/db: Hold update lock while taking snapshot (syncthing#9496) build: Update dependencies (syncthing#9497) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors Removed no longer relevant Bountysource link (syncthing#9480) lib/api: Missing return after HTTP error lib/api: Extract session store (syncthing#9425) ...
* main: (47 commits) gui, man, authors: Update docs, translations, and contributors build: Use Go 1.22.3 at minimum gui: Add Hindi (hi) translation template (syncthing#9530) gui, man, authors: Update docs, translations, and contributors lib/connections: Add syncthing_connections_active metric (fixes syncthing#9527) (syncthing#9528) etc: Use 7MiB buffer size (syncthing#9524) gui: Fix Firefox bookmark favicon (fixes syncthing#9506) (syncthing#9507) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors lib/nat: Don't crash on empty address list (fixes syncthing#9503) (syncthing#9504) lib/db: Drop indexes for outgoing data to force refresh (ref syncthing#9496) (syncthing#9502) gui: Fix missing link to device editor for names with superscript (ref syncthing#9472) (syncthing#9494) lib/db: Hold update lock while taking snapshot (syncthing#9496) build: Update dependencies (syncthing#9497) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors Removed no longer relevant Bountysource link (syncthing#9480) lib/api: Missing return after HTTP error lib/api: Extract session store (syncthing#9425) ...
So (if I may) how does one use this new functionality? I am not even clear whether the new feature is GUI or CLI. |
Syncthing exposes a bunch of metrics on |
v1.27.8 Bugfixes: - syncthing#9506: gui: Favicon not working in Firefox bookmarks Enhancements: - syncthing#9527: Device connection state metric
Squashed commit of the following: commit aea7fa5f22924fed75571cd07564f9e057c7f64f Author: Simon Frei <freisim93@gmail.com> Date: Tue Jul 2 13:01:00 2024 +0200 lib/ignore: Remove unused patterns in cache (#9601) Tiny cleanup I noticed while trying to fix/test another issue (https://github.com/syncthing/syncthing/pull/9600). I shortly tried to figure out what it was used for in the past, but gave up without results. commit 403ce7e597c3b425f6e35bc479dba8292e908094 Author: Simon Frei <freisim93@gmail.com> Date: Tue Jul 2 12:58:06 2024 +0200 lib/ignore: Fix caching of filenames with path separators on windows (#9600) Previously we queried cache with backslashes, and stored entries with slashes. As in no cache hits ever for non-toplevel files. I also eventually remembered that cache is disabled by default, so this is a bit pointless, but still right :P commit 4704d3bc48761d89c2eafadf79f5d268631a063d Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jul 1 03:45:16 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 2794b04243b2ada2367cb68452d17d49f3536b3f Author: André Colomb <src@andre.colomb.de> Date: Sat Jun 29 17:53:32 2024 +0200 gui: Add Filipino (fil) translation template (#9599) commit 1ce64971fd2321ded8b1aa2b67583c695aab2ebb Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jun 24 03:45:42 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit eb6d80eac48969754d1e0cf1ba3434b19093fc2e Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jun 17 03:45:27 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit a8db3351ae920a27b4c0ed1f9fe6da1e80a2b8e6 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jun 10 03:45:25 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 23a900e09609dba6c3254eaffff3ae088e87dd87 Author: Ross Smith II <ross@smithii.com> Date: Wed Jun 5 03:05:51 2024 -0700 gui: Use localised time in duration (#9552) https://github.com/syncthing/syncthing/pull/8291 inpired me to develop this. I tested it with all the languages Syncthing currently supports, and they all work. The only issue is that when you change the language in the GUI, you have to either refresh the page, or wait a few seconds for the page to refresh by itself, before the duration is translated into the new language. ### Screenshots ![2024-05-20_21-47-58](https://github.com/syncthing/syncthing/assets/220772/7e3b371e-3495-4e3e-853a-b5a41215e6c7) ### Documentation The documentation for the translation widget is at https://github.com/EvanHahn/HumanizeDuration.js/blob/main/README.md commit 5a304cf2958435aca91438ee8b1b1265363ac7b4 Author: Jakob Borg <jakob@kastelo.net> Date: Tue Jun 4 08:55:37 2024 -0400 build: Skip autoprocs for build script commit 136b3742bf4cc89ea4365d8b732281a2052f4cc3 Author: Jakob Borg <jakob@kastelo.net> Date: Tue Jun 4 13:58:49 2024 +0200 build: Update dependencies (#9565) commit 21e0f98fe266964765fcfee4b1b109b47a810410 Merge: 495809ac9 2bb5b2244 Author: Jakob Borg <jakob@kastelo.net> Date: Tue Jun 4 07:18:35 2024 -0400 Merge branch 'infrastructure' * infrastructure: cmd/stupgrades: Basic process metrics cmd/stcrashreceiver: Ignore patterns, improve metrics cmd/strelaypoolsrv: More compact response, improved metrics cmd/stdiscosrv: Add AMQP replication commit 2bb5b2244ba38c279d1bac6afaea463f67fce2b0 Author: Jakob Borg <jakob@kastelo.net> Date: Mon Jun 3 07:17:32 2024 +0200 cmd/stupgrades: Basic process metrics commit 2f281799c16ac9f32563e6fba513e3a0b846bad6 Author: Jakob Borg <jakob@kastelo.net> Date: Mon Jun 3 07:16:56 2024 +0200 cmd/stcrashreceiver: Ignore patterns, improve metrics commit 18a58a2ddc51b36ef204bb6d4e19a2b904a80498 Author: Jakob Borg <jakob@kastelo.net> Date: Mon Jun 3 07:14:45 2024 +0200 cmd/strelaypoolsrv: More compact response, improved metrics commit f283215fce1660753fba9e213a5fee8820137c0c Author: Jakob Borg <jakob@kastelo.net> Date: Mon Jun 3 07:13:21 2024 +0200 cmd/stdiscosrv: Add AMQP replication commit 495809ac9ecb0bffd4045d164021f2b4ed235ecc Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jun 3 03:45:18 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 9ca8addcf70ab7fcd92f01ee73b04530e0f382df Author: Jakob Borg <jakob@kastelo.net> Date: Thu May 30 10:48:55 2024 +0200 build: Add missing region attribute for uploads commit 94181ade230f252e2f7a51cb7f4fd0c757c086da Author: Jakob Borg <jakob@kastelo.net> Date: Mon May 27 13:56:32 2024 +0200 build: Generalise S3 push options commit e50933433e1e12cde5e15071768ab7a53eeed940 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon May 27 03:45:21 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit a2b8f2361ec0ccc07f46a19ed6dcc338cc96bf9a Author: Jakob Borg <jakob@kastelo.net> Date: Fri May 24 08:51:02 2024 +0200 lib/config: Add file inside folder marker directory (#9525) ### Purpose Avoid the issue where the folder marker is deleted by overzealous cleanup tools because it's just a useless, empty directory. We create a small file containing a an admonishment to not delete the directory, and some metadata that is just for human consumption at the moment. (But it would parse as a valid yaml file if we wanted to read this, at some point.) This will only apply when _creating_ a folder marker, that is, existing setups will not gain the file automatically. Obviously, when using a custom folder marker none of this applies. Also, slightly adjust the permission bits for the folder marker directory and file on Unixes, making sure the group & write bits are unset. ### Testing I've created and deleted a few folders and it appears to behave as I expect. ### Screenshots ``` jb@ok:~/somefolder % ls -la total 0 drwxr-xr-x 3 jb staff 96 May 1 08:52 ./ drwx------ 12 jb staff 384 May 1 08:52 ../ drwxr-xr-x 3 jb staff 96 May 1 08:52 .stfolder/ jb@ok:~/somefolder % ls -l .stfolder total 8 -rw-r--r-- 1 jb staff 122 May 1 08:52 syncthing-folder-39a4b0.txt jb@ok:~/somefolder % cat .stfolder/syncthing-folder-39a4b0.txt # This directory is a Syncthing folder marker. # Do not delete. folderID: xtdca-cudyf created: 2024-05-01T08:52:49+02:00 ``` commit 4b60e86d0247fcca5c2117f4a1ed8eb1f9ff5d94 Author: Jakob Borg <jakob@kastelo.net> Date: Thu May 23 16:21:00 2024 +0200 lib/config, lib/watchaggregator: Add config for max FS watcher delay (#9558) Currently the maximum delay is always derived automatically from the initial delay. This is fine in most cases, but for some use cases (large files that take a long time to write) we need to be able to set a longer max delay than the computed value (e.g., 15s delay with 10min timeout). commit d6b5676603c4325874345ce07fb3ef07c403dd32 Author: Jakob Borg <jakob@kastelo.net> Date: Thu May 23 09:39:10 2024 +0200 lib/fs: Watcher should react to xattr-only events on Darwin commit 3821b6ceee2767dd12bea21a59ea82676e8a5305 Author: Jakob Borg <jakob@kastelo.net> Date: Tue May 21 13:37:43 2024 +0300 build: Update dependencies (#9553) commit 973585e97dbde730742095004f4263b5cc28e24c Author: Syncthing Release Automation <release@syncthing.net> Date: Mon May 20 03:45:15 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit ba6ac2f604eb1cd27764460b687537c5e40aaaf8 Author: Jakob Borg <jakob@kastelo.net> Date: Sat May 18 19:31:49 2024 +0200 lib/geoip, cmd/relaypoolsrv, cmd/ursrv: Automatically manage GeoIP updates (#9342) This adds a small package `geoip` which knows how to download and manage the Maxmind GeoLite2 database we use. This removes the need for various scripts to download and manage the geoip database, something that today happens on Docker startup for the relay pool server and using various hand written hacks for the usage reporting server. The database is downloaded when needed and then refreshed on a best-effort basis weekly. commit 57d399317e050189d76068872cf791f1cd1c0e24 Author: luchenhan <168071714+luchenhan@users.noreply.github.com> Date: Thu May 16 15:02:57 2024 +0800 lib/db: Correct function name in comments (#9520) commit f2d6722348d8ba51b4e7b11ad1176f73cb75a3b1 Author: WangXi <xib1102@icloud.com> Date: Thu May 16 15:01:16 2024 +0800 lib/connections: Use proper errors.Is check (#9538) commit 7b1b77e50da147fb6ec8e461d8c049588adf4b7f Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu May 16 08:56:44 2024 +0200 build(deps): bump github.com/quic-go/quic-go from 0.42.0 to 0.43.0 (#9522) Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.42.0 to 0.43.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/quic-go/quic-go/releases">github.com/quic-go/quic-go's releases</a>.</em></p> <blockquote> <h2>v0.43.0</h2> <h2><em>quic-go.net</em>: Launching a new Documentation Site</h2> <p>With this release, we're launching a new documentation site for the quic-go projects (quic-go itself, HTTP/3, webtransport-go, and soon, masque-go): <a href="https://quic-go.net">quic-go.net</a>.</p> <p>The documentation site aims to explain QUIC concepts and how they are made accessible using quic-go's API. This site replaces the wiki, and the ever-growing README files.</p> <p>A lot of work has gone into the documentation already, but we're by no means done yet. The entire source is public in <a href="https://github.com/quic-go/docs/">https://github.com/quic-go/docs/</a>, and we're happy about community contributions.</p> <h2>HTTP Datagrams (RFC 9297)</h2> <p>This release adds support for HTTP Datagrams (<a href="https://datatracker.ietf.org/doc/html/rfc9297">RFC 9297</a>), both on the client and on the server side (<a href="https://redirect.github.com/quic-go/quic-go/issues/4452">#4452</a>). HTTP Datagrams are used in WebTransport in CONNECT-UDP (<a href="https://datatracker.ietf.org/doc/html/rfc9298">RFC 9298</a>), among others.</p> <p>The new API for HTTP Datagrams is described on the new documentation page: <a href="https://quic-go.net/docs/http3/datagrams/">HTTP Datagrams</a>. The integration of HTTP Datagram support necessitated a comprehensive refactor of the HTTP/3 package, resulting in several breaking API changes listed below.</p> <h2>Breaking Changes</h2> <ul> <li>quicvarint: functions now return an <code>int</code> instead the internal <code>protocol.ByteCount</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4365">#4365</a>)</li> <li>http3: <code>Server.SetQuicHeaders</code> was renamed to <code>SetQUICHeaders</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4377">#4377</a>)</li> <li>http3: <code>Server.QuicConfig</code> was renamed to <code>QUICConfig</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4384">#4384</a>)</li> <li>http3: <code>RoundTripper.QuicConfig</code> was renamed to <code>QUICConfig</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4385">#4385</a>)</li> <li>http3: <code>RoundTripOpt.CheckSettings</code> was removed (<a href="https://redirect.github.com/quic-go/quic-go/issues/4416">#4416</a>). Use the new<code>SingleDestinationRoundTripper</code> API instead.</li> <li>http3: the <code>HTTPStreamer</code> interface is now implemented by the <code>http.ResponseWriter</code> (and not the <code>http.Request.Body</code>) (<a href="https://redirect.github.com/quic-go/quic-go/issues/4469">#4469</a>)</li> <li>include the maximum payload size in the <code>DatagramTooLargeError</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4470">#4470</a>)</li> </ul> <h2>Other Notable Changes</h2> <ul> <li>GSO and ECN is disabled on kernel versions older than 5 (<a href="https://redirect.github.com/quic-go/quic-go/issues/4456">#4456</a>)</li> <li>http3: logging can be controlled using an <code>slog.Logger</code> (<a href="https://redirect.github.com/quic-go/quic-go/issues/4449">#4449</a>)</li> <li>http3: HEAD requests can now be sent in 0-RTT (<a href="https://redirect.github.com/quic-go/quic-go/issues/4378">#4378</a>)</li> <li>http3: duplicate QPACK encoder and decoder streams are not rejected as required by the RFC (<a href="https://redirect.github.com/quic-go/quic-go/issues/4388">#4388</a>)</li> <li>http3: Extended CONNECT are blocked until the server's SETTINGS are received, as required by the RFC (<a href="https://redirect.github.com/quic-go/quic-go/issues/4450">#4450</a>)</li> <li>http3: HTTP/3 client connections aren't removed if <code>RoundTrip</code> errors due to a cancelled context (<a href="https://redirect.github.com/quic-go/quic-go/issues/4448">#4448</a>). Thanks to <a href="https://github.com/GeorgeMac"><code>@GeorgeMac</code></a>!</li> <li>http3: sniff Content-Type when flushing the ResponseWriter (<a href="https://redirect.github.com/quic-go/quic-go/issues/4412">#4412</a>). Thanks to <a href="https://github.com/WeidiDeng"><code>@WeidiDeng</code></a>!</li> <li>The <code>Context</code> exposed on the <code>quic.Stream</code> is now derived from the connection's context (<a href="https://redirect.github.com/quic-go/quic-go/issues/4414">#4414</a>)</li> <li>The UDP send and receive buffer size was increased to 7 MiB (<a href="https://redirect.github.com/quic-go/quic-go/issues/4455">#4455</a>). Thanks to <a href="https://github.com/bt90"><code>@bt90</code></a>!</li> </ul> <h2>Clarifications on the QUIC Stream State Machine</h2> <h3>Calling CancelWrite after Close</h3> <p>After a long and fruitful discussion (<a href="https://redirect.github.com/quic-go/quic-go/issues/4404">#4404</a>), we decided to clarify that calling <code>CancelWrite</code> after <code>Close</code> on a <code>SendStream</code> (or a bidirectional stream) should cause a state transition from the "Data Sent" to the "Reset Sent" state, as described in <a href="https://datatracker.ietf.org/doc/html/rfc9000#section-3.1">section 3.1 of RFC 9000</a>. This matches the current behavior of quic-go, however, it didn't match the API documentation (fixed in <a href="https://redirect.github.com/quic-go/quic-go/issues/4419">#4419</a>).</p> <p>This means that stream data will not be delivered reliably if <code>CancelWrite</code> is called, and that this applies even if <code>Close</code> was called before.</p> <h3>Garbage Collection of Streams</h3> <p>This release also changes the way streams are garbage-collected (and the peer is granted additional limit to open a new stream), once they're not needed anymore, in a subtle way:</p> <ul> <li>for the send direction of streams: <a href="https://redirect.github.com/quic-go/quic-go/issues/4445">#4445</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/quic-go/quic-go/commit/93c4785521c0622e7c4e04d681404f1c802e18c4"><code>93c4785</code></a> http3: sniff Content-Type when flushing the ResponseWriter (<a href="https://redirect.github.com/quic-go/quic-go/issues/4412">#4412</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/c0250ce82459ebdc60cc95c39dffed7ee0c0ec6b"><code>c0250ce</code></a> include the maximum payload size in the DatagramTooLargeError (<a href="https://redirect.github.com/quic-go/quic-go/issues/4470">#4470</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/34f4d1443f97c3b09e34023cbb912a8a803829a6"><code>34f4d14</code></a> http3: implement on the HTTPStreamer on the ResponseWriter, flush header (<a href="https://redirect.github.com/quic-go/quic-go/issues/4469">#4469</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/083ceb42f29c7d25d86e221e5a7a22eb6af1c006"><code>083ceb4</code></a> http3: rename Settings.EnableDatagram to EnableDatagrams (<a href="https://redirect.github.com/quic-go/quic-go/issues/4466">#4466</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/e1e5b6294d2cca73f0664f879889780cfa2ae51d"><code>e1e5b62</code></a> README: link to the new documentation site (<a href="https://redirect.github.com/quic-go/quic-go/issues/4464">#4464</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/2a37c531438f0d1512f39be9c768c363389be1ae"><code>2a37c53</code></a> http3: add support for HTTP Datagrams (RFC 9297) (<a href="https://redirect.github.com/quic-go/quic-go/issues/4452">#4452</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/11b11594b249517098aeabfebb3797e85719dd25"><code>11b1159</code></a> http3: fix race condition in client unit test (<a href="https://redirect.github.com/quic-go/quic-go/issues/4463">#4463</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/4b87539b1efd2ffd05996fb2b9a7519a9cdb9cd2"><code>4b87539</code></a> delay completion of the receive stream until the reset error was read (<a href="https://redirect.github.com/quic-go/quic-go/issues/4460">#4460</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/bff131e546ad5861fa1ae77766776d08bec9f3bc"><code>bff131e</code></a> delay completion of the send stream until the reset error was delivered (<a href="https://redirect.github.com/quic-go/quic-go/issues/4445">#4445</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/12aa63824c7f91d7925bfc0bdb78ae0ad942b3bf"><code>12aa638</code></a> disable GSO and ECN on kernels older than version 5 (<a href="https://redirect.github.com/quic-go/quic-go/issues/4456">#4456</a>)</li> <li>Additional commits viewable in <a href="https://github.com/quic-go/quic-go/compare/v0.42.0...v0.43.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/quic-go/quic-go&package-manager=go_modules&previous-version=0.42.0&new-version=0.43.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 06914b872b806eb06fe8382344b9c4d6c1eee30d Author: Syncthing Release Automation <release@syncthing.net> Date: Mon May 13 03:45:18 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit f6df8b40b4207f71bba73be641110b648959ad54 Author: Jakob Borg <jakob@kastelo.net> Date: Wed May 8 08:01:46 2024 +0200 build: Use Go 1.22.3 at minimum commit e057f5ee9a4f4f7a45cd91734ee085306971ff42 Author: André Colomb <src@andre.colomb.de> Date: Tue May 7 10:29:42 2024 +0200 gui: Add Hindi (hi) translation template (#9530) Based on user request from Weblate, user @Scrambled777. Looks promising based on the profile: https://hosted.weblate.org/user/Scrambled777/ commit a5bf110d90117eb2e81fb65b6c1e4bc8d53131ea Author: Syncthing Release Automation <release@syncthing.net> Date: Mon May 6 03:45:24 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit debbe726e0e7f90b96022659b72d7991cf501a18 Author: DerRockWolf <50499906+DerRockWolf@users.noreply.github.com> Date: Sat May 4 22:31:37 2024 +0200 lib/connections: Add syncthing_connections_active metric (fixes #9527) (#9528) ### Purpose Adds a new metric `syncthing_connections_active` which equals to the amount of active connections per device. Fixes #9527 <!-- Describe the purpose of this change. If there is an existing issue that is resolved by this pull request, ensure that the commit subject is on the form `Some short description (fixes #1234)` where 1234 is the issue number. --> ### Testing I've manually tested it by running syncthing with these changes locally and examining the returned metrics from `/metrics`. I've done the following things: - Connect & disconnect a device - Increase & decrease the number of connections and verify that the value of the metric matches with the amount displayed in the GUI. ### Documentation https://github.com/syncthing/docs/blob/main/includes/metrics-list.rst needs to be regenerated with [find-metrics.go](https://github.com/syncthing/docs/blob/main/_script/find-metrics/find-metrics.go) ## Authorship Your name and email will be added automatically to the AUTHORS file based on the commit metadata. --------- Co-authored-by: Jakob Borg <jakob@kastelo.net> commit ec3e474a53201f508e07f14a8fe409fe1879327a Author: otbutz <tbutz@optitool.de> Date: Wed May 1 10:03:07 2024 +0200 etc: Use 7MiB buffer size (#9524) ### Purpose In preparation for quic-go v0.43.0. see https://github.com/quic-go/quic-go/pull/4455 commit ebb1edc652b284c85c5952208b7bdfd279d32189 Author: Severin von Wnuck-Lipinski <ss7@live.de> Date: Wed May 1 09:00:36 2024 +0200 gui: Fix Firefox bookmark favicon (fixes #9506) (#9507) ### Purpose Firefox uses the last specified favicon link for bookmarks, but only if it is available on initial page load. Remove the second link and use ng-href to change the icon instead. I'm not really familiar with AngularJS, feel free to offer suggestions for improvements. ### Testing Briefly tested on Firefox 124.0.2 and Chrome 123.0.6312.105. commit 6204670c663338be519d3cb96fd9232752e08294 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Apr 29 03:45:25 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit ff9b24f388ea21f15954cf33d123aa3d34759d23 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Apr 22 03:45:18 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 01b820dc78e1d8240485fa79fdbd12160ffb4fa6 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Apr 15 04:10:05 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 79ae24df7688c37a7a897218c87bff412a887b9d Author: Jakob Borg <jakob@kastelo.net> Date: Thu Apr 11 13:23:29 2024 +0200 lib/nat: Don't crash on empty address list (fixes #9503) (#9504) commit 61b94b9ea51d2591145e07361f2a1816a480b6bf Author: Jakob Borg <jakob@kastelo.net> Date: Mon Apr 8 11:14:27 2024 +0200 lib/db: Drop indexes for outgoing data to force refresh (ref #9496) (#9502) ### Purpose Resend our indexes since we fixed that index-sending issue. I made a new thing to only drop the non-local-device index IDs, i.e., those for other devices. This means we will see a mismatch and resend all indexes, but they will not. This is somewhat cleaner as it avoids resending everything twice when two devices are upgraded, and in any case, we have no reason to force a resend of incoming indexes here. ### Testing It happens on my computer... commit 6fb3c5ccf2ed2b94ebdedf1bdaadc8d50d8d1dd3 Author: tomasz1986 <twilczynski@naver.com> Date: Sun Apr 7 21:37:31 2024 +0200 gui: Fix missing link to device editor for names with superscript (ref #9472) (#9494) The commit 7e4e65ebf53dd98f0fee3f021c399b12f5966f12 added links to devices listed in the Shared With list in the folder info. However, it only added them to those that had no superscript next to them. With this change, the links are added to all devices regardless of whether they have the superscript next to their names or not. The commit also simplifies the code by using anchors directly instead of wrapping them in spans. Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com> commit 2e7c03420fc56f7f7c9a5590efdfaf69d8049fbf Author: Jakob Borg <jakob@kastelo.net> Date: Fri Apr 5 21:32:43 2024 +0200 lib/db: Hold update lock while taking snapshot (#9496) commit faa56b4bb7e085fee4e8021dfbc995627dc069c1 Author: Jakob Borg <jakob@kastelo.net> Date: Fri Apr 5 16:13:20 2024 +0200 build: Update dependencies (#9497) commit d7ba5316b8f084472d3987adbeabfb256aad1b0e Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Apr 1 03:45:41 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit bdfd0f0548d2f6fc4b5500690dbd383baa3b0561 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Mar 25 03:45:14 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 5d27185083d1acfc91b0b33438876313283cca88 Author: Tim Nordenfur <tim@gurka.se> Date: Sat Mar 23 00:23:02 2024 +0100 Removed no longer relevant Bountysource link (#9480) ### Purpose Bountysource no longer exists and the readme link 404s. This removes the Bountysource link and corresponding readme section. Perhaps the section should instead be replaced by other instructions for voting on features. commit 4dfb9d7c83ed172f12ae19408517961f4a49beeb Author: Jakob Borg <jborg@coreweave.com> Date: Thu Mar 21 08:57:43 2024 -0400 lib/api: Missing return after HTTP error commit 2f15670094146ecb326610b2ff5b165b70410f3e Author: Emil Lundberg <emil@emlun.se> Date: Thu Mar 21 13:09:47 2024 +0100 lib/api: Extract session store (#9425) This is an extract from PR #9175, which can be reviewed in isolation to reduce the volume of changes to review all at once in #9175. There are about to be several services and API handlers that read and set cookies and session state, so this abstraction will prove helpful. In particular a motivating cause for this is that with the current architecture in PR #9175, in `api.go` the [`webauthnService` needs to access the session](https://github.com/syncthing/syncthing/pull/9175/files#diff-e2e14f22d818b8e635572ef0ee7718dee875c365e07225d760a6faae8be7772dR309-R310) for authentication purposes but needs to be instantiated before the `configMuxBuilder` for config purposes, because the WebAuthn additions to config management need to perform WebAuthn registration ceremonies, but currently the session management is embedded in the `basicAuthAndSessionMiddleware` which is [instantiated much later](https://github.com/syncthing/syncthing/pull/9175/files#diff-e2e14f22d818b8e635572ef0ee7718dee875c365e07225d760a6faae8be7772dL371-R380) and only if authentication is enabled in `guiCfg`. This refactorization extracts the session management out from `basicAuthAndSessionMiddleware` so that `basicAuthAndSessionMiddleware` and `webauthnService` can both use the same shared session management service to perform session management logic. ### Testing This is a refactorization intended to not change any externally observable behaviour, so existing tests (e.g., `api_auth_test.go`) should cover this where appropriate. I have manually verified that: - Appending `+ "foo"` to the cookie name in `createSession` causes `TestHtmlFormLogin/invalid_URL_returns_403_before_auth_and_404_after_auth` and `TestHtmlFormLogin/UTF-8_auth_works` to fail - Inverting the return value of `hasValidSession` cases a whole bunch of tests in `TestHTTPLogin` and `TestHtmlFormLogin` to fail - (Fixed) Changing the cookie to `MaxAge: 1000` in `destroySession` does NOT cause any tests to fail! - Added tests `TestHtmlFormLogin/Logout_removes_the_session_cookie`, `TestHTTPLogin/*/Logout_removes_the_session_cookie`, `TestHtmlFormLogin/Session_cookie_is_invalid_after_logout` and `TestHTTPLogin/200_path#01/Session_cookie_is_invalid_after_logout` to cover this. - Manually verified that these tests pass both before and after the changes in this PR, and that changing the cookie to `MaxAge: 1000` or not calling `m.tokens.Delete(cookie.Value)` in `destroySession` makes the respective pair of tests fail. commit b49137ce36e57455935f9bc3aa98a1a27723b470 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Mar 18 03:45:22 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 7e4e65ebf53dd98f0fee3f021c399b12f5966f12 Author: Jaspitta <ste.scarpitta@gmail.com> Date: Sun Mar 17 20:13:09 2024 +0100 gui: Open devices on click in Shared With list in folder info (fixes #8972) (#9472) commit 8c8167a4ab3130c69bebcd53e0c11934fbc8e939 Author: Simon Frei <freisim93@gmail.com> Date: Mon Mar 11 07:30:21 2024 +0100 lib/model: Don't bump seq on error in index handler (#9459) commit 73cc5553b623dbbe71b75ddd0add9b89dca6714a Author: Simon Frei <freisim93@gmail.com> Date: Sun Mar 10 22:28:40 2024 +0100 lib/model: Prevent infinite index sending loop (fixes #9407) (#9458) Explanation of what/why in a code comment. Fixes https://github.com/syncthing/syncthing/issues/9407 commit 2ab2488274a2a5a857402fd65c949bddadbd7fad Author: Simon Frei <freisim93@gmail.com> Date: Tue Mar 5 19:04:26 2024 +0100 lib/scanner: Fix ticker leak in scanner (fixes #9417) (#9451) Move the ticker closer to where it's used and defer stop it to avoid missing a branch. Fixes regression introduced in https://github.com/syncthing/syncthing/commit/2f3eacdb6c1c33650ccdd91f42e842c116200d92 Fixes https://github.com/syncthing/syncthing/issues/9417 commit eb9cd363d04997803beeb85d0ad6df0806a6537b Author: Jakob Borg <jakob@kastelo.net> Date: Mon Mar 4 20:39:43 2024 +0100 build: Update dependencies (#9448) commit 7fe390653452ad0e0714f2264abf7005ed8dccd2 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Mar 4 03:54:27 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 5fdab1bf1132817771db4159caba8d0380153460 Author: André Colomb <src@andre.colomb.de> Date: Sun Mar 3 21:09:57 2024 +0100 gui: Show encryption status for devices sharing folder (ref #8808) (#9355) This re-implements the stalled enhancement from #8808. Thanks @Craeckie for the idea and first implementation draft! If a folder is shared to a device with encryption, add a lock icon in front of the device name under "Shared With" in the folder details panel. Be careful not to add whitespace caused by line wraps in HTML source code, which would defeat the purpose of keeping the icon glued to the name by a non-breaking space. Apply the same lock icon for the list of folders shared with a device. commit 13a6d43f0b63faa5b55d357124401c854dbf0b30 Author: André Colomb <src@andre.colomb.de> Date: Sun Mar 3 20:55:09 2024 +0100 gui: Fix wrapping in "Shared With" / "Folders" lists. (#9438) This change was split off from #9355 as an independent clean-up / fix. See that PR for review discussion, testing, and screenshots. Improve the wrapping of folder labels / device names by going back to word-wrapping, but making sure other spans, such as the trailing comma, do not get separated from the label span. * Avoid adding whitespace caused by line wraps in HTML source code. The different cases within the ng-switch block are separated by newlines for readability, but that gets parsed as whitespace. For wrapping purposes, this should not happen, because then there is no way to keep other HTML parts glued to the name / label in each list entry. * Simplify redundant conditional comma code. The separating comma after a device name or folder label (all but the last) should always stick to it. Use the HTML comment trick to avoid whitespace and therefore a wrapping opportunity caused by the code formatting newline. Thus the conditional comma only needs to be defined once, not in each ng-switch case. * Wrap at word boundaries and only break up words if necessary. Use the overflow-wrap: break-word; style instead of word-break: break-all;. While the latter is suitable for longish paths, breaking device names or folder labels arbitrarily within words is ugly. This also makes the the <sup> numbers actually stay glued to their respective neighboring words. Include legacy CSS alias "word-wrap" in the class definition. * Fix indentation (unrelated). commit ac942e2481fa0692f0a51bd9fd6b2a6b4142bd32 Author: Jakob Borg <jakob@kastelo.net> Date: Sat Mar 2 16:12:11 2024 +0100 github: Convert issue templates into forms (fixes #9442) commit bbd2a7fbc5029dd48bfd5b26f255028c2f7304da Author: Luke Hamburg <1992842+luckman212@users.noreply.github.com> Date: Sat Mar 2 09:55:18 2024 -0500 lib/model: Ignore difference in extended attributes & ownership when deleting (fixes #9371) (#9430) Adds a bool flag to `scanIfItemChanged()` to indicate when the scan was initiated from a delete function, and if so, tell `IsEquivalentOptional()` to ignore Xattrs and Ownership regardless of the global setting. I tested this with my sledgehammer and it seems to pass. commit 07a9fa2dbd60cdd2ee7f1a74324476547c65f76c Author: Jakob Borg <jakob@kastelo.net> Date: Tue Feb 27 13:05:19 2024 +0100 all: Use own automaxprocs package that doesn't log (ref #9436) (#9437) ### Purpose 🤫 commit aa559bf49615e375b749c735afd97cb6a7fb6698 Author: Thomas <9749173+uhthomas@users.noreply.github.com> Date: Mon Feb 26 12:23:14 2024 +0000 all: Use Linux container CPU quota (fixes #9357, fixes #9435) (#9436) Go is not cgroup aware and by default will set GOMAXPROCS to the number of available threads, regardless of whether it is within the allocated quota. This behaviour causes high amount of CPU throttling and degraded application performance. commit 2d968d46b78b4a37e88ab17bdda5870d84e86aa4 Author: Jakob Borg <jakob@kastelo.net> Date: Mon Feb 26 13:12:57 2024 +0100 cmd/syncthing: Remove legacy GOMAXPROCS handling (ref #9436) commit 86c4cafc96ecd935d2baf1947a238f280fb76e2c Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Feb 26 03:45:28 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit c4dfb66d8476d85124242d5d4d7c799567258278 Author: Beat Reichenbach <44111292+beatreichenbach@users.noreply.github.com> Date: Thu Feb 22 00:47:43 2024 -0800 docker: Add support for setting umask (#9429) Add support for setting umask value in the Docker `entrypoint.sh` script. This is useful when not syncing permissions and working with groups, and needing umask values like `002` instead of `022`. commit f4d160684bf36c67d39ea60b9244cdb4c1041d67 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Feb 19 03:45:23 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit b76e6ce70d8ac3fd235d2f71aef6704c7c65d77b Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Feb 12 03:45:25 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 6b4028eede0fbe1b15313343c227bfcdda420bc1 Author: Jakob Borg <jakob@kastelo.net> Date: Sun Feb 11 09:24:00 2024 +0100 build: Use correct Go version also for script runs (#9414) The changes to go.mod in latest Go 1.21/1.22 are not fully understood by older Go that might be pre-installed on builds, so make sure we always have a modern one in place even for running small release scripts etc. commit ad81ac8da71bad17139ecd6c48eb461d484a5248 Author: Jakob Borg <jakob@kastelo.net> Date: Sun Feb 11 09:20:29 2024 +0100 lib/api: Deflake TestAPIServiceRequests (#9413) Somewhere along the way, the non-parallel test became parallel, and at that point, timeouts occurred. Parallel is better, so increase the timeout on the offending call a bit... commit 7ebeaefe77d80df735622e4d8718a8c5614f0ecb Author: Jakob Borg <jakob@kastelo.net> Date: Sun Feb 11 09:03:12 2024 +0100 lib/model: Deflake new IndexHandlerTest (#9412) The new test has a flakiness factor on slow platforms, where the close on the sending connection races with the last index message, potentially messing up the count. This adds a wait to ensure that all sent messages are received, or the test will eventually fail with a timeout. commit e1dd36561d51589a76c5db08664a7dbbc343382d Author: Jakob Borg <jakob@kastelo.net> Date: Sat Feb 10 21:02:42 2024 +0100 all: Use some Go 1.21 features (#9409) commit 96c30f83870f12ad35477cf440cf57206324e0d3 Author: Jakob Borg <jakob@kastelo.net> Date: Sat Feb 10 19:16:27 2024 +0100 lib/model, lib/protocol: Remove FileInfoBatch reuse behavior (#9399) commit fc8b353011c1cd8b5bd6216fcdc60e3777a00c64 Author: Jakob Borg <jakob@kastelo.net> Date: Fri Feb 9 16:35:29 2024 +0100 build: Use Go 1.22, minimum is Go 1.21 (#9408) Also updated dependencies, and an adjustment to build tags for how those are handled and how irrelevant go1.15 is nowadays... commit 416b9e8924a99a01520aaa08ee60050eaf200dc8 Author: Jakob Borg <jakob@kastelo.net> Date: Fri Feb 9 11:17:44 2024 +0100 lib/logger: Reduce API surface (#9404) There is no need to expose the IsTraced() thing; it's just used in initialisation, and thereafter ShouldDebug() is the corresponding correct call. commit 9f6d732587b26f507916e26e2f5c57e331b1492c Author: gudvinr <gudvinr@gmail.com> Date: Tue Feb 6 16:07:59 2024 +0300 lib/logger: Split STTRACE into list of strings (#9402) Currently `IsTraced("xyz")` will return true for any inclusion of "xyz" in string. This change splits `STTRACE` using `','`, `' '` and `';'` as delimiters. That makes facilities separation more clear. commit f2f5786b3368a42120a255b70e410bb1cd4c4dbd Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Feb 5 03:45:33 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit eb617865d2430de378e28b9bde83cd5a17796aa8 Author: Jakob Borg <jakob@kastelo.net> Date: Thu Feb 1 15:13:33 2024 +0100 lib/model: Typo in method name (fixes #9389) commit a49e318d25cd4fa20cbab4f57483c23ff756ec90 Author: Jakob Borg <jakob@kastelo.net> Date: Thu Feb 1 15:11:09 2024 +0100 lib/model: Typo in debug print (fixes #9386) commit e74674a019fd6289c312dc9b94bd547eb180aeac Author: Jakob Borg <jakob@kastelo.net> Date: Wed Jan 31 09:11:04 2024 +0100 build: Update dependencies (#9379) commit d98fa474aebe472498d2f1c151a296d3731f4666 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed Jan 31 08:33:02 2024 +0100 build(deps): bump actions/cache from 3 to 4 (#9363) Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/releases">actions/cache's releases</a>.</em></p> <blockquote> <h2>v4.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update action to node20 by <a href="https://github.com/takost"><code>@takost</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1284">actions/cache#1284</a></li> <li>feat: save-always flag by <a href="https://github.com/to-s"><code>@to-s</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1242">actions/cache#1242</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/takost"><code>@takost</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1284">actions/cache#1284</a></li> <li><a href="https://github.com/to-s"><code>@to-s</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1242">actions/cache#1242</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v3...v4.0.0">https://github.com/actions/cache/compare/v3...v4.0.0</a></p> <h2>v3.3.3</h2> <h2>What's Changed</h2> <ul> <li>Cache v3.3.3 by <a href="https://github.com/robherley"><code>@robherley</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1302">actions/cache#1302</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/robherley"><code>@robherley</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1302">actions/cache#1302</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v3...v3.3.3">https://github.com/actions/cache/compare/v3...v3.3.3</a></p> <h2>v3.3.2</h2> <h2>What's Changed</h2> <ul> <li>Fixed readme with new segment timeout values by <a href="https://github.com/kotewar"><code>@kotewar</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1133">actions/cache#1133</a></li> <li>Readme fixes by <a href="https://github.com/kotewar"><code>@kotewar</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1134">actions/cache#1134</a></li> <li>Updated description of the lookup-only input for main action by <a href="https://github.com/kotewar"><code>@kotewar</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1130">actions/cache#1130</a></li> <li>Change two new actions mention as quoted text by <a href="https://github.com/bishal-pdMSFT"><code>@bishal-pdMSFT</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1131">actions/cache#1131</a></li> <li>Update Cross-OS Caching tips by <a href="https://github.com/pdotl"><code>@pdotl</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1122">actions/cache#1122</a></li> <li>Bazel example (Take <a href="https://redirect.github.com/actions/cache/issues/2">#2</a>️⃣) by <a href="https://github.com/vorburger"><code>@vorburger</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1132">actions/cache#1132</a></li> <li>Remove actions to add new PRs and issues to a project board by <a href="https://github.com/jorendorff"><code>@jorendorff</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1187">actions/cache#1187</a></li> <li>Consume latest toolkit and fix dangling promise bug by <a href="https://github.com/chkimes"><code>@chkimes</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1217">actions/cache#1217</a></li> <li>Bump action version to 3.3.2 by <a href="https://github.com/bethanyj28"><code>@bethanyj28</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1236">actions/cache#1236</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/vorburger"><code>@vorburger</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1132">actions/cache#1132</a></li> <li><a href="https://github.com/jorendorff"><code>@jorendorff</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1187">actions/cache#1187</a></li> <li><a href="https://github.com/chkimes"><code>@chkimes</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1217">actions/cache#1217</a></li> <li><a href="https://github.com/bethanyj28"><code>@bethanyj28</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1236">actions/cache#1236</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v3...v3.3.2">https://github.com/actions/cache/compare/v3...v3.3.2</a></p> <h2>v3.3.1</h2> <h2>What's Changed</h2> <ul> <li>Reduced download segment size to 128 MB and timeout to 10 minutes by <a href="https://github.com/kotewar"><code>@kotewar</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1129">actions/cache#1129</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v3...v3.3.1">https://github.com/actions/cache/compare/v3...v3.3.1</a></p> <h2>v3.3.0</h2> <h2>What's Changed</h2> <ul> <li>Bug: Permission is missing in cache delete example by <a href="https://github.com/kotokaze"><code>@kotokaze</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1123">actions/cache#1123</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's changelog</a>.</em></p> <blockquote> <h1>Releases</h1> <h3>3.0.0</h3> <ul> <li>Updated minimum runner version support from node 12 -> node 16</li> </ul> <h3>3.0.1</h3> <ul> <li>Added support for caching from GHES 3.5.</li> <li>Fixed download issue for files > 2GB during restore.</li> </ul> <h3>3.0.2</h3> <ul> <li>Added support for dynamic cache size cap on GHES.</li> </ul> <h3>3.0.3</h3> <ul> <li>Fixed avoiding empty cache save when no files are available for caching. (<a href="https://redirect.github.com/actions/cache/issues/624">issue</a>)</li> </ul> <h3>3.0.4</h3> <ul> <li>Fixed tar creation error while trying to create tar with path as <code>~/</code> home folder on <code>ubuntu-latest</code>. (<a href="https://redirect.github.com/actions/cache/issues/689">issue</a>)</li> </ul> <h3>3.0.5</h3> <ul> <li>Removed error handling by consuming actions/cache 3.0 toolkit, Now cache server error handling will be done by toolkit. (<a href="https://redirect.github.com/actions/cache/pull/834">PR</a>)</li> </ul> <h3>3.0.6</h3> <ul> <li>Fixed <a href="https://redirect.github.com/actions/cache/issues/809">#809</a> - zstd -d: no such file or directory error</li> <li>Fixed <a href="https://redirect.github.com/actions/cache/issues/833">#833</a> - cache doesn't work with github workspace directory</li> </ul> <h3>3.0.7</h3> <ul> <li>Fixed <a href="https://redirect.github.com/actions/cache/issues/810">#810</a> - download stuck issue. A new timeout is introduced in the download process to abort the download if it gets stuck and doesn't finish within an hour.</li> </ul> <h3>3.0.8</h3> <ul> <li>Fix zstd not working for windows on gnu tar in issues <a href="https://redirect.github.com/actions/cache/issues/888">#888</a> and <a href="https://redirect.github.com/actions/cache/issues/891">#891</a>.</li> <li>Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable <code>SEGMENT_DOWNLOAD_TIMEOUT_MINS</code>. Default is 60 minutes.</li> </ul> <h3>3.0.9</h3> <ul> <li>Enhanced the warning message for cache unavailablity in case of GHES.</li> </ul> <h3>3.0.10</h3> <ul> <li>Fix a bug with sorting inputs.</li> <li>Update definition for restore-keys in README.md</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/cache/commit/13aacd865c20de90d75de3b17ebe84f7a17d57d2"><code>13aacd8</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1242">#1242</a> from to-s/main</li> <li><a href="https://github.com/actions/cache/commit/53b35c543921fe2e8b288765ff817de9de8d906f"><code>53b35c5</code></a> Merge branch 'main' into main</li> <li><a href="https://github.com/actions/cache/commit/65b8989fab3bb394817bdb845a453dff480c2b51"><code>65b8989</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1284">#1284</a> from takost/update-to-node-20</li> <li><a href="https://github.com/actions/cache/commit/d0be34d54485f31ca2ccbe66e6ea3d96544a807b"><code>d0be34d</code></a> Fix dist</li> <li><a href="https://github.com/actions/cache/commit/66cf064d47313d2cccf392d01bd10925da2bd072"><code>66cf064</code></a> Merge branch 'main' into update-to-node-20</li> <li><a href="https://github.com/actions/cache/commit/1326563738ddb735c5f2ce85cba8c79f33b728cd"><code>1326563</code></a> Merge branch 'main' into main</li> <li><a href="https://github.com/actions/cache/commit/e71876755e268d6cc25a5d3e3c46ae447e35290a"><code>e718767</code></a> Fix format</li> <li><a href="https://github.com/actions/cache/commit/01229828ffa049a8dee4db27bcb23ed33f2b451f"><code>0122982</code></a> Apply workaround for earlyExit</li> <li><a href="https://github.com/actions/cache/commit/3185ecfd6135856ca6d904ae032cff4f39b8b365"><code>3185ecf</code></a> Update "only-" actions to node20</li> <li><a href="https://github.com/actions/cache/commit/25618a0a675e8447e5ffc8ed9b7ddb2aaf927f65"><code>25618a0</code></a> Bump version</li> <li>Additional commits viewable in <a href="https://github.com/actions/cache/compare/v3...v4">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/cache&package-manager=github_actions&previous-version=3&new-version=4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit f16817632fb604c76f1bbbfeb9c3b33c7507050e Author: Jakob Borg <jakob@kastelo.net> Date: Wed Jan 31 08:24:39 2024 +0100 lib/api: Improve folder summary event, verbose service (#9370) This makes a couple of small improvements to the folder summary mechanism: - The folder summary includes the local and remote sequence numbers in clear text, rather than some odd sum that I'm not sure what it was intended to represent. - The folder summary event is generated when appropriate, regardless of whether there is an event listener. We did this before because generating it was expensive, and we wanted to avoid doing it unnecessarily. Nowadays, however, it's mostly just reading out pre-calculated metadata, and anyway, it's nice if it shows up reliably when running with -verbose. The point of all this is to make it easier to use these events to judge when devices are, in fact, in sync. As-is, if I'm looking at two devices, it's very difficult to reliably determine if they are in sync or not. The reason is that while we can ask device A if it thinks it's in sync, we can't see if the answer is "yes" because it has processed all changes from B, or if it just doesn't know about the changes from B yet. With proper sequence numbers in the event we can compare the two and determine the truth. This makes testing a lot easier. commit bda4016109a7492110ce8231d751521101af52f8 Author: Jakob Borg <jakob@kastelo.net> Date: Wed Jan 31 08:18:27 2024 +0100 lib/protocol: Refactor interface (#9375) This is a refactor of the protocol/model interface to take the actual message as the parameter, instead of the broken-out fields: ```diff type Model interface { // An index was received from the peer device - Index(conn Connection, folder string, files []FileInfo) error + Index(conn Connection, idx *Index) error // An index update was received from the peer device - IndexUpdate(conn Connection, folder string, files []FileInfo) error + IndexUpdate(conn Connection, idxUp *IndexUpdate) error // A request was made by the peer device - Request(conn Connection, folder, name string, blockNo, size int32, offset int64, hash []byte, weakHash uint32, fromTemporary bool) (RequestResponse, error) + Request(conn Connection, req *Request) (RequestResponse, error) // A cluster configuration message was received - ClusterConfig(conn Connection, config ClusterConfig) error + ClusterConfig(conn Connection, config *ClusterConfig) error // The peer device closed the connection or an error occurred Closed(conn Connection, err error) // The peer device sent progress updates for the files it is currently downloading - DownloadProgress(conn Connection, folder string, updates []FileDownloadProgressUpdate) error + DownloadProgress(conn Connection, p *DownloadProgress) error } ``` (and changing the `ClusterConfig` to `*ClusterConfig` for symmetry; we'll be forced to use all pointers everywhere at some point anyway...) The reason for this is that I have another thing cooking which is a small troubleshooting change to check index consistency during transfer. This required adding a field or two to the index/indexupdate messages, and plumbing the extra parameters in umpteen changes is almost as big a diff as this is. I figured let's do it once and avoid having to do that in the future again... The rest of the diff falls out of the change above, much of it being in test code where we run these methods manually... commit 8f5d07bd092990ceeb5d7f6b496e67ed5680a82f Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jan 29 03:45:37 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 302b352d78692bed09ca2b050d0abd9fc3932e74 Author: kylosus <33132401+kylosus@users.noreply.github.com> Date: Sun Jan 28 21:50:26 2024 +0300 lib/fs: Add invalid UTF-8 guards to watcher (fixes #9369) (#9372) Add invalid UTF-8 guards to fix #9369. Probably not a permanent fix, but putting it up here in case someone else encounters the same panic. commit 45beb28fa5b051d14a10f102a05ec46d36ecaa75 Author: Jakob Borg <jakob@kastelo.net> Date: Tue Jan 23 12:07:58 2024 +0100 lib/api: Remove remnants of CSRF tokens file mentions (ref #9284) commit ee9b20e47af48b7e6e0f5124248da5a9318176b1 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jan 22 03:45:30 2024 +0000 gui, man, authors: Update docs, translations, and contributors commit 0f55d5fc3e5a1a0d7db095af378dad701239d239 Author: tomasz1986 <twilczynski@naver.com> Date: Sat Jan 20 22:11:42 2024 +0100 gui: Remove non-functional HTML from External Versioning tooltip (ref #8923) (#9358) gui: Remove non-functional HTML from External Versioning tooltip (ref #8923) Since [1], it is no longer possible to use HTML in tooltips. This was addressed in [2], however the commit missed one instance of HTML that was used to change the font type of the External versioning command tooltip. This remaining HTML is removed in this commit. [1] f5e5af391a6583047c64ef8c51642003a79b75cf [2] 73c52eafb6566435dffd979c3c49562b6d5a4238 Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com> ### Screenshots ![image](https://github.com/syncthing/syncthing/assets/5626656/d5f6c553-35cb-48c2-b654-809d8bbe93b8) Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com> commit 35e153625ce5139e2d30b36a0557b5e7a1e81ba0 Author: bt90 <btom1990@googlemail.com> Date: Tue Jan 16 17:14:12 2024 +0100 cmd/ursrv: Add FreeBSD detection (#9351) ### Purpose Classify `ports@freebsd` as `FreeBSD (3rd party)` commit d5e1b99e6c89a80bd8b8147b1f510c7d2679d978 Author: bt90 <btom1990@googlemail.com> Date: Tue Jan 16 17:13:34 2024 +0100 cmd/ursrv: Fix Arch detection (#9350) ### Purpose Classify `syncthing@archlinux` as `Arch (3rd party)` commit 3297624037b4f944366f7f9a7fb9b884f02fa13d Author: Jakob Borg <jakob@kastelo.net> Date: Mon Jan 15 11:13:22 2024 +0100 lib/ignore: Optimise ignoring directories for filesystem watcher (fixes #9339) (#9340) This improves the ignore handling so that directories can be fully ignored (skipped in the watcher) in more cases. Specifically, where the previous rule was that any complex `!`-pattern would disable skipping directories, the new rule is that only matches on patterns *after* such a `!`-pattern disable skipping. That is, the following now does the intuitive thing: ``` /foo /bar !whatever * ``` - `/foo/**` and `/bar/**` are completely skipped, since there is no chance anything underneath them could ever be not-ignored - `!whatever` toggles the "can't skip directories any more" flag - Anything that matches `*` can't skip directories, because it's possible we can have `whatever` match something deeper. To enable this, some refactoring was necessary: - The "can skip dirs" flag is now a property of the match result, not of the pattern set as a whole. - That meant returning a boolean is not good enough, we need to actually return the entire `Result` (or, like, two booleans but that seemed uglier and more annoying to use) - `ShouldIgnore(string) boolean` went away with `Match(string).IsIgnored()` being the obvious replacement (API simplification!) - The watcher then needed to import the `ignore` package (for the `Result` type), but `fs` imports the watcher and `ignore` imports `fs`. That's a cycle, so I broke out `Result` into a package of its own so that it can be safely imported everywhere in things like `type Matcher interface { Match(string) result.Result }`. There's a fair amount of stuttering in `result.Result` and maybe we should go with something like `ignoreresult.R` or so, leaving this open for discussion. Tests refactored to suit, I think this change is in fact quite well covered by the existing ones... Also some noise because a few of the changed files were quite old and got the `gofumpt` treatment by my editor. Sorry not sorry. --------- Co-authored-by: Simon Frei <freisim93@gmail.com> commit 445e8cc532767f554c40f523611ac74ad3389d74 Author: Syncthing Release Automation <release@syncthing.net> Date: Mon Jan 15 03:45:19 2024 +0000 gui, man, authors: Update docs, translations, and contributors
* main: (89 commits) lib/ignore: Remove unused patterns in cache (syncthing#9601) lib/ignore: Fix caching of filenames with path separators on windows (syncthing#9600) gui, man, authors: Update docs, translations, and contributors gui: Add Filipino (fil) translation template (syncthing#9599) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors gui: Use localised time in duration (syncthing#9552) build: Skip autoprocs for build script build: Update dependencies (syncthing#9565) Merge branch 'infrastructure' cmd/stupgrades: Basic process metrics cmd/stcrashreceiver: Ignore patterns, improve metrics cmd/strelaypoolsrv: More compact response, improved metrics cmd/stdiscosrv: Add AMQP replication gui, man, authors: Update docs, translations, and contributors build: Add missing region attribute for uploads build: Generalise S3 push options gui, man, authors: Update docs, translations, and contributors lib/config: Add file inside folder marker directory (syncthing#9525) lib/config, lib/watchaggregator: Add config for max FS watcher delay (syncthing#9558) lib/fs: Watcher should react to xattr-only events on Darwin build: Update dependencies (syncthing#9553) gui, man, authors: Update docs, translations, and contributors lib/geoip, cmd/relaypoolsrv, cmd/ursrv: Automatically manage GeoIP updates (syncthing#9342) lib/db: Correct function name in comments (syncthing#9520) lib/connections: Use proper errors.Is check (syncthing#9538) build(deps): bump github.com/quic-go/quic-go from 0.42.0 to 0.43.0 (syncthing#9522) gui, man, authors: Update docs, translations, and contributors build: Use Go 1.22.3 at minimum gui: Add Hindi (hi) translation template (syncthing#9530) gui, man, authors: Update docs, translations, and contributors lib/connections: Add syncthing_connections_active metric (fixes syncthing#9527) (syncthing#9528) etc: Use 7MiB buffer size (syncthing#9524) gui: Fix Firefox bookmark favicon (fixes syncthing#9506) (syncthing#9507) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors lib/nat: Don't crash on empty address list (fixes syncthing#9503) (syncthing#9504) lib/db: Drop indexes for outgoing data to force refresh (ref syncthing#9496) (syncthing#9502) gui: Fix missing link to device editor for names with superscript (ref syncthing#9472) (syncthing#9494) lib/db: Hold update lock while taking snapshot (syncthing#9496) build: Update dependencies (syncthing#9497) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors Removed no longer relevant Bountysource link (syncthing#9480) lib/api: Missing return after HTTP error lib/api: Extract session store (syncthing#9425) gui, man, authors: Update docs, translations, and contributors gui: Open devices on click in Shared With list in folder info (fixes syncthing#8972) (syncthing#9472) lib/model: Don't bump seq on error in index handler (syncthing#9459) lib/model: Prevent infinite index sending loop (fixes syncthing#9407) (syncthing#9458) lib/scanner: Fix ticker leak in scanner (fixes syncthing#9417) (syncthing#9451) build: Update dependencies (syncthing#9448) gui, man, authors: Update docs, translations, and contributors gui: Show encryption status for devices sharing folder (ref syncthing#8808) (syncthing#9355) gui: Fix wrapping in "Shared With" / "Folders" lists. (syncthing#9438) github: Convert issue templates into forms (fixes syncthing#9442) lib/model: Ignore difference in extended attributes & ownership when deleting (fixes syncthing#9371) (syncthing#9430) all: Use own automaxprocs package that doesn't log (ref syncthing#9436) (syncthing#9437) all: Use Linux container CPU quota (fixes syncthing#9357, fixes syncthing#9435) (syncthing#9436) cmd/syncthing: Remove legacy GOMAXPROCS handling (ref syncthing#9436) gui, man, authors: Update docs, translations, and contributors docker: Add support for setting umask (syncthing#9429) gui, man, authors: Update docs, translations, and contributors gui, man, authors: Update docs, translations, and contributors build: Use correct Go version also for script runs (syncthing#9414) lib/api: Deflake TestAPIServiceRequests (syncthing#9413) lib/model: Deflake new IndexHandlerTest (syncthing#9412) all: Use some Go 1.21 features (syncthing#9409) lib/model, lib/protocol: Remove FileInfoBatch reuse behavior (syncthing#9399) build: Use Go 1.22, minimum is Go 1.21 (syncthing#9408) lib/logger: Reduce API surface (syncthing#9404) lib/logger: Split STTRACE into list of strings (syncthing#9402) gui, man, authors: Update docs, translations, and contributors lib/model: Typo in method name (fixes syncthing#9389) lib/model: Typo in debug print (fixes syncthing#9386) build: Update dependencies (syncthing#9379) build(deps): bump actions/cache from 3 to 4 (syncthing#9363) lib/protocol: Refactor interface (syncthing#9375) gui, man, authors: Update docs, translations, and contributors lib/fs: Add invalid UTF-8 guards to watcher (fixes syncthing#9369) (syncthing#9372) lib/api: Remove remnants of CSRF tokens file mentions (ref syncthing#9284) gui, man, authors: Update docs, translations, and contributors gui: Remove non-functional HTML from External Versioning tooltip (ref syncthing#8923) (syncthing#9358) cmd/ursrv: Add FreeBSD detection (syncthing#9351) cmd/ursrv: Fix Arch detection (syncthing#9350) lib/ignore: Optimise ignoring directories for filesystem watcher (fixes syncthing#9339) (syncthing#9340) gui, man, authors: Update docs, translations, and contributors
Feature description
A new metric that exposes the connection state of each device as a gauge value (e.g., 0 = disconnected; 1 = connected, ...).
Problem or use case
I have an android device where the operating system frequently kills the syncthing app.
I want to monitor, using prometheus, whether the device is connected with my central syncthing node and get alerted if it is disconnected for an extended period of time.
Alternatives or workarounds
Create a custom exporter that uses the syncthing API.
If this is something you would be interested into having, I can try to open a PR for it.
The text was updated successfully, but these errors were encountered: