Commit Graph

969 Commits

Author SHA1 Message Date
Ivan Kozlovic
111e050d32 Allow service import to work with Gateways
This is not complete solution and is a bit hacky but is a start
to be able to have service import work at least in some basic
cases.

Also fixed a bug where replySub would not be removed from
connection's list of subs after delivery.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-05 20:35:43 -07:00
Derek Collison
eb4a7156ca Hold Rlock on client remapping
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-05 16:21:20 -08:00
Derek Collison
f3f623565c fixes
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-05 16:00:30 -08:00
Derek Collison
a95fa1a8e9 race on global account
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-05 14:59:38 -08:00
Derek Collison
2d54fc3ee7 Account lookup failures, account and client limits, options reload.
Changed account lookup and validation failures to be more understandable by users.
Changed limits to be -1 for unlimited to match jwt pkg.

The limits changed exposed problems with options holding real objects causing issues with reload tests under race mode.
Longer term this code should be reworked such that options only hold config data, not real structs, etc.

Signed-off-by: Derek Collison <derek@nats.io>
2018-12-05 14:25:40 -08:00
Paulo Pires
67412b762c Support a path as argument to --signal
Signed-off-by: Paulo Pires <pjpires@gmail.com>
2018-12-05 16:46:48 +00:00
Ivan Kozlovic
afc3a45a37 Merge pull request #836 from nats-io/fix_misleading_tls_timeout_error
[FIXED] Misleading Slow Consumer error message during TLS Handshake
2018-12-04 21:22:01 -07:00
Ivan Kozlovic
5f493862e6 [FIXED] Misleading Slow Consumer error message during TLS Handshake
When a TLS timeout occurs, it was possible that code trying to
send data would get a timeout error and report it as a Slow Consumer
with the write deadline exceeded error.
Checking that if the connection is TLS and handshake not complete,
it is likely a TLS timeout error instead.

Resolves #835

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-04 20:23:12 -07:00
Ivan Kozlovic
4f8100ebc8 Fix config reload that failed because of Gateways
Although Gateways reload is not supported at the moment, I had
to add the trap in the switch statement because it would find
a difference. The reason is the TLSConfig object that is likely
to not pass the reflect.DeepEqual test. So for now, I exclude this
from the deep equal test and fail the reload only if the user
has explicitly changed the configuration.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-04 19:25:59 -07:00
Derek Collison
fa3df0c9af Allow accounts to be preloaded via config if using MemAccResolver.
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-04 14:23:19 -08:00
Derek Collison
53c70e6ce1 Use atomic.Load
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-04 09:09:27 -08:00
Derek Collison
f9912700c8 Rebase from master
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-04 08:48:40 -08:00
Derek Collison
760507222a Added statsz support
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-04 08:23:33 -08:00
Ivan Kozlovic
bb738ef8ce Merge pull request #830 from nats-io/sys_account_with_gateways
Allow system messages to cross gateways.
2018-12-04 09:02:11 -07:00
Ivan Kozlovic
2618d39a36 Allow system messages to cross gateways.
Removed the code getting matching subscriptions and trying
to exclude non internal interest since as soon as there is
routing and/or gateway, it is likely that server would end-up
generating the payload and sending. May need to revisit.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-03 20:59:32 -07:00
Ivan Kozlovic
0ba587249a Fixing setting of default gateway TLS Timeout
Moved setting to the default value in setBaselineOptions()
so that config reload does not fail.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-03 18:20:15 -07:00
Ivan Kozlovic
1011339375 Merge pull request #827 from nats-io/gw_send_all_subs
Switch to send-all-subs when number of RS- gets too big
2018-12-03 17:35:18 -07:00
Ivan Kozlovic
e7b6c5731e Update based on comments
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-03 17:17:55 -07:00
Derek Collison
b2d8421e21 Make tests a bit more stable
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-03 15:45:06 -08:00
Derek Collison
69d89f75e7 Merge pull request #825 from nats-io/operator
Updates for operator based configurations.
2018-12-03 14:19:23 -08:00
Derek Collison
e8aec2d712 PR comment fixes
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-03 14:13:07 -08:00
Ivan Kozlovic
a23ef5b740 Switch to send-all-subs when number of RS- gets too big
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-03 13:15:11 -07:00
Davor Kapsa
05f9a49f25 Fix ErrAuthentication comment 2018-12-03 19:25:45 +01:00
Derek Collison
a2ec546850 Remove newest only
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-03 06:32:32 -08:00
Derek Collison
4b6982dbcd Add timeout test for URL account resolver
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-03 05:40:34 -08:00
Derek Collison
f4f3d3baf1 Updates for operator based configurations.
Added update to parse and load operator JWTs.
Changed to add in signing keys from operator JWT to list of trusted keys.
Added URL account resolver.
Added account claim updates by system messages.

Signed-off-by: Derek Collison <derek@nats.io>
2018-12-02 20:34:33 -08:00
Derek Collison
222814609d Add in server shutdowns
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-01 17:30:22 -08:00
Derek Collison
46707a2c01 Return on bad number of tokens
Signed-off-by: Derek Collison <derek@nats.io>
2018-12-01 16:53:23 -08:00
Derek Collison
4b1e5358bc Don't hold server lock when placing outbound items on sendq
Needed to change some things around but think this is close.

Signed-off-by: Derek Collison <derek@nats.io>
2018-12-01 16:48:57 -08:00
Derek Collison
744795ead5 Allow servers to send system events.
Specifically this is to support distributed tracking of number of account connections across clusters.
Gateways may not work yet based on attempts to only generate payloads when we know there is outside interest.

Signed-off-by: Derek Collison <derek@nats.io>
2018-12-01 13:54:25 -08:00
Ivan Kozlovic
dba4cfa791 Initialized the sublist for benchmark tests only when needed
This saves a lot of memory and init time when running non benchmark
tests in race mode.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-12-01 12:12:45 -07:00
Derek Collison
e2ce2c0cff Change to RawURLEncoding
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-29 17:04:58 -08:00
Derek Collison
2a19de7963 Merge pull request #819 from nats-io/sys
Allow servers to send and receive messages directly
2018-11-29 15:40:21 -08:00
Derek Collison
10eb491898 Better serializing of server info
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-29 15:22:04 -08:00
Derek Collison
4172e9b962 Serialize outbound messages
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-29 13:59:45 -08:00
Ivan Kozlovic
f011db47c7 Fixed race issue with lookup/update of the sent no-interest map
We can't use a simple sync.Map here because the noInterest map
for inbound gateway connections are used concurrently. Indeed,
whenever an account would have been registered or a new sub created
this could trigger an update of that map in order to clear the
fact that we had sent an A-/RS- and now are sending an A+/RS+.
So changed to simple map but protected by gw connection's lock.

Without this change, server would panic if there are messages
published to cluster A that are sent to server B while a sub
is then created on matching subject on B.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-29 14:22:56 -07:00
Derek Collison
16e9bbaf4c Fixes for PR comments
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-29 12:54:07 -08:00
Derek Collison
8d05ed82ff Make sure sub is processed
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-29 12:29:50 -08:00
Derek Collison
574fd62e01 Allow servers to send and receive messages directly
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-29 12:15:08 -08:00
Ivan Kozlovic
60462b2a44 Fixed gateway flapper
Need to make sure message is received before unsub'ing because
otherwise it would be possible that the unsub happens before
message is delivered, which would have resulted in an RS- while
we were expecting the message to not cause one.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-28 19:16:35 -07:00
Ivan Kozlovic
cfc5ec4d44 Fixed test and remove grace period from total duration.
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-28 18:25:15 -07:00
Ivan Kozlovic
e1a4cbaf70 Update to LameDuck mode
- Increase grace period to 10sec
- Make default 2min
- Reject config with value less than 30sec
- Don't wait more than 1sec between clients if there are much
  less than alloted time
- Stop after last one (was still sleeping after last client was
  closed)

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-28 18:04:26 -07:00
Ivan Kozlovic
086b26f14a Gateways: Ignore reference to self
Allows the use of a global include for all gateways and each
gateway will ignore its own reference.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-28 14:24:28 -07:00
Ivan Kozlovic
d78b1ae464 Fixed issue with gateways
- If/when splitting buffer to pass to queueOutbound(), it has to
  be include full protocol.
- Fix counting of total queue subs
- Fix tests
- Send RS- if no plain sub interest even if there is queue sub
  interest.
- Removed a one-liner function

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-28 13:15:47 -07:00
Ivan Kozlovic
bbacc58f7a Updates based on comments
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-27 20:19:02 -07:00
Ivan Kozlovic
52c724a83c Updates based on comments
- Solve RS+ with wildcards
- Solve issue with messages not send to remote gateways queue subs
  if there was a qsub on local server.
- Made rcache a perAccountCache since it is now used by routes and
  gateways
- Order outbound gateways only on RTT updates
- Print a server's gateway name on startup
- Augment/add some tests
- Update TLS handling: when connecting, use hostname for ServerName
  if url is not IP, otherwise use a hostname that we saved when
  parsing/adding URLs for the remote gateway.
- Send big buffer in chunks if needed.
- Add caching for qsubs match

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-27 19:39:41 -07:00
Ivan Kozlovic
10fd3ca0c6 Gateways [WIP]
Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-11-27 19:00:03 -07:00
Derek Collison
51c57a46c4 Test cleanup
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-26 20:27:08 -08:00
Derek Collison
0e0b7e3a80 Service Import Updates
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-26 20:27:08 -08:00
Derek Collison
3a87217965 spelling
Signed-off-by: Derek Collison <derek@nats.io>
2018-11-26 09:16:39 -08:00