build: Update quic-go for Go 1.19 (#8483)
Also adds idle time and keepalive parameters because how this is configured has changed in the new package version. The values are those that seems like might already be default, if keep-alives were enabled, which is not obvious from the doc comments. Also, Go 1.19 gofmt reformatting of comments.
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"crypto/tls"
|
||||
"net"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/lucas-clemente/quic-go"
|
||||
)
|
||||
@@ -20,7 +21,8 @@ import (
|
||||
var (
|
||||
quicConfig = &quic.Config{
|
||||
ConnectionIDLength: 4,
|
||||
KeepAlive: true,
|
||||
MaxIdleTimeout: 30 * time.Second,
|
||||
KeepAlivePeriod: 15 * time.Second,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
+11
-11
@@ -72,17 +72,17 @@ type WriteTransaction interface {
|
||||
// there is an error preventing iteration, which is then returned by
|
||||
// Error(). For example:
|
||||
//
|
||||
// it, err := db.NewPrefixIterator(nil)
|
||||
// if err != nil {
|
||||
// // problem preventing iteration
|
||||
// }
|
||||
// defer it.Release()
|
||||
// for it.Next() {
|
||||
// // ...
|
||||
// }
|
||||
// if err := it.Error(); err != nil {
|
||||
// // there was a database problem while iterating
|
||||
// }
|
||||
// it, err := db.NewPrefixIterator(nil)
|
||||
// if err != nil {
|
||||
// // problem preventing iteration
|
||||
// }
|
||||
// defer it.Release()
|
||||
// for it.Next() {
|
||||
// // ...
|
||||
// }
|
||||
// if err := it.Error(); err != nil {
|
||||
// // there was a database problem while iterating
|
||||
// }
|
||||
//
|
||||
// An iterator must be Released when no longer required. The Error method
|
||||
// can be called either before or after Release with the same results. If an
|
||||
|
||||
@@ -70,6 +70,5 @@ Found) is returned.
|
||||
|
||||
If the client has exceeded a rate limit, the server may respond with 429 (Too
|
||||
Many Requests).
|
||||
|
||||
*/
|
||||
package discover
|
||||
|
||||
@@ -28,27 +28,27 @@ receiveOnlyFolder is a folder that does not propagate local changes outward.
|
||||
It does this by the following general mechanism (not all of which is
|
||||
implemented in this file):
|
||||
|
||||
- Local changes are scanned and versioned as usual, but get the
|
||||
FlagLocalReceiveOnly bit set.
|
||||
- Local changes are scanned and versioned as usual, but get the
|
||||
FlagLocalReceiveOnly bit set.
|
||||
|
||||
- When changes are sent to the cluster this bit gets converted to the
|
||||
Invalid bit (like all other local flags, currently) and also the Version
|
||||
gets set to the empty version. The reason for clearing the Version is to
|
||||
ensure that other devices will not consider themselves out of date due to
|
||||
our change.
|
||||
- When changes are sent to the cluster this bit gets converted to the
|
||||
Invalid bit (like all other local flags, currently) and also the Version
|
||||
gets set to the empty version. The reason for clearing the Version is to
|
||||
ensure that other devices will not consider themselves out of date due to
|
||||
our change.
|
||||
|
||||
- The database layer accounts sizes per flag bit, so we can know how many
|
||||
files have been changed locally. We use this to trigger a "Revert" option
|
||||
on the folder when the amount of locally changed data is nonzero.
|
||||
- The database layer accounts sizes per flag bit, so we can know how many
|
||||
files have been changed locally. We use this to trigger a "Revert" option
|
||||
on the folder when the amount of locally changed data is nonzero.
|
||||
|
||||
- To revert we take the files which have changed and reset their version
|
||||
counter down to zero. The next pull will replace our changed version with
|
||||
the globally latest. As this is a user-initiated operation we do not cause
|
||||
conflict copies when reverting.
|
||||
- To revert we take the files which have changed and reset their version
|
||||
counter down to zero. The next pull will replace our changed version with
|
||||
the globally latest. As this is a user-initiated operation we do not cause
|
||||
conflict copies when reverting.
|
||||
|
||||
- When pulling normally (i.e., not in the revert case) with local changes,
|
||||
normal conflict resolution will apply. Conflict copies will be created,
|
||||
but not propagated outwards (because receive only, right).
|
||||
- When pulling normally (i.e., not in the revert case) with local changes,
|
||||
normal conflict resolution will apply. Conflict copies will be created,
|
||||
but not propagated outwards (because receive only, right).
|
||||
|
||||
Implementation wise a receiveOnlyFolder is just a sendReceiveFolder that
|
||||
sets an extra bit on local changes and has a Revert method.
|
||||
|
||||
@@ -14,17 +14,18 @@ import (
|
||||
)
|
||||
|
||||
// TestEmptyDirs models the following .stversions structure:
|
||||
// .stversions/
|
||||
// ├── keep1
|
||||
// │ └── file1
|
||||
// ├── keep2
|
||||
// │ └── keep21
|
||||
// │ └── keep22
|
||||
// │ └── file1
|
||||
// ├── remove1
|
||||
// └── remove2
|
||||
// └── remove21
|
||||
// └── remove22
|
||||
//
|
||||
// .stversions/
|
||||
// ├── keep1
|
||||
// │ └── file1
|
||||
// ├── keep2
|
||||
// │ └── keep21
|
||||
// │ └── keep22
|
||||
// │ └── file1
|
||||
// ├── remove1
|
||||
// └── remove2
|
||||
// └── remove21
|
||||
// └── remove22
|
||||
func TestEmptyDirs(t *testing.T) {
|
||||
var paths = []struct {
|
||||
path string
|
||||
|
||||
Reference in New Issue
Block a user