cancel
Showing results for 
Search instead for 
Did you mean: 

1.2.1 to 1.3 upgrade yields fatal Patch errors

didierm
Champ in-the-making
Champ in-the-making
Upgrading from 1.21. to 1.3 seems to be a bumpy road. Does anyone have an idea concerning the issue quoted in 3. with the PatchServiceImpl/PatchExecuter  ?



1.
Trying to run the MySQL upgrade script from the alfresco-community-tomcat-1.3.0 distribution (after applying the case changes as indicated in http://wiki.alfresco.com/wiki/Upgrading_to_1.3.0) yields a
    ERROR 1062 (23000) at line 624: Duplicate entry
error.


2.
This is corrected by downloading the latest SVN upgrade scripts :
svn co svn://www.alfresco.org/alfresco/HEAD/root/projects/installer/upgrade/scripts alfresco-upgrade-scripts
, and applying the following new case changes :
132c132
< ALTER TABLE `t_node_properties` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `uuid`);

> ALTER TABLE `T_node_properties` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `uuid`);
142c142
< ALTER TABLE `t_node_status` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `guid`);

> ALTER TABLE `T_node_status` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `guid`);
156c156
< ALTER TABLE `t_store` ADD INDEX `IDX_STORE_REF`(`protocol`, `identifier`);

> ALTER TABLE `T_store` ADD INDEX `IDX_STORE_REF`(`protocol`, `identifier`);
185c185
< insert into t_version_count (protocol, identifier, version_count)

> insert into T_version_count (protocol, identifier, version_count)
188c188
< insert into t_node_status (protocol, identifier, guid, change_txn_id, deleted)

> insert into T_node_status (protocol, identifier, guid, change_txn_id, deleted)
307c307
<     externalkeys;

>     externalKeys;
365c365
< delete from T_access_control_list where id not in (select distinct(acl_id) id from t_access_control_entry where acl_id is not null);

> delete from T_access_control_list where id not in (select distinct(acl_id) id from T_access_control_entry where acl_id is not null);


