From 79b49116dddea35da37c73b6fc8bab71a4b2f751 Mon Sep 17 00:00:00 2001 From: Jono Wenger <jono@elixxir.io> Date: Wed, 10 May 2023 00:15:55 +0000 Subject: [PATCH] General fixes --- indexedDb/impl/channels/implementation.go | 2 +- indexedDb/impl/dm/implementation.go | 2 +- indexedDb/impl/utils.go | 8 ++++++++ utils/utils.go | 4 +++- worker/manager.go | 8 ++++---- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/indexedDb/impl/channels/implementation.go b/indexedDb/impl/channels/implementation.go index 35bf0032..5f8273a2 100644 --- a/indexedDb/impl/channels/implementation.go +++ b/indexedDb/impl/channels/implementation.go @@ -414,7 +414,7 @@ func (w *wasmModel) upsertMessage(msg *Message) (uint64, error) { // Store message to database msgIdObj, err := impl.Put(w.db, messageStoreName, messageObj) - if err != nil || msgIdObj.Equal(js.Undefined()) { + if err != nil { return 0, errors.Errorf("Unable to put Message: %+v\n%s", err, newMessageJson) } diff --git a/indexedDb/impl/dm/implementation.go b/indexedDb/impl/dm/implementation.go index 8d13915d..1c8e1805 100644 --- a/indexedDb/impl/dm/implementation.go +++ b/indexedDb/impl/dm/implementation.go @@ -317,7 +317,7 @@ func (w *wasmModel) upsertMessage(msg *Message) (uint64, error) { // Store message to database msgIdObj, err := impl.Put(w.db, messageStoreName, messageObj) - if err != nil || msgIdObj.Equal(js.Undefined()) { + if err != nil { return 0, errors.Errorf("Unable to put Message: %+v\n%s", err, newMessageJson) } diff --git a/indexedDb/impl/utils.go b/indexedDb/impl/utils.go index 3765cfce..c2756f61 100644 --- a/indexedDb/impl/utils.go +++ b/indexedDb/impl/utils.go @@ -76,6 +76,8 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, erro if err != nil { return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get from ObjectStore: %+v", err) + } else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) { + return js.Null(), errors.Wrapf(err, "timed out after %s", dbTimeout) } else if resultObj.IsUndefined() { return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get from ObjectStore: %s", ErrDoesNotExist) @@ -164,6 +166,8 @@ func GetIndex(db *idb.Database, objectStoreName, if err != nil { return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get from ObjectStore: %+v", err) + } else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) { + return js.Null(), errors.Wrapf(err, "timed out after %s", dbTimeout) } else if resultObj.IsUndefined() { return js.Undefined(), errors.WithMessagef(parentErr, "Unable to get from ObjectStore: %s", ErrDoesNotExist) @@ -202,6 +206,8 @@ func Put(db *idb.Database, objectStoreName string, value js.Value) (js.Value, er if err != nil { return js.Undefined(), errors.Errorf("Putting value failed: %+v\n%s", err, utils.JsToJson(value)) + } else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) { + return js.Null(), errors.Wrapf(err, "timed out after %s", dbTimeout) } jww.DEBUG.Printf("Successfully put value in %s: %s", objectStoreName, utils.JsToJson(value)) @@ -239,6 +245,8 @@ func Delete(db *idb.Database, objectStoreName string, key js.Value) error { if err != nil { return errors.WithMessagef(parentErr, "Unable to Delete from ObjectStore: %+v", err) + } else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) { + return errors.Wrapf(err, "timed out after %s", dbTimeout) } jww.DEBUG.Printf("Successfully deleted value at %s/%s", objectStoreName, utils.JsToJson(key)) diff --git a/utils/utils.go b/utils/utils.go index cb1e46f3..8f156761 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -61,10 +61,12 @@ type PromiseFn func(resolve, reject func(args ...any) js.Value) // Go function to Javascript. func CreatePromise(f PromiseFn) any { // Create handler for promise (this will be a Javascript function) - handler := js.FuncOf(func(this js.Value, args []js.Value) any { + var handler js.Func + handler = js.FuncOf(func(this js.Value, args []js.Value) any { // Spawn a new go routine to perform the blocking function go func(resolve, reject js.Value) { f(resolve.Invoke, reject.Invoke) + go func() { handler.Release() }() }(args[0], args[1]) return nil diff --git a/worker/manager.go b/worker/manager.go index 1f8328c9..3a5831db 100644 --- a/worker/manager.go +++ b/worker/manager.go @@ -325,8 +325,8 @@ func (m *Manager) addEventListeners() { // Doc: https://developer.mozilla.org/en-US/docs/Web/API/Worker/error_event errorEvent := js.FuncOf(func(_ js.Value, args []js.Value) any { event := args[0] - jww.ERROR.Printf("[WW] [%s] Main received error event: %s", - m.name, utils.JsErrorToJson(event)) + jww.FATAL.Panicf("[WW] [%s] Main received error event: %+v", + m.name, js.Error{Value: event}) return nil }) @@ -335,8 +335,8 @@ func (m *Manager) addEventListeners() { // Doc: https://developer.mozilla.org/en-US/docs/Web/API/Worker/messageerror_event messageerrorEvent := js.FuncOf(func(_ js.Value, args []js.Value) any { event := args[0] - jww.ERROR.Printf("[WW] [%s] Main received message error event: %s", - m.name, utils.JsErrorToJson(event)) + jww.ERROR.Printf("[WW] [%s] Main received message error event: %+v", + m.name, js.Error{Value: event}) return nil }) -- GitLab