// writePoolInstances will write (and override) a single cluster name mapping func writePoolInstances(pool string, instanceKeys [](*InstanceKey)) error { writeFunc := func() error { db, err := db.OpenOrchestrator() if err != nil { return log.Errore(err) } tx, err := db.Begin() stmt, err := tx.Prepare(`delete from database_instance_pool where pool = ?`) _, err = stmt.Exec(pool) if err != nil { tx.Rollback() return log.Errore(err) } stmt, err = tx.Prepare(`insert into database_instance_pool values (?, ?, ?)`) for _, instanceKey := range instanceKeys { _, err := stmt.Exec(instanceKey.Hostname, instanceKey.Port, pool) if err != nil { tx.Rollback() return log.Errore(err) } } if err != nil { tx.Rollback() return log.Errore(err) } tx.Commit() return nil } return ExecDBWriteFunc(writeFunc) }
// EmptyCommitInstance issues an empty COMMIT on a given instance func EmptyCommitInstance(instanceKey *InstanceKey) error { db, err := db.OpenTopology(instanceKey.Hostname, instanceKey.Port) if err != nil { return err } tx, err := db.Begin() if err != nil { return err } err = tx.Commit() if err != nil { return err } return err }