3.
Unfortunately (and this is the showstopper for me), subsequent launching of the stock alfresco-community-tomcat-1.3.0 yields the following fatal errors :

    17:32:56,833 ERROR [org.alfresco.repo.content.transform.magick.AbstractImageMagickContentTransformer] ImageMagickContentTransformer not available: Failed to execute command: imconvert /opt/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformer_init_source_47828.gif  /opt/alfresco/tomcat/temp/Alfresco/ImageMagickContentTransformer_init_target_47829.png
    17:33:02,509 INFO  [org.alfresco.repo.admin.patch.PatchExecuter] Checking for patches to apply …
    17:33:02,771 ERROR [org.alfresco.repo.admin.patch.PatchServiceImpl] org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [org.alfresco.repo.domain.hibernate.DbAccessControlListImpl#2]
       at org.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:27)
       at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:128)
       at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
       at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
       at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
       at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830)
       at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
       at org.hibernate.type.EntityType.resolve(EntityType.java:303)
       at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
       at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
       at org.hibernate.loader.Loader.doQuery(Loader.java:717)
       at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
       at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)
       at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47)
       at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)
       at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
       at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
       at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
       at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
       at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:82)
       at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
       at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:820)
       at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:62)
       at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:98)
       at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:158)
       at org.alfresco.repo.domain.Node$$EnhancerByCGLIB$$c2458312.getNodeRef(<generated>)
       at org.alfresco.repo.domain.hibernate.ChildAssocImpl.getChildAssocRef(ChildAssocImpl.java:109)
       at org.alfresco.repo.node.db.DbNodeServiceImpl.getChildAssocs(DbNodeServiceImpl.java:1008)
       at org.alfresco.repo.node.AbstractNodeServiceImpl.getChildAssocs(AbstractNodeServiceImpl.java:569)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:213)
       at $Proxy2.getChildAssocs(Unknown Source)
       at org.alfresco.repo.search.DocumentNavigator.getChildAxisIterator(DocumentNavigator.java:359)
       at org.jaxen.expr.iter.IterableChildAxis.iterator(IterableChildAxis.java:82)
       at org.jaxen.expr.DefaultNameStep.evaluate(DefaultNameStep.java:206)
       at org.jaxen.expr.DefaultLocationPath.evaluate(DefaultLocationPath.java:154)
       at org.jaxen.expr.DefaultAbsoluteLocationPath.evaluate(DefaultAbsoluteLocationPath.java:121)
       at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:112)
       at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:688)
       at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:227)
       at org.alfresco.repo.search.NodeServiceXPath.selectNodes(NodeServiceXPath.java:187)
       at org.alfresco.repo.search.impl.NodeSearcher.selectNodes(NodeSearcher.java:130)
       at org.alfresco.repo.search.impl.lucene.LuceneSearcherImpl.selectNodes(LuceneSearcherImpl.java:491)
       at org.alfresco.repo.search.SearcherComponent.selectNodes(SearcherComponent.java:100)
       at org.alfresco.repo.search.AbstractSearcherComponent.selectNodes(AbstractSearcherComponent.java:69)
       at org.alfresco.repo.admin.patch.impl.EmailTemplatesFolderPatch.setUp(EmailTemplatesFolderPatch.java:127)
       at org.alfresco.repo.admin.patch.impl.EmailTemplatesFolderPatch.applyInternal(EmailTemplatesFolderPatch.java:175)
       at org.alfresco.repo.admin.patch.AbstractPatch$1.doWork(AbstractPatch.java:332)
       at org.alfresco.repo.admin.patch.AbstractPatch$1.doWork(AbstractPatch.java:335)
       at org.alfresco.repo.transaction.TransactionUtil.executeInTransaction(TransactionUtil.java:168)
       at org.alfresco.repo.transaction.TransactionUtil.executeInNonPropagatingUserTransaction(TransactionUtil.java:108)
       at org.alfresco.repo.admin.patch.AbstractPatch.apply(AbstractPatch.java:337)
       at org.alfresco.repo.admin.patch.PatchServiceImpl.applyPatch(PatchServiceImpl.java:185)
       at org.alfresco.repo.admin.patch.PatchServiceImpl.applyPatchAndDependencies(PatchServiceImpl.java:140)
       at org.alfresco.repo.admin.patch.PatchServiceImpl.applyOutstandingPatches(PatchServiceImpl.java:96)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335)
       at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
       at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
       at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
       at $Proxy23.applyOutstandingPatches(Unknown Source)
       at org.alfresco.repo.admin.patch.PatchExecuter.applyOutstandingPatches(PatchExecuter.java:64)
       at org.alfresco.repo.admin.patch.PatchExecuter.onApplicationEvent(PatchExecuter.java:112)
       at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:45)
       at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:225)
       at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:323)
       at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
       at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
       at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
       at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
       at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3692)
       at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127)
       at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
       at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
       at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
       at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:804)
       at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:693)
       at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
       at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1118)
       at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
       at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
       at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
       at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
       at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
       at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
       at org.apache.catalina.core.StandardService.start(StandardService.java:450)
       at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
       at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
       at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

    17:33:02,808 ERROR [org.alfresco.repo.admin.patch.PatchExecuter]
    === Failed to apply patch         ===
    ID: patch.emailTemplatesFolder
    RESULT:
    org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [org.alfresco.repo.domain.hibernate.DbAccessControlListImpl#2]
       at org.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:27)
       at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:128)
       at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
       at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
       at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
       at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830)
       at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
       at org.hibernate.type.EntityType.resolve(EntityType.java:303)
       at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
       at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
       at org.hibernate.loader.Loader.doQuery(Loader.java:717)
       at org.hibern…
    =====================================
    17:33:02,810 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
    org.alfresco.error.AlfrescoRuntimeException: Not all patches could be applied
       at org.alfresco.repo.admin.patch.PatchExecuter.applyOutstandingPatches(PatchExecuter.java:99)
       at org.alfresco.repo.admin.patch.PatchExecuter.onApplicationEvent(PatchExecuter.java:112)
       at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:45)


    etc.


Any pointers would be greatly appreciated.
6 REPLIES 6

derek
Star Contributor
Star Contributor
Hi,

Sorry - it's an oversight in the original ACL bug fix.   Smiley Surprisedops:

Try this:

select * from
(
  select n.id as node_id, n.acl_id as n_acl, acl.id as acl_acl from node n
  left join access_control_list acl on (n.acl_id = acl.id)
) t where t.n_acl is not null and t.acl_acl is null;

The rows returned show the nodes that have acl_id values that should be null.

You can fix it with:

update node set acl_id = null where acl_id not in (select id from access_control_list);

If you could get the latest script and check that it works from start to finish for us, then that would be nice, too.

Regards

dschmalz
Champ in-the-making
Champ in-the-making
We're also encountering issues when upgrading from 1.2.1 to 1.3. We did the following to upgrade from 1.2 (Enterprise):

- stop Alfresco (and perform full backup…)
- put the 1.2.1 Community war in the webapps directory
- start Alfresco

Checking the logs, Alfresco starts fine and 1.2.1 is installed (schema 12).

Once this is done, we used a patched SQL script (see below) where we had to correct the file encoding (running Linux FC4, MySQL 4.1.15) and a few typos.

The upgrade procedure to 1.3 fails, when deploying the 1.3 war. Checking the applied_patch table shows that no 1.3 patch was applied (I guess we we have entries for this version upgrade). The following stack trace occurs when first starting the 1.3 version:


