-
-
Notifications
You must be signed in to change notification settings - Fork 188
Open
Labels
Description
Describe the bug
A XAR with modules that have circular dependencies
- module A imports module B
- module B imports module A
can be installed.
Deinstalling this package and reinstalling this will lead to an infinite loop in hot-code that cannot be aborted.
In my testing this could lead to database corruption!
restxq.log will be full of lines similar to
2026-01-15 15:35:03,471 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:04,311 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:05,097 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:05,939 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:06,751 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:07,586 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:08,405 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:09,259 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:10,102 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:10,982 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:11,813 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:12,695 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:13,529 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:14,398 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:15,241 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:16,125 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:16,955 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:17,858 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
2026-01-15 15:35:18,700 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/a.xqm' has been added to the database, re-examining '/db/apps/my-app/b.xqm'...
2026-01-15 15:35:19,587 [qtp394019287-33] INFO (ExistXqueryRegistry.java [reexamineModulesWithResolvedDependencies]:321) - Missing dependency '/db/apps/my-app/b.xqm' has been added to the database, re-examining '/db/apps/my-app/a.xqm'...
Important findings:
- There are restxq handlers defined in module C which itself depends on module A
- The routes annotated in module C are not registered after installation of the package. They had to be re-registered by saving module C in eXide
Expected behavior
- XAR packages with restxq annotations to be immediately available after installation.
- restxq routes to be de-registered reliably after XAR package removal
- XAR packages with circular dependencies to not create an infinite loop on re-installation.
To Reproduce
- Install xar package with a module with restxq annotations that depends on a module with a circular dependency
- deinstall package
- re-install package
- database rendered unusable as the infinite loop blocks the entire instance
Context (please always complete the following information)
- Build: eXist-6.4.0 (2e41828)
- Java: 1.8.0_452 (Temurin)
- OS: Linux 6.12.54-linuxkit (aarch64)
Additional context
- How is eXist-db installed? Docker
- Any custom changes in e.g.
conf.xml? none
Reactions are currently unavailable