diff --git a/cache/cache_profiles.go b/cache/cache_profiles.go index 2d09aa4..e227779 100644 --- a/cache/cache_profiles.go +++ b/cache/cache_profiles.go @@ -40,7 +40,9 @@ func (c *Cache) deleteProfile(data map[string]string) { _, ok1 := c.Profiles[data["profile_name"]] if !ok1 { fmt.Println("Profile deleted") + Database.Unlock() Database.Db.MustExec(Database.Db.Rebind("DELETE FROM urt_profiles WHERE name=?"), data["profile_name"]) + Database.Lock() } else { fmt.Println("Something goes wrong! Profile is still here!") } @@ -75,6 +77,7 @@ func (c *Cache) FlushProfiles(data map[string]string) { } } + Database.Unlock() tx := Database.Db.MustBegin() fmt.Println("Adding new profiles...") for _, profile := range new_profiles { @@ -85,6 +88,7 @@ func (c *Cache) FlushProfiles(data map[string]string) { tx.NamedExec("UPDATE urt_profiles SET name=:name, version=:version, binary=:binary, second_x_session=:second_x_session, additional_parameters=:additional_parameters WHERE name=:name", &profile) } tx.Commit() + Database.Lock() fmt.Println("Done") } diff --git a/cache/cache_servers.go b/cache/cache_servers.go index 1c022a7..954bbb8 100644 --- a/cache/cache_servers.go +++ b/cache/cache_servers.go @@ -85,6 +85,7 @@ func (c *Cache) FlushServers(data map[string]string) { } } + Database.Unlock() tx := Database.Db.MustBegin() fmt.Println("Adding new servers...") if len(new_servers) > 0 { @@ -101,6 +102,7 @@ func (c *Cache) FlushServers(data map[string]string) { } tx.Commit() + Database.Lock() fmt.Println("Done") } diff --git a/database/database_object.go b/database/database_object.go index bb9e0a3..466064d 100644 --- a/database/database_object.go +++ b/database/database_object.go @@ -14,6 +14,7 @@ import ( //"database/sql" "fmt" "path" + "runtime" "strconv" // local @@ -48,10 +49,12 @@ func (d *Database) Close() { tx.Commit() d.Db.Close() + runtime.UnlockOSThread() } func (d *Database) Initialize(cfg *configuration.Config) { fmt.Println("Initializing database...") + runtime.LockOSThread() // Connect to database. db_path := path.Join(cfg.TEMP["DATA"], "database.sqlite3") @@ -72,6 +75,10 @@ func (d *Database) Initialize(cfg *configuration.Config) { } } +func (d *Database) Lock() { + runtime.LockOSThread() +} + func (d *Database) Migrate() { // Getting current database version. dbver := 0 @@ -87,3 +94,7 @@ func (d *Database) Migrate() { migrate_full(d, dbver) } + +func (d *Database) Unlock() { + runtime.UnlockOSThread() +} diff --git a/urtrator.go b/urtrator.go index 0b0fd13..b0f1d36 100644 --- a/urtrator.go +++ b/urtrator.go @@ -25,7 +25,6 @@ func main() { numCPUs := runtime.NumCPU() runtime.GOMAXPROCS(numCPUs) - runtime.LockOSThread() ctx := context.New() ctx.Initialize()