INFO: Deploying web application archive alfresco.war
19:47:59,989 ERROR [tool.hbm2ddl.SchemaUpdate] Unsuccessful: alter table child_assoc add index FKC6EFFF32A0F28D72 (child_protocol, child_identifier, child_guid), add constraint FKC6EFFF32A0F28D72 foreign key (child_protocol, child_identifier, child_guid) references node (protocol, identifier, guid)
19:47:59,989 ERROR [tool.hbm2ddl.SchemaUpdate] Can't create table './alfresco/#sql-b5b_1913.frm' (errno: 150)
19:47:59,993 ERROR [tool.hbm2ddl.SchemaUpdate] Unsuccessful: alter table child_assoc add index FKC6EFFF3294135688 (parent_protocol, parent_identifier, parent_guid), add constraint FKC6EFFF3294135688 foreign key (parent_protocol, parent_identifier, parent_guid) references node (protocol, identifier, guid)
19:47:59,993 ERROR [tool.hbm2ddl.SchemaUpdate] Can't create table './alfresco/#sql-b5b_1913.frm' (errno: 150)
Aug 15, 2006 7:48:11 PM net.sf.joott.uno.UnoConnection connect
INFO: connecting using "socket,host=localhost,port=8100,tcpNoDelay=1"…
Aug 15, 2006 7:48:11 PM net.sf.joott.uno.UnoConnection connect
INFO: connected
Aug 15, 2006 7:48:11 PM net.sf.joott.uno.UnoConnection connect
INFO: connecting using "socket,host=localhost,port=8100,tcpNoDelay=1"…
Aug 15, 2006 7:48:11 PM net.sf.joott.uno.UnoConnection connect
INFO: connected
19:48:11,703 ERROR [web.context.ContextLoader] Context initialization failed
org.alfresco.service.cmr.repository.InvalidStoreRefException: Store does not have a root node
   at org.alfresco.repo.node.db.DbNodeServiceImpl.getRootNode(DbNodeServiceImpl.java:206)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
   at $Proxy3.getRootNode(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:212)
   at $Proxy4.getRootNode(Unknown Source)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.getDescriptorNodeRef(DescriptorServiceImpl.java:291)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.updateCurrentRepositoryDescriptor(DescriptorServiceImpl.java:254)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.access$300(DescriptorServiceImpl.java:61)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:185)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:176)
   at org.alfresco.repo.transaction.TransactionUtil.executeInTransaction(TransactionUtil.java:168)
   at org.alfresco.repo.transaction.TransactionUtil.executeInUserTransaction(TransactionUtil.java:74)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.onApplicationEvent(DescriptorServiceImpl.java:191)
   at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:45)
   at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:225)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:323)
   at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3692)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:804)
   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:693)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1118)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
   at org.apache.catalina.core.StandardService.start(StandardService.java:450)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
19:48:11,708 ERROR [[Catalina].[localhost].[/alfresco]] Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.alfresco.service.cmr.repository.InvalidStoreRefException: Store does not have a root node
   at org.alfresco.repo.node.db.DbNodeServiceImpl.getRootNode(DbNodeServiceImpl.java:206)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
   at $Proxy3.getRootNode(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:212)
   at $Proxy4.getRootNode(Unknown Source)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.getDescriptorNodeRef(DescriptorServiceImpl.java:291)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.updateCurrentRepositoryDescriptor(DescriptorServiceImpl.java:254)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.access$300(DescriptorServiceImpl.java:61)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:185)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:176)
   at org.alfresco.repo.transaction.TransactionUtil.executeInTransaction(TransactionUtil.java:168)
   at org.alfresco.repo.transaction.TransactionUtil.executeInUserTransaction(TransactionUtil.java:74)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.onApplicationEvent(DescriptorServiceImpl.java:191)
   at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:45)
   at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:225)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:323)
   at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3692)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:804)
   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:693)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1118)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
   at org.apache.catalina.core.StandardService.start(StandardService.java:450)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
19:48:11,733 ERROR [[Catalina].[localhost].[/alfresco]] Exception sending context initialized event to listener instance of class org.alfresco.web.app.ContextListener
org.alfresco.service.cmr.repository.InvalidStoreRefException: Store does not have a root node
   at org.alfresco.repo.node.db.DbNodeServiceImpl.getRootNode(DbNodeServiceImpl.java:206)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
   at $Proxy3.getRootNode(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:212)
   at $Proxy4.getRootNode(Unknown Source)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.getDescriptorNodeRef(DescriptorServiceImpl.java:291)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.updateCurrentRepositoryDescriptor(DescriptorServiceImpl.java:254)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.access$300(DescriptorServiceImpl.java:61)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:185)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:176)
   at org.alfresco.repo.transaction.TransactionUtil.executeInTransaction(TransactionUtil.java:168)
   at org.alfresco.repo.transaction.TransactionUtil.executeInUserTransaction(TransactionUtil.java:74)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.onApplicationEvent(DescriptorServiceImpl.java:191)
   at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:45)
   at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:225)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:323)
   at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3692)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:804)
   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:693)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1118)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
   at org.apache.catalina.core.StandardService.start(StandardService.java:450)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Aug 15, 2006 7:48:11 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Aug 15, 2006 7:48:11 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/alfresco] startup failed due to previous errors
