[ https://issues.apache.org/jira/browse/DERBY-3551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
V.Narayanan updated DERBY-3551: ------------------------------- Attachment: Derby3551_1.stat Derby3551_1.diff In trying to search for a way to enable only logging of unlogged operations and not the archiving support available the following observations were very important 1) Logic to enable logging is found in the BaseDataFileFactory (org.apache.derby.impl.store.raw.data.BaseDataFileFactory, line no 672) 2) Logic for archiving is present in LogToFile This partitioning of logic was to the advantage of this issue and made the coding logic very simple Follows a brief explanation of the solution developed When log archiving needs to be done it is enabled by using a flag in the following way in the BaseDataFileFactory if (logFactory.logArchived()) { mode &= ~(ContainerHandle.MODE_UNLOGGED | ContainerHandle.MODE_CREATE_UNLOGGED); } (The ContainerHandle class contains a very good explanation of the MODE_UNLOGGED, MODE_CREATE_UNLOGGED flags.) Now in addition to just enabling the flags when logArchiving is required the flags need to be enabled when replication is active too. To achieve this the above code was changed to if (logFactory.logArchived() || logFactory.replicationLogUnlogged()) { mode &= ~(ContainerHandle.MODE_UNLOGGED | ContainerHandle.MODE_CREATE_UNLOGGED); } Doing the above solved the problem for a simple index creation, what remains to be seen is how it works for imports. Attaching a patch for people who might be interested in testing the solution. Another interesting decision will be as to whether a stored procedure will be required now? (I do not have an answer for this right now, but I surely shall be revisiting Derby-239 to learn more about unlogged operations being started before logging is enabled) > Implement procedure SYSCS_UTIL.SYSCS_PREPARE_REPLICATION() > ---------------------------------------------------------- > > Key: DERBY-3551 > URL: https://issues.apache.org/jira/browse/DERBY-3551 > Project: Derby > Issue Type: Sub-task > Components: Replication > Affects Versions: 10.4.0.0, 10.5.0.0 > Reporter: V.Narayanan > Assignee: V.Narayanan > Attachments: Derby3551_1.diff, Derby3551_1.stat > > > Jorgen says- > I suggest that the replication step in which the master database is frozen is > replaced by a new system procedure to solve index and import: > Old: SYSCS_UTIL.SYSCS_FREEZE_DATABASE() > New: SYSCS_UTIL.SYSCS_PREPARE_REPLICATION() > The new system procedure should: > 1) Freeze the database > 2) Check if there are any ongoing transactions with unlogged operations. If > so - unfreeze and abort. Otherwise: > 3) Enable logging of unlogged operations -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.