Gladys Assistant 4.45: DuckDB, una revolución en Gladys! ⚡

¡Te agradezco @GBoulvin por tu respuesta! Por ahora sigo en el 41%, ¡ojalá dure!

Hola a todos,
Paso a DuckDB sin problemas, antes la base era de 2.12 GB y ahora 16.87 MB
Excelente trabajo y muchas gracias…

¡Gracias a todos por vuestros comentarios! Me alegra mucho ver que la mayoría de vosotros la migración ha ido bien :slight_smile:

@Jluc Por curiosidad, ¿en qué tipo de almacenamiento estás? ¿SSD?

Si planeas tener una instancia de Gladys domótica ultra rápida y estable a largo plazo, realmente te recomiendo pasar a un mini-PC. Es el día y la noche y no cuesta mucho (en leboncoin / o en compra reacondicionada hay gangas por poco dinero), y aunque sea nuevo en Amazon tampoco es tan caro ^^

¡Listo, está pedido :wink:


Para el almacenamiento:
image

Aller, un pequeño retroceso,

la migración se realizó en mi ausencia
y después de mis acciones :

-rw-r–r-- 1 root root 4,1G sept. 3 18:15 gladys-production.db
-rw-r–r-- 1 root root 64K sept. 3 18:25 gladys-production.db-shm
-rw-r–r-- 1 root root 22M sept. 3 18:25 gladys-production.db-wal
-rw-r–r-- 1 root root 28M sept. 3 11:44 gladys-production.duckdb
-rw-r–r-- 1 root root 2,4M sept. 3 18:25 gladys-production.duckdb.wal

=>

-rw-r–r-- 1 root root 8,5M sept. 3 18:26 gladys-production.db
-rw-r–r-- 1 root root 64K sept. 3 18:26 gladys-production.db-shm
-rw-r–r-- 1 root root 22M sept. 3 18:26 gladys-production.db-wal
-rw-r–r-- 1 root root 28M sept. 3 11:44 gladys-production.duckdb
-rw-r–r-- 1 root root 2,4M sept. 3 18:26 gladys-production.duckdb.wal

La purga tardó 2h y la limpieza unos segundos

Finalmente hice la migración a otra máquina (mi NAS) sin problemas.

Mi base de datos era:
-rw-r--r-- 1 root root 14G 29 ago 13:18 gladys-production.db

La limpieza tardó más de 48 horas.
Resultado increíble, ¡enhorabuena!:
image

-rw-r--r--  1 root root 57M  2 sep 19:03 gladys-production.db
-rw-r--r--  1 root root 40M  2 sep 18:19 gladys-production.duckdb

En el NAS, Gladys funciona sin problemas.

Pero donde me atasco es que en mi PI3 (actualizado y en 64 bits) Gladys se inicia bien y es utilizable hasta que quiero mostrar un gráfico (da igual cuál).
Y ahí, ¡puf! Tengo de nuevo este error y lo que más me molesta, Gladys se detiene.