19:48:11,739 ERROR [[Catalina].[localhost].[/alfresco]] Exception sending context destroyed event to listener instance of class org.alfresco.web.app.ContextListener
org.alfresco.service.cmr.repository.InvalidStoreRefException: Store does not have a root node
   at org.alfresco.repo.node.db.DbNodeServiceImpl.getRootNode(DbNodeServiceImpl.java:206)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:165)
   at $Proxy3.getRootNode(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:212)
   at $Proxy4.getRootNode(Unknown Source)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.getDescriptorNodeRef(DescriptorServiceImpl.java:291)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.updateCurrentRepositoryDescriptor(DescriptorServiceImpl.java:254)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.access$300(DescriptorServiceImpl.java:61)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:185)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl$1.doWork(DescriptorServiceImpl.java:176)
   at org.alfresco.repo.transaction.TransactionUtil.executeInTransaction(TransactionUtil.java:168)
   at org.alfresco.repo.transaction.TransactionUtil.executeInUserTransaction(TransactionUtil.java:74)
   at org.alfresco.repo.descriptor.DescriptorServiceImpl.onApplicationEvent(DescriptorServiceImpl.java:191)
   at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:45)
   at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:225)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:323)
   at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3692)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:804)
   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:693)
   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1118)
   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
   at org.apache.catalina.core.StandardService.start(StandardService.java:450)
   at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
   at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

Here is the patched SQL script:


– ——————————————————
– Alfresco Schema conversion V1.2.1 to V1.3

– Author: Derek Hulley
– ——————————————————


– Create temporary 1.3 schema


CREATE TABLE `T_access_control_entry` (
  `id` bigint(20) NOT NULL auto_increment,
  `protocol` varchar(50) default NULL,
  `identifier` varchar(100) default NULL,
  `uuid` varchar(36) default NULL,
  `typeUri` varchar(100) default NULL,
  `typeName` varchar(100) default NULL,
  `name` varchar(100) default NULL,
  `recipient` varchar(100) default NULL,
  `acl_id` bigint(20),
  `permission_id` bigint(20),
  `authority_id` varchar(100),
  `allowed` bit(1) NOT NULL,
  PRIMARY KEY  (`id`)
);
ALTER TABLE `T_access_control_entry` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `uuid`);

CREATE TABLE `T_access_control_list` (
  `id` bigint(20) NOT NULL auto_increment,
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `uuid` varchar(36) NOT NULL,
  `inherits` bit(1) NOT NULL,
  PRIMARY KEY  (`id`)
);
ALTER TABLE `T_access_control_list` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `uuid`);
CREATE TABLE `T_applied_patch` (
  `id` varchar(32) NOT NULL,
  `description` text,
  `fixes_from_schema` int(11) default NULL,
  `fixes_to_schema` int(11) default NULL,
  `applied_to_schema` int(11) default NULL,
  `target_schema` int(11) default NULL,
  `applied_on_date` datetime default NULL,
  `applied_to_server` varchar(64) default NULL,
  `was_executed` bit(1) default NULL,
  `succeeded` bit(1) default NULL,
  `report` text
);

CREATE TABLE `T_auth_ext_keys` (
  `id` varchar(100) NOT NULL,
  `externalKey` varchar(100) NOT NULL
);

CREATE TABLE `T_authority` (
  `recipient` varchar(100) NOT NULL
);

CREATE TABLE `T_child_assoc` (
  `id` bigint(20) NOT NULL auto_increment,
  `parent_node_id` bigint(20) default NULL,
  `parent_protocol` varchar(50) default NULL,
  `parent_identifier` varchar(100) default NULL,
  `parent_uuid` varchar(36) default NULL,
  `child_node_id` bigint(20) default NULL,
  `child_protocol` varchar(50) default NULL,
  `child_identifier` varchar(100) default NULL,
  `child_uuid` varchar(36) default NULL,
  `type_qname` varchar(255) NOT NULL,
  `qname` varchar(255) NOT NULL,
  `is_primary` bit(1) default NULL,
  `assoc_index` int(11) default NULL,
  PRIMARY KEY  (`id`)
);
ALTER TABLE `T_child_assoc` ADD INDEX `IDX_REF_PARENT`(`parent_protocol`, `parent_identifier`, `parent_uuid`);
ALTER TABLE `T_child_assoc` ADD INDEX `IDX_REF_CHILD`(`child_protocol`, `child_identifier`, `child_uuid`);
CREATE TABLE `T_node` (
  `id` bigint(20) NOT NULL auto_increment,
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `uuid` varchar(36) NOT NULL,
  `acl_id` bigint(20) default NULL,
  `type_qname` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);
