Derek Collison
3ff9aed192
Merge branch 'main' into dev
2023-05-12 21:04:51 -07:00
Derek Collison
421775a32a
Fix to allow sorting by rtt for connz.
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-12 20:22:07 -07:00
Derek Collison
7f17e07d66
Filter by user at the end for closed connections
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-12 15:24:42 -07:00
Derek Collison
0c13f174c0
Fixed cap mistake in comment
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-12 15:07:00 -07:00
Derek Collison
c5eb46cb06
Make sure closed clients captures all user types and works with user filtering as well
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-12 15:05:40 -07:00
Derek Collison
90d1063674
Fix for #4149 to allow proper user filtering on connz for other user types.
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-12 14:19:37 -07:00
Derek Collison
4c26cbb3de
Merge branch 'main' into dev
2023-05-12 12:38:20 -07:00
Waldemar Quevedo
286a1632ca
Use monotonic time for measuring time internally
...
Signed-off-by: Waldemar Quevedo <wally@nats.io >
2023-05-12 08:27:46 -07:00
Derek Collison
5e029d08d5
For older R1 streams created by previous servers we could have no cluster for the stream assignment group which would prevent scale up with newer servers.
...
This will inherit cluster if detected from placement tags or client cluster designation.
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-10 17:59:28 -07:00
Derek Collison
2f2498ab7e
Bump to 2.9.17-beta.7
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-10 15:32:45 -07:00
Derek Collison
990ac56557
Merge branch 'main' into dev
2023-05-10 15:31:54 -07:00
Derek Collison
a17357c6ae
When doing leadership transfer stepdown as soon as we know we have sent the EntryLeaderTransfer entry.
...
Delaying could allow something to be sent from the old leader which would cause the new leader to bail on being a candidate even though it would have gotten all the votes.
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-10 12:27:33 -07:00
Derek Collison
717afae9ef
When doing a leader transfer clear vote state on leader and when non-chosen peers receive the update
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-10 07:49:22 -07:00
Derek Collison
c5c5a34fec
Bump to 2.9.17-beta.6
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-09 20:12:22 -07:00
Derek Collison
2f2440f270
Merge branch 'main' into dev
2023-05-09 20:11:53 -07:00
Derek Collison
b9af0d0294
Only do no-leader stepdown on transfer after a delay if we are still the leader
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-09 17:19:14 -07:00
Derek Collison
b44beb4b54
Make sure to update peer set and remove old peers after new leader takes over
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-09 15:15:02 -07:00
Neil Twigg
d7ae2cbb5f
Backport #4120 to main
...
Signed-off-by: Neil Twigg <neil@nats.io >
2023-05-09 11:24:35 +01:00
Ivan Kozlovic
1ce12ba195
Fixed issue with route s2_auto when compression is actually off
...
This is a fix for PR https://github.com/nats-io/nats-server/pull/4001 .
If a server has an s2_auto configuration, the compression level
needs to be updated based on the RTT, however, this should not
happen if a particular route is actually not using compression,
either because it is a connection to an older server or the other
side has explicitly configure compression to be "off".
Extended a test that would have caught this issue.
Signed-off-by: Ivan Kozlovic <ivan@synadia.com >
2023-05-08 09:06:16 -06:00
Derek Collison
168fb22df5
Fix one more test that did not set ack policy to explicit
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-06 22:05:31 -07:00
Derek Collison
08938034a5
Fix test that did not set ack policy to explicit
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-06 19:54:42 -07:00
Derek Collison
ed3f8be0c5
Bump version 2.10.0-beta.36
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-06 18:49:13 -07:00
Derek Collison
18244ea8cb
Fix test that did not set ack policy to explicit
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-06 15:10:46 -07:00
Derek Collison
caa262513d
Fix test that did not set ack policy which is needed
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-06 14:15:44 -07:00
Derek Collison
dbff40f2b6
Adopt same update from main
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-06 09:56:01 -07:00
Derek Collison
4175e4ee9c
Merge branch 'main' into dev
2023-05-06 09:55:34 -07:00
Derek Collison
76f4358349
[IMPROVED] Optimizations for large single hub account leafnode fleets. ( #4135 )
...
Added a leafnode lock to allow better traversal without copying of large
leafnodes in a single hub account.
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-06 09:53:08 -07:00
Derek Collison
80db7a22ab
Optimizations for large single hub account leafnode fleets.
...
Added a leafnode lock to allow better traversal without copying of large leafnodes in a single hub account.
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-05 13:14:49 -07:00
Waldemar Quevedo
b886fed2fb
Stop using UTC for time for flushClients
...
In #1943 it was adopted to use `UTC()` in some timestamps,
but an unintended side effect from this is that it strips
the monotonic time, so it can be prone to clock skews when
subtracting time in other areas of the code.
e5646b23de
2023-05-04 15:50:45 -07:00
Tomasz Pietrek
69fb3db0f5
Optimize consumer messages sequences for multiple subjects ( #4129 )
...
If consumer with multiple subjects encountered a sequnece of messages in
a row from the same subject, it tried to load messages from other
subjects in some cases.
This checks for that scenario and optimizes it by early returning.
I added a temporary instrumentation to check for how many times fetching
new messages is called, and it seems that it cuts those calls according
to assumptions. Though it being internal, it's really hard to show that
in test.
Signed-off-by: Tomasz Pietrek <tomasz@nats.io >
2023-05-04 20:13:13 +02:00
Tomasz Pietrek
7c1c4ea5fb
Optimize consumer messages sequences for multiple subjects
...
If consumer with multiple subjects encountered a sequnece
of messages from the same subject, it tried to load messages
from other subjects in some cases.
This checks for that scenario and optimizes it by early returning.
Signed-off-by: Tomasz Pietrek <tomasz@nats.io >
2023-05-04 16:02:19 +02:00
Derek Collison
9fa724cd7b
Merge branch 'main' into dev
2023-05-03 21:00:35 -07:00
Derek Collison
da8aeac91b
Fix flapper
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-03 21:00:17 -07:00
Derek Collison
68f6b59fc7
Merge branch 'main' into dev
2023-05-03 19:51:24 -07:00
Derek Collison
ae73e6a573
Bump to 2.9.17-beta.5
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-03 19:50:21 -07:00
Derek Collison
21239022bd
Protect against usage drift for any unforseen reason and if detected correct.
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-03 17:09:06 -07:00
Ivan Kozlovic
311e3feb5f
Merge branch 'main' into dev
2023-05-03 17:38:40 -06:00
Ivan Kozlovic
8a4ead22bc
Updates based on code review
...
Signed-off-by: Ivan Kozlovic <ivan@synadia.com >
2023-05-03 16:14:51 -06:00
Ivan Kozlovic
7afe76caf8
Fixed Sublist.RemoveBatch to remove subs present, even if one isn't
...
I have seen cases, maybe due to previous issue with configuration
reload that would miss subscriptions in the sublist because
of the sublist swap, where we would attempt to remove subscriptions
by batch but some were not present. I would have expected that
all present subscriptions would still be removed, even if the
call overall returned an error.
This is now fixed and a test has been added demonstrating that
even on error, we remove all subscriptions that were present.
Signed-off-by: Ivan Kozlovic <ivan@synadia.com >
2023-05-03 15:21:26 -06:00
Ivan Kozlovic
95e4f2dfe1
Fixed accounts configuration reload
...
Issues could manifest with subscription interest not properly
propagated.
Signed-off-by: Ivan Kozlovic <ivan@synadia.com >
2023-05-03 14:35:06 -06:00
Ivan Kozlovic
840c264f45
Cleanup use of s.opts and fixed some lock (deadlock/inversion) issues
...
One should not access s.opts directly but instead use s.getOpts().
Also, server lock needs to be released when performing an account
lookup (since this may result in server lock being acquired).
A function was calling s.LookupAccount under the client lock, which
technically creates a lock inversion situation.
Signed-off-by: Ivan Kozlovic <ivan@synadia.com >
2023-05-03 14:09:02 -06:00
Derek Collison
b61e411b44
Fix race in reload and gateway sublist check ( #4127 )
...
Fixes the following race: during reload account sublist can be changed:
2699465596/server/reload.go (L1598-L1610)
so this can become a race while checking interest in the gateway code
here:
79de3302be/server/gateway.go (L2683)
```
=== RUN TestJetStreamSuperClusterPeerReassign
==================
WARNING: DATA RACE
Write at 0x00c0010854f0 by goroutine 15595:
github.com/nats-io/nats-server/v2/server.(*Server).reloadAuthorization.func2()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/reload.go:1610 +0x486
sync.(*Map).Range()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/sync/map.go:354 +0x225
github.com/nats-io/nats-server/v2/server.(*Server).reloadAuthorization()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/reload.go:1594 +0x35d
github.com/nats-io/nats-server/v2/server.(*Server).applyOptions()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/reload.go:1454 +0xf4
github.com/nats-io/nats-server/v2/server.(*Server).reloadOptions()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/reload.go:908 +0x204
github.com/nats-io/nats-server/v2/server.(*Server).ReloadOptions()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/reload.go:847 +0x4a4
github.com/nats-io/nats-server/v2/server.(*Server).Reload()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/reload.go:782 +0x125
github.com/nats-io/nats-server/v2/server.(*cluster).removeJetStream()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/jetstream_helpers_test.go:1498 +0x310
github.com/nats-io/nats-server/v2/server.TestJetStreamSuperClusterPeerReassign()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/jetstream_super_cluster_test.go:395 +0xa38
testing.tRunner()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/testing/testing.go:1446 +0x216
testing.(*T).Run.func1()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/testing/testing.go:1493 +0x47
Previous read at 0x00c0010854f0 by goroutine 15875:
github.com/nats-io/nats-server/v2/server.(*Server).gatewayHandleSubjectNoInterest()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/gateway.go:2683 +0x12d
github.com/nats-io/nats-server/v2/server.(*client).processInboundGatewayMsg()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/gateway.go:2980 +0x595
github.com/nats-io/nats-server/v2/server.(*client).processInboundMsg()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/client.go:3532 +0xc7
github.com/nats-io/nats-server/v2/server.(*client).parse()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/parser.go:497 +0x34f9
github.com/nats-io/nats-server/v2/server.(*client).readLoop()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/client.go:1284 +0x17e8
github.com/nats-io/nats-server/v2/server.(*Server).createGateway.func1()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/gateway.go:858 +0x37
Goroutine 15595 (running) created at:
testing.(*T).Run()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/testing/testing.go:1493 +0x75d
testing.runTests.func1()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/testing/testing.go:1846 +0x99
testing.tRunner()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/testing/testing.go:1446 +0x216
testing.runTests()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/testing/testing.go:1844 +0x7ec
testing.(*M).Run()
/home/travis/.gimme/versions/go1.19.8.linux.amd64/src/testing/testing.go:1726 +0xa84
github.com/nats-io/nats-server/v2/server.TestMain()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/sublist_test.go:1577 +0x292
main.main()
_testmain.go:3615 +0x324
Goroutine 15875 (running) created at:
github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/server.go:3098 +0x88
github.com/nats-io/nats-server/v2/server.(*Server).createGateway()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/gateway.go:858 +0xfc4
github.com/nats-io/nats-server/v2/server.(*Server).startGatewayAcceptLoop.func1()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/gateway.go:553 +0x48
github.com/nats-io/nats-server/v2/server.(*Server).acceptConnections.func1()
/home/travis/gopath/src/github.com/nats-io/nats-server/server/server.go:2184 +0x58
==================
testing.go:1319: race detected during execution of test
--- FAIL: TestJetStreamSuperClusterPeerReassign (2.08s)
```
2023-05-02 18:12:56 -07:00
Waldemar Quevedo
938ffcba20
Fix race in reload and gateway sublist check
...
Signed-off-by: Waldemar Quevedo <wally@nats.io >
2023-05-02 17:51:53 -07:00
Derek Collison
ae73f7be55
Small raft improvements.
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-02 16:44:27 -07:00
Derek Collison
e7b01c4154
Merge branch 'main' into dev
2023-05-02 16:30:00 -07:00
Derek Collison
9ef71893db
Bump to 2.9.17-beta.4
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-02 09:43:11 -07:00
Derek Collison
4a58feff27
When removing a msg and we need to load the msg block and incur IO, unlock fs lock to avoid stalling other activity on other blocks.
...
E.g removing and adding msgs at the same time.
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-02 08:56:43 -07:00
Derek Collison
eb1eb3c49e
Merge branch 'main' into dev
2023-05-01 16:29:35 -07:00
Derek Collison
f098c253aa
Make sure we adjust accounting reservations when deleting a stream with any issues.
...
Signed-off-by: Derek Collison <derek@nats.io >
2023-05-01 15:54:37 -07:00
Ivan Kozlovic
0a02f2121c
[ADDED] LeafNode: TLSHandhsakeFirst option
...
A new field in `tls{}` blocks force the server to do TLS handshake
before sending the INFO protocol.
```
leafnodes {
port: 7422
tls {
cert_file: ...
...
handshake_first: true
}
remotes [
{
url: tls://host:7423
tls {
...
handshake_first: true
}
}
]
}
```
Note that if `handshake_first` is set in the "accept" side, the
first `tls{}` block in the example above, a server trying to
create a LeafNode connection to this server would need to have
`handshake_first` set to true inside the `tls{}` block of
the corresponding remote.
Configuration reload of leafnodes is generally not supported,
but TLS certificates can be reloaded and the support for this
new field was also added.
Signed-off-by: Ivan Kozlovic <ivan@synadia.com >
2023-05-01 16:41:51 -06:00