git » sdk » commit 9d43c59

Do not allow unhandled exception on thread

author Stephen Paul Weber
2026-06-22 14:20:39 UTC
committer Stephen Paul Weber
2026-06-22 14:20:39 UTC
parent 53521611eaf1de4ef5bbfaabb813b38515afd977

Do not allow unhandled exception on thread

borogove/persistence/SqliteDriver.hx +17 -7

diff --git a/borogove/persistence/SqliteDriver.hx b/borogove/persistence/SqliteDriver.hx
index d4ff3f7..c25338d 100644
--- a/borogove/persistence/SqliteDriver.hx
+++ b/borogove/persistence/SqliteDriver.hx
@@ -12,19 +12,29 @@ class SqliteDriver {
 	private final dbfile: String;
 	private final ready: Promise<Bool>;
 	private var setReady: (Bool)->Void;
+	private var setFailed: (Dynamic)->Void;
 
 	public function new(dbfile: String, migrate: (Array<String>->Promise<haxe.iterators.ArrayIterator<Dynamic>>)->Promise<Any>) {
 		this.dbfile = dbfile;
 		readPool = Config.constrainedMemoryMode ? writePool : new sys.thread.ElasticThreadPool(10);
-		ready = new Promise((resolve, reject) -> setReady = resolve);
+		ready = new Promise((resolve, reject) -> {
+			setReady = resolve;
+			setFailed = reject;
+		});
 
 		writePool.run(() -> {
-			final db = sys.db.Sqlite.open(dbfile);
-			db.request("PRAGMA journal_mode=WAL");
-			db.request("PRAGMA synchronous=NORMAL");
-			db.request("PRAGMA temp_store=2");
-			if (Config.constrainedMemoryMode) db.request("PRAGMA cache_size=0");
-			dbs.push(db);
+			try {
+				final db = sys.db.Sqlite.open(dbfile);
+				db.request("PRAGMA journal_mode=WAL");
+				db.request("PRAGMA synchronous=NORMAL");
+				db.request("PRAGMA temp_store=2");
+				if (Config.constrainedMemoryMode) db.request("PRAGMA cache_size=0");
+				dbs.push(db);
+			} catch (e) {
+				trace("Could not open Sqlite db", e);
+				setFailed(e);
+				return;
+			}
 			migrate((sql) -> this.execute(writePool, sql.map(q -> { sql: q, params: [] }))).then(_ -> {
 				setReady(true);
 			});