ALTER TABLE `T_node` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `uuid`);

CREATE TABLE `T_node_aspects` (
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `uuid` varchar(36) NOT NULL,
  `node_id` bigint(20),
  `qname` varchar(200) default NULL
);
ALTER TABLE `T_node_aspects` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `uuid`);

CREATE TABLE `T_node_assoc` (
  `id` bigint(20) NOT NULL auto_increment,
  `source_node_id` bigint(20) default NULL,
  `source_protocol` varchar(50) default NULL,
  `source_identifier` varchar(100) default NULL,
  `source_uuid` varchar(36) default NULL,
  `target_node_id` bigint(20) default NULL,
  `target_protocol` varchar(50) default NULL,
  `target_identifier` varchar(100) default NULL,
  `target_uuid` varchar(36) default NULL,
  `type_qname` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);
ALTER TABLE `T_node_assoc` ADD INDEX `IDX_REF_SOURCE`(`source_protocol`, `source_identifier`, `source_uuid`);
ALTER TABLE `T_node_assoc` ADD INDEX `IDX_REF_TARGET`(`target_protocol`, `target_identifier`, `target_uuid`);
CREATE TABLE `T_node_properties` (
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `uuid` varchar(36) NOT NULL,
  `node_id` bigint(20),
  `actual_type` varchar(15) NOT NULL,
  `multi_valued` bit(1) NOT NULL,
  `persisted_type` varchar(15) NOT NULL,
  `boolean_value` bit(1) default NULL,
  `long_value` bigint(20) default NULL,
  `float_value` float default NULL,
  `double_value` double default NULL,
  `string_value` text,
  `serializable_value` blob,
  `qname` varchar(200) NOT NULL
);
ALTER TABLE `T_node_properties` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `uuid`);

CREATE TABLE `T_node_status` (
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `guid` varchar(36) NOT NULL,
  `node_id` bigint(20) default NULL,
  `change_txn_id` varchar(56) NOT NULL,
  `deleted` bit(1) NOT NULL
);
ALTER TABLE `T_node_status` ADD INDEX `IDX_REF`(`protocol`, `identifier`, `guid`);

CREATE TABLE `T_permission` (
  `id` bigint(20) NOT NULL auto_increment,
  `type_qname` varchar(200) NOT NULL,
  `name` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
);

CREATE TABLE `T_store` (
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `root_node_id` bigint(20) default NULL
);
ALTER TABLE `T_store` ADD INDEX `IDX_STORE_REF`(`protocol`, `identifier`);
CREATE TABLE `T_version_count` (
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `version_count` int(11) NOT NULL
);


– Copy data from old tables to intermediate tables


insert into T_store (protocol, identifier)
  select protocol, identifier from store;

insert into T_node (protocol, identifier, uuid, type_qname)
  select protocol, identifier, guid, type_qname from node;

update T_store tstore set root_node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = tstore.protocol and
    tnode.identifier = tstore.identifier and
    tnode.uuid =
    (select ostore.root_guid from store ostore where
      ostore.protocol = tstore.protocol and
      ostore.identifier = tstore.identifier
    )
  );

insert into T_version_count (protocol, identifier, version_count)
  select protocol, identifier, version_count from version_count;

insert into T_node_status (protocol, identifier, guid, change_txn_id, deleted)
  select protocol, identifier, guid, change_txn_id, deleted from node_status;
update T_node_status tstatus set node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = tstatus.protocol and
    tnode.identifier = tstatus.identifier and
    tnode.uuid = tstatus.guid
  );
insert into T_node_properties
  (
    protocol, identifier, uuid, actual_type, multi_valued, persisted_type,
    boolean_value, long_value, float_value, double_value, string_value, serializable_value, qname
  )
  select
      protocol, identifier, guid, actual_type, multi_valued, persisted_type,
      boolean_value, long_value, float_value, double_value, string_value, serializable_value, qname
    from node_properties;
update T_node_properties tproperties set node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = tproperties.protocol and
    tnode.identifier = tproperties.identifier and
    tnode.uuid = tproperties.uuid
  );

insert into T_node_aspects
  (
    protocol, identifier, uuid, qname
  )
  select
      protocol, identifier, guid, qname
    from node_aspects;
update T_node_aspects taspects set node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = taspects.protocol and
    tnode.identifier = taspects.identifier and
    tnode.uuid = taspects.uuid
  );
