How to disconnect from MongoDB in a Perl script? How to disconnect from MongoDB in a Perl script? mongodb mongodb

How to disconnect from MongoDB in a Perl script?


I'm unable to reproduce this problem with MongoDB 2.4.1 and version 0.702.1 of the MongoDB driver from CPAN.

I ran your code with the sleep timeout changed to 10 seconds, connecting to localhost. After running for a couple minutes, running db.serverStatus() in the mongo shell continued to show just one connection. (That's the connection for the shell session.)

Here's the output from mongod showing the connections being opened and closed every ten seconds. (You can see that I fired up the shell after the first two connections cycled.)

Fri Aug 16 21:36:43.589 [conn1] end connection 127.0.0.1:57722 (0 connections now open)Fri Aug 16 21:36:53.526 [initandlisten] connection accepted from 127.0.0.1:57723 #2 (1 connection now open)Fri Aug 16 21:36:53.527 [conn2] end connection 127.0.0.1:57723 (0 connections now open)Fri Aug 16 21:36:58.421 [initandlisten] connection accepted from 127.0.0.1:57724 #3 (1 connection now open)Fri Aug 16 21:37:03.529 [initandlisten] connection accepted from 127.0.0.1:57725 #4 (2 connections now open)Fri Aug 16 21:37:03.529 [conn4] end connection 127.0.0.1:57725 (1 connection now open)Fri Aug 16 21:37:13.531 [initandlisten] connection accepted from 127.0.0.1:57726 #5 (2 connections now open)Fri Aug 16 21:37:13.532 [conn5] end connection 127.0.0.1:57726 (1 connection now open)Fri Aug 16 21:37:23.534 [initandlisten] connection accepted from 127.0.0.1:57727 #6 (2 connections now open)Fri Aug 16 21:37:23.535 [conn6] end connection 127.0.0.1:57727 (1 connection now open)Fri Aug 16 21:37:33.537 [initandlisten] connection accepted from 127.0.0.1:57728 #7 (2 connections now open)Fri Aug 16 21:37:33.538 [conn7] end connection 127.0.0.1:57728 (1 connection now open)Fri Aug 16 21:37:43.540 [initandlisten] connection accepted from 127.0.0.1:57729 #8 (2 connections now open)Fri Aug 16 21:37:43.540 [conn8] end connection 127.0.0.1:57729 (1 connection now open)Fri Aug 16 21:37:53.542 [initandlisten] connection accepted from 127.0.0.1:57730 #9 (2 connections now open)Fri Aug 16 21:37:53.543 [conn9] end connection 127.0.0.1:57730 (1 connection now open)Fri Aug 16 21:38:03.545 [initandlisten] connection accepted from 127.0.0.1:57731 #10 (2 connections now open)Fri Aug 16 21:38:03.545 [conn10] end connection 127.0.0.1:57731 (1 connection now open)Fri Aug 16 21:38:13.547 [initandlisten] connection accepted from 127.0.0.1:57732 #11 (2 connections now open)Fri Aug 16 21:38:13.548 [conn11] end connection 127.0.0.1:57732 (1 connection now open)Fri Aug 16 21:38:23.550 [initandlisten] connection accepted from 127.0.0.1:57734 #12 (2 connections now open)Fri Aug 16 21:38:23.550 [conn12] end connection 127.0.0.1:57734 (1 connection now open)Fri Aug 16 21:38:33.552 [initandlisten] connection accepted from 127.0.0.1:57735 #13 (2 connections now open)Fri Aug 16 21:38:33.553 [conn13] end connection 127.0.0.1:57735 (1 connection now open)Fri Aug 16 21:38:43.555 [initandlisten] connection accepted from 127.0.0.1:57736 #14 (2 connections now open)Fri Aug 16 21:38:43.555 [conn14] end connection 127.0.0.1:57736 (1 connection now open)Fri Aug 16 21:38:53.557 [initandlisten] connection accepted from 127.0.0.1:57737 #15 (2 connections now open)Fri Aug 16 21:38:53.559 [conn15] end connection 127.0.0.1:57737 (1 connection now open)Fri Aug 16 21:39:03.560 [initandlisten] connection accepted from 127.0.0.1:57738 #16 (2 connections now open)Fri Aug 16 21:39:03.561 [conn16] end connection 127.0.0.1:57738 (1 connection now open)Fri Aug 16 21:39:13.563 [initandlisten] connection accepted from 127.0.0.1:57740 #17 (2 connections now open)Fri Aug 16 21:39:13.564 [conn17] end connection 127.0.0.1:57740 (1 connection now open)Fri Aug 16 21:39:23.566 [initandlisten] connection accepted from 127.0.0.1:57741 #18 (2 connections now open)Fri Aug 16 21:39:23.567 [conn18] end connection 127.0.0.1:57741 (1 connection now open)Fri Aug 16 21:39:33.569 [initandlisten] connection accepted from 127.0.0.1:57747 #19 (2 connections now open)Fri Aug 16 21:39:33.570 [conn19] end connection 127.0.0.1:57747 (1 connection now open)Fri Aug 16 21:39:43.572 [initandlisten] connection accepted from 127.0.0.1:57748 #20 (2 connections now open)Fri Aug 16 21:39:43.573 [conn20] end connection 127.0.0.1:57748 (1 connection now open)Fri Aug 16 21:39:53.575 [initandlisten] connection accepted from 127.0.0.1:57750 #21 (2 connections now open)Fri Aug 16 21:39:53.576 [conn21] end connection 127.0.0.1:57750 (1 connection now open)Fri Aug 16 21:40:03.579 [initandlisten] connection accepted from 127.0.0.1:57751 #22 (2 connections now open)Fri Aug 16 21:40:03.579 [conn22] end connection 127.0.0.1:57751 (1 connection now open)Fri Aug 16 21:40:13.580 [initandlisten] connection accepted from 127.0.0.1:57753 #23 (2 connections now open)Fri Aug 16 21:40:13.581 [conn23] end connection 127.0.0.1:57753 (1 connection now open)Fri Aug 16 21:40:23.584 [initandlisten] connection accepted from 127.0.0.1:57754 #24 (2 connections now open)Fri Aug 16 21:40:23.584 [conn24] end connection 127.0.0.1:57754 (1 connection now open)Fri Aug 16 21:40:33.586 [initandlisten] connection accepted from 127.0.0.1:57755 #25 (2 connections now open)Fri Aug 16 21:40:33.586 [conn25] end connection 127.0.0.1:57755 (1 connection now open)Fri Aug 16 21:40:43.588 [initandlisten] connection accepted from 127.0.0.1:57758 #26 (2 connections now open)Fri Aug 16 21:40:43.588 [conn26] end connection 127.0.0.1:57758 (1 connection now open)Fri Aug 16 21:40:53.590 [initandlisten] connection accepted from 127.0.0.1:57760 #27 (2 connections now open)Fri Aug 16 21:40:53.591 [conn27] end connection 127.0.0.1:57760 (1 connection now open)Fri Aug 16 21:41:03.592 [initandlisten] connection accepted from 127.0.0.1:57761 #28 (2 connections now open)Fri Aug 16 21:41:03.593 [conn28] end connection 127.0.0.1:57761 (1 connection now open)

Can you let me know what version of MongoDB (the server) and MongoDB (the driver) you're using?


Change the subroutine as the following,

sub connectMongoDB{        my $client;        eval{                $client =  MongoDB::MongoClient->new( host => "mongodb://:\@$server",                      auto_connect => 0);                 $client->connect;        };          return (!$@)?1:0;}

The problem was the 'auto_reconnect' option all along.