From 7775ccf9a57e3843cca23c0cc774ade784488079 Mon Sep 17 00:00:00 2001
From: Andreas Haufler <aha@scireum.de>
Date: Thu, 10 Feb 2022 20:21:21 +0100
Subject: [PATCH] Fixes a bug in the loader architecture.

If a disabled loader changes its "delete/unload" code is triggered.
If another loader e.g. yields the same IDB table, this table is
dropped without any reason. Therefore, we only execute this code,
if the loader was previously enabled and is no disabled.
---
 jupiter-rs/src/repository/loader.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/jupiter-rs/src/repository/loader.rs b/jupiter-rs/src/repository/loader.rs
index d0d0eaa..c3fd8e4 100644
--- a/jupiter-rs/src/repository/loader.rs
+++ b/jupiter-rs/src/repository/loader.rs
@@ -350,6 +350,7 @@ async fn loader_changed(
                 info.namespace = namespace.clone();
 
                 if info.needs_reload().await? {
+                    let was_enabled = info.enabled;
                     info.enabled = namespaces.contains(&namespace);
                     *info.last_error.lock().unwrap() = "".to_string();
 
@@ -358,7 +359,7 @@ async fn loader_changed(
                         background_task_sender
                             .send(BackgroundCommand::ExecuteLoaderForChange(info.clone()))
                             .await?;
-                    } else {
+                    } else if was_enabled {
                         info.last_load = None;
                         background_task_sender
                             .send(BackgroundCommand::ExecuteLoaderForDelete(info.clone()))