insert into T_child_assoc
  (
    parent_protocol, parent_identifier, parent_uuid,
    child_protocol, child_identifier, child_uuid,
    type_qname, qname, is_primary, assoc_index
  )
  select
    parent_protocol, parent_identifier, parent_guid,
    child_protocol, child_identifier, child_guid,
    type_qname, qname, isPrimary, assoc_index
  from
    child_assoc;
update T_child_assoc tassoc set parent_node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = tassoc.parent_protocol and
    tnode.identifier = tassoc.parent_identifier and
    tnode.uuid = tassoc.parent_uuid
  );
update T_child_assoc tassoc set child_node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = tassoc.child_protocol and
    tnode.identifier = tassoc.child_identifier and
    tnode.uuid = tassoc.child_uuid
  );

insert into T_node_assoc
  (
    source_protocol, source_identifier, source_uuid,
    target_protocol, target_identifier, target_uuid,
    type_qname
  )
  select
    source_protocol, source_identifier, source_guid,
    target_protocol, target_identifier, target_guid,
    type_qname
  from
    node_assoc;
update T_node_assoc tassoc set source_node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = tassoc.source_protocol and
    tnode.identifier = tassoc.source_identifier and
    tnode.uuid = tassoc.source_uuid
  );
update T_node_assoc tassoc set target_node_id =
  (select tnode.id from T_node tnode where
    tnode.protocol = tassoc.target_protocol and
    tnode.identifier = tassoc.target_identifier and
    tnode.uuid = tassoc.target_uuid
  );

insert into T_permission
   (
     type_qname, name
   )
   select
     CONCAT('{', type_uri, '}', type_name), name
   from
     permission_ref;

insert into T_access_control_list
  (
    protocol, identifier, uuid, inherits
  )
  select
      protocol, identifier, guid, inherits
    from node_permission;
update T_node tnode set acl_id =
  (select tacl.id from T_access_control_list tacl where
    tacl.protocol = tnode.protocol and
    tacl.identifier = tnode.identifier and
    tacl.uuid = tnode.uuid
  );

insert into T_auth_ext_keys
  (
    id, externalKey
  )
  select
    id, externalKey
  from
    externalKeys;

insert into T_authority
  (
    recipient
  )
  select
    recipient
  from
    recipient;

insert into T_access_control_entry
  (
    protocol, identifier, uuid,
    typeUri, typeName, name,
    recipient,
    allowed
  )
  select
    protocol, identifier, guid,
    typeUri, typeName, name,
    recipient,
    allowed
  from node_perm_entry;
update T_access_control_entry tentry
  set
    acl_id =
    (
      select
        tacl.id
      from T_access_control_list tacl
      join T_node tnode on tacl.id = tnode.acl_id
      where
        tnode.protocol = tentry.protocol and
        tnode.identifier = tentry.identifier and
        tnode.uuid = tentry.uuid
    );
update T_access_control_entry tentry
  set
    tentry.permission_id =
    (
      select
        tpermission.id
      from T_permission tpermission
      where
        tpermission.type_qname = CONCAT('{', tentry.typeUri, '}', tentry.typeName) and
        tpermission.name = tentry.name
    );
update T_access_control_entry tentry
  set
    tentry.authority_id =
    (
      select
        tauthority.recipient
      from T_authority tauthority
      where
        tauthority.recipient = tentry.recipient
    );
delete from T_access_control_list where id not in (select distinct(acl_id) id from T_access_control_entry where acl_id is not null);
delete from T_access_control_entry where acl_id is null;
update T_node set acl_id = null where acl_id not in (select id from T_access_control_list);


– Create New schema (MySQL)


SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE child_assoc;
DROP TABLE node_assoc;
DROP TABLE node_properties;
DROP TABLE node_aspects;
DROP TABLE node;
DROP TABLE node_status;
DROP TABLE version_count;
DROP TABLE store;
DROP TABLE node_perm_entry;
DROP TABLE node_permission;
DROP TABLE permission_ref;
DROP TABLE recipient;
DROP TABLE externalKeys;

