Commit Graph

217 Commits

Author SHA1 Message Date
Derek Collison
27f8cbd069 Wait for interest
Signed-off-by: Derek Collison <derek@nats.io>
2021-01-25 19:46:43 -08:00
Derek Collison
c8a75e1ed0 test fixes
Signed-off-by: Derek Collison <derek@nats.io>
2021-01-25 16:15:28 -08:00
Derek Collison
117607ef11 Fix for race and test for issue R.I. was seeing in nightly. Also fixed flappers.
Signed-off-by: Derek Collison <derek@nats.io>
2021-01-24 21:21:02 -08:00
Derek Collison
227901a56b More cleanup and stabilization for consumers and failing when sending messages.
Signed-off-by: Derek Collison <derek@nats.io>
2021-01-22 10:09:30 -08:00
Derek Collison
ff54c9dc9c Reworked snapshot and restore.
Underestimated the effort to get stream restore working properly in cluster mode.
Some good bug fixes and stability improvments.

Signed-off-by: Derek Collison <derek@nats.io>
2021-01-20 11:58:31 -08:00
Ivan Kozlovic
f5df209022 Fixed SIGSEGV when sending update for unknown stream
Will now return an error that the stream is unknown.

Resolves #1827

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-01-20 12:42:14 -07:00
Ivan Kozlovic
c4a284b58f Fix stop of consumer's delivery loop
I noticed that some consumer go routines were left running at the end
of the test suite.
It turns out that there was a race the way the consumer's qch was closed.
Since it was closed and then set to nil, it is possible that the go
routines that are started and then try to capture o.qch would actually
get qch==nil, wich then when doing a select on that nil channel would
block forever.

So we know pass the qch to the 2 go routines loopAndGatherMsgs() and
loopAndDeliverMsgs() so that when we close the channel there is
no risk of that race happening.

I do believe that there is still something that should be looked at:
it seems that a consumer's delivery loop can now be started/stopped
many times based on leadership acquired/lost. If that is the case,
I think that the consumer should wait for previous go routine to
complete before trying to start new ones.

Also moved 3 JetStream tests to the test/norace_test.go file because
they would consumer several GB of memory when running with the -race flag.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2021-01-19 17:39:32 -07:00
Derek Collison
a603f439bb Make all requests same timeout
Signed-off-by: Derek Collison <derek@nats.io>
2021-01-16 14:17:35 -08:00
Derek Collison
ab2a645791 Fix for various flappers
Signed-off-by: Derek Collison <derek@nats.io>
2021-01-14 06:54:08 -08:00
Derek Collison
f0cdf89c61 JetStream Clustering WIP
Signed-off-by: Derek Collison <derek@nats.io>
2021-01-14 01:14:52 -08:00
Derek Collison
ced28eca93 Fix flapper
Signed-off-by: Derek Collison <derek@nats.io>
2020-12-13 10:29:34 -08:00
Ivan Kozlovic
9f345ac420 Reduce risk of failure for TestJetStreamConsumerMaxDeliveryAndServerRestart
Just increased the AckWait from 20ms to 100ms and reduced max
deliveries from 4 to 3.

I believe that there is still the risk that the message is redelivered
while the server is being shutdown and that message is not making it
to the sub.

But using those new values (100ms/3), I have ran 200 rounds on a Linux
VM and did not get the failure (but did before the change).

Again, this is not proper test fix, but may help. This test has been
failing 11 times already (keeping track in spreadsheet) and causes
several minutes of tests to have to be recycled.
Note that the test ran in about 0.4s and now 0.7s, so not that much
and would be worth the added delay if it helps not breaking the whole
test suite!

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2020-12-11 19:49:58 -07:00
Derek Collison
0f7d18d6e8 Fixes https://github.com/nats-io/jetstream/issues/396
Had a deadlock with new preconditions. We need to hold lock across Store() call but that call could call into storeUpdate() such that we may need to acquire the lock. We can enter this callback from the storage layer itself and the lock would not be held so added an atomic.

Signed-off-by: Derek Collison <derek@nats.io>
2020-12-02 16:18:00 -08:00
Derek Collison
bfb726e8e9 Make sure to clear JS resources on reload
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-30 17:18:33 -08:00
Derek Collison
4e6d600ecc Also make sure account works after reload
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-30 16:18:36 -08:00
Derek Collison
7e27042e6e Fix for #1736
When a system account was configured and not the default when we did a reload we would lose the JetStream service exports.

Signed-off-by: Derek Collison <derek@nats.io>
2020-11-30 16:11:50 -08:00
Derek Collison
4532447908 Remove limitation on ackall for filtered consumers
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-28 07:18:17 -08:00
R.I.Pienaar
5e5b2e4dfd ensure the stream originating a pub error is reported
Signed-off-by: R.I.Pienaar <rip@devco.net>
2020-11-27 12:24:41 +01:00
Derek Collison
954f5a9093 Flattened filters for stream names API
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-25 07:46:56 -08:00
Derek Collison
44a1373f89 JetStream changes.
Made several changes based on feedback.

1. Made PubAckResponse only optionally include an ApiError and not force an API type.
2. Allow FilterSubject to be set on a consumer config and cleared if it matches the only stream subject.
3. Remove LookupStream by subject, and add in filters for stream names API.

