该ancestor 表记录页面之间的父和子(子)关系。在确定页面是否将继承父页面的视图限制时也会使用它。 偶尔,祖先表中的记录可能会损坏。发生这种情况时,您需要重建祖先表。
运行以下查询:
SELECT A.ANCESTORID, A.DESCENDENTID, COUNT(A.DESCENDENTID)
FROM CONFANCESTORS A, CONTENT B
WHERE B.CONTENTID = A.DESCENDENTID
GROUP BY A.ANCESTORID, A.DESCENDENTID HAVING COUNT(A.DESCENDENTID) != 1
ORDER BY 3 DESC
如果此查询返回任何结果,则祖先表将被破坏并需要重建。
重建祖先表
要重建祖先表:
-
备份数据库。
-
使用以下URL访问“ **页面级权限”**页面
<您的站点> /admin/permissions/pagepermsadmin.action
-
选择Rebuild ancestor table。
-
转至 > 常规配置 > 缓存管理。
-
刷新继承的内容权限缓存。
您可能还需要 重建内容索引 ,以使权限在搜索结果中生效。
跟踪重建的进度
要跟踪祖先表重建的进度:
- 转至 > 常规配置 > 记录和分析
- 添加以下条目,将日志记录级别设置为INFO
com.atlassian.confluence.pages.ancestors.HibernatePageAncestorManager
有关 更多信息, 请参阅 [配置日志记录](https://confluence.atlassian.com/doc/configuring-logging-181535215.html)
- 打开
<confluence_home>/logs/atlassian-confluence.log
。您现在应该看到其他祖先表日志记录,类似于以下示例:
2018-07-25 20:48:56,202 INFO [http-nio-8666-exec-10] [confluence.pages.ancestors.HibernatePageAncestorManager] rebuild Started
2018-07-25 20:48:56,213 INFO [http-nio-8666-exec-10] [confluence.pages.ancestors.HibernatePageAncestorManager] clearHibernateCollectionCache Evicting the contents of Hibernate 'com.atlassian.confluence.pages.Page.ancestors' collection cache
2018-07-25 20:48:56,235 INFO [http-nio-8666-exec-10] [confluence.pages.ancestors.HibernatePageAncestorManager] apply Stored ancestors for child pages... 16/16
2018-07-25 20:48:56,236 INFO [http-nio-8666-exec-10] [confluence.pages.ancestors.HibernatePageAncestorManager] rebuild Ancestors persisted to database in 11 ms