Can you explain how the 'snapshot' function works?
I think my Tomcat went offline while priki was making a snapshot. on
restart I am now unable to reach the wiki and see a server error with
an error stack trace. Other applications are ok, not priki :(
How can I recover data?
can I connect previous snapshot and journal files to the wiki?
How do I do this?
Thank-you for your help.
...because the snapshot is generated with a temporary name and only
renamed after it is complete.
The incomplete snapshots (can happen if the machine crashes for
example) are simply ignored.
See you, Klaus.
Please note that this issue was fixed by deleting all the snapshot
files from the base directory and keeping the journal files there, to
allow for the Priki Wiki to create its own fresh/clean snapshot files.
It looks like the snapshot files were corrupted for some reason e.g.
shutting down the server while Priki Wiki was in the process of
creating a snapshot file.
Best regards,
Basheer Al Ghazawi
Chief Technical Officer
JValley Software Solutions
http://www.JValley.net
The Essence of Quality !!
On Aug 21, 11:02 am, "richard strauss" <carn...@googlemail.com> wrote:
> Thank-you for your advice here. I have added 2 files.
> 1- error stack
> 2- image of files in vitor/base
>
> Can you see what happened from the error stack?
> Can you tell me which files to delete/ rename to roll back to last good
> save?
>
> Thanks.
>
> On 20/08/07, Klaus Wuestefeld <klauswuestef...@gmail.com> wrote:
>
>
>
>
>
> > > If one snapshot is damaged you can load the previous of it. But this is
> > > really hard to happen.
>
> > ...because the snapshot is generated with a temporary name and only
> > renamed after it is complete.
>
> > The incomplete snapshots (can happen if the machine crashes for
> > example) are simply ignored.
>
> > See you, Klaus.
>
>
>
> [errorstack.txt]
>
> message
>
> description The server encountered an internal error () that prevented it from fulfilling this request.
>
> exception
>
> javax.servlet.ServletException: Servlet execution threw an exception
> org.tuckey.web.filters.urlrewrite.RewrittenUrl.doRewrite(RewrittenUrl.java:188)
> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:340)
>
> root cause
>
> java.lang.StackOverflowError
> java.lang.Exception.<init>(Exception.java:77)
> java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:54)
> sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.HashMap.readObject(HashMap.java:1029)
> sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.ArrayList.readObject(ArrayList.java:593)
> sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.ArrayList.readObject(ArrayList.java:593)
> sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.HashMap.readObject(HashMap.java:1029)
> sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.ArrayList.readObject(ArrayList.java:593)
> sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.ArrayList.readObject(ArrayList.java:593)
> sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.HashMap.readObject(HashMap.java:1029)
> sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> java.util.ArrayList.readObject(ArrayList.java:593)
> sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> ...
>
> read more »
>
> wikifault.jpg
> 166KViewDownload- Hide quoted text -
>
> - Show quoted text -
No. As explained in my previous mail, the snapshot is generated with a
temporary name and renamed only after successful completion, so it
will not get corrupted due to shutdown.
Try and take another snapshot and restart the system. I believe you
will get the same Stack overflow again. Let me know if that is the
case.
The StackOverflow you get during deserialization indicates your object
graph is too DEEP for the Java serialization mechanism (blame Sun :P).
You probably have a large chain of objects like object A references B
which references C and so on... This happens when you manually
implement a linked list structure, for example.
If that is the case, let me know. You have a few options.
See you, Klaus.
I didnt see that.
> that we have quite a large datafile at about 3mb.
3MB is large for a wiki. Tiny for Prevayler, though. That is not the
problem. The problem, it seems, is the DEPTH of your object graph.
There are some things you can do, but I need to confirm that is the
problem.
> We are creating a manual
> index in the wiki
What do you mean? Did you alter the priki code or is this something
the wiki editors do manually?
> The wiki was working very well and we like the autlinking feature very much,
> but now it appears that it is unable to save any files.
What exactly do you mean? What files? Snapshots?
See you, Klaus.
> You will see from the wikifault.jpg in my last post
I didnt see that.
> that we have quite a large datafile at about 3mb.
3MB is large for a wiki. Tiny for Prevayler, though. That is not the
problem. The problem, it seems, is the DEPTH of your object graph.
There are some things you can do, but I need to confirm that is the
problem.
> We are creating a manual
> index in the wiki
What do you mean? Did you alter the priki code or is this something
the wiki editors do manually?
> The wiki was working very well and we like the autlinking feature very much,
> but now it appears that it is unable to save any files.
What exactly do you mean? What files? Snapshots?
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.RuntimeException: Unable to produce a copy of the prevalent system for trying out transactions before applying them to the real system.
org.prevayler.implementation.publishing.censorship.StrictTransactionCensor.produceNewFoodTaster (StrictTransactionCensor.java:53)
org.prevayler.implementation.publishing.censorship.StrictTransactionCensor.royalFoodTaster(StrictTransactionCensor.java:44)
org.prevayler.implementation.publishing.censorship.StrictTransactionCensor.approve (StrictTransactionCensor.java:28)
org.prevayler.implementation.publishing.CentralPublisher.approve(CentralPublisher.java:72)
org.prevayler.implementation.publishing.CentralPublisher.publishWithoutWorryingAboutNewSubscriptions (CentralPublisher.java:63)
org.prevayler.implementation.publishing.CentralPublisher.publish(CentralPublisher.java:49)
org.prevayler.implementation.PrevaylerImpl.publish(PrevaylerImpl.java:64)
org.prevayler.implementation.PrevaylerImpl.execute (PrevaylerImpl.java:59)
org.priki.service.Prevalence.execute(Prevalence.java:97)
org.priki.actions.PrikiAction.postWikiword(PrikiAction.java:206)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:300)
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:166)
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35)
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164)
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35)
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164)
org.priki.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:85)
com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
com.opensymphony.xwork.DefaultActionProxy.execute (DefaultActionProxy.java:116)
com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)
com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:350)note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
Apache Tomcat/6.0.13
See you, Klaus.
Please send it.
> org.prevayler.implementation.PrevaylerImpl.publish (PrevaylerImpl.java:64)
> > org.prevayler.implementation.PrevaylerImpl.execute
> > (PrevaylerImpl.java:59)
> > org.priki.service.Prevalence.execute(Prevalence.java:97)
> >
> org.priki.actions.PrikiAction.postWikiword (PrikiAction.java:206)
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > java.lang.reflect.Method.invoke(Method.java:597)
> >
> >
> com.opensymphony.xwork.DefaultActionInvocation.invokeAction (DefaultActionInvocation.java:300)
> >
> com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:166)
> >
> com.opensymphony.xwork.interceptor.AroundInterceptor.intercept
> > (AroundInterceptor.java:35)
> >
> com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
> >
> com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35)
> > com.opensymphony.xwork.DefaultActionInvocation.invoke
> > (DefaultActionInvocation.java:164)
> >
> com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35)
> >
> com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
> >
> >
> com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35)
> >
> com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
> >
> com.opensymphony.xwork.interceptor.AroundInterceptor.intercept
> > (AroundInterceptor.java:35)
> >
> com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
> >
> com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35)
Thanks