Commit Graph

3224 Commits

Author SHA1 Message Date
Derek Collison
9cdab0682a Bump version
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-13 18:41:12 -07:00
Derek Collison
620b56e12f During compaction the cache may not be loaded completely if msg block was lmb (active writing).
This could lead to the filtered subject state being incorrect.

Signed-off-by: Derek Collison <derek@nats.io>
2021-09-13 14:36:50 -07:00
Ivan Kozlovic
6e705c2dec Merge pull request #2519 from nats-io/fix_2510
[FIXED] Websocket: possible panic when decoding CLOSE frame
2021-09-13 14:45:20 -06:00
Ivan Kozlovic
2495180d76 Merge pull request #2518 from nats-io/fail_auth_token_where_not_supported
[FIXED] Report config error if "token" defined for cluster{} and gateway{}
2021-09-13 14:23:25 -06:00
Ivan Kozlovic
8d41daf6ab Updates based on code review
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-13 14:06:17 -06:00
Ivan Kozlovic
5c5cc88c1f [FIXED] Report config error if "token" defined for cluster{} and gateway{}
Authentication token has never been supported for cluster and
gateway (and leafnode). There is not even a Token option in
ClusterOpts or GatewayOpts.

However, the parsing of the configuration was not rejecting this
misconfiguration, making users believe that token was used for
authentication.

Documentation will also be fixed since it is reported there that
token is supported, which again, has never been the case.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-13 10:21:00 -06:00
Andrey Shalamov
8575b334a2 fixed queue group memory leak 2021-09-13 15:22:05 +03:00
Ivan Kozlovic
1727c6061c [FIXED] Websocket: possible panic when decoding CLOSE frame
Resolves #2510

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-12 15:35:49 -06:00
Ivan Kozlovic
bc1b3a1884 Release v2.5.0
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-09 15:29:53 -06:00
Ivan Kozlovic
a5b016f8ab Merge pull request #2507 from nats-io/mqtt_conn_event
[ADDED] Monitoring: ClientID (for MQTT clients) on connection events
2021-09-09 14:51:05 -06:00
Ivan Kozlovic
0411ba0c03 Changed ClientID to MQTTClient and client_id to mqtt_client
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-09 14:34:54 -06:00
Ivan Kozlovic
49024a0353 [ADDED] Monitoring: ClientID (for MQTT clients) on connection events
ClientID has been added to various monitoring objects. Also, added
the ability to filter connections on `client_id`.

On auth violation, the proper code was not invoked, which meant
that no disconnect event (with auth reason) would be published.

Resolves #2270

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-09 13:34:46 -06:00
Derek Collison
c56c5acd64 Only supply expected last header is seq != 0
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-09 12:23:00 -07:00
Derek Collison
e18a278196 Added ability to check if no message exists as a test to store the message.
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-09 11:41:23 -07:00
Derek Collison
f75371022d Fix for issue #2488.
When we triggered a filestore msg block compact we were not properly dealing with interior deletes.
Subsequent lookups past the skipped messages would cause an error and stop delivering messages.

Signed-off-by: Derek Collison <derek@nats.io>
2021-09-09 09:53:22 -07:00
Ivan Kozlovic
9e5526cc9d Merge pull request #2501 from nats-io/mqtt_sess_changes
[IMPROVED] MQTT stream per session replaced with single stream
2021-09-08 19:35:29 -06:00
Ivan Kozlovic
ddcc49f88d Updates based on code review
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-08 19:13:46 -06:00
Derek Collison
02c792e675 Bump version
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-08 17:47:50 -07:00
Derek Collison
c841269f71 Make sure to suppress dupes on JS deny all for system account
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-08 17:09:25 -07:00
Ivan Kozlovic
21a990d2b5 [IMPROVED] MQTT stream per session replaced with single stream
With the availability of a "max message per subject" for a given
stream, it is possible to replace individual streams that were
created per session with a single stream that gets all sessions
as a single message per subject, which subject is composed of
the session client ID hash.

The first time the new stream is created for a given account,
all existing MQTT session streams will be transferred to the
new mux'ed MQTT session stream.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-08 16:32:41 -06:00
Derek Collison
dadc3b9fae Fixed a bug when an interest retention stream with noack consumers is in clustered mode.
We were not properly propagating the ack state and proper cleanup of the stream messages.

Signed-off-by: Derek Collison <derek@nats.io>
2021-09-08 15:02:09 -07:00
Derek Collison
04e8485a21 Bump version
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-07 08:37:50 -07:00
Derek Collison
963b0c41d7 Merge pull request #2490 from nats-io/fs-stable
Fixed a bug that could lead to perceived message loss under JetStream.
2021-09-07 08:37:16 -07:00
Derek Collison
2b2c4ba4a6 Bump Go test timeout
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-07 08:20:54 -07:00
Derek Collison
3099327697 During peer removal, try to remap any stream or consumer assets.
Also if we do not have room trap add peer and process there.
Fixed a bug that would treat ephemerals same as durables during remapping after peer removal.

Signed-off-by: Derek Collison <derek@nats.io>
2021-09-06 17:29:45 -07:00
Derek Collison
29eaa9c614 Fixed bug that could lead to perceived message loss.
Under load and pressure from concurrent publishing and consuming with multiple consumers the filestore would
return a partial or no cache error to the upper layers. For consumers this could result in us skipping a stream sequence when we should not.

