{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":6443435,"defaultBranch":"main","name":"nats-server","ownerLogin":"nats-io","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-10-29T16:12:24.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10203055?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715274200.0","currentOid":""},"activityList":{"items":[{"before":"3470884ab4587b807d440bd66a1d56c273664d9b","after":null,"ref":"refs/heads/issue_5387","pushedAt":"2024-05-09T17:03:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"}},{"before":"e7d3a906f28e87093ae61782767a12d0779c58f8","after":"006593f62b300a339fc38804ba8d150df971634f","ref":"refs/heads/main","pushedAt":"2024-05-09T17:03:19.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"[ADDED] Allowed connection type \"in process\" (#5395)\n\nWith the JWT library update, there is now a\r\n`jwt.ConnectionTypeInProcess` connection type that can be added to the\r\nlist of allowed connection types when defining an user. If the list is\r\nnot empty and does not have this type, an \"in process\" connection will\r\nnot be allowed.\r\n\r\nConversely, it is now possible to limit a user to be used only for in\r\nprocess connections (or several types based on the content of the list).\r\n\r\nPossible solution for #5387\r\n\r\nSigned-off-by: Ivan Kozlovic ","shortMessageHtmlLink":"[ADDED] Allowed connection type \"in process\" (#5395)"}},{"before":"63204b79ae5a051bafacbeb05278a298dcd16c2b","after":null,"ref":"refs/heads/ws_cli_info","pushedAt":"2024-05-09T17:02:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"}},{"before":"4bf29a90da92cf514a6960da17d8d00f066ad62c","after":"e7d3a906f28e87093ae61782767a12d0779c58f8","ref":"refs/heads/main","pushedAt":"2024-05-09T17:02:10.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"[IMPROVED] Websocket: generating INFO to send to clients (#5405)\n\nPR #4255 added code in generateClientInfoJSON to set the proper info\r\nHost/Port/TLSAvailable/TLSRequired fields to send to clients.\r\n\r\nHowever, this was requiring a lock but more importantly was computing\r\nthe listener's host/port everytime, which is not necessary since this is\r\nimmutable because we don't support the change during a config reload.\r\n\r\nAlso, the TLSRequired field was set based on the server TLSConfig's\r\nInsecureSkipVerify value, which is irrelevant for a server. The mere\r\npresence of a TLSConfig (c.srv.websocket.tls being true) is enough.\r\n\r\nI have modified the TestWSReloadTLSConfig test to verify that the tls\r\nblock cannot be removed and no_tls set to true, which means that tls\r\nvalue can't change. I also added check for the info's\r\nHost/Port/TLSAvailable/TLSRequired values.\r\n\r\nSigned-off-by: Ivan Kozlovic ","shortMessageHtmlLink":"[IMPROVED] Websocket: generating INFO to send to clients (#5405)"}},{"before":"6ae4fb781dadb4a8e6c0bb1ce8f276af4b61cc10","after":"3470884ab4587b807d440bd66a1d56c273664d9b","ref":"refs/heads/issue_5387","pushedAt":"2024-05-09T16:32:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kozlovic","name":"Ivan Kozlovic","path":"/kozlovic","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13736691?s=80&v=4"},"commit":{"message":"Updated go.mod to new JWT release and added JWT test\n\nSigned-off-by: Ivan Kozlovic ","shortMessageHtmlLink":"Updated go.mod to new JWT release and added JWT test"}},{"before":null,"after":"63204b79ae5a051bafacbeb05278a298dcd16c2b","ref":"refs/heads/ws_cli_info","pushedAt":"2024-05-09T16:29:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kozlovic","name":"Ivan Kozlovic","path":"/kozlovic","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13736691?s=80&v=4"},"commit":{"message":"[IMPROVED] Websocket: generating INFO to send to clients\n\nPR #4255 added code in generateClientInfoJSON to set the proper\ninfo Host/Port/TLSAvailable/TLSRequired fields to send to clients.\n\nHowever, this was requiring a lock but more importantly was computing\nthe listener's host/port everytime, which is not necessary since\nthis is immutable because we don't support the change during a config\nreload.\n\nAlso, the TLSRequired field was set based on the server TLSConfig's\nInsecureSkipVerify value, which is irrelevant for a server. The\nmere presence of a TLSConfig (c.srv.websocket.tls being true) is\nenough.\n\nI have modified the TestWSReloadTLSConfig test to verify that the\ntls block cannot be removed and no_tls set to true, which means\nthat tls value can't change. I also added check for the info's\nHost/Port/TLSAvailable/TLSRequired values.\n\nSigned-off-by: Ivan Kozlovic ","shortMessageHtmlLink":"[IMPROVED] Websocket: generating INFO to send to clients"}},{"before":"6b385ee76d9e68b984e7363409d390ebca303455","after":null,"ref":"refs/heads/bump-go-version-v2-10","pushedAt":"2024-05-09T15:35:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"}},{"before":"0ea01ad4770130310468c896513f9d73f1213326","after":"e81d4e5b011d1a4ed3d01d8af40e80dafe69e559","ref":"refs/heads/release/v2.10.15","pushedAt":"2024-05-09T15:35:38.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Bump Go versions for v2.10 (#5404)","shortMessageHtmlLink":"Bump Go versions for v2.10 (#5404)"}},{"before":null,"after":"6b385ee76d9e68b984e7363409d390ebca303455","ref":"refs/heads/bump-go-version-v2-10","pushedAt":"2024-05-09T14:51:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Bump Go version\n\nSigned-off-by: Waldemar Quevedo ","shortMessageHtmlLink":"Bump Go version"}},{"before":null,"after":"f1f04f52858c406eb374a27c8b006835429f7924","ref":"refs/heads/bump-go-version","pushedAt":"2024-05-09T14:49:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Bump Go versions\n\nSigned-off-by: Waldemar Quevedo ","shortMessageHtmlLink":"Bump Go versions"}},{"before":"ff8c5204450887d4e49efd1a919e364e12adc1f2","after":"0ea01ad4770130310468c896513f9d73f1213326","ref":"refs/heads/release/v2.10.15","pushedAt":"2024-05-09T14:45:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Bump to 2.10.15-RC.10\n\nSigned-off-by: Waldemar Quevedo ","shortMessageHtmlLink":"Bump to 2.10.15-RC.10"}},{"before":"185d1e9984063d6cf98211a0f0c214b8f9b14499","after":null,"ref":"refs/heads/downstream/v2.10.15","pushedAt":"2024-05-09T14:41:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"}},{"before":"4938e2ca39fef2183ee55ae2eea7cab2889813a4","after":"ff8c5204450887d4e49efd1a919e364e12adc1f2","ref":"refs/heads/release/v2.10.15","pushedAt":"2024-05-09T14:41:10.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Cherry picks for v2.10.15 RC.10 (#5402)\n\nIncludes:\r\n\r\n- https://github.com/nats-io/nats-server/pull/5401","shortMessageHtmlLink":"Cherry picks for v2.10.15 RC.10 (#5402)"}},{"before":null,"after":"185d1e9984063d6cf98211a0f0c214b8f9b14499","ref":"refs/heads/downstream/v2.10.15","pushedAt":"2024-05-09T14:37:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Improve LoadNextMsg performance.\n\n1. If we think out filter matches our stream do linear since first should match.\n2. If literal, make sure to look up directly from fss and uses ss.First as fseq, bypass other logic.\n3. Only do fss scan if len(fss) is 25% of scan range.\n\nSigned-off-by: Derek Collison ","shortMessageHtmlLink":"Improve LoadNextMsg performance."}},{"before":"a895101527b9faab90589535c5ef70dceed8b346","after":"4bf29a90da92cf514a6960da17d8d00f066ad62c","ref":"refs/heads/main","pushedAt":"2024-05-09T14:05:49.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"[IMPROVED] LoadNextMsg performance. (#5401)\n\n1. If we think out filter matches our stream do linear since first\r\nshould match.\r\n2. If literal, make sure to look up directly from fss and uses ss.First\r\nas fseq, bypass other logic.\r\n3. Only do fss scan if len(fss) is 25% of scan range.\r\n\r\nSigned-off-by: Derek Collison ","shortMessageHtmlLink":"[IMPROVED] LoadNextMsg performance. (#5401)"}},{"before":"5d4239e6453451754921526ee4756aad2c0bec17","after":null,"ref":"refs/heads/fs-loadnext-perf","pushedAt":"2024-05-09T14:05:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"}},{"before":"06a9532d15c9c102541b5adf4c0e3c27f3c855c7","after":"5d4239e6453451754921526ee4756aad2c0bec17","ref":"refs/heads/fs-loadnext-perf","pushedAt":"2024-05-09T07:58:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"Improve LoadNextMsg performance.\n\n1. If we think out filter matches our stream do linear since first should match.\n2. If literal, make sure to look up directly from fss and uses ss.First as fseq, bypass other logic.\n3. Only do fss scan if len(fss) is 25% of scan range.\n\nSigned-off-by: Derek Collison ","shortMessageHtmlLink":"Improve LoadNextMsg performance."}},{"before":"16a9b1a448d206b33d5ee81937340df3506f1be7","after":"06a9532d15c9c102541b5adf4c0e3c27f3c855c7","ref":"refs/heads/fs-loadnext-perf","pushedAt":"2024-05-09T07:28:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"Improve LoadNextMsg performance.\n\n1. If we think out filter matches our stream do linear since first should match.\n2. If literal, make sure to look up directly from fss and uses ss.First as fseq, bypass other logic.\n3. Only do fss scan if len(fss) is 25% of scan range.\n\nSigned-off-by: Derek Collison ","shortMessageHtmlLink":"Improve LoadNextMsg performance."}},{"before":"23cef9a2278a7e50110778256d616afe6be1b170","after":"16a9b1a448d206b33d5ee81937340df3506f1be7","ref":"refs/heads/fs-loadnext-perf","pushedAt":"2024-05-09T07:15:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"Improve LoadNextMsg performance.\n\n1. If we think out filter matches our stream do linear since first should match.\n2. If literal, look up directly from fss and uses ss.First as fseq, bypass other logic.\n3. Only do fss scan if len(fss) is 25% of scan range.\n\nSigned-off-by: Derek Collison ","shortMessageHtmlLink":"Improve LoadNextMsg performance."}},{"before":null,"after":"23cef9a2278a7e50110778256d616afe6be1b170","ref":"refs/heads/fs-loadnext-perf","pushedAt":"2024-05-09T06:57:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"Improve LoadNextMsg performance.\n\n1. If we think out filter matches our stream do linear since first should match.\n2. If literal, look up directly from fss and uses ss.First as fseq, bypass other logic.\n3. Only do fss scan if len(fss) is 25% of scan range.\n\nSigned-off-by: Derek Collison ","shortMessageHtmlLink":"Improve LoadNextMsg performance."}},{"before":"3e11f5582c9f7b200f04c3b3e797226809a32bc0","after":"4938e2ca39fef2183ee55ae2eea7cab2889813a4","ref":"refs/heads/release/v2.10.15","pushedAt":"2024-05-09T00:13:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Bump to 2.10.15-RC.9\n\nSigned-off-by: Waldemar Quevedo ","shortMessageHtmlLink":"Bump to 2.10.15-RC.9"}},{"before":"f3de3c0e94373f61f392e8efcfd553b8dd7bfa4a","after":null,"ref":"refs/heads/downstream/v2.10.15","pushedAt":"2024-05-09T00:10:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"}},{"before":"5b13c0b1de19f01eb7b1065bb098c7a1aed95fd1","after":"3e11f5582c9f7b200f04c3b3e797226809a32bc0","ref":"refs/heads/release/v2.10.15","pushedAt":"2024-05-09T00:10:38.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Cherry picks for v2.10.15 RC.9 (#5400)\n\nIncludes:\r\n\r\n- https://github.com/nats-io/nats-server/pull/5398\r\n- https://github.com/nats-io/nats-server/pull/5399","shortMessageHtmlLink":"Cherry picks for v2.10.15 RC.9 (#5400)"}},{"before":"49177058a503132d258d9d1fb8f8a09af3a3aaca","after":"f3de3c0e94373f61f392e8efcfd553b8dd7bfa4a","ref":"refs/heads/downstream/v2.10.15","pushedAt":"2024-05-08T23:55:50.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"wallyqs","name":"Waldemar Quevedo","path":"/wallyqs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26195?s=80&v=4"},"commit":{"message":"Made a function to close the websocket server\n\nThe function returns 1 if the server was running 0 otherwise, this\nis used by the caller to increase the number of things to wait for\non shutdown.\nDid capture the server under the lock and close outside - just in case.\n\nSigned-off-by: Ivan Kozlovic ","shortMessageHtmlLink":"Made a function to close the websocket server"}},{"before":"d93f296c828608faf69ef618d05fefef23f2a403","after":"e1753c12caf8166a0b0344f80d57a5de4b639c74","ref":"refs/heads/pedantic","pushedAt":"2024-05-08T23:35:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Jarema","name":"Tomasz Pietrek","path":"/Jarema","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7369771?s=80&v=4"},"commit":{"message":"Add pedantic mode\n\nPedantic mode intention has been added to all paths.\nNow it need to be properly handled and tested\n\nSigned-off-by: Tomasz Pietrek ","shortMessageHtmlLink":"Add pedantic mode"}},{"before":"58b8662dc77d4880fe2c451769b284a9b30d5a97","after":null,"ref":"refs/heads/fix_some_data_races","pushedAt":"2024-05-08T02:46:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"}},{"before":"d1a1b9bcc0dfb7e9c2ff7424cb56d4f0d89470d0","after":"a895101527b9faab90589535c5ef70dceed8b346","ref":"refs/heads/main","pushedAt":"2024-05-08T02:46:25.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"[FIXED] Data races websocket/shutdown, DisconnectClientByID and LDMClientByID (#5398)\n\nSaw a data race in Travis during a websocket test during shutdown:\r\n```\r\n==================\r\nWARNING: DATA RACE\r\nWrite at 0x00c004430618 by goroutine 112330:\r\n github.com/nats-io/nats-server/v2/server.(*Server).Shutdown()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/server.go:2527 +0x87e\r\n github.com/nats-io/nats-server/v2/server.TestWSTLSConnection.deferwrap1()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket_test.go:2223 +0x33\r\n runtime.deferreturn()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/runtime/panic.go:602 +0x5d\r\n testing.tRunner()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1689 +0x21e\r\n testing.(*T).Run.gowrap1()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1742 +0x44\r\nPrevious read at 0x00c004430618 by goroutine 112339:\r\n github.com/nats-io/nats-server/v2/server.(*client).generateClientInfoJSON()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/client.go:2389 +0x406\r\n github.com/nats-io/nats-server/v2/server.(*Server).createWSClient()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket.go:1280 +0xb24\r\n github.com/nats-io/nats-server/v2/server.(*Server).startWebsocketServer.func1()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket.go:1184 +0x1db\r\n net/http.HandlerFunc.ServeHTTP()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:2166 +0x47\r\n net/http.(*ServeMux).ServeHTTP()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:2683 +0x1ef\r\n net/http.serverHandler.ServeHTTP()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:3137 +0x2a1\r\n net/http.(*conn).serve()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:2039 +0x13c4\r\n net/http.(*Server).Serve.gowrap3()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:3285 +0x4f\r\nGoroutine 112330 (running) created at:\r\n testing.(*T).Run()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1742 +0x825\r\n testing.runTests.func1()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:2161 +0x85\r\n testing.tRunner()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1689 +0x21e\r\n testing.runTests()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:2159 +0x8be\r\n testing.(*M).Run()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:2027 +0xf17\r\n github.com/nats-io/nats-server/v2/server.TestMain()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/sublist_test.go:1602 +0x416\r\n main.main()\r\n _testmain.go:2281 +0x2d4\r\nGoroutine 112339 (running) created at:\r\n net/http.(*Server).Serve()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:3285 +0x8ec\r\n github.com/nats-io/nats-server/v2/server.(*Server).startWebsocketServer.func2()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket.go:1208 +0x5b\r\n==================\r\n\r\n==================\r\nWARNING: DATA RACE\r\nWrite at 0x00c004430620 by goroutine 112330:\r\n github.com/nats-io/nats-server/v2/server.(*Server).Shutdown()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/server.go:2528 +0x8c4\r\n github.com/nats-io/nats-server/v2/server.TestWSTLSConnection.deferwrap1()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket_test.go:2223 +0x33\r\n runtime.deferreturn()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/runtime/panic.go:602 +0x5d\r\n testing.tRunner()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1689 +0x21e\r\n testing.(*T).Run.gowrap1()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1742 +0x44\r\nPrevious read at 0x00c004430620 by goroutine 112339:\r\n github.com/nats-io/nats-server/v2/server.(*client).generateClientInfoJSON()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/client.go:2394 +0x506\r\n github.com/nats-io/nats-server/v2/server.(*Server).createWSClient()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket.go:1280 +0xb24\r\n github.com/nats-io/nats-server/v2/server.(*Server).startWebsocketServer.func1()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket.go:1184 +0x1db\r\n net/http.HandlerFunc.ServeHTTP()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:2166 +0x47\r\n net/http.(*ServeMux).ServeHTTP()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:2683 +0x1ef\r\n net/http.serverHandler.ServeHTTP()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:3137 +0x2a1\r\n net/http.(*conn).serve()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:2039 +0x13c4\r\n net/http.(*Server).Serve.gowrap3()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:3285 +0x4f\r\nGoroutine 112330 (running) created at:\r\n testing.(*T).Run()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1742 +0x825\r\n testing.runTests.func1()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:2161 +0x85\r\n testing.tRunner()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:1689 +0x21e\r\n testing.runTests()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:2159 +0x8be\r\n testing.(*M).Run()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/testing/testing.go:2027 +0xf17\r\n github.com/nats-io/nats-server/v2/server.TestMain()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/sublist_test.go:1602 +0x416\r\n main.main()\r\n _testmain.go:2281 +0x2d4\r\nGoroutine 112339 (running) created at:\r\n net/http.(*Server).Serve()\r\n /home/travis/.gimme/versions/go1.22.2.linux.amd64/src/net/http/server.go:3285 +0x8ec\r\n github.com/nats-io/nats-server/v2/server.(*Server).startWebsocketServer.func2()\r\n /home/travis/gopath/src/github.com/nats-io/nats-server/server/websocket.go:1208 +0x5b\r\n==================\r\n\r\n```\r\n\r\nThen from code inspection, also saw possible data races in\r\nDisconnectClientByID and LDMClientByID so added to the test\r\n`TestServerEventsLDMKick` and saw those:\r\n```\r\n==================\r\nWARNING: DATA RACE\r\nWrite at 0x00c000099320 by goroutine 491:\r\n runtime.mapaccess2_fast64()\r\n /usr/local/go/src/runtime/map_fast64.go:53 +0x1cc\r\n github.com/nats-io/nats-server/v2/server.(*Server).createClientEx()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3191 +0x9cc\r\n github.com/nats-io/nats-server/v2/server.(*Server).createClient()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3064 +0x40\r\n github.com/nats-io/nats-server/v2/server.(*Server).AcceptLoop.func2()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:2682 +0x18\r\n github.com/nats-io/nats-server/v2/server.(*Server).acceptConnections.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:2734 +0x70\r\n github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3785 +0x58\r\n\r\nPrevious read at 0x00c000099320 by goroutine 473:\r\n runtime.evacuate_fast32()\r\n /usr/local/go/src/runtime/map_fast32.go:374 +0x38c\r\n github.com/nats-io/nats-server/v2/server.(*Server).LDMClientByID()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:4457 +0x208\r\n github.com/nats-io/nats-server/v2/server.(*Server).ldmClient.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:2823 +0x44\r\n github.com/nats-io/nats-server/v2/server.(*Server).zReq()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:1935 +0x1bc\r\n github.com/nats-io/nats-server/v2/server.(*Server).ldmClient()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:2822 +0x230\r\n github.com/nats-io/nats-server/v2/server.(*Server).ldmClient-fm()\r\n :1 +0xa0\r\n github.com/nats-io/nats-server/v2/server.(*Server).internalReceiveLoop()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:424 +0x380\r\n github.com/nats-io/nats-server/v2/server.(*Server).setSystemAccount.func5()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:1755 +0x34\r\n\r\nGoroutine 491 (running) created at:\r\n github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3783 +0x160\r\n github.com/nats-io/nats-server/v2/server.(*Server).acceptConnections()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:2732 +0x154\r\n github.com/nats-io/nats-server/v2/server.(*Server).AcceptLoop.func9()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:2682 +0x70\r\n\r\nGoroutine 473 (running) created at:\r\n github.com/nats-io/nats-server/v2/server.(*Server).setSystemAccount()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:1755 +0x654\r\n github.com/nats-io/nats-server/v2/server.TestServerEventsLDMKick()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events_test.go:3433 +0xc4\r\n testing.tRunner()\r\n /usr/local/go/src/testing/testing.go:1595 +0x1b0\r\n testing.(*T).Run.func1()\r\n /usr/local/go/src/testing/testing.go:1648 +0x40\r\n==================\r\n```\r\n\r\n```\r\n==================\r\nWARNING: DATA RACE\r\nWrite at 0x00c00015d7a0 by goroutine 3115:\r\n runtime.mapassign_fast64ptr()\r\n /usr/local/go/src/runtime/map_fast64.go:183 +0x35c\r\n github.com/nats-io/nats-server/v2/server.(*Server).removeClient()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3474 +0x114\r\n github.com/nats-io/nats-server/v2/server.(*client).closeConnection()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/client.go:5468 +0x3d4\r\n github.com/nats-io/nats-server/v2/server.(*client).authViolation()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/client.go:2214 +0x4e8\r\n github.com/nats-io/nats-server/v2/server.(*client).processConnect()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/client.go:2104 +0xbcc\r\n github.com/nats-io/nats-server/v2/server.(*client).parse()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/parser.go:942 +0xe90\r\n github.com/nats-io/nats-server/v2/server.(*client).readLoop()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/client.go:1388 +0x13a4\r\n github.com/nats-io/nats-server/v2/server.(*Server).createClientEx.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3300 +0x50\r\n github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3785 +0x58\r\n\r\nPrevious read at 0x00c00015d7a0 by goroutine 3096:\r\n runtime.evacuate_fast32()\r\n /usr/local/go/src/runtime/map_fast32.go:374 +0x38c\r\n github.com/nats-io/nats-server/v2/server.(*Server).DisconnectClientByID()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:4444 +0x4c\r\n github.com/nats-io/nats-server/v2/server.(*Server).kickClient.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:2805 +0x44\r\n github.com/nats-io/nats-server/v2/server.(*Server).zReq()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:1935 +0x1bc\r\n github.com/nats-io/nats-server/v2/server.(*Server).kickClient()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:2804 +0x230\r\n github.com/nats-io/nats-server/v2/server.(*Server).kickClient-fm()\r\n :1 +0xa0\r\n github.com/nats-io/nats-server/v2/server.(*Server).internalReceiveLoop()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events.go:424 +0x380\r\n github.com/nats-io/nats-server/v2/server.(*Server).setSystemAccount.func5()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:1755 +0x34\r\n\r\nGoroutine 3115 (running) created at:\r\n github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3783 +0x160\r\n github.com/nats-io/nats-server/v2/server.(*Server).createClientEx()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3300 +0x13e4\r\n github.com/nats-io/nats-server/v2/server.(*Server).createClient()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3064 +0x40\r\n github.com/nats-io/nats-server/v2/server.(*Server).AcceptLoop.func2()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:2682 +0x18\r\n github.com/nats-io/nats-server/v2/server.(*Server).acceptConnections.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:2734 +0x70\r\n github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:3785 +0x58\r\n\r\nGoroutine 3096 (running) created at:\r\n github.com/nats-io/nats-server/v2/server.(*Server).setSystemAccount()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/server.go:1755 +0x654\r\n github.com/nats-io/nats-server/v2/server.TestServerEventsLDMKick()\r\n /Users/ivan/dev/go/src/github.com/nats-io/nats-server/server/events_test.go:3433 +0xc4\r\n testing.tRunner()\r\n /usr/local/go/src/testing/testing.go:1595 +0x1b0\r\n testing.(*T).Run.func1()\r\n /usr/local/go/src/testing/testing.go:1648 +0x40\r\n==================\r\n```\r\n\r\nSigned-off-by: Ivan Kozlovic ","shortMessageHtmlLink":"[FIXED] Data races websocket/shutdown, DisconnectClientByID and LDMCl…"}},{"before":"3589ff5e68c7a449a0b95fcdbbe16a5d8e869d93","after":"d1a1b9bcc0dfb7e9c2ff7424cb56d4f0d89470d0","ref":"refs/heads/main","pushedAt":"2024-05-08T02:32:06.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"},"commit":{"message":"[IMPROVED] Improve mux'd routes with large subject space. (#5399)\n\nMoved account expired check to atomic.\r\nSlightly increased cache size and floor threshold for route acc result\r\ncache. Make sure to prune first, then add new entry to avoid immediate\r\nrecycling. Also moved account lock to read lock for selectMappedSubject.\r\n\r\nSigned-off-by: Derek Collison ","shortMessageHtmlLink":"[IMPROVED] Improve mux'd routes with large subject space. (#5399)"}},{"before":"a262df14940627601a991867c7c8bf9c171ecfc8","after":null,"ref":"refs/heads/acc-locks","pushedAt":"2024-05-08T02:32:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"derekcollison","name":"Derek Collison","path":"/derekcollison","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/90097?s=80&v=4"}},{"before":"a1a72263338df46184b1cc76ef4e2e8eecf0699e","after":"58b8662dc77d4880fe2c451769b284a9b30d5a97","ref":"refs/heads/fix_some_data_races","pushedAt":"2024-05-08T02:24:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kozlovic","name":"Ivan Kozlovic","path":"/kozlovic","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13736691?s=80&v=4"},"commit":{"message":"Made a function to close the websocket server\n\nThe function returns 1 if the server was running 0 otherwise, this\nis used by the caller to increase the number of things to wait for\non shutdown.\nDid capture the server under the lock and close outside - just in case.\n\nSigned-off-by: Ivan Kozlovic ","shortMessageHtmlLink":"Made a function to close the websocket server"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERdUeTwA","startCursor":null,"endCursor":null}},"title":"Activity · nats-io/nats-server"}