CREATE TABLE `access_control_entry` (
  `id` bigint(20) NOT NULL auto_increment,
  `acl_id` bigint(20) NOT NULL,
  `permission_id` bigint(20) NOT NULL,
  `authority_id` varchar(100) NOT NULL,
  `allowed` bit(1) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `acl_id` (`acl_id`,`permission_id`,`authority_id`),
  KEY `FKF064DF7560601995` (`permission_id`),
  KEY `FKF064DF75B25A50BF` (`authority_id`),
  KEY `FKF064DF75B9553F6C` (`acl_id`),
  CONSTRAINT `FKF064DF75B9553F6C` FOREIGN KEY (`acl_id`) REFERENCES `access_control_list` (`id`),
  CONSTRAINT `FKF064DF7560601995` FOREIGN KEY (`permission_id`) REFERENCES `permission` (`id`),
  CONSTRAINT `FKF064DF75B25A50BF` FOREIGN KEY (`authority_id`) REFERENCES `authority` (`recipient`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `access_control_list` (
  `id` bigint(20) NOT NULL auto_increment,
  `inherits` bit(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `auth_ext_keys` (
  `id` varchar(100) NOT NULL,
  `externalKey` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`,`externalKey`),
  KEY `FK31D3BA097B7FDE43` (`id`),
  CONSTRAINT `FK31D3BA097B7FDE43` FOREIGN KEY (`id`) REFERENCES `authority` (`recipient`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `authority` (
  `recipient` varchar(100) NOT NULL,
  PRIMARY KEY  (`recipient`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `child_assoc` (
  `id` bigint(20) NOT NULL auto_increment,
  `parent_node_id` bigint(20) default NULL,
  `child_node_id` bigint(20) default NULL,
  `type_qname` varchar(255) NOT NULL,
  `qname` varchar(255) NOT NULL,
  `is_primary` bit(1) default NULL,
  `assoc_index` int(11) default NULL,
  PRIMARY KEY  (`id`),
  KEY `FKC6EFFF3274173FF4` (`child_node_id`),
  KEY `FKC6EFFF328E50E582` (`parent_node_id`),
  CONSTRAINT `FKC6EFFF328E50E582` FOREIGN KEY (`parent_node_id`) REFERENCES `node` (`id`),
  CONSTRAINT `FKC6EFFF3274173FF4` FOREIGN KEY (`child_node_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `node` (
  `id` bigint(20) NOT NULL auto_increment,
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `uuid` varchar(36) NOT NULL,
  `type_qname` varchar(255) NOT NULL,
  `acl_id` bigint(20) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `protocol` (`protocol`,`identifier`,`uuid`),
  KEY `FK33AE02D24ADD25` (`protocol`,`identifier`),
  CONSTRAINT `FK33AE02D24ADD25` FOREIGN KEY (`protocol`, `identifier`) REFERENCES `store` (`protocol`, `identifier`),
  CONSTRAINT `FK33AE02B9553F6C` FOREIGN KEY (`acl_id`) REFERENCES `access_control_list` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `node_aspects` (
  `node_id` bigint(20) NOT NULL,
  `qname` varchar(200) default NULL,
  KEY `FK2B91A9DE7F2C8017` (`node_id`),
  CONSTRAINT `FK2B91A9DE7F2C8017` FOREIGN KEY (`node_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `node_assoc` (
  `id` bigint(20) NOT NULL auto_increment,
  `source_node_id` bigint(20) default NULL,
  `target_node_id` bigint(20) default NULL,
  `type_qname` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `FK5BAEF398B69C43F3` (`source_node_id`),
  KEY `FK5BAEF398A8FC7769` (`target_node_id`),
  CONSTRAINT `FK5BAEF398A8FC7769` FOREIGN KEY (`target_node_id`) REFERENCES `node` (`id`),
  CONSTRAINT `FK5BAEF398B69C43F3` FOREIGN KEY (`source_node_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `node_properties` (
  `node_id` bigint(20) NOT NULL,
  `actual_type` varchar(15) NOT NULL,
  `multi_valued` bit(1) NOT NULL,
  `persisted_type` varchar(15) NOT NULL,
  `boolean_value` bit(1) default NULL,
  `long_value` bigint(20) default NULL,
  `float_value` float default NULL,
  `double_value` double default NULL,
  `string_value` text,
  `serializable_value` blob,
  `qname` varchar(200) NOT NULL,
  PRIMARY KEY  (`node_id`,`qname`),
  KEY `FKC962BF907F2C8017` (`node_id`),
  CONSTRAINT `FKC962BF907F2C8017` FOREIGN KEY (`node_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `node_status` (
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `guid` varchar(36) NOT NULL,
  `node_id` bigint(20) default NULL,
  `change_txn_id` varchar(56) NOT NULL,
  PRIMARY KEY  (`protocol`,`identifier`,`guid`),
  KEY `FK38ECB8CF7F2C8017` (`node_id`),
  CONSTRAINT `FK38ECB8CF7F2C8017` FOREIGN KEY (`node_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `permission` (
  `id` bigint(20) NOT NULL auto_increment,
  `type_qname` varchar(200) NOT NULL,
  `name` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `type_qname` (`type_qname`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `store` (
  `protocol` varchar(50) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `root_node_id` bigint(20) default NULL,
  PRIMARY KEY  (`protocol`,`identifier`),
  KEY `FK68AF8E122DBA5BA` (`root_node_id`),
  CONSTRAINT `FK68AF8E122DBA5BA` FOREIGN KEY (`root_node_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `version_count` (
  `protocol` varchar(100) NOT NULL,
  `identifier` varchar(100) NOT NULL,
  `version_count` int(11) NOT NULL,
  PRIMARY KEY  (`protocol`,`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


– Copy data into new schema


insert into store
  (
    protocol, identifier, root_node_id
  )
  select
    protocol, identifier, root_node_id
  from
    T_store;

insert into node
  (
    id, protocol, identifier, uuid, type_qname, acl_id
  )
  select
    id, protocol, identifier, uuid, type_qname, acl_id
  from
    T_node;

insert into version_count
  (
    protocol, identifier, version_count
  )
  select
    protocol, identifier, version_count
  from
    T_version_count;

insert into node_status
  (
    protocol, identifier, guid, node_id, change_txn_id
  )
  select
    protocol, identifier, guid, node_id, change_txn_id
  from
    T_node_status;

insert into node_properties
  (
    node_id, actual_type, multi_valued, persisted_type,
    boolean_value, long_value, float_value, double_value, string_value, serializable_value, qname
  )
  select
      node_id, actual_type, multi_valued, persisted_type,
      boolean_value, long_value, float_value, double_value, string_value, serializable_value, qname
  from
    T_node_properties;
insert into node_aspects
  (
    node_id, qname
  )
  select
      node_id, qname
  from
    T_node_aspects;

insert into child_assoc
  (
    id, parent_node_id, child_node_id, type_qname, qname, is_primary, assoc_index
  )
  select
    id, parent_node_id, child_node_id, type_qname, qname, is_primary, assoc_index
  from
    T_child_assoc;

insert into node_assoc
  (
    id, source_node_id, target_node_id, type_qname
  )
  select
    id, source_node_id, target_node_id, type_qname
  from
    T_node_assoc;

insert into permission
   (
     id, type_qname, name
   )
   select
     id, type_qname, name
   from
     T_permission;


insert into access_control_list
  (
    id, inherits
  )
  select
    id, inherits
  from
    T_access_control_list;

insert into auth_ext_keys
  (
    id, externalKey
  )
  select
    id, externalKey
  from
    T_auth_ext_keys;

insert into authority
  (
    recipient
  )
  select
    recipient
  from
    T_authority;

insert into access_control_entry
  (
    id, acl_id, permission_id, authority_id, allowed
  )
  select
    id, acl_id, permission_id, authority_id, allowed
  from
    T_access_control_entry;

SET FOREIGN_KEY_CHECKS = 1;


– Allow longer patch identifiers

ALTER TABLE applied_patch MODIFY id varchar(64) not null;

Any idea how to properly upgrade?

Thanks,
David

didierm
Champ in-the-making
Champ in-the-making
We're also encountering issues when upgrading from 1.2.1 to 1.3. We did the following to upgrade from 1.2 (Enterprise):

[]

Any idea how to properly upgrade?

Thanks,
David

Oops ; I forgot to mention that, after the appearantly faultless SQL upgrade (step 2.), I also encountered these same error(s) :


ERROR [tool.hbm2ddl.SchemaUpdate] Unsuccessful: alter table child_assoc add index FKC6EFFF32A0F28D72 (child_protocol, child_identifier, child_guid), add constraint FKC6EFFF32A0F28D72 foreign key (child_protocol, child_identifier, child_guid) references node (protocol, identifier, guid)

I manually applied the SQL table updates to the alfresco MySQL database (as user alfresco), which solved the SQL errors, but led to the errors as described in step 3.

Regards,
Didier

dschmalz
Champ in-the-making
Champ in-the-making
I manually applied the SQL table updates to the alfresco MySQL database (as user alfresco), which solved the SQL errors, but led to the errors as described in step 3.

Didier, any success when executing the "update" acl fix statement suggested by Alfresco?

Thanks, David

didierm
Champ in-the-making
Champ in-the-making
Dear Derek,

Hi,

You can fix it with:

update node set acl_id = null where acl_id not in (select id from access_control_list);

If you could get the latest script and check that it works from start to finish for us, then that would be nice, too.

Thanks for the much appreciated quick reply.

Regardless of a lower/uppercase typo in the latest (SVN tag 99) upgrade script, the script now functions flawlessly for me.

Case-fixed diff against v99 :

update T_node set acl_id = null where acl_id not in (select id from T_access_control_list);

Thanks again,
Didier

didierm
Champ in-the-making
Champ in-the-making
I manually applied the SQL table updates to the alfresco MySQL database (as user alfresco), which solved the SQL errors, but led to the errors as described in step 3.
Didier, any success when executing the "update" acl fix statement suggested by Alfresco?

The update fixed all outstanding SQL upgrade issues for me ; beware of the upper/lower case table names, though.

I got bitten by the patch.forumsIcons error too, but this was easily fixed by temporarily creating a file ./tomcat/shared/classes/alfresco/extension/_disable-patch-context.xml as suggested by Christian Ludt in thread http://forums.alfresco.com/viewtopic.php?t=2250 .

Best regards,
Didier