Signed-off-by: Derek Collison <derek@nats.io>
2020-11-25 06:50:25 -08:00
Derek Collison
c0bc788c6d Merge pull request #1735 from nats-io/ehdrs
Stream publish changes
2020-11-23 09:44:37 -08:00
Derek Collison
0279e00b00 Fix for flapper
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-23 07:34:24 -08:00
Derek Collison
afa5cae58c Formalized PubAckResponse
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-22 16:31:37 -08:00
Derek Collison
a50f96461b Allow to check for last sequence and last msgid for conditional publish
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-22 15:12:00 -08:00
Derek Collison
b528b1f74e Allow complete $JS.API to be imported from another account.
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-21 16:54:58 -08:00
Derek Collison
a1c1ead39d Enable JetStream streams and consumer access to be exported to another account
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-20 10:17:16 -08:00
Derek Collison
28d8a4be9c Merge pull request #1721 from nats-io/fsfix2
Fix for not properly recovering first sequence number on recovery.
2020-11-17 15:22:02 -08:00
Derek Collison
d358aaddf6 Fixes for filestore not remember first sequence when all messages deleted.
Thsi fixed a few minor bugs as well as the one where we did not remember our sequence numbers.

Signed-off-by: Derek Collison <derek@nats.io>
2020-11-17 15:04:57 -08:00
Ivan Kozlovic
5e9bad5b26 Test showing issue with filestore after a restart
I have pin-pointed that the issue started at this commit:
d737ccef55

This was PR: https://github.com/nats-io/nats-server/pull/1685

Prior to this PR, the test would pass.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2020-11-17 09:01:36 -07:00
R.I.Pienaar
ca8cbcdc63 support subjects starting with {
still doesnt support a subject {}

Signed-off-by: R.I.Pienaar <rip@devco.net>
2020-11-17 16:33:22 +01:00
R.I.Pienaar
a4116cc0fa support json requests for stream lookup 2020-11-17 15:33:44 +01:00
Derek Collison
67f4bf1ac1 Make sure to honor MaxAckPending when streaming directly to consumers
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-16 16:51:34 -08:00
Derek Collison
ce42addfe4 Merge pull request #1711 from nats-io/stream_lookup
Allow stream lookup by subject.
2020-11-16 05:59:13 -08:00
Derek Collison
5ff28b6087 Allow stream lookup by subject.
Allow an API endpoint and public API to lookup a stream by subject. The subject needs to be an exact match or a subset. If the subject is considered a filtered subject for the stream that will also be returned.

Signed-off-by: Derek Collison <derek@nats.io>
2020-11-14 13:35:05 -08:00
Derek Collison
9893aac8cb Add support for MaxAckPending
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-14 06:28:07 -08:00
Derek Collison
28cb4e8c34 Fix bug when removing the same message from a stream.
We would release locks and call into upper layers when removing a message. The upper layers may call back into the lower layers to get more information, such as the subject.
This fix has the storage updates optionally supply the subject for filtered consumers and fixes the bug of double deletes.

Signed-off-by: Derek Collison <derek@nats.io>
2020-11-13 17:05:24 -08:00
Derek Collison
e57f6c9dee Larger AckWait to prevent flapping
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-13 08:06:43 -08:00
Derek Collison
e6797efde7 Make interest notifications explicit match only
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-12 07:10:47 -08:00
Derek Collison
a733c12086 Fix flapper, be pedantic about signaling on delivery subject update
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-11 18:07:51 -08:00
Derek Collison
e31001a782 Remove conditional and broadcast for signalling consumers
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-11 13:53:45 -08:00
Derek Collison
164f9fdf2b Updates to consumer store to support delta updates.
In preparation for clustering we need to have the consumer filestore update state with deltas vs original design.

Signed-off-by: Derek Collison <derek@nats.io>
2020-11-10 19:16:55 -08:00
Derek Collison
398ef78aac Fix flappers
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-05 18:10:52 -08:00
Derek Collison
a4abbea0d2 Make sure to set timer for additional redeliveries
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-05 14:07:17 -08:00
Derek Collison
4a26b1f514 Redeliver pending right away on change of delivery subject for a consumer.
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-05 13:20:27 -08:00
Derek Collison
67b1a33401 Fix for partial cache overwrite bug.
When we moved to a write through cache architecture we also moved the cache write to offset based instead of APPEND.
We were inadvertently clearing our offset from our cache when we would clear which meant if the next operation was another write we would have the wrong offset and overwrite previous messages.

Signed-off-by: Derek Collison <derek@nats.io>
2020-11-04 20:01:53 -08:00
Ivan Kozlovic
5a6bb37564 Test that shows message disappear from filestore
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2020-11-04 15:37:38 -07:00
R.I.Pienaar
c0f031cc39 support next structure in acknxt
Signed-off-by: R.I.Pienaar <rip@devco.net>
2020-11-02 17:47:19 +01:00
Derek Collison
d729beb24c Flush after purge too
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-01 13:21:53 -08:00
Derek Collison
65caff18c3 Fix for flapper and additional consumer perf test
Signed-off-by: Derek Collison <derek@nats.io>
2020-11-01 12:06:45 -08:00
R.I.Pienaar
96c53b77f5 Merge pull request #1683 from ripienaar/bare_acknxt
ensure bare AckNxt requesting >1 is supported
2020-10-30 16:15:20 +01:00