Sandbox AppDomains and 'Object has been disconnected or does not exist at the server' exceptions

View: New views
3 Messages — Rating Filter:   Alert me  

Sandbox AppDomains and 'Object has been disconnected or does not exist at the server' exceptions

by Patrick van der Willik :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I isolated my IPy instance into a seperate AppDomain with some serious restrictions on which assemblies are allowed to be loaded. In the current setup it's impossible to open sockets or read files from disk, which is exactly what I'm trying to accomplish.

However, when my server is idle for a few minutes(or more simple, when I put my laptop into hibernation and resume it later that day), the connection with the appdomain seems to time out. When calling a function it'll throw an exception with the following message:
"Object '/0bb4e678_d665_4698_ae30_cdaf28351e72/0jpmcrorxe_qkvj6fml9kboj_3.rem' has been disconnected or does not exist at the server."

I'm not really sure how I need to solve this one. Research showed that it probably has to do with Remoting.

Patrick

_______________________________________________
Users mailing list
Users@...
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Re: Sandbox AppDomains and 'Object has been disconnected or does not exist at the server' exceptions

by Dino Viehland :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

Tomas has checked in a fix for this.  Basically what’s going on is that w/ remoting you have a lease which keeps the remote objects alive.  If that lease expires (by default it’s 5 or 15 minutes or something) then the object becomes unreachable.  The fix was to opt-out of the leasing system.  Long term we need a better story around the lease but it’ll prevent this from happening for the time being.

 

From: users-bounces@... [mailto:users-bounces@...] On Behalf Of Patrick van der Willik
Sent: Wednesday, June 24, 2009 6:52 PM
To: Discussion of IronPython
Subject: [IronPython] Sandbox AppDomains and 'Object has been disconnected or does not exist at the server' exceptions

 

I isolated my IPy instance into a seperate AppDomain with some serious restrictions on which assemblies are allowed to be loaded. In the current setup it's impossible to open sockets or read files from disk, which is exactly what I'm trying to accomplish.

However, when my server is idle for a few minutes(or more simple, when I put my laptop into hibernation and resume it later that day), the connection with the appdomain seems to time out. When calling a function it'll throw an exception with the following message:
"Object '/0bb4e678_d665_4698_ae30_cdaf28351e72/0jpmcrorxe_qkvj6fml9kboj_3.rem' has been disconnected or does not exist at the server."

I'm not really sure how I need to solve this one. Research showed that it probably has to do with Remoting.

Patrick


_______________________________________________
Users mailing list
Users@...
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Re: Sandbox AppDomains and 'Object has been disconnected or does not exist at the server' exceptions

by Patrick van der Willik :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
It took me a few hours of reading documentation, but I figured out a fix for myself earlier today but never had the chance to send the mail around with my own fix. My own fix means overloading InitializeLifetimeService() on all MarshalByRefObjects and have it return null. This will work perfectly for class variables which are passed cross appdomain. I have several classes which were passed cross appdomain and are kept around for as long as the applications runs.

Your explanation is in this matter correct. Remoting keeps GC references around for 5 minutes by default. After 5 minutes of no method calls on the object, the GC thinks the object is no longer used and disposes of it. The whole reason for this is because object pinging would case a massive amount of traffic and depending on objects to report their destruction isn't reliable.

Basically, the solution is to add this to all classes that are passed over AppDomain boundaries:
        public override object InitializeLifetimeService()
        {
            return null;
        }

Patrick van der Willik

Dino Viehland wrote:

Tomas has checked in a fix for this.  Basically what’s going on is that w/ remoting you have a lease which keeps the remote objects alive.  If that lease expires (by default it’s 5 or 15 minutes or something) then the object becomes unreachable.  The fix was to opt-out of the leasing system.  Long term we need a better story around the lease but it’ll prevent this from happening for the time being.

 

From: users-bounces@... [users-bounces@...] On Behalf Of Patrick van der Willik
Sent: Wednesday, June 24, 2009 6:52 PM
To: Discussion of IronPython
Subject: [IronPython] Sandbox AppDomains and 'Object has been disconnected or does not exist at the server' exceptions

 

I isolated my IPy instance into a seperate AppDomain with some serious restrictions on which assemblies are allowed to be loaded. In the current setup it's impossible to open sockets or read files from disk, which is exactly what I'm trying to accomplish.

However, when my server is idle for a few minutes(or more simple, when I put my laptop into hibernation and resume it later that day), the connection with the appdomain seems to time out. When calling a function it'll throw an exception with the following message:
"Object '/0bb4e678_d665_4698_ae30_cdaf28351e72/0jpmcrorxe_qkvj6fml9kboj_3.rem' has been disconnected or does not exist at the server."

I'm not really sure how I need to solve this one. Research showed that it probably has to do with Remoting.

Patrick


_______________________________________________ Users mailing list Users@... http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


_______________________________________________
Users mailing list
Users@...
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com