> gladys  | node: ../src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp:47: void duckdb::aggr_ht_entry_t::SetPointer(duckdb::data_t* const&): Assertion `(reinterpret_cast<uint64_t>(pointer) & SALT_MASK) == 0' failed.
> gladys exited with code 0

Por lo tanto, he probado con una instalación limpia de gladys, añado un sensor de temperatura y un gráfico. Resultado: el mismo problema.

Por lo tanto, pienso que está relacionado con el PI3 o con la distribución…
@pierre-gilles: es un caso sin migración, me parece que has reestructurado el sistema de consulta, los datos provienen de duckdb?

uname -a
Linux rpi3 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux
cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)"
NAME="Raspbian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

¿Quién en un pi3 ha logrado una migración? Si es así, ¿en qué distribución?
¿Alguien tiene ideas / información?
Estoy listo para hacer la reinstalación, pero solo si hay una luz de esperanza.

leeloo "please help" the fifth element on Make a GIF

¿Has intentado actualizar Docker?

docker --version
Docker version 27.2.0, build 3ab4256

es la última y en el NAS estoy en la 26

@ProtZ habría que asegurarse de que estás ejecutando la arquitectura de imagen Docker correcta en tu Pi.

Para eso puedes hacer:

docker image inspect gladysassistant/gladys:v4

Y buscas la línea « Architecture ».

Normalmente en tu caso debería ser arm64

¡Hola, soy yo, estoy en un lío!
La migración a DuckDB ya estaba hecha. La limpieza/eliminación, aunque larga, se estaba realizando. ¡Y de repente, por alguna razón, mi servidor comenzó una actualización de Ubuntu a la 24.04 LTS, y luego el servidor se colgó! ¡Así que tendré que reinstalar el servidor!
Espero que después de la reinstalación del servidor pueda usar la copia de seguridad de GladysPlus para evitar tener que hacer todo de nuevo.

@pierre-gilles ¡Eres un genio!
Era la imagen descargada la que estaba en 32 bits.
No sé cómo explicarlo por el momento (había limpiado todo bien antes, la instalación es muy reciente, …)

Para solucionar el problema, añadí en el servicio de mi docker-compose.yml :
platform: linux/arm64

¡Mil gracias

Si alguna vez necesitas ayuda, no dudes en crear un tema específico :slight_smile:

Ahora me toca a mí hacer un pequeño rex !!
Migración exitosa.
Después de la purga de los estados SQLite, la tarea estaba en error, pero en el resumen de migración había 0 estados SQLite, así que lancé la limpieza que tomó un tiempo :sweat_smile:. ¡Como resultado, mi copia de seguridad pasó de 5,2 GB a 2,75 GB! Luego, volví a ejecutar el trabajo de purga de SQLite y ¡éxito! Después de la limpieza, mi base de datos se redujo a 275 MB. ¡Una reducción de espacio muy bonita :star_struck:! Sin embargo, mi ratio parece más alto que la mayoría de las publicaciones. Me pregunto a qué puede deberse.
En cualquier caso, ¡un gran éxito! Se hace todo solo sin problemas y en caso de fallo, se vuelve a intentar y todo funciona, ¡bien hecho!!
Añado que hice todo esto a distancia de vacaciones en Baleares desde mi móvil (con la App PWA Gladys instalada).

¡Gracias por tu respuesta @Legw4nn :raising_hands:

¡Increíble!

Quizás tienes el mismo problema que @Terdious, ¿tal vez tienes muchos mensajes en la tabla t_message? ¿Usas mucho los mensajes?

Creo que en el futuro añadiremos una tarea de limpieza.

¡Ah, vale, no he leído todo el hilo! Sí, de hecho, me llegan notificaciones por mensajes bastante a menudo, especialmente cuando detecta movimiento y no estoy en casa, pero la localización de mi teléfono a veces lo estropea todo, así que los mensajes se disparan. :sweat_smile: ¡Misterio resuelto, entonces!
De todos modos, ¡enhorabuena por el trabajo!

Sí, sin duda, tuve una escena que se jodió => 3.000.000 de líneas idénticas en t_message => 1 GB liberado una vez eliminadas a mano ^^

¡Ah sí que sí! :rofl::joy::joy:

La migración está terminada en mi Pi. Migración, limpieza y purga OK. PERO ahora, muchas cosas no funcionan.
A veces, cuando me conecto, me dice que mi tablero no está configurado y después de varios refrescos, recupero mis dashboards. Pero la visualización de los usuarios presentes, el clima y mis gráficos de criptomonedas de node-red no se muestran.

Si me conecto a través de Gladys Plus, 1 de cada 2 veces, me dice que no está conectado a la pasarela y no hay ningún usuario para seleccionar. Lo mismo ocurre desde la App Android

En los ajustes, las páginas están vacías. Tengo que refrescar muchas veces y en algún momento, recupero los datos.

Muchas escenas simplemente ya no se ejecutan.

Aclaro que esto ocurre en Brave, Chrome y Edge.
Es un desastre sin nombre, creo que voy a reinstalar completamente Gladys en mi Pi. :smiling_face_with_tear:

¿Estás seguro de que la limpieza ha terminado? ¡Puede llevar horas, incluso días, durante los cuales Gladys está un poco perdida (¡especialmente en RPi)! ¿Has reiniciado el contenedor (o el RPi)?

Al precisar que la exactitud del número de estados en SQLite en la vista del sistema no es real. Puede indicar « 0 » pero que la limpieza no haya terminado. No dude en relanzarla si es necesario (será cada vez más rápida y casi instantánea cuando realmente haya terminado) y luego realizar una nueva limpieza a continuación.