From 09d9e5011c5fc0eda9d4892cba365969c88084d2 Mon Sep 17 00:00:00 2001 From: Silas Oettinghaus Date: Thu, 10 Jul 2025 13:32:25 +0200 Subject: [PATCH] re-attempt DB fetch connection --- Classes/DataBaseHandler/DBHandler.m | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/Classes/DataBaseHandler/DBHandler.m b/Classes/DataBaseHandler/DBHandler.m index 73a4321..7e2105a 100644 --- a/Classes/DataBaseHandler/DBHandler.m +++ b/Classes/DataBaseHandler/DBHandler.m @@ -43,8 +43,8 @@ classdef DBHandler < handle elseif options.type == "mysql" % datasource = "jdbc:mysql://134.245.243.254:3306/labor"; - - + + obj.conn = database( ... string(obj.dataBase), ... % Database name @@ -578,10 +578,28 @@ classdef DBHandler < handle execute(obj.conn, query); end - function answer = fetch(obj,query) - answer = fetch(obj.conn,query); + + function answer = fetch(obj, query) + maxFast = 20; maxSlow = 30; + for attempt = 1:maxSlow + try + answer = fetch(obj.conn, query); + return + catch ME + if attempt < maxFast + pause(1) + else + pause(10) + end + lastErr = ME; + end + end + pause(60) + error('Database fetch failed after %d attempts:\n%s', maxSlow, lastErr.getReport()) end + + function [result,query] = queryDB(obj, filterParams, selectedFields) % getPathsWithFlexibleFilter Retrieves values from Runs table with flexible filtering % and lets the user select which fields to include in the SELECT statement.