0

One operator deleted Data Dictionary and restarted Alfresco 3.4.12 Enterprise Edition. The context /alfresco doesn't start with the following exception:

17:43:11,100 INFO  [STDOUT] 17:43:11,097  ERROR [web.context.ContextLoader] Context initialization failed
org.alfresco.error.AlfrescoRuntimeException: 08050000 Failed to find 'app:dictionary' node
at org.alfresco.repo.action.scheduled.ScheduledPersistedActionServiceImpl.locatePersistanceFolder(ScheduledPersistedActionServiceImpl.java:132)

Looking at the source code in org.alfresco.repo.action.scheduled.ScheduledPersistedActionServiceImpl.java, the path is hardwired.

Then we followed the tip from https://community.alfresco.com/thread/202859-error-failed-to-find-appdictionary-node, editing bootstrap-context.xml, comment out the class.

After the change the error went over, now the RenditionService couldn't start.

We're looking for a way to recover the deleted node, since we can obtain the nodeid from the database. So we created a small class and invoke it through spring in bootstrap-context.xml, but it's failing due to permissions. Could you take a look at the code and tell us what's wrong. The code is:

package com.impulseit.test;

import javax.transaction.UserTransaction;
import org.alfresco.repo.node.archive.NodeArchiveService;
import org.alfresco.repo.node.archive.RestoreNodeReport;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.NodeRef;

public class RestoreNode {
    private NodeArchiveService nodeArchiveService;
    private ServiceRegistry serviceRegistry;
    private String nodeName ="archive://SpacesStore/adfc0cfe-e20b-467f-ad71-253aea8f9ac9";

    public void setNodeArchiveService(NodeArchiveService value)
    {
        this.nodeArchiveService = value;
    }

    public void setServiceRegistry(ServiceRegistry value)
    {
        this.serviceRegistry = value;
    }

    public void doRestore() {
        RunAsWork<Void> runAsWork = new RunAsWork<Void>()
        {
            public Void doWork() throws Exception
            {
                NodeRef nodeRef = new NodeRef(nodeName);
                //RestoreNodeReport restoreNodeReport =
                UserTransaction trx_A = serviceRegistry.getTransactionService().getUserTransaction();
                trx_A.begin();
                AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getSystemUserName());
                RestoreNodeReport restored = nodeArchiveService.restoreArchivedNode(nodeRef);
                trx_A.commit();
                return null;
            }
        };
        AuthenticationUtil.runAs(runAsWork,AuthenticationUtil.getSystemUserName());
    }

    public RestoreNode() {
    }
}

The exception is:

19:31:21,747 User:admin ERROR [node.archive.NodeArchiveServiceImpl] An unhandled exception stopped the restore
java.lang.NullPointerException
    at     org.alfresco.repo.security.permissions.impl.model.PermissionModel.getPermissionReference(PermissionModel.java:1315)
at org.alfresco.repo.security.permissions.impl.PermissionServiceImpl.getPermissionReference(PermissionServiceImpl.java:956)
    at org.alfresco.repo.security.permissions.impl.PermissionServiceImpl.hasPermission(PermissionServiceImpl.java:976)

Thank you in advance.

Luis

Luis Sánchez
  • 121
  • 1
  • 6
  • IIRC there's a specific bootstrap patch, which if you delete the record of the patch having been applied, will cause the data dictionary to be recreated. You're into pretty dangerous advanced territory here though... I'd suggest you just ring Alfresco Support and get their help, they can talk you through it! – Gagravarr Sep 10 '18 at 08:21
  • I would give good old export / import a try https://community.alfresco.com/docs/DOC-4840-export-and-import to import from a restored backup db or from a vanilla system. – Heiko Robert Sep 11 '18 at 07:24
  • Do you not have a good backup you can restore from? – Jeff Potts Sep 11 '18 at 18:19

0 Answers0