Tuesday, September 24, 2019


I opened and did #3222 (lino_xl.lib.ledger.JournalsOverview), and I copied the Estonian name generator from the garble_persons django-admin command to a demo2 fixture for lino_xl.lib.contacts (needed for #3221). Both changes are in preparation of a public demo in Märjamaa planned for Saturday.

I pushed above changes to master without waiting for the end of the test run, then pushed another commit for adapting the book tests.


I released Avanti 19.9.1, Lino XL 19.9.6 and Lino 19.9.1 for the site upgrade of the Lino Avanti preview site.


Back to work on #3095 (move weleup to new server).

I released Lino Welfare 19.9.1 and The Eupen variant of Lino Welfare 19.9.1.

Logging messages

I use to have LINO_LOGLEVEL set to DEBUG when running a runserver because the debug messages generated by Lino are useful when running manual tests. With newer Django versions I have the same problem as reported on 30554. To “fix” this, the lino.core.site.Site.setup_logging() method now sets the level for Django’s django.utils.autoreload logger to INFO .

Unknown callback ‘7f1d8ad5a39’

Lino’s callback system doesn’t work ATM on our sites running under nginx because callbacks require a unique Kernel.pending_threads where all unanswered callback questions are stored. It is currently impossible to delete e.g. a calendar entry on such a Lino site.

nginx creates separate worker processes that run in completely different processes and cannot share data between them.

“Nginx uses only asynchronous I/O, which makes blocking a non-issue. The only reason nginx uses multiple processes, is to make full use of multi-core, multi-CPU and hyper-threading systems. Even with SMP support, the kernel cannot schedule a single thread of execution over multiple CPU”

I changed the worker_processes value in the nginx/prjname_uwsgi.ini file from 10 to 1 and voilà. Of course we need to keep an eye on performance. If needed I’d consider redis for storing the callbacks and user preferences and all those things.