[JBoss Cache: Core Edition] - Compensation for network latency of sync'd DB
by kblanken
We're about to deploy our application using JBC. We have several systems that work on two databases: The master DB that's always up to date and the slave DB that is synchronized <5 seconds after the master DB. We use DB queue replication.
All systems use the same cache. We do not always use replication and have to use invalidation quite a lot. In this case, a cache will reload the data from the DB of the system during the next request.
Now with JBC we might run into the following problem:
- A system changes the master DB and invalidates the corresponding cache entries.
- JBC multicasts the invalidation event to the cache cluster members.
- On the system using the slave DB, the cache entry is invalidated immediately. The DB is not synchronized yet.
- On the system using the slave DB, somebody requests the value from the cache that has just been invalidated. As the cache doesn't have the data, it loads it from the DB - which means the old version before the update is loaded!
- The cache contains the old data.
- The DB synchronization happens, but the cache doesn't know and keeps the outdated data.
Is there a common solution to this kind of problem?
My idea was to create a JGroups protocol similar to DELAY (let's say FIXED_DELAY) that sits in the slave machines' JGroups stack and delays all invalidation events for some time to compensate for the DB synchronization lag. How do I know which events or messages I should delay, and where in the stack should I put the protocol?
Could an ExtendedTreeCacheListener with a delay in nodeRemove help?
Regards,
Kai
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4167359#4167359
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4167359
16 years, 5 months
[JBoss Tools (users)] - Nightly: NPE DocTypeUtil.getDoctype(DocTypeUtil.java:137)
by mail.micke@gmail.com
Hi,
using a nightly from the 26th of July with eclipse 3.4 and get the following uncaught NPE :
| java.lang.NullPointerException
| at org.jboss.tools.vpe.editor.util.DocTypeUtil.getDoctype(DocTypeUtil.java:137)
| at org.jboss.tools.vpe.editor.util.DocTypeUtil.getDoctype(DocTypeUtil.java:60)
| at org.jboss.tools.vpe.editor.mozilla.MozillaEditor.createPartControl(MozillaEditor.java:281)
| at org.jboss.tools.vpe.editor.VpeEditorPart.createVisualEditor(VpeEditorPart.java:754)
| at org.jboss.tools.jst.jsp.jspeditor.JSPMultiPageEditor.pageChange(JSPMultiPageEditor.java:213)
| at org.jboss.tools.jst.jsp.jspeditor.JSPMultiPageEditor.createPages(JSPMultiPageEditor.java:408)
| at org.jboss.tools.jst.jsp.jspeditor.JSPMultiPageEditorPart.createPartControl(JSPMultiPageEditorPart.java:125)
| at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:661)
| at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:428)
| at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:594)
| at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:266)
| at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2820)
| at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2729)
| at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2721)
| at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2673)
| at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
| at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668)
| at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2652)
| at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2643)
| at org.eclipse.ui.ide.IDE.openEditor(IDE.java:646)
| at org.eclipse.ui.ide.IDE.openEditor(IDE.java:605)
| at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:318)
| at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:160)
| at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)
| at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:207)
| at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:274)
| at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:250)
| at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:363)
| at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$5.open(PackageExplorerPart.java:603)
| at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:820)
| at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
| at org.eclipse.core.runtime.Platform.run(Platform.java:880)
| at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
| at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
| at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:818)
| at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1079)
| at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1183)
| at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:263)
| at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:257)
| at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:297)
| at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
| at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
| at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
| at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
| at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
| at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
| at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
| at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
| at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
| at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
| at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
| at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
| at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
| at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
| at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
| at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
| at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
| 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.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
| at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
| at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
| at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
|
|
Currently get this for every XHTML page which uses a template.
Cheers,
Micke
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4167352#4167352
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4167352
16 years, 5 months
Delivery Failure
by Postmaster
---------------------------------------------------------------------------------
The message you sent to language-bank.com/dmerritt was rejected because it would exceed the quota for the mailbox.
The subject of the message follows:
Subject: =?windows-1251?B?4uXx/CDx5fDo4OsgIuvl6vEgKGxleHgpIiDt4CAzMyBkdmQuIOTu8Q==?=
---------------------------------------------------------------------------------
16 years, 5 months