[MAGNOLIA-1682] Content activation to Jackrabbit clustered public instances causes Index exceptions Created: 16/Aug/07  Updated: 15/Sep/08  Resolved: 03/Sep/08

Status: Closed
Project: Magnolia
Component/s: None
Affects Version/s: None
Fix Version/s: 3.5

Type: Bug Priority: Critical
Reporter: zam6ak Assignee: Jan Haderka
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Magnilia 3.1-SNAPSHOT
Jackrabbit 1.3.1
JBoss 4.0.5GA (Tomcat 5.5.20)
Java 6.02


Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:

 Description   

To reporoduce

  • set up 2 public instances using Jackrabbit clustering (public1 and public2)
  • define public1 as a subscriber in authoring instance
  • activate a page including its subpages

Problems found:

  • exceptions involving lucene indexes are being thrown on public2 instance:

INFO info.magnolia.module.exchangesimple.ReceiveFilter ReceiveFilter.java(receive:114) 16.08.2007 08:08:16 Activation succeeded
WARN org.apache.jackrabbit.core.query.lucene.SearchIndex SearchIndex.java(next:370) 16.08.2007 08:08:16 Exception while creating document for node: 4f91b3c9-9a99-4386-aef9-3374560a5dad:

  • content on public2 instance dissapears and exception is thrown:

ERROR info.magnolia.cms.taglibs.Include Include.java(doEndTag:166) 16.08.2007 08:10:18 Paragraph not found for page /features/mainColumnParagraphs/0
java.lang.IllegalStateException: Paragraph not found for page /features/mainColumnParagraphs/0
at info.magnolia.cms.beans.config.ParagraphRenderingFacade.render(ParagraphRenderingFacade.java:68)
at info.magnolia.cms.taglibs.Include.doEndTag(Include.java:160)
at org.apache.jsp.templates.samples.templates.inc.columnMain_jsp._jspx_meth_cms_includeTemplate_0(columnMain_jsp.java:284)
at org.apache.jsp.templates.samples.templates.inc.columnMain_jsp._jspx_meth_cms_contentNodeIterator_0(columnMain_jsp.java:177)
at org.apache.jsp.templates.samples.templates.inc.columnMain_jsp._jspService(columnMain_jsp.java:75)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

  • caching issues in Jackrabbit:

ERROR org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/magnoliaPublic02].[jsp] ApplicationDispatcher.java(invoke:704) 16.08.2007 11:17:39 Servlet.service() for servlet jsp threw exception java.lang.NullPointerException
at org.apache.jackrabbit.core.CachingHierarchyManager$LRUEntry.remove(CachingHierarchyManager.java:778)
at org.apache.jackrabbit.core.CachingHierarchyManager$LRUEntry.touch(CachingHierarchyManager.java:798)
at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath(CachingHierarchyManager.java:197)
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:294)
at org.apache.jackrabbit.core.ItemImpl.getAncestor(ItemImpl.java:1369)
at info.magnolia.cms.core.DefaultContent.getAncestor(DefaultContent.java:660)
at info.magnolia.cms.taglibs.util.SimpleNavigationTag.drawChildren(SimpleNavigationTag.java:345)
at info.magnolia.cms.taglibs.util.SimpleNavigationTag.doEndTag(SimpleNavigationTag.java:253)
at org.apache.jsp.templates.samples.templates.sample_002donecolumn_jsp._jspx_meth_cmsu_simpleNavigation_0(sample_002donecolumn_jsp.java:604)
at org.apache.jsp.templates.samples.templates.sample_002donecolumn_jsp._jspService(sample_002donecolumn_jsp.java:143)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

  • JCR queries involving contains() clause return different results on public1 and public2 instance....(it appears instances do not have the same Lucene index)


 Comments   
Comment by Jan Haderka [ 03/Sep/08 ]

The Lucene index synchronization issues were solved in JackRabbit 1.3.3. Magnolia 3.5 have been released with JR 1.3.3 so this issue should not occur anymore. If there are still issues with index synchronization please report those directly on JackRabbit jira.
There are other known issues with JR clustering that have not been resolved up to date. See https://issues.apache.org/jira/browse/JCR/component/12311801 for details of currently open issues with clustering.

Comment by Magnolia International [ 09/Sep/08 ]

Note that you might need / want to clear your indexes (before restarting the app server) to force Magnolia/Jackrabbit to reindex your repo - if you're not in a hurry, that is

Comment by zam6ak [ 10/Sep/08 ]

So if I understand this correctly, untill Jackrabbit corrects all the clustering issues there is no way to set up Magnolia public instances in a cluster?

Comment by Philippe Marschall [ 11/Sep/08 ]

It is very well possible. You just have to cluster at the Magnolia level (have multiple subscribers) instead of the Jackrabbit level.

Comment by Philipp Bracher [ 12/Sep/08 ]

Note the 3.6 EE uses a transaction activation. Means that we guarantee that the content reaches either both or none of the public instances. This is recommended way for 'clustering' public instances.

Nevertheless we want to use jr clustering in future (for other shared data like public users, comments), but for now we are 'blocked' by some critical issues.

Comment by zam6ak [ 15/Sep/08 ]

Although transactional activation helps quite a bit it is not the same as clustering.
Consider having 10 public instances. Even with transactiona activation, you are still publishing to 10 subscribers.
If they were clustered, you'd only have to publish to one. So from scalability perspective the advantages are very visible.
And also, as you mentioned ability to share other workspaces is enourmous.

Generated at Mon Feb 12 03:29:17 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.