MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Golang / MGO -- panico:nessun server raggiungibile

Esegui la seguente versione del tuo codice pubblicato. Cerca di non modificare il codice, almeno non cambiando la posizione dei numeri di riga. In questo modo, se pubblichi uno stacktrace, i numeri corrisponderanno.

package main

import (
    "fmt"
    "time"
)

import (
    "labix.org/v2/mgo"
)

func connectToMongo() bool {
    ret := false
    fmt.Println("enter main - connecting to mongo")

    // tried doing this - doesn't work as intended
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Detected panic")
            var ok bool
            err, ok := r.(error)
            if !ok {
                fmt.Printf("pkg:  %v,  error: %s", r, err)
            }
        }
    }()

    maxWait := time.Duration(5 * time.Second)
    session, sessionErr := mgo.DialWithTimeout("localhost:27017", maxWait)
    if sessionErr == nil {
        session.SetMode(mgo.Monotonic, true)
        coll := session.DB("MyDB").C("MyCollection")
        if ( coll != nil ) {
            fmt.Println("Got a collection object")
            ret = true
        }
    } else { // never gets here
        fmt.Println("Unable to connect to local mongo instance!")
    }
    return ret
}

func main() {
    if ( connectToMongo() ) {
        fmt.Println("Connected")
    } else {
        fmt.Println("Not Connected")
    }
}

Quando MongoDB è attivo, vedo:

enter main - connecting to mongo
Got a collection object
Connected

Quando MongoDB è inattivo, vedo:

enter main - connecting to mongo
Unable to connect to local mongo instance!
Not Connected

Se non vedi lo stesso comportamento, pubblica l'output, incluso il panico che vedi.