mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Merge pull request #118 from iron-io/issue-114
Add context do models.MessageQueue interface
This commit is contained in:
@@ -13,6 +13,8 @@ import (
|
||||
"github.com/Sirupsen/logrus"
|
||||
"github.com/boltdb/bolt"
|
||||
"github.com/iron-io/functions/api/models"
|
||||
"github.com/iron-io/worker/common"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
type BoltDbMQ struct {
|
||||
@@ -202,7 +204,10 @@ func (mq *BoltDbMQ) delayTask(job *models.Task) (*models.Task, error) {
|
||||
return job, err
|
||||
}
|
||||
|
||||
func (mq *BoltDbMQ) Push(job *models.Task) (*models.Task, error) {
|
||||
func (mq *BoltDbMQ) Push(ctx context.Context, job *models.Task) (*models.Task, error) {
|
||||
ctx, log := common.LoggerWithFields(ctx, logrus.Fields{"call_id": job.ID})
|
||||
log.Println("Pushed to MQ")
|
||||
|
||||
if job.Delay > 0 {
|
||||
return mq.delayTask(job)
|
||||
}
|
||||
@@ -259,7 +264,7 @@ func resKeyToProperties(key []byte) (uint64, []byte) {
|
||||
return reservedUntil, key[len(resKeyPrefix)+8:]
|
||||
}
|
||||
|
||||
func (mq *BoltDbMQ) Reserve() (*models.Task, error) {
|
||||
func (mq *BoltDbMQ) Reserve(ctx context.Context) (*models.Task, error) {
|
||||
// Start a writable transaction.
|
||||
tx, err := mq.db.Begin(true)
|
||||
if err != nil {
|
||||
@@ -309,13 +314,20 @@ func (mq *BoltDbMQ) Reserve() (*models.Task, error) {
|
||||
if err := tx.Commit(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, log := common.LoggerWithFields(ctx, logrus.Fields{"call_id": job.ID})
|
||||
log.Println("Reserved")
|
||||
|
||||
return &job, nil
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (mq *BoltDbMQ) Delete(job *models.Task) error {
|
||||
func (mq *BoltDbMQ) Delete(ctx context.Context, job *models.Task) error {
|
||||
_, log := common.LoggerWithFields(ctx, logrus.Fields{"call_id": job.ID})
|
||||
defer log.Println("Deleted")
|
||||
|
||||
return mq.db.Update(func(tx *bolt.Tx) error {
|
||||
b := tx.Bucket(timeoutName(int(*job.Priority)))
|
||||
k := jobKey(job.ID)
|
||||
|
||||
Reference in New Issue
Block a user