- VERSION 5.09.18

- feat(manager): Implementa recarga granular (Hot-Swap).
- Actualiza manager.html para solicitar la DB Key a recargar (ej: DB2).
- Se modifica Manager.bas para leer este parámetro y ejecutar el Hot-Swap de forma atómica solo en el pool de conexión especificado, lo cual mejora la eficiencia y la disponibilidad del servicio.
This commit is contained in:
2025-09-27 14:14:15 -06:00
parent 820fe9fc2b
commit 616013f0fb
9 changed files with 923 additions and 210 deletions

View File

@@ -1,17 +1,19 @@
AppType=StandardJava
Build1=Default,b4j.JRDCMulti
File1=config.DB2.properties
File10=stop.bat
File10=start2.bat
File11=stop.bat
File2=config.DB3.properties
File3=config.DB4.properties
File4=config.properties
File5=login.html
File6=reiniciaProcesoBow.bat
File7=reiniciaProcesoPM2.bat
File8=start.bat
File9=start2.bat
File6=manager.html
File7=reiniciaProcesoBow.bat
File8=reiniciaProcesoPM2.bat
File9=start.bat
FileGroup1=Default Group
FileGroup10=Default Group
FileGroup11=Default Group
FileGroup2=Default Group
FileGroup3=Default Group
FileGroup4=Default Group
@@ -36,7 +38,9 @@ Module11=Manager0
Module12=ParameterValidationUtils
Module13=ping
Module14=RDCConnector
Module15=TestHandler
Module15=SSE
Module16=SSEHandler
Module17=TestHandler
Module2=ChangePassHandler
Module3=DBHandlerB4X
Module4=DBHandlerJSON
@@ -45,9 +49,9 @@ Module6=faviconHandler
Module7=GlobalParameters
Module8=LoginHandler
Module9=LogoutHandler
NumberOfFiles=10
NumberOfFiles=11
NumberOfLibraries=9
NumberOfModules=15
NumberOfModules=17
Version=10.3
@EndOfDesignText@
'Non-UI application (console / server application)
@@ -56,7 +60,7 @@ Version=10.3
#CommandLineArgs:
#MergeLibraries: True
' VERSION 5.09.17
' VERSION 5.09.18
'###########################################################################################################
'###################### PULL #############################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull
@@ -129,9 +133,13 @@ Sub Process_Globals
Public LOG_CACHE_THRESHOLD As Int = 350 ' Umbral de registros para forzar la escritura
Dim logger As Boolean
Public LatestPoolStats As Map ' Mapa Thread-Safe para almacenar las últimas métricas de cada pool.
End Sub
Sub AppStart (Args() As String)
SSE.Initialize
#if DEBUG
logger = True
LOG_CACHE_THRESHOLD = 10
@@ -139,6 +147,8 @@ Sub AppStart (Args() As String)
logger = False
#End If
' --- Subrutina principal que se ejecuta al iniciar la aplicación ---
' SSE.Initialize
bc.Initialize("BC")
QueryLogCache.Initialize
@@ -161,6 +171,7 @@ Sub AppStart (Args() As String)
srvr.Initialize("")
Connectors = srvr.CreateThreadSafeMap
commandsMap.Initialize
LatestPoolStats = srvr.CreateThreadSafeMap ' Inicializar el mapa de estadísticas como Thread-Safe
' NUEVO: Inicializar el mapa de estado de logs granular
SQLiteLoggingStatusByDB.Initialize
@@ -311,6 +322,7 @@ Sub AppStart (Args() As String)
srvr.AddHandler("/DBJ", "DBHandlerJSON", False)
srvr.AddHandler("/dbrquery", "DBHandlerJSON", False)
srvr.AddHandler("/favicon.ico", "faviconHandler", False)
srvr.AddHandler("/stats-stream", "SSEHandler", False)
srvr.AddHandler("/*", "DBHandlerB4X", False)
' 7. Inicia el servidor HTTP.
@@ -545,7 +557,7 @@ Public Sub WriteQueryLogsBatch
MainConnectorsLock.RunMethod("unlock", Null)
If logger Then Log($"[LOG BATCH] Iniciando escritura transaccional de ${batchSize} logs de rendimiento. Logs copiados: ${logsToWrite.Size}"$)
' If logger Then Log($"[LOG BATCH] Iniciando escritura transaccional de ${batchSize} logs de rendimiento. Logs copiados: ${logsToWrite.Size}"$)
' === PASO 2: Escritura Transaccional a SQLite ===
@@ -563,7 +575,7 @@ Public Sub WriteQueryLogsBatch
' 2. Finalizar la transacción: Escritura eficiente a disco.
SQL1.TransactionSuccessful
if logger then Log($"[LOG BATCH] Lote de ${batchSize} logs de rendimiento escrito exitosamente."$)
If logger Then Log($"[LOG BATCH] Lote de ${batchSize} logs de rendimiento escrito exitosamente."$)
Catch
' Si falla, deshacemos todos los logs del lote y registramos el fallo.