У меня есть приложение Play на основе Scala, которое использует ReactiveMongo. Когда в режиме разработки происходит горячая перезагрузка, ReactiveMongo пропускает соединения. Например, вот фрагмент файлов журнала Mongo; Я добавил разрыв строки в журналы, чтобы указать каждый раз, когда происходила горячая перезагрузка (т.е. я сделал тривиальное изменение приложения и перезагрузил страницу в браузере)
2015-09-26T09:43:43.353-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58612 #1 (1 connection now open)
2015-09-26T09:43:43.725-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58613 #2 (2 connections now open)
2015-09-26T09:43:43.725-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58614 #3 (3 connections now open)
2015-09-26T09:43:43.725-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58615 #4 (4 connections now open)
2015-09-26T09:43:43.725-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58616 #5 (5 connections now open)
2015-09-26T09:43:43.726-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58617 #6 (6 connections now open)
2015-09-26T09:43:43.726-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58618 #7 (7 connections now open)
2015-09-26T09:43:43.726-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58619 #8 (8 connections now open)
2015-09-26T09:43:43.726-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58620 #9 (9 connections now open)
2015-09-26T09:43:43.726-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58621 #10 (10 connections now open)
2015-09-26T09:43:43.810-0700 I INDEX [conn1] build index on: sma.destination properties: { v: 1, unique: true, key: { id: 1 }, name: "idx_destination_id", ns: "sma.destination" }
2015-09-26T09:43:43.810-0700 I INDEX [conn1] building index using bulk method
2015-09-26T09:43:57.164-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58640 #11 (11 connections now open)
2015-09-26T09:43:57.169-0700 I NETWORK [conn11] end connection 127.0.0.1:58640 (10 connections now open)
2015-09-26T09:43:57.431-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58641 #12 (11 connections now open)
2015-09-26T09:43:57.435-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58642 #13 (12 connections now open)
2015-09-26T09:43:57.436-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58643 #14 (13 connections now open)
2015-09-26T09:43:57.436-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58644 #15 (14 connections now open)
2015-09-26T09:43:57.437-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58645 #16 (15 connections now open)
2015-09-26T09:43:57.437-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58646 #17 (16 connections now open)
2015-09-26T09:43:57.437-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58647 #18 (17 connections now open)
2015-09-26T09:43:57.437-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58648 #19 (18 connections now open)
2015-09-26T09:43:57.437-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58649 #20 (19 connections now open)
2015-09-26T09:43:57.437-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58650 #21 (20 connections now open)
2015-09-26T09:43:57.487-0700 I INDEX [conn14] build index on: sma.destination properties: { v: 1, unique: true, key: { id: 1 }, name: "idx_destination_id", ns: "sma.destination" }
2015-09-26T09:43:57.487-0700 I INDEX [conn14] building index using bulk method
2015-09-26T09:44:16.559-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58677 #22 (21 connections now open)
2015-09-26T09:44:16.560-0700 I NETWORK [conn22] end connection 127.0.0.1:58677 (20 connections now open)
2015-09-26T09:44:16.766-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58678 #23 (21 connections now open)
2015-09-26T09:44:16.770-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58679 #24 (22 connections now open)
2015-09-26T09:44:16.771-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58680 #25 (23 connections now open)
2015-09-26T09:44:16.771-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58681 #26 (24 connections now open)
2015-09-26T09:44:16.771-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58682 #27 (25 connections now open)
2015-09-26T09:44:16.772-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58683 #28 (26 connections now open)
2015-09-26T09:44:16.772-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58684 #29 (27 connections now open)
2015-09-26T09:44:16.772-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58685 #30 (28 connections now open)
2015-09-26T09:44:16.772-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58686 #31 (29 connections now open)
2015-09-26T09:44:16.772-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58687 #32 (30 connections now open)
2015-09-26T09:44:16.791-0700 I INDEX [conn24] build index on: sma.destination properties: { v: 1, unique: true, key: { id: 1 }, name: "idx_destination_id", ns: "sma.destination" }
2015-09-26T09:44:16.792-0700 I INDEX [conn24] building index using bulk method
Вы можете видеть, что ReactiveMongo создает пул из 10 соединений каждый раз, когда происходит горячая перезагрузка; предыдущие 10 соединений не очищаются. В конце концов он достигает максимального количества подключений (в настоящее время ~ 200), а затем монго становится недоступным, пока я не перезапущу.
Предположительно, этого не произошло бы в prod, но меня немного нервирует то, что это происходит в первую очередь в dev. Есть ли способ закрыть эти соединения, когда приложение перезагружается?