Documentation ¶
Index ¶
- Constants
- Variables
- func AcquireGlobalLock(id string) (bool, error)
- func Aggregate(collection string, pipeline interface{}, out interface{}) error
- func Clear(collection string) error
- func ClearCollections(collections ...string) error
- func Count(collection string, query interface{}) (int, error)
- func CountQ(collection string, q Q) (int, error)
- func FindAll(collection string, query interface{}, projection interface{}, sort []string, ...) error
- func FindAllQ(collection string, q Q, out interface{}) error
- func FindAndModify(collection string, query interface{}, sort []string, change mgo.Change, ...) (*mgo.ChangeInfo, error)
- func FindOne(collection string, query interface{}, projection interface{}, sort []string, ...) error
- func FindOneQ(collection string, q Q, out interface{}) error
- func GetGridFile(fsPrefix, name string) (io.ReadCloser, error)
- func GetNewBuildVariantBuildNumber(buildVariant string) (uint64, error)
- func GetNewBuildVariantTaskNumber(buildVariant string) (uint64, error)
- func InitializeGlobalLock() error
- func Insert(collection string, item interface{}) error
- func ReleaseGlobalLock(id string) error
- func Remove(collection string, query interface{}) error
- func RemoveAll(collection string, query interface{}) error
- func RemoveAllQ(collection string, q Q) error
- func SetGlobalSessionProvider(sessionProvider SessionProvider)
- func Update(collection string, query interface{}, update interface{}) error
- func UpdateAll(collection string, query interface{}, update interface{}) (*mgo.ChangeInfo, error)
- func UpdateId(collection string, id, update interface{}) error
- func Upsert(collection string, query interface{}, update interface{}) (*mgo.ChangeInfo, error)
- func WaitTillAcquireGlobalLock(id string, timeoutMS time.Duration) (bool, error)
- func WriteGridFile(fsPrefix, name string, source io.Reader) error
- type Global
- type Lock
- type Q
- type SessionFactory
- type SessionProvider
Constants ¶
const ( LockCollection = "lock" GlobalLockId = "global" LockTimeout = time.Minute * 8 )
const (
GlobalsCollection = "globals"
)
Variables ¶
var ( NoProjection = bson.M{} NoSort = []string{} NoSkip = 0 NoLimit = 0 )
Functions ¶
func AcquireGlobalLock ¶
AcquireGlobalLock attempts to acquire the global lock if no one has it or it's timed out. Returns a boolean indicating whether the lock was acquired.
func Aggregate ¶
Aggregate runs an aggregation pipeline on a collection and unmarshals the results to the given "out" interface (usually a pointer to an array of structs/bson.M)
func ClearCollections ¶
ClearCollections clears all documents from all the specified collections, returning an error immediately if clearing any one of them fails.
func FindAll ¶
func FindAll(collection string, query interface{}, projection interface{}, sort []string, skip int, limit int, out interface{}) error
FindAll finds the items from the specified collection and unmarshals them into the provided interface, which must be a slice.
func FindAllQ ¶
FindAllQ runs a Q query against the given collection, applying the results to "out."
func FindAndModify ¶
func FindAndModify(collection string, query interface{}, sort []string, change mgo.Change, out interface{}) (*mgo.ChangeInfo, error)
FindAndModify runs the specified query and change against the collection, unmarshaling the result into the specified interface.
func FindOne ¶
func FindOne(collection string, query interface{}, projection interface{}, sort []string, out interface{}) error
FindOne finds one item from the specified collection and unmarshals it into the provided interface, which must be a pointer.
func FindOneQ ¶
FindOneQ runs a Q query against the given collection, applying the results to "out." Only reads one document from the DB.
func GetGridFile ¶
func GetGridFile(fsPrefix, name string) (io.ReadCloser, error)
GetGridFile returns a ReadCloser for a file stored with the given name under the GridFS prefix.
func GetNewBuildVariantBuildNumber ¶
GetNewBuildVariantBuildNumber atomically gets a new number for a build, given its variant name.
func GetNewBuildVariantTaskNumber ¶
GetNewBuildVariantTaskNumber atomically gets a new number for a task, given its variant name.
func InitializeGlobalLock ¶
func InitializeGlobalLock() error
InitializeGlobalLock should be called once, at program initialization.
func ReleaseGlobalLock ¶
ReleaseGlobalLock relinquishes the global lock for the given id.
func RemoveAllQ ¶
RemoveAllQ removes all docs that satisfy the query
func SetGlobalSessionProvider ¶
func SetGlobalSessionProvider(sessionProvider SessionProvider)
SetGlobalSessionProvider sets the global session provider.
func WaitTillAcquireGlobalLock ¶
WaitTillAcquireGlobalLock "spins" on acquiring the given database lock, for the process id, until timeoutMS. Returns whether or not the lock was acquired.
Types ¶
type Global ¶
type Global struct { BuildVariant string `bson:"_id"` LastBuildNumber uint64 `bson:"last_build_number"` LastTaskNumber uint64 `bson:"last_task_number"` }
Global stores internal tracking information.
type Lock ¶
type Lock struct { Id string `bson:"_id"` Locked bool `bson:"locked"` LockedBy string `bson:"locked_by"` LockedAt time.Time `bson:"locked_at"` }
Lock represents a lock stored in the database, for synchronization.
type Q ¶
type Q struct {
// contains filtered or unexported fields
}
Q holds all information necessary to execute a query
func Query ¶
func Query(filter interface{}) Q
Query creates a db.Q for the given MongoDB query. The filter can be a struct, bson.D, bson.M, nil, etc.
func (Q) WithFields ¶
func (Q) WithoutFields ¶
type SessionFactory ¶
type SessionFactory struct {
// contains filtered or unexported fields
}
SessionFactory contains information for connecting to Evergreen's MongoDB instance. Implements SessionProvider.
func NewSessionFactory ¶
func NewSessionFactory(url, db string, ssl bool, safety mgo.Safe, dialTimeout time.Duration) *SessionFactory
NewSessionFactory returns a new session factory pointed at the given URL/DB combo, with the supplied timeout and writeconcern settings.
func SessionFactoryFromConfig ¶
func SessionFactoryFromConfig(settings *evergreen.Settings) *SessionFactory
SessionFactoryFromConfig creates a usable SessionFactory from the Evergreen settings.
func (*SessionFactory) GetSession ¶
func (sf *SessionFactory) GetSession() (*mgo.Session, *mgo.Database, error)
type SessionProvider ¶
type SessionProvider interface {
GetSession() (*mgo.Session, *mgo.Database, error)
}
SessionProvider returns mgo Sessions for database interaction.
func GetGlobalSessionFactory ¶
func GetGlobalSessionFactory() SessionProvider
GetGlobalSessionFactory returns the global session provider.