X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/39b1824cff7cae632a19dbe9c011b8b5d8fb9375..9f81dc57445cd51b92e34a82742765788c35620c:/services/ws/event.go diff --git a/services/ws/event.go b/services/ws/event.go index b6dda4968b..c989c0ca55 100644 --- a/services/ws/event.go +++ b/services/ws/event.go @@ -1,12 +1,17 @@ -package main +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +package ws import ( "database/sql" - "log" "sync" "time" - "git.curoverse.com/arvados.git/sdk/go/arvados" + "git.arvados.org/arvados.git/sdk/go/arvados" + "github.com/ghodss/yaml" + "github.com/sirupsen/logrus" ) type eventSink interface { @@ -15,15 +20,19 @@ type eventSink interface { } type eventSource interface { - NewSink(chan *event) eventSink + NewSink() eventSink + DB() *sql.DB + DBHealth() error } type event struct { - LogUUID string + LogID uint64 Received time.Time + Ready time.Time Serial uint64 db *sql.DB + logger logrus.FieldLogger logRow *arvados.Log err error mtx sync.Mutex @@ -39,18 +48,25 @@ func (e *event) Detail() *arvados.Log { return e.logRow } var logRow arvados.Log - var oldAttrs, newAttrs []byte - e.err = e.db.QueryRow(`SELECT id, uuid, object_uuid, object_owner_uuid, event_type, created_at, old_attributes, new_attributes FROM logs WHERE uuid = ?`, e.LogUUID).Scan( + var propYAML []byte + e.err = e.db.QueryRow(`SELECT id, uuid, object_uuid, COALESCE(object_owner_uuid,''), COALESCE(event_type,''), event_at, created_at, properties FROM logs WHERE id = $1`, e.LogID).Scan( &logRow.ID, &logRow.UUID, &logRow.ObjectUUID, &logRow.ObjectOwnerUUID, &logRow.EventType, + &logRow.EventAt, &logRow.CreatedAt, - &oldAttrs, - &newAttrs) + &propYAML) + if e.err != nil { + e.logger.WithField("LogID", e.LogID).WithError(e.err).Error("QueryRow failed") + return nil + } + e.err = yaml.Unmarshal(propYAML, &logRow.Properties) if e.err != nil { - log.Printf("retrieving log row %s: %s", e.LogUUID, e.err) + e.logger.WithField("LogID", e.LogID).WithError(e.err).Error("yaml decode failed") + return nil } + e.logRow = &logRow return e.logRow }