From fa5868074ba517c07849ca4bc0b51199d120eb61 Mon Sep 17 00:00:00 2001 From: Nick White Date: Mon, 19 Aug 2019 17:19:11 +0100 Subject: Fix pipelinepreprocess segfaults These were caused by using non-pointer methods, which meant that the values set in Init() were not saved. --- pipelinepreprocess/main.go | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/pipelinepreprocess/main.go b/pipelinepreprocess/main.go index c075fa9..1322652 100644 --- a/pipelinepreprocess/main.go +++ b/pipelinepreprocess/main.go @@ -87,7 +87,7 @@ type awsConn struct { prequrl, ocrqurl string } -func (a awsConn) Init() error { +func (a *awsConn) Init() error { if a.region == "" { return errors.New("No region set") } @@ -115,7 +115,6 @@ func (a awsConn) Init() error { return errors.New(fmt.Sprintf("Error getting preprocess queue URL: %s", err)) } a.prequrl = *result.QueueUrl - a.logger.Println("preprocess queue URL", a.prequrl) a.logger.Println("Getting OCR queue URL") result, err = a.sqssvc.GetQueueUrl(&sqs.GetQueueUrlInput{ @@ -128,7 +127,7 @@ func (a awsConn) Init() error { return nil } -func (a awsConn) CheckQueue(url string) (qmsg, error) { +func (a *awsConn) CheckQueue(url string) (qmsg, error) { msgResult, err := a.sqssvc.ReceiveMessage(&sqs.ReceiveMessageInput{ MaxNumberOfMessages: aws.Int64(1), VisibilityTimeout: aws.Int64(HeartbeatTime * 2), @@ -148,12 +147,12 @@ func (a awsConn) CheckQueue(url string) (qmsg, error) { } } -func (a awsConn) CheckPreQueue() (qmsg, error) { - a.logger.Println("Checking preprocessing queue for new messages:", a.prequrl) +func (a *awsConn) CheckPreQueue() (qmsg, error) { + a.logger.Println("Checking preprocessing queue for new messages") return a.CheckQueue(a.prequrl) } -func (a awsConn) QueueHeartbeat(t *time.Ticker, msgHandle string, qurl string) error { +func (a *awsConn) QueueHeartbeat(t *time.Ticker, msgHandle string, qurl string) error { for _ = range t.C { duration := int64(HeartbeatTime * 2) _, err := a.sqssvc.ChangeMessageVisibility(&sqs.ChangeMessageVisibilityInput{ @@ -168,12 +167,12 @@ func (a awsConn) QueueHeartbeat(t *time.Ticker, msgHandle string, qurl string) e return nil } -func (a awsConn) PreQueueHeartbeat(t *time.Ticker, msgHandle string) error { +func (a *awsConn) PreQueueHeartbeat(t *time.Ticker, msgHandle string) error { a.logger.Println("Starting preprocess queue heartbeat for", msgHandle) return a.QueueHeartbeat(t, msgHandle, a.prequrl) } -func (a awsConn) ListObjects(bucket string, prefix string, names chan string) error { +func (a *awsConn) ListObjects(bucket string, prefix string, names chan string) error { err := a.s3svc.ListObjectsV2Pages(&s3.ListObjectsV2Input{ Bucket: aws.String(bucket), Prefix: aws.String(prefix), @@ -191,11 +190,11 @@ func (a awsConn) ListObjects(bucket string, prefix string, names chan string) er return err } -func (a awsConn) ListInProgress(bookname string, names chan string) error { +func (a *awsConn) ListInProgress(bookname string, names chan string) error { return a.ListObjects("rescribeinprogress", bookname, names) } -func (a awsConn) AddToQueue(url string, msg string) error { +func (a *awsConn) AddToQueue(url string, msg string) error { _, err := a.sqssvc.SendMessage(&sqs.SendMessageInput{ MessageBody: &msg, QueueUrl: &url, @@ -203,11 +202,11 @@ func (a awsConn) AddToQueue(url string, msg string) error { return err } -func (a awsConn) AddToOCRQueue(msg string) error { +func (a *awsConn) AddToOCRQueue(msg string) error { return a.AddToQueue(a.ocrqurl, msg) } -func (a awsConn) DelFromQueue(url string, handle string) error { +func (a *awsConn) DelFromQueue(url string, handle string) error { _, err := a.sqssvc.DeleteMessage(&sqs.DeleteMessageInput{ QueueUrl: &url, ReceiptHandle: &handle, @@ -215,11 +214,11 @@ func (a awsConn) DelFromQueue(url string, handle string) error { return err } -func (a awsConn) DelFromPreQueue(handle string) error { +func (a *awsConn) DelFromPreQueue(handle string) error { return a.DelFromQueue(a.prequrl, handle) } -func (a awsConn) Download(bucket string, key string, path string) error { +func (a *awsConn) Download(bucket string, key string, path string) error { f, err := os.Create(path) if err != nil { return err @@ -234,12 +233,12 @@ func (a awsConn) Download(bucket string, key string, path string) error { return err } -func (a awsConn) DownloadFromInProgress(key string, path string) error { +func (a *awsConn) DownloadFromInProgress(key string, path string) error { a.logger.Println("Downloading", key) return a.Download("rescribeinprogress", key, path) } -func (a awsConn) Upload(bucket string, key string, path string) error { +func (a *awsConn) Upload(bucket string, key string, path string) error { file, err := os.Open(path) if err != nil { log.Fatalln("Failed to open file", path, err) @@ -254,7 +253,7 @@ func (a awsConn) Upload(bucket string, key string, path string) error { return err } -func (a awsConn) UploadToInProgress(key string, path string) error { +func (a *awsConn) UploadToInProgress(key string, path string) error { a.logger.Println("Uploading", path) return a.Upload("rescribeinprogress", key, path) } @@ -331,7 +330,7 @@ func main() { alreadydone = regexp.MustCompile(PreprocPattern) var conn Pipeliner - conn = awsConn{ region: "eu-west-2", logger: verboselog } + conn = &awsConn{ region: "eu-west-2", logger: verboselog } verboselog.Println("Setting up AWS session") err := conn.Init() -- cgit v1.2.1-24-ge1ad