Enhance logging in BaseWorker and DirectorWorker: Added detailed debug logs before database calls in change_falukant_user_money, improving traceability of user ID and money change values during production start and sell operations.
This commit is contained in:
@@ -158,7 +158,10 @@ impl BaseWorker {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
let p1: &(dyn ToSql + Sync) = &falukant_user_id;
|
// Some Postgres functions expect BIGINT; cast to i64 to be safe when
|
||||||
|
// serializing the first parameter.
|
||||||
|
let uid_i64: i64 = falukant_user_id as i64;
|
||||||
|
let p1: &(dyn ToSql + Sync) = &uid_i64;
|
||||||
let p2: &(dyn ToSql + Sync) = &money_change;
|
let p2: &(dyn ToSql + Sync) = &money_change;
|
||||||
let p3: &(dyn ToSql + Sync) = &action;
|
let p3: &(dyn ToSql + Sync) = &action;
|
||||||
|
|
||||||
@@ -174,17 +177,43 @@ impl BaseWorker {
|
|||||||
let _ = rows;
|
let _ = rows;
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
|
let err_str = format!("{err}");
|
||||||
// Wenn der Postgres-Client ein Serialisierungsproblem meldet,
|
// Wenn der Postgres-Client ein Serialisierungsproblem meldet,
|
||||||
// erweitern wir das Log um die tatsächlichen Parameterwerte.
|
// erweitern wir das Log um die tatsächlichen Parameterwerte
|
||||||
if format!("{err}").contains("serializing parameter") {
|
// und versuchen einen Retry, in dem wir user_id als String senden.
|
||||||
|
if err_str.contains("serializing parameter") {
|
||||||
eprintln!(
|
eprintln!(
|
||||||
"[BaseWorker] Fehler beim Serialisieren der DB-Parameter: user_id={}, money_change={}, action={}. Original: {err}",
|
"[BaseWorker] Fehler beim Serialisieren der DB-Parameter: user_id={}, money_change={}, action={}. Original: {err}",
|
||||||
falukant_user_id, money_change, action
|
falukant_user_id, money_change, action
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Retry: sende user_id als String
|
||||||
|
let uid_str = falukant_user_id.to_string();
|
||||||
|
let rp1: &(dyn ToSql + Sync) = &uid_str;
|
||||||
|
let rp2: &(dyn ToSql + Sync) = &money_change;
|
||||||
|
let rp3: &(dyn ToSql + Sync) = &action;
|
||||||
|
|
||||||
|
eprintln!(
|
||||||
|
"[BaseWorker] Retry: sending user_id as string ('{}') to update_money",
|
||||||
|
uid_str
|
||||||
|
);
|
||||||
|
|
||||||
|
match conn.execute("update_money", &[rp1, rp2, rp3]) {
|
||||||
|
Ok(rows2) => {
|
||||||
|
let _ = rows2;
|
||||||
}
|
}
|
||||||
|
Err(err2) => {
|
||||||
|
eprintln!(
|
||||||
|
"[BaseWorker] Retry failed: {err2} (original: {err})"
|
||||||
|
);
|
||||||
|
return Err(err2.into());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
return Err(err.into());
|
return Err(err.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -682,6 +682,12 @@ impl DirectorWorker {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Debug: Log vor dem DB-Aufruf
|
||||||
|
eprintln!(
|
||||||
|
"[DirectorWorker] calling change_falukant_user_money for start production: user_id={}, money_change={}",
|
||||||
|
plan.falukant_user_id, -production_cost
|
||||||
|
);
|
||||||
|
|
||||||
conn.prepare("insert_production", QUERY_INSERT_PRODUCTION)?;
|
conn.prepare("insert_production", QUERY_INSERT_PRODUCTION)?;
|
||||||
|
|
||||||
// Eine einzelne Produktion mit max. 100 Stück anlegen
|
// Eine einzelne Produktion mit max. 100 Stück anlegen
|
||||||
@@ -1005,6 +1011,12 @@ impl DirectorWorker {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Debug: Log vor dem DB-Aufruf
|
||||||
|
eprintln!(
|
||||||
|
"[DirectorWorker] calling change_falukant_user_money for sell products: user_id={}, money_change={}, product_id={}",
|
||||||
|
item.user_id, sell_price, item.product_id
|
||||||
|
);
|
||||||
|
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"add_sell_log",
|
"add_sell_log",
|
||||||
&[
|
&[
|
||||||
|
|||||||
Reference in New Issue
Block a user