We have a Nuxeo-5.9.3 cluster consisting in two Tomcat server and a SQL Server geo-cluster.
The SQL instance is shared among many applications.
We have observed that the cleanup of the table cluster_invals and cluster_nodes was not working properly, and Nuxeo performance plummeted (due to 30 rows in cluster_nodes and millions in cluster_invals).
After doing some research, we found that the way Nuxeo handles the cleanup of those tables only works if you have a dedicated SQL Server instance.
We were able to work-around the problem by:
Adding a column to cluster_nodes (hostname nvarchar(128)).
Modify the file sqlserver.sql.txt included in nuxeo-core-storage-sql-5.9.3.jar. Now nodes are deleted and inserted this way:
-- DB Collation is CI but Nuxeo DB is CS
DELETE FROM [cluster_nodes] WHERE hostname =
(SELECT host_name COLLATE DATABASE_DEFAULT FROM sys.dm_exec_sessions S
WHERE S.session_id = @@SPID)
INSERT INTO [cluster_nodes] (nodeid, created, hostname)
SELECT @@SPID, CURRENT_TIMESTAMP, host_name FROM sys.dm_exec_sessions S
WHERE S.session_id = @@SPID
The work-around can be easily improved (it doesn't currently work for many nuxeo instances on the same node).
Do you think there is a better approach for this problem?
Should it be reported as a bug?
Thanks in advance.