java.lang.IllegalStateException: this should be impossible

69 views
Skip to first unread message

jm.n...@gmail.com

unread,
Aug 31, 2010, 3:15:42 PM8/31/10
to mongodb-user
Hello I am using the Mongo 2.1 java driver and get this exception. If
I restart my mongod whilst my application is running and connected to
mongo then perform a save.

After a bit of debugging I can see the actual cause is from:

java.lang.IllegalStateException: done called and _internalStack was: 0


java.lang.IllegalStateException: this should be impossible

com.mongodb.DBTCPConnector$MyPort.error(DBTCPConnector.java:287)
com.mongodb.DBTCPConnector.say(DBTCPConnector.java:165)
com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:256)
com.mongodb.DBCollection.save(DBCollection.java:556)

Cause

java.lang.IllegalStateException: done called and _internalStack was: 0

Eliot Horowitz

unread,
Aug 31, 2010, 3:28:49 PM8/31/10
to mongod...@googlegroups.com
Is there more of the stack trace you can send?
Can you try the master of the github branch?


--
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To post to this group, send email to mongod...@googlegroups.com.
To unsubscribe from this group, send email to mongodb-user...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/mongodb-user?hl=en.


James Nissel

unread,
Aug 31, 2010, 3:57:33 PM8/31/10
to mongod...@googlegroups.com
Using master the full stack trace is:

java.lang.IllegalStateException: done called and _internalStack was: 0

com.mongodb.DBTCPConnector$MyPort.done(DBTCPConnector.java:271)
com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:116)
com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)
com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:256)
com.mongodb.DBCollection.save(DBCollection.java:556)
com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638)
com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685)
com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679)
com.google.code.morphia.DAO.save(DAO.java:84)
com.nissel.convensionTest.actions.HelloAction.execute(HelloAction.java:38)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:616)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:465)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:636)

I guess its a reconnecting problem after the mongo restart.

Eliot Horowitz

unread,
Aug 31, 2010, 4:34:12 PM8/31/10
to mongod...@googlegroups.com
Can you try master?
I can't reproduce this.

A sample program that showed it would be incredibly helpful.

James Nissel

unread,
Aug 31, 2010, 5:46:27 PM8/31/10
to mongod...@googlegroups.com
And the error caused is:

31-Aug-2010 22:41:32 com.mongodb.DBTCPConnector$MyPort error
SEVERE: MyPort.error called but _last is null called b/c of


java.lang.IllegalStateException: done called and _internalStack was: 0

at com.mongodb.DBTCPConnector$MyPort.done(DBTCPConnector.java:271)
at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:116)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)
at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:256)
at com.mongodb.DBCollection.save(DBCollection.java:556)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679)
at bugMain.main(bugMain.java:27)
Exception in thread "main" java.lang.IllegalStateException: done


called and _internalStack was: 0

at com.mongodb.DBTCPConnector$MyPort.done(DBTCPConnector.java:271)
at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:116)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)
at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:256)
at com.mongodb.DBCollection.save(DBCollection.java:556)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679)
at bugMain.main(bugMain.java:27)

