github.com/weaviate/weaviate@v1.24.6/entities/errors/go_wrapper.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package errors 13 14 import ( 15 "os" 16 "runtime/debug" 17 18 "github.com/weaviate/weaviate/usecases/configbase" 19 20 "github.com/sirupsen/logrus" 21 ) 22 23 func GoWrapper(f func(), logger logrus.FieldLogger) { 24 go func() { 25 defer func() { 26 if !configbase.Enabled(os.Getenv("DISABLE_RECOVERY_ON_PANIC")) { 27 if r := recover(); r != nil { 28 logger.Errorf("Recovered from panic: %v", r) 29 debug.PrintStack() 30 } 31 } 32 }() 33 f() 34 }() 35 }