@@ -872,14 +872,20 @@ func (s *Session) String() string {
872872 if cluster == nil {
873873 return "<closed session>"
874874 }
875- servers := cluster .servers .Slice ()
876- allHosts := make ([]string , 0 , len (servers ))
877- for _ , server := range servers {
878- allHosts = append (allHosts , server .Addr )
879- }
875+ allHosts := func () []string {
876+ cluster .Lock ()
877+ defer cluster .Unlock ()
878+
879+ servers := cluster .servers .Slice ()
880+ hosts := make ([]string , 0 , len (servers ))
881+ for _ , server := range servers {
882+ hosts = append (hosts , server .Addr )
883+ }
884+ return hosts
885+ }()
880886 sort .Strings (allHosts )
881887
882- dedupHosts := make ([]string , 0 , len (servers ))
888+ dedupHosts := make ([]string , 0 , len (allHosts ))
883889 for i , host := range allHosts {
884890 if (i == 0 ) || (allHosts [i - 1 ] != host ) {
885891 dedupHosts = append (dedupHosts , host )
@@ -3993,7 +3999,7 @@ func (db *Database) run(socket *mongoSocket, cmd, result interface{}) (err error
39933999 if result != nil {
39944000 err = bson .Unmarshal (data , result )
39954001 if err != nil {
3996- debugf ("Run command unmarshaling failed: %#v" , op , err )
4002+ debugf ("Run command unmarshaling failed %#v : %#v" , op , err )
39974003 return err
39984004 }
39994005 if globalDebug && globalLogger != nil {
0 commit comments