On 31 August 2010 22:43, James Nissel <jm.n...@gmail.com> wrote:
> I couldn't cause it using plain mongo. I can only trigger it if I use
> it with Morphia 0.95, so I'm not sure if its your bug or not.
>
> Example code below:
>
> import java.net.UnknownHostException;
>
> import com.google.code.morphia.Datastore;
> import com.google.code.morphia.Morphia;
> import com.google.code.morphia.annotations.Entity;
> import com.google.code.morphia.annotations.Id;
> import com.mongodb.MongoException;
>
> public class bugMain {
>        public static void main(String[] args) throws UnknownHostException,
> MongoException {
>                Morphia morphia = new Morphia();
>                morphia.map(Person.class);
>
>                Datastore ds = morphia.createDatastore("myDb");
>
>                Person james = new Person("James", 100);
>                ds.save(james);
>                System.out.println("Save first object");
>                System.out.println("Please restart mongod now. You have 10 seconds.");
>
>                try {
>                        Thread.sleep(10000);
>                } catch (InterruptedException e) { }
>
>
>                james.setAge(50);
>                ds.save(james);
>                System.out.println("Update object");
>
>                System.out.println("Done");
>        }
>
>        @Entity
>        public static class Person {
>                @Id
>                private String name;
>                private int age;
>
>                public Person(){}
>
>                public Person(String name, int age) {
>                        this.name = name;
>                        this.age = age;
>                }
>                public String getName() {
>                        return name;
>                }
>                public void setName(String name) {
>                        this.name = name;
>                }
>                public int getAge() {
>                        return age;
>                }
>                public void setAge(int age) {
>                        this.age = age;

James Nissel

unread,
Aug 31, 2010, 5:43:39 PM8/31/10
to mongod...@googlegroups.com

Example code below:

import java.net.UnknownHostException;

jm.n...@gmail.com

unread,
Sep 2, 2010, 11:52:29 AM9/2/10
to mongodb-user
Any news on this? was my example useful?
> >> On 31 August 2010 20:28, Eliot Horowitz <eliothorow...@gmail.com> wrote:
> >> > Is there more of the stack trace you can send?
> >> > Can you try the master of the github branch?
>
> >> > On Tue, Aug 31, 2010 at 3:15 PM, jm.nis...@googlemail.com
> >> > <jm.nis...@gmail.com> wrote:
>
> >> >> Hello I am using the Mongo 2.1 java driver and get this exception. If
> >> >> I restart my mongod whilst my application is running and connected to
> >> >> mongo then perform a save.
>
> >> >> After a bit of debugging I can see the actual cause is from:
>
> >> >> java.lang.IllegalStateException: done called and _internalStack was: 0
>
> >> >> java.lang.IllegalStateException: this should be impossible
>
> >> >>    com.mongodb.DBTCPConnector$MyPort.error(DBTCPConnector.java:287)
> >> >>    com.mongodb.DBTCPConnector.say(DBTCPConnector.java:165)
>
> ...
>
> read more »

Eliot Horowitz

unread,
Sep 2, 2010, 4:49:57 PM9/2/10
to mongod...@googlegroups.com
Have you tried master yet?
Should be more debugging in that build.


--

jm.n...@gmail.com

unread,
Sep 2, 2010, 4:55:35 PM9/2/10
to mongodb-user
Yes I've been using master since my 2nd post. The two most recent
stack traces are from master. Sorry about the confusion.

On Sep 2, 9:49 pm, Eliot Horowitz <eliothorow...@gmail.com> wrote:
> Have you tried master yet?
> Should be more debugging in that build.
>
> On Thu, Sep 2, 2010 at 11:52 AM, jm.nis...@googlemail.com <
> ...
>
> read more »

Eliot Horowitz

unread,
Sep 2, 2010, 5:33:55 PM9/2/10
to mongod...@googlegroups.com
Ok - just pushed what I think is a fix.
Can you try again?

> ...
>
> read more »

jm.n...@gmail.com

unread,
Sep 2, 2010, 5:45:30 PM9/2/10
to mongodb-user
Different exception now. And it wasnt throw all the way out of .save()
but the update did still fail.

02-Sep-2010 22:45:00 com.mongodb.DBTCPConnector$MyPort error
SEVERE: MyPort.error called
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:
109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at org.bson.io.PoolOutputBuffer.pipe(PoolOutputBuffer.java:113)
at com.mongodb.OutMessage.pipe(OutMessage.java:165)
at com.mongodb.DBPort.go(DBPort.java:87)
at com.mongodb.DBPort.call(DBPort.java:56)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:186)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:223)
at com.mongodb.DBCollection.findOne(DBCollection.java:486)
at com.mongodb.DBCollection.findOne(DBCollection.java:475)
at com.mongodb.DB.command(DB.java:140)
at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:
115)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)
at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:256)
at com.mongodb.DBCollection.save(DBCollection.java:556)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679)
at bugMain.main(bugMain.java:34)
Update object
Done
02-Sep-2010 22:45:00 com.mongodb.DBTCPConnector$MyPort requestDone
WARNING: _internalStack in requestDone should be 0 is: 1


On Sep 2, 10:33 pm, Eliot Horowitz <eliothorow...@gmail.com> wrote:
> Ok - just pushed what I think is a fix.
> Can you try again?
>
> On Thu, Sep 2, 2010 at 4:55 PM, jm.nis...@googlemail.com <
> ...
>
> read more »

Eliot Horowitz

unread,
Sep 2, 2010, 9:49:28 PM9/2/10
to mongod...@googlegroups.com
Can you try one more time?

> ...
>
> read more »

jm.n...@gmail.com

unread,
Sep 3, 2010, 3:37:53 AM9/3/10
to mongodb-user
Changed again but not working. Exception is being thrown all the way
out of save() again.

03-Sep-2010 08:34:57 com.mongodb.DBTCPConnector$MyPort error
SEVERE: MyPort.error called
com.mongodb.MongoInternalException: cmd failed:
java.net.SocketException: Broken pipe
at com.mongodb.DBPort.runCommand(DBPort.java:122)
at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:
115)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)
at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:256)
at com.mongodb.DBCollection.save(DBCollection.java:556)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679)
at bugMain.main(bugMain.java:34)
Caused by: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:
109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at org.bson.io.PoolOutputBuffer.pipe(PoolOutputBuffer.java:113)
at com.mongodb.OutMessage.pipe(OutMessage.java:165)
at com.mongodb.DBPort.go(DBPort.java:87)
at com.mongodb.DBPort.runCommand(DBPort.java:116)
... 8 more
Exception in thread "main" com.mongodb.MongoInternalException: cmd
failed: java.net.SocketException: Broken pipe
at com.mongodb.DBPort.runCommand(DBPort.java:122)
at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:
115)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)
at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:256)
at com.mongodb.DBCollection.save(DBCollection.java:556)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685)
at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679)
at bugMain.main(bugMain.java:34)
Caused by: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:
109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at org.bson.io.PoolOutputBuffer.pipe(PoolOutputBuffer.java:113)
at com.mongodb.OutMessage.pipe(OutMessage.java:165)
at com.mongodb.DBPort.go(DBPort.java:87)
at com.mongodb.DBPort.runCommand(DBPort.java:116)
... 8 more



On 3 Sep, 02:49, Eliot Horowitz <eliothorow...@gmail.com> wrote:
> Can you try one more time?
>
> On Thu, Sep 2, 2010 at 5:45 PM, jm.nis...@googlemail.com <
> ...
>
> read more »

Eliot Horowitz

unread,
Sep 3, 2010, 7:06:01 AM9/3/10
to mongod...@googlegroups.com
That is correct behavior.

After a mongod restart, the first write is going to fail.

> ...
>
> read more »

Reply all
Reply to author
Forward
0 new messages