mirror of
https://github.com/ddworken/hishtory.git
synced 2025-06-20 03:47:54 +02:00
Revert "use errors.Is
to determine what the error is" since it doesn't work with modernc.org/sqlite which we need in order to avoid using CGO (which we do to enable easy cross-compiles)
This reverts commit 1589f779566d3c85ef0eb568acf7a6347398463a. When building with CGO_ENABLED=0, this code will fail to build.
This commit is contained in:
parent
d80afc27d4
commit
578113e07c
@ -29,7 +29,6 @@ import (
|
|||||||
"github.com/araddon/dateparse"
|
"github.com/araddon/dateparse"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/mattn/go-sqlite3"
|
|
||||||
"github.com/rodaine/table"
|
"github.com/rodaine/table"
|
||||||
|
|
||||||
"github.com/ddworken/hishtory/client/data"
|
"github.com/ddworken/hishtory/client/data"
|
||||||
@ -709,16 +708,13 @@ func ReliableDbCreate(db *gorm.DB, entry interface{}) error {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
if err != nil {
|
||||||
//errMsg := err.Error()
|
errMsg := err.Error()
|
||||||
if errors.Is(err, sqlite3.ErrBusy) || errors.Is(err, sqlite3.ErrLocked) {
|
if errMsg == "database is locked (5) (SQLITE_BUSY)" || errMsg == "database is locked (261)" {
|
||||||
// accounts for wrapped errors like:
|
|
||||||
// * "database is locked (5) (SQLITE_BUSY)"
|
|
||||||
// * "database is locked (261)" -- 261 is SQLITE_BUSY_RECOVERY (5 || 1<<8)
|
|
||||||
time.Sleep(time.Duration(i*rand.Intn(100)) * time.Millisecond)
|
time.Sleep(time.Duration(i*rand.Intn(100)) * time.Millisecond)
|
||||||
continue
|
continue
|
||||||
} else if errors.Is(err, sqlite3.ErrConstraintUnique) {
|
}
|
||||||
//if strings.Contains(errMsg, "UNIQUE constraint failed") {
|
if strings.Contains(errMsg, "UNIQUE constraint failed") {
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
@ -727,6 +723,10 @@ func ReliableDbCreate(db *gorm.DB, entry interface{}) error {
|
|||||||
}
|
}
|
||||||
return fmt.Errorf("unrecoverable sqlite error: %w", err)
|
return fmt.Errorf("unrecoverable sqlite error: %w", err)
|
||||||
}
|
}
|
||||||
|
if err != nil && err.Error() != "database is locked (5) (SQLITE_BUSY)" {
|
||||||
|
return fmt.Errorf("unrecoverable sqlite error: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
return fmt.Errorf("failed to create DB entry even with %d retries: %w", i, err)
|
return fmt.Errorf("failed to create DB entry even with %d retries: %w", i, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user