This change stabilizes the filestore and removes the flush state for msg blocks. I also found some bugs that did not track last sequence properly
after snapshots / restore.

Signed-off-by: Derek Collison <derek@nats.io>
2021-09-05 16:36:23 -07:00
Ivan Kozlovic
3aa8e63b29 Merge pull request #2484 from nats-io/make_test_options_port_random
Set defaultServerOptions port to -1 for random
2021-09-02 16:48:24 -06:00
Ivan Kozlovic
a025ce7472 Set defaultServerOptions port to -1 for random
Updated some tests based on this change but also missing defer
connection close or server shutdown.

Fixed how the OCSP run go routine would shutdown, which would
never complete because grWG was not decremented by this go routine
prior to invoking s.Shutdown()

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-02 14:22:56 -06:00
Ivan Kozlovic
171e29f954 Merge pull request #2483 from nats-io/acc_resolver_tls
[FIXED] Account resolver TLS configuration
2021-09-02 13:22:16 -06:00
Ivan Kozlovic
063432aa4b [FIXED] Account resolver TLS configuration
The RootCAs was not properly set, which could prevent the server
to create a TLS connection to the account resolver with an error
such as:
```
x509: certificate signed by unknown authority
```

Resolves #1207

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-02 09:13:54 -06:00
Ivan Kozlovic
cd258e73bd Merge pull request #2482 from nats-io/js_expire_pull_reqs
[FIXED] Pull requests: don't send 408 when request expires
2021-09-02 09:02:28 -06:00
Ivan Kozlovic
ba36aa452b Fix some timing and bump server version
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-01 18:03:14 -06:00
Ivan Kozlovic
44c57a5702 [FIXED] Pull requests: don't send 408 when request expires
When expiring requests, the server would send 408 if interest was
still present, which can happen for pull subscribe implementations
that maintain interest for the duration of the pull subscription.

Let's keep the 408 for when a request is "force expired", that
is, a request was removed from the queue because it queue was
full but interest is still found.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-09-01 16:57:13 -06:00
Waldemar Quevedo
75543e3e49 Handle SIGTERM on windows 2021-09-01 14:55:26 -07:00
Derek Collison
60e45ea3dd Return if pull subscriber and exists
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-01 14:01:00 -07:00
Derek Collison
8615820a87 Avoid potential race
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-01 14:00:31 -07:00
Derek Collison
4d99aa9675 Shorten max wait for test
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-01 13:06:29 -07:00
Derek Collison
57ef5fd528 Set consumer config defaults early on to avoid a race condition.
Signed-off-by: Derek Collison <derek@nats.io>
2021-09-01 13:06:08 -07:00
Derek Collison
d809b02491 Fix for Issue #2397
When we had partial state due to server failure or being shutdown ungracefully we could enter into a stream reset state.
The stream reset state is harsh but worked, however there was a bug that would not restart consumers that were attached.
Also if no state exists, or state was truncated, we can detect that and not go through a full reset.

Signed-off-by: Derek Collison <derek@nats.io>
2021-09-01 07:04:50 -07:00
Ivan Kozlovic
80ebf2d7b2 Add a comment to explain that we want to make a copy of the config
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-08-31 15:11:32 -06:00
Ivan Kozlovic
0c9952f21d Additional lock inversion between jetStream and jsAccount
Order seem to be jetStream -> jsAccount. In JetStreamUsage()
we were doing the opposite. Moved the js.mu.RLock() to encompass
the whole getting of statistics from jsa. We could do in 2 phases:
get js's RLock to get cluster info (if clustered), then get
jsa's RLock for the rest, and set cluster info with what we gathered
in the first phase.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-08-31 14:18:31 -06:00
Ivan Kozlovic
9f2e3d335b [FIXED] JetStream: possible deadlock due to lock inversion
The locking is jetStream->Server, not the otherway around. There
was few places where lock inversion could have caused deadlock.

Also, a change made recently to solve a deadlock was causing
a race that is demonstrated with TestJetStreamRaceOnRAFTCreate.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-08-30 16:16:56 -06:00
Ivan Kozlovic
037a1f0461 Release v2.4.0
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-08-26 15:58:31 -06:00
Ivan Kozlovic
4076abfd57 Use a better seed for a rand generator
This was causing some test to flap.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-08-26 15:16:22 -06:00
Derek Collison
56da097b38 Merge pull request #2473 from nats-io/mixed-global
Enable global account on non-js servers in mixed mode.
2021-08-26 10:54:57 -07:00
Derek Collison
476c264560 If we are in a simple mixed-mode setup with just global account and system account and clustered, allow pass through.
Signed-off-by: Derek Collison <derek@nats.io>
2021-08-26 09:41:01 -07:00
Ivan Kozlovic
32646f8211 Merge pull request #2472 from miraculli/fix_2445
[FIXED] build on OpenBSD-6.9
2021-08-26 09:51:55 -06:00
mirac
f46c417419 with 'go fmt' applied 2021-08-26 16:52:43 +02:00
mirac
a025facbf1 remove not needed import 2021-08-26 08:31:10 +02:00
mirac
ab946adc0e quickfix for #2445 2021-08-26 08:09:55 +02:00