Hi all, I get this traceback when using the advanced status change form and try to change the workflow state of a folder and its many children. (Plone 5.1.6)
2022-03-26 14:19:08 ERROR Zope.SiteErrorLog 1648300748.020.591419022933
http://localhost:8080/Plone/de/my_folder/content_status_history
Traceback (innermost last):
Module ZPublisher.Publish, line 146, in publish
Module Zope2.App.startup, line 303, in commit
Module transaction._manager, line 131, in commit
Module transaction._transaction, line 310, in commit
Module transaction._transaction, line 301, in commit
Module transaction._transaction, line 446, in _commitResources
Module transaction._transaction, line 418, in _commitResources
Module ZODB.Connection, line 481, in tpc_begin
Module ZODB.mvccadapter, line 161, in tpc_begin
Module ZODB.BaseStorage, line 212, in tpc_begin
Module ZODB.FileStorage.FileStorage, line 775, in _begin
FileStorageError: description too long
This is caused by the change status description being longer than 65535 bytes. And so, the Zope transaction header cannot be written...
I worked around this by truncating the transaction description to much less than 64K in BaseStorage, just for this single case and reverted once done.
The proper way to solve this would be to have plone.app.content check how many objects will be affected by the intended state change and issue a warning to the user, and cover its behind a priori by providing a summary description of changes, rather than "Changed status of XXX at http://some.very.long/URL/for/every/object"