Commit Graph

741 Commits

Author SHA1 Message Date
Derek Collison
b9096f6403 new test certs
Signed-off-by: Derek Collison <derek@nats.io>
2018-06-08 10:29:52 -07:00
Ivan Kozlovic
ac42bb0bb9 Remove route connection from temp map
When a route connection is created, the server will keep track
of the client structure in a special map until the route protocol
completes. This is meant so that if the server is shutdown before
the route is registered in routes map, the server can kick out
the connection's readLoop.

The route connection was correctly removed on success, but was
not for route connections that were not registered and dropped.
This was not causing any issue, but for correctness, doing the
removal now when server removes a route connection.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
2018-04-11 16:49:08 -06:00
Ivan Kozlovic
b0ebdbed7d Fixed typo 2018-04-09 09:14:21 -06:00
Ivan Kozlovic
9d11587e49 Add test to ensure server handles more than 1 signal
Also, try to fix flapping test
2018-04-06 17:24:41 -06:00
Ivan Kozlovic
40cf0107d6 Ensure sig handler routine returns on shutdown, turn it off in most tests
I noticed that when running the test suite, there would be a file
server/log1.txt left. This file is created by one of the config
reload test. Running this test individually was doing the proper
cleanup. I noticed that the Signal test that was checking
that files could be rotated was causing this side effect.
It turns out that none of the config reload tests were disabling
the signal handler (NoSigs=true), and since the go routine would
be left running, running the TestSignalToReOpenLogFile() test
would interact with an already finished test.

I put a thread dump in handleSignals() to track all tests that
were causing this function to start the go routine because NoSigs
was not set to true. I fixed all those tests. At this time, there
are only 2 tests that need to start the signal handler.

I have also fixed the code so that the signal handler routine select
on a server quitCh that is closed on shutdown so that this go routine
exit and is waiting on using the grWG wait group.
2018-04-06 17:14:02 -06:00
Gabriel Guzman
f7f333ed2f Update 2018-03-29 11:48:09 -04:00
Gabriel Guzman
a29b08073e Add pse file for openbsd 2018-03-29 09:41:45 -04:00
Ivan Kozlovic
effc6b1f3f Merge pull request #657 from nats-io/route-port-display
[FIXED] Random cluster port displayed as 0 instead of actual value
2018-03-23 17:17:48 -06:00
Ivan Kozlovic
c2a095581e Bump version for dev [ci skip] 2018-03-23 17:17:13 -06:00
Alberto Ricart
d76ae5c6e3 FIX to display actual port selected if -1 is provided in a cluster url such as --cluster nats://localhost:-1. 2018-03-23 17:36:33 -05:00
Ivan Kozlovic
705d8f5fe8 Fix last activity monitoring test
This test originally used only 1 connection. It was then modified
to use another connection to check the publishing effect into
the last activity. However, when polling for connz we were using
[0], but that may not necessarily match the connection we were
checking.
I don't think that there was a need for a new connection in this
test, so use a single connection.
2018-03-23 14:20:16 -06:00
Ivan Kozlovic
fb972bd0fc Remove ssl_required references 2018-03-23 13:40:10 -06:00
Ivan Kozlovic
8cb7c18204 Prepare for release 1.1.0 2018-03-23 11:53:04 -06:00
Derek Collison
b2a9ed97d6 Merge pull request #650 from nats-io/cncf
Move to CNCF and Apache 2 License
2018-03-16 16:23:10 -07:00
Ivan Kozlovic
c16a1dbcc7 Merge pull request #638 from nats-io/fix_632
[IMPROVED] Better attempt at delivering messages to queue subscriptions
2018-03-16 16:01:38 -06:00
Ivan Kozlovic
8d539a4bb0 Merge pull request #615 from nats-io/varz_func
[ADDED] Monitor endpoints as server methods (Varz(), etc..)
2018-03-16 15:46:01 -06:00
Ivan Kozlovic
4e9d785423 Capture possible error in Atoi conversion of url params 2018-03-16 10:42:52 -06:00
Derek Collison
00901acc78 Update license to Apache 2 2018-03-15 22:31:07 -07:00
Ivan Kozlovic
4aa04a6697 Merge pull request #644 from nats-io/fix-reload-open-files
[FIXED] Close old log files when reloading (log rotation)
2018-03-15 17:55:39 -06:00
Ivan Kozlovic
3bfb2d7cb4 Variant of copy and add some tests
Use the append([]*subscription(nil), qr...) notation instead of
make()+copy().
2018-03-15 14:54:10 -06:00
Colin Sullivan
920cdddfc8 Change log level to error 2018-03-14 10:29:44 -06:00
Colin Sullivan
bc59ad6ba7 Fix capitalization in log statement 2018-03-13 19:12:41 -06:00
Colin Sullivan
508ce2bcf3 implement io.Closer interface in the logger 2018-03-13 19:08:45 -06:00
Colin Sullivan
f7368bf903 Add config files 2018-03-13 15:38:52 -06:00
Colin Sullivan
182be3feb9 Close files on reload. 2018-03-13 15:31:45 -06:00
Ivan Kozlovic
a3e8fba6b3 Add options for each monitoring endpoint and added Connz
Even for endpoints that currently do not need options (such as
Subsz and Varz), I added some options and a return of error so that
we don't break the API if we ever need to add options for those.
2018-03-13 10:30:46 -06:00
Ivan Kozlovic
6f9983291c Update comments 2018-03-12 15:53:11 -06:00
Ivan Kozlovic
eb28cf0eda Do the copy only of the array of subscriptions that we add to the results
Instead of making a copy of the whole results, make sure that
we don't pass a sublist array to the result but its copy.
2018-03-10 08:35:15 -07:00
Ivan Kozlovic
c4470d4e68 Added Subsz and Routez and updated tests
In tests, replaced all code doing http.Get, etc.. with a readBody
helper function.
Combine server functions and monitor handler tests in one test
with a for loop to try both modes on a given test.

Still need to add Connz.
2018-03-09 20:48:43 -07:00
Tyler Treat
6c7d1dc847 Add Varz server method
Fixes #612 by adding a new Varz method to the Server. This can be used
by processes embedding gnatsd to access the Varz struct without relying
on the HTTP API. This starts with just Varz but the same pattern could
be expanded to other monitoring APIs in the future.
2018-03-09 19:37:56 -07:00
Ivan Kozlovic
668229fc1d [FIXED] RACE between sublist remove and go through match results
This would manifest for instance when server tries to send messages
to queue subscribers and a subscription is unsubsribed at the same
time.

Resolves #640
2018-03-09 19:05:33 -07:00
Ivan Kozlovic
ee8f001131 [IMPROVED] Better attempt at delivering messages to routed queue subs
This PR is based out of #633. It imroves parsing QRSID so that the
TestRouteQueueSemantics test now passes (when dealing with malformed
QRSID).
A test similar to what is reported in #632 was also added. This
test however, uncovers a race condition that will be fixed in a
separate PR.

Resolves #632
2018-03-09 14:45:52 -07:00
Ivan Kozlovic
1bd40f98d9 Merge branch 'master' of https://github.com/VidScale/gnatsd into VidScale-master 2018-03-09 14:42:22 -07:00
Ivan Kozlovic
999e0299d7 Remove unused code 2018-03-06 08:46:01 -07:00
Ivan Kozlovic
461ab96a58 Additional fix to #631
This is the result of flapping tests in go-nats that were caused
by a defect (see PR https://github.com/nats-io/go-nats/pull/348).
However, during debugging, I realize that there were also things
that were not quite right in the server side. This change should
make it the notification of cluster topology changes to clients
more robust.
2018-03-05 20:03:46 -07:00
Volodymyr Khoroz
791bfd4c37 [#632] - fix a race condition causing messages to be lost with non-zero max_msgs in a cluster 2018-03-05 18:36:24 +02:00
Ivan Kozlovic
33db08e1e9 Merge pull request #631 from nats-io/fix_connect_urls_notification_with_explicit_routes
[FIXED] Cluster toplogy change possibly not sent to clients
2018-03-04 14:54:54 -07:00
Ivan Kozlovic
3b5826455d Bump version to 1.0.7 [ci skip] 2018-03-04 14:50:47 -07:00
Ivan Kozlovic
aeca31ce51 [FIXED] Cluster toplogy change possibly not sent to clients
When a server accepts a route, it will keep track of that server
`connectURLs` array. However, if the server was creating a route
to that other server at the same time, it will promote the route
as a solicited one. The content of that array was not transfered,
which means that on a disconnect, it was possible that the cluster
topology change was not properly sent to clients.
2018-03-04 14:38:03 -07:00
Ivan Kozlovic
17f27ab90f Prepare for release v1.0.6
-Update Dockerfile Go version to 1.9.4
-Add ARM32v6 build of Docker image
2018-02-28 14:49:18 -07:00
Ivan Kozlovic
1acf330e07 [ADDED] Notification to clients when servers leave the cluster
Until now, a server would only notify clients of servers that join
the cluster. More than that, a server would send ot its clients only
information if new servers were added.
This PR changes this by sending to clients that support async INFO
the list of URLs for all servers in the cluster any time that there
is a change (joining or leaving the cluster).
As of now, clients will not be affected by the change (and will not
take benefit of this: removing servers from their server pool). This
will be addressed in each supported client once this is merged.
2018-02-27 14:22:13 -07:00
Ivan Kozlovic
f8f1f026e2 Merge pull request #624 from nats-io/injected-version
[ADDED] Print release's GitCommit in the banner
2018-02-26 09:25:05 -07:00
Ivan Kozlovic
163ba3f6a7 Merge pull request #608 from nats-io/fix_issue_447
[ADDED] Client and Cluster Advertise. Issue #447
2018-02-26 09:12:58 -07:00
Alberto Ricart
ce6a5e6c8c Merge remote-tracking branch 'origin/injected-version' into injected-version
- Renamed GitHash to gitCommit as per discussions with Ivan
- Set gitHash to 'not set' if not set (as in the case of a local build)

# Conflicts:
#	server/server.go
2018-02-21 19:24:40 -06:00
Alberto Ricart
68b7aa0155 [ADD] Added github.com/nats-io/gnatsd/server.GITHASH compile variable which allows for linker to inject the githash that gnatsd was built from. See https://husobee.github.io/golang/compile/time/variables/2015/12/03/compile-time-const.html. The githash is exposed on server startup (debug) and on /varz.
[FIX] Docker images were injecting the compile time variable `github.com/nats-io/gnatsd/version.GITCOMMIT`, however this is not referenced nor exposed anywhere.
2018-02-21 17:29:21 -06:00
Alberto Ricart
0bcc360de1 [ADD] Added github.com/nats-io/gnatsd/server.GITHASH compile variable which allows for linker to inject the githash that gnatsd was built from. See https://husobee.github.io/golang/compile/time/variables/2015/12/03/compile-time-const.html. The githash is exposed on server startup (debug) and on /varz.
[FIX] Docker images were injecting the compile time variable `github.com/nats-io/gnatsd/version.GITCOMMIT`, however this is not referenced nor exposed anywhere.
2018-02-21 17:26:41 -06:00
Ivan Kozlovic
acf4a31e4b Major updates + support for config reload of client/cluster advertise 2018-02-05 20:15:36 -07:00
Ivan Kozlovic
5a351c56ce Merge branch 'master' into add-server-id-to-routez-connz 2018-01-30 14:59:26 -07:00
Tyler Treat
379701758c Use correct log level for route errors
Also move route created log message to when the route has actually been
created successfully.
2017-12-11 08:10:42 -06:00
Peter Miron
306a3f9507 Resolving Ivan's feedback. 2017-11-29 15:35:05 -05:00