Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Melanie
Hi Oren,

I disagree about propagating exceptions. To the caller, asset calls are opaque 
and cannot fail. There are too many places where exceptions would cause issues 
and the focus has always been on keeping the sim up and running at almost any 
cost.

That said, no old asset servers (UGAIM) exist anymore, so the comment and the 
bad handling of null returns should be fixed.

I would like to see assets being cached on asset server failure, but then 
retried using a disk based queue with exponential back-off. Allowing an asset 
to fail storing is better than having the sim crash, but of course storing it 
as soon as the asset server is back is preferable. We have something similar, 
but memory based, for Avination and it has served us well. I believe even our 
code may still have the bad return calue checking in it.

I will see about putting our asset retry code into core as a starting point, 
then the rough edges can be smoothed and disk based queueing introduced so that 
assets can be retried even across a simulator restart.

- Melanie

On 18 Apr 2014, at 10:44, Oren Hurvitz or...@kitely.com wrote:

I have found that when OpenSim tries to store an asset using 
AssetServicesConnector, it doesn't handle failures well. There are several 
problems in AssetServicesConnector.Store(), and some of them seem to be based 
on historical considerations that may no longer be relevant, so I'd like to see 
if anyone knows about these issues before pushing a change.

AssetServicesConnector.Store() uses SynchronousRestObjectRequester to send the 
request. The first problem is that SynchronousRestObjectRequester.MakeRequest() 
hides exceptions and just returns null. This is a mistake: MakeRequest() should 
propagate exceptions, so that callers will know that an error occurred. Store() 
already catches these exceptions (as it should), so this won't make a big 
difference in our case. But of course, this change in behavior to MakeRequest() 
may affect other places in the code as well. It's better to fail-fast when 
errors occur, and not hide them, because doing so makes the errors much harder 
to diagnose once they become apparent. This brings me to the next problem...

The second problem is that AssetServicesConnector.Store() compares the return 
value from MakeRequest to string.Empty, but in fact the return value that is 
returned in case of error is null. So it mistakenly treats 'null' as a valid 
Asset ID, which causes it to cache the asset. This can cause the operation to 
appear to have succeeded for a while, since OpenSim will have the asset 
available, but the moment the asset is loaded from the asset server the jig is 
up and the asset will be missing. This can explain many problems people have 
had with disappearing assets.

The third problem is a comment found in this method, which says that a return 
value of 'null' is considered to be success because of old asset servers that 
don't send any reply back. That's a really old comment (from 2009). Can I 
assume that we no longer need to support such servers and we can treat 'null' 
as the error value that it is?

Oren

___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Oren Hurvitz
Regarding the hiding of exceptions: to be clear, I was already bitten by this
behavior; that's why I started to investigate how assets are stored. I have
therefore already changed Kitely's version of OpenSim to propagate
exceptions, and the question is whether other people would like me to
contribute this change. If anyone has an opinion then please reply.

Regarding your suggestion to save assets to local disk and retry them later:
this is basically what a persistent message queue does. If you're going to
go that route then it would be best to add a real message queue rather than
a home-grown one. I would LOVE it if OpenSim used a message queue for
communications, as it would allow ripping out thousands of lines of homemade
communications code, and would be faster and more reliable to boot. But
that's a bigger issue and I'll put it aside for now.

In this particular case, using a persistent message queue isn't be the right
solution: the right solution is to report failures immediately. Otherwise
you'd get weird behavior such as a user who thinks they've successfully worn
a piece of clothing, but when they teleport to another region it disappears
because the other region can't load the asset (because it was never saved).
To prevent these problems you need to fail-fast, and tell the user
immediately when a problem happens. This doesn't mean to crash the sim; I
strongly doubt any asset failure would cause that, it would just fail the
specific packet or message that is currently being handled, as it should.



--
View this message in context: 
http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-asset-tp7579223p7579225.html
Sent from the opensim-dev mailing list archive at Nabble.com.
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Mike Chase
I'm inclined to agree with Oren.  Asset Writes could fail for a variety of
reasons and there are lots of use cases where you need to know the asset is
on disk.  I think propagating exceptions is the more sound approach IMO.

I also agree re: the custom comms vs a persistent queue mechanism but I
don't want to derail this topic.   That can wait for another day.

Mike

-Original Message-
From: opensim-dev-boun...@lists.berlios.de
[mailto:opensim-dev-boun...@lists.berlios.de] On Behalf Of Oren Hurvitz
Sent: Friday, April 18, 2014 7:06 AM
To: opensim-dev@lists.berlios.de
Subject: Re: [Opensim-dev] Error detection when storing an asset

Regarding the hiding of exceptions: to be clear, I was already bitten by
this behavior; that's why I started to investigate how assets are stored. I
have therefore already changed Kitely's version of OpenSim to propagate
exceptions, and the question is whether other people would like me to
contribute this change. If anyone has an opinion then please reply.

Regarding your suggestion to save assets to local disk and retry them later:
this is basically what a persistent message queue does. If you're going to
go that route then it would be best to add a real message queue rather than
a home-grown one. I would LOVE it if OpenSim used a message queue for
communications, as it would allow ripping out thousands of lines of homemade
communications code, and would be faster and more reliable to boot. But
that's a bigger issue and I'll put it aside for now.

In this particular case, using a persistent message queue isn't be the right
solution: the right solution is to report failures immediately. Otherwise
you'd get weird behavior such as a user who thinks they've successfully worn
a piece of clothing, but when they teleport to another region it disappears
because the other region can't load the asset (because it was never saved).
To prevent these problems you need to fail-fast, and tell the user
immediately when a problem happens. This doesn't mean to crash the sim; I
strongly doubt any asset failure would cause that, it would just fail the
specific packet or message that is currently being handled, as it should.



--
View this message in context:
http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-ass
et-tp7579223p7579225.html
Sent from the opensim-dev mailing list archive at Nabble.com.
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev

___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Melanie
In most cases there is no viable failure path that does not detrimentally 
affect user experience. The viewer is unable to handle asset upload failure 
gracefully and transparently to the user.

As far as messge queues go, I have in-depth knowledge of MQ Series, IBM's 
message queue service. I agree that such a framework would be beneficial to 
many communications tasks in OpenSim, but that is, as you say, a matter for 
another day.

The asset subsystem, however, should present an error-free interface to the 
upper layers, as there is much code that depends on assets never failing and 
provides no usable error path. Our retry solution combines a good user 
experience without user visible error messages with a sound subsystem that can 
tolerate transient erros like asset server failovers, net glitches or temporary 
overload conditions.

Asset writing, btw, is not related to wearing clothing as baked textures do not 
go to the asset server, but to the XBakes server. In standalones, they are not 
persisted but are transferred from one region to another.

Your obeservation about message queueing is a good one, I may spend a few 
cycles to see if an appropriately licensed implementation in C# exists.

- Melanie

On 18 Apr 2014, at 13:05, Oren Hurvitz or...@kitely.com wrote:

Regarding the hiding of exceptions: to be clear, I was already bitten by this
behavior; that's why I started to investigate how assets are stored. I have
therefore already changed Kitely's version of OpenSim to propagate
exceptions, and the question is whether other people would like me to
contribute this change. If anyone has an opinion then please reply.

Regarding your suggestion to save assets to local disk and retry them later:
this is basically what a persistent message queue does. If you're going to
go that route then it would be best to add a real message queue rather than
a home-grown one. I would LOVE it if OpenSim used a message queue for
communications, as it would allow ripping out thousands of lines of homemade
communications code, and would be faster and more reliable to boot. But
that's a bigger issue and I'll put it aside for now.

In this particular case, using a persistent message queue isn't be the right
solution: the right solution is to report failures immediately. Otherwise
you'd get weird behavior such as a user who thinks they've successfully worn
a piece of clothing, but when they teleport to another region it disappears
because the other region can't load the asset (because it was never saved).
To prevent these problems you need to fail-fast, and tell the user
immediately when a problem happens. This doesn't mean to crash the sim; I
strongly doubt any asset failure would cause that, it would just fail the
specific packet or message that is currently being handled, as it should.



--
View this message in context: 
http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-asset-tp7579223p7579225.html
Sent from the opensim-dev mailing list archive at Nabble.com.
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Shaun T. Erickson

There's also the free ActiveMQ.

On 4/18/14, 11:23 AM, Melanie wrote:

MQ Series, IBM's message queue service


___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Mike Chase
Or RabbitMQ...  Or even ZeroMQ if an external MQ service is deemed too
heavy.

Mike

-Original Message-
From: opensim-dev-boun...@lists.berlios.de
[mailto:opensim-dev-boun...@lists.berlios.de] On Behalf Of Shaun T. Erickson
Sent: Friday, April 18, 2014 1:22 PM
To: opensim-dev@lists.berlios.de
Subject: Re: [Opensim-dev] Error detection when storing an asset

There's also the free ActiveMQ.

On 4/18/14, 11:23 AM, Melanie wrote:
 MQ Series, IBM's message queue service

___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev

___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Melanie
Name one valid use case where current OpenSim is able to handle such
an exception gracefully, e.g. without user-visible error.

- Melanie

On 18/04/2014 13:28, Mike Chase wrote:
 I'm inclined to agree with Oren.  Asset Writes could fail for a variety of
 reasons and there are lots of use cases where you need to know the asset is
 on disk.  I think propagating exceptions is the more sound approach IMO.
 
 I also agree re: the custom comms vs a persistent queue mechanism but I
 don't want to derail this topic.   That can wait for another day.
 
 Mike
 
 -Original Message-
 From: opensim-dev-boun...@lists.berlios.de
 [mailto:opensim-dev-boun...@lists.berlios.de] On Behalf Of Oren Hurvitz
 Sent: Friday, April 18, 2014 7:06 AM
 To: opensim-dev@lists.berlios.de
 Subject: Re: [Opensim-dev] Error detection when storing an asset
 
 Regarding the hiding of exceptions: to be clear, I was already bitten by
 this behavior; that's why I started to investigate how assets are stored. I
 have therefore already changed Kitely's version of OpenSim to propagate
 exceptions, and the question is whether other people would like me to
 contribute this change. If anyone has an opinion then please reply.
 
 Regarding your suggestion to save assets to local disk and retry them later:
 this is basically what a persistent message queue does. If you're going to
 go that route then it would be best to add a real message queue rather than
 a home-grown one. I would LOVE it if OpenSim used a message queue for
 communications, as it would allow ripping out thousands of lines of homemade
 communications code, and would be faster and more reliable to boot. But
 that's a bigger issue and I'll put it aside for now.
 
 In this particular case, using a persistent message queue isn't be the right
 solution: the right solution is to report failures immediately. Otherwise
 you'd get weird behavior such as a user who thinks they've successfully worn
 a piece of clothing, but when they teleport to another region it disappears
 because the other region can't load the asset (because it was never saved).
 To prevent these problems you need to fail-fast, and tell the user
 immediately when a problem happens. This doesn't mean to crash the sim; I
 strongly doubt any asset failure would cause that, it would just fail the
 specific packet or message that is currently being handled, as it should.
 
 
 
 --
 View this message in context:
 http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-ass
 et-tp7579223p7579225.html
 Sent from the opensim-dev mailing list archive at Nabble.com.
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev
 
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev
 
 
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Oren Hurvitz
There seems to be a misunderstanding here. We're talking about a case where
the operation has FAILED. The only question is whether to pretend that it
succeeded, so that the user will find out that it failed later, to their
surprise, or to report failure immediately. Obviously it's better to report
failure immediately.



On Fri, Apr 18, 2014 at 10:40 PM, Melanie mela...@t-data.com wrote:

 Name one valid use case where current OpenSim is able to handle such
 an exception gracefully, e.g. without user-visible error.

 - Melanie

 On 18/04/2014 13:28, Mike Chase wrote:
  I'm inclined to agree with Oren.  Asset Writes could fail for a variety
 of
  reasons and there are lots of use cases where you need to know the asset
 is
  on disk.  I think propagating exceptions is the more sound approach IMO.
 
  I also agree re: the custom comms vs a persistent queue mechanism but I
  don't want to derail this topic.   That can wait for another day.
 
  Mike
 
  -Original Message-
  From: opensim-dev-boun...@lists.berlios.de
  [mailto:opensim-dev-boun...@lists.berlios.de] On Behalf Of Oren Hurvitz
  Sent: Friday, April 18, 2014 7:06 AM
  To: opensim-dev@lists.berlios.de
  Subject: Re: [Opensim-dev] Error detection when storing an asset
 
  Regarding the hiding of exceptions: to be clear, I was already bitten by
  this behavior; that's why I started to investigate how assets are
 stored. I
  have therefore already changed Kitely's version of OpenSim to propagate
  exceptions, and the question is whether other people would like me to
  contribute this change. If anyone has an opinion then please reply.
 
  Regarding your suggestion to save assets to local disk and retry them
 later:
  this is basically what a persistent message queue does. If you're going
 to
  go that route then it would be best to add a real message queue rather
 than
  a home-grown one. I would LOVE it if OpenSim used a message queue for
  communications, as it would allow ripping out thousands of lines of
 homemade
  communications code, and would be faster and more reliable to boot. But
  that's a bigger issue and I'll put it aside for now.
 
  In this particular case, using a persistent message queue isn't be the
 right
  solution: the right solution is to report failures immediately. Otherwise
  you'd get weird behavior such as a user who thinks they've successfully
 worn
  a piece of clothing, but when they teleport to another region it
 disappears
  because the other region can't load the asset (because it was never
 saved).
  To prevent these problems you need to fail-fast, and tell the user
  immediately when a problem happens. This doesn't mean to crash the sim; I
  strongly doubt any asset failure would cause that, it would just fail the
  specific packet or message that is currently being handled, as it should.
 
 
 
  --
  View this message in context:
 
 http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-ass
  et-tp7579223p7579225.html
  Sent from the opensim-dev mailing list archive at Nabble.com.
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev
 
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev
 
 
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev




-- 
Oren Hurvitz
VP RD
Kitely Ltd.

Email: or...@kitely.com i...@kitely.com
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev

Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Oren Hurvitz
There are several popular open-source message queues that we could use. If
we're going to do that then we need to have an open discussion about the
pros and cons of the various packages in order to decide which one to use.
In the past I've used JBoss Messaging, but that's been discontinued so it
isn't relevant.

A big decision will be whether to use a message queue that's completely
embedded in OpenSim, or one that runs standalone. OK, I've already said too
much; I'm hijacking my own thread...



On Fri, Apr 18, 2014 at 10:13 PM, Mike Chase 
mike.ch...@alternatemetaverse.com wrote:

 Or RabbitMQ...  Or even ZeroMQ if an external MQ service is deemed too
 heavy.

 Mike

 -Original Message-
 From: opensim-dev-boun...@lists.berlios.de
 [mailto:opensim-dev-boun...@lists.berlios.de] On Behalf Of Shaun T.
 Erickson
 Sent: Friday, April 18, 2014 1:22 PM
 To: opensim-dev@lists.berlios.de
 Subject: Re: [Opensim-dev] Error detection when storing an asset

 There's also the free ActiveMQ.

 On 4/18/14, 11:23 AM, Melanie wrote:
  MQ Series, IBM's message queue service

 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev

 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev




-- 
Oren Hurvitz
VP RD
Kitely Ltd.

Email: or...@kitely.com i...@kitely.com
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev

Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Melanie
The point is no NOT let it fail. Asset storing never fails
permanently if it's retried until successful. The upper layers (all
the way to the viewer) are not equipped to handle an asset storing
failure. Propagating the exception would just annoy the user with
needless messages. Since asset servers can be gone for a while,
for instance when there is a net failure, there is no way to give it
a timeout, either. A sim in OSGrid, if it gets disconnected,  could
run on locally cached assets and manage to reconnect after 20
minutes and simply upload all new assets since then. Screaming
failure at the user is pointless in such a scenario.

- Melanie

On 18/04/2014 22:56, Oren Hurvitz wrote:
 There seems to be a misunderstanding here. We're talking about a case where
 the operation has FAILED. The only question is whether to pretend that it
 succeeded, so that the user will find out that it failed later, to their
 surprise, or to report failure immediately. Obviously it's better to report
 failure immediately.
 
 
 
 On Fri, Apr 18, 2014 at 10:40 PM, Melanie mela...@t-data.com wrote:
 
 Name one valid use case where current OpenSim is able to handle such
 an exception gracefully, e.g. without user-visible error.

 - Melanie

 On 18/04/2014 13:28, Mike Chase wrote:
  I'm inclined to agree with Oren.  Asset Writes could fail for a variety
 of
  reasons and there are lots of use cases where you need to know the asset
 is
  on disk.  I think propagating exceptions is the more sound approach IMO.
 
  I also agree re: the custom comms vs a persistent queue mechanism but I
  don't want to derail this topic.   That can wait for another day.
 
  Mike
 
  -Original Message-
  From: opensim-dev-boun...@lists.berlios.de
  [mailto:opensim-dev-boun...@lists.berlios.de] On Behalf Of Oren Hurvitz
  Sent: Friday, April 18, 2014 7:06 AM
  To: opensim-dev@lists.berlios.de
  Subject: Re: [Opensim-dev] Error detection when storing an asset
 
  Regarding the hiding of exceptions: to be clear, I was already bitten by
  this behavior; that's why I started to investigate how assets are
 stored. I
  have therefore already changed Kitely's version of OpenSim to propagate
  exceptions, and the question is whether other people would like me to
  contribute this change. If anyone has an opinion then please reply.
 
  Regarding your suggestion to save assets to local disk and retry them
 later:
  this is basically what a persistent message queue does. If you're going
 to
  go that route then it would be best to add a real message queue rather
 than
  a home-grown one. I would LOVE it if OpenSim used a message queue for
  communications, as it would allow ripping out thousands of lines of
 homemade
  communications code, and would be faster and more reliable to boot. But
  that's a bigger issue and I'll put it aside for now.
 
  In this particular case, using a persistent message queue isn't be the
 right
  solution: the right solution is to report failures immediately. Otherwise
  you'd get weird behavior such as a user who thinks they've successfully
 worn
  a piece of clothing, but when they teleport to another region it
 disappears
  because the other region can't load the asset (because it was never
 saved).
  To prevent these problems you need to fail-fast, and tell the user
  immediately when a problem happens. This doesn't mean to crash the sim; I
  strongly doubt any asset failure would cause that, it would just fail the
  specific packet or message that is currently being handled, as it should.
 
 
 
  --
  View this message in context:
 
 http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-ass
  et-tp7579223p7579225.html
  Sent from the opensim-dev mailing list archive at Nabble.com.
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev
 
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev
 
 
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev

 
 
 
 
 
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Error detection when storing an asset

2014-04-18 Thread Oren Hurvitz
I feel that we've transcended from this mortal coil into heavenly spheres.
Such powerful realms require poetry to comprehend, so I must quote from the
poem Eloisa to Abelard:

How happy is the blameless vestal's lot!
The world forgetting, by the world forgot.
Eternal sunshine of the spotless mind!
Each pray'r accepted, and each wish resign'd;

To deny failure is to deny reality.




On Sat, Apr 19, 2014 at 12:43 AM, Melanie mela...@t-data.com wrote:

 The point is no NOT let it fail. Asset storing never fails
 permanently if it's retried until successful. The upper layers (all
 the way to the viewer) are not equipped to handle an asset storing
 failure. Propagating the exception would just annoy the user with
 needless messages. Since asset servers can be gone for a while,
 for instance when there is a net failure, there is no way to give it
 a timeout, either. A sim in OSGrid, if it gets disconnected,  could
 run on locally cached assets and manage to reconnect after 20
 minutes and simply upload all new assets since then. Screaming
 failure at the user is pointless in such a scenario.

 - Melanie

 On 18/04/2014 22:56, Oren Hurvitz wrote:
  There seems to be a misunderstanding here. We're talking about a case
 where
  the operation has FAILED. The only question is whether to pretend that it
  succeeded, so that the user will find out that it failed later, to their
  surprise, or to report failure immediately. Obviously it's better to
 report
  failure immediately.
 
 
 
  On Fri, Apr 18, 2014 at 10:40 PM, Melanie mela...@t-data.com wrote:
 
  Name one valid use case where current OpenSim is able to handle such
  an exception gracefully, e.g. without user-visible error.
 
  - Melanie
 
  On 18/04/2014 13:28, Mike Chase wrote:
   I'm inclined to agree with Oren.  Asset Writes could fail for a
 variety
  of
   reasons and there are lots of use cases where you need to know the
 asset
  is
   on disk.  I think propagating exceptions is the more sound approach
 IMO.
  
   I also agree re: the custom comms vs a persistent queue mechanism but
 I
   don't want to derail this topic.   That can wait for another day.
  
   Mike
  
   -Original Message-
   From: opensim-dev-boun...@lists.berlios.de
   [mailto:opensim-dev-boun...@lists.berlios.de] On Behalf Of Oren
 Hurvitz
   Sent: Friday, April 18, 2014 7:06 AM
   To: opensim-dev@lists.berlios.de
   Subject: Re: [Opensim-dev] Error detection when storing an asset
  
   Regarding the hiding of exceptions: to be clear, I was already bitten
 by
   this behavior; that's why I started to investigate how assets are
  stored. I
   have therefore already changed Kitely's version of OpenSim to
 propagate
   exceptions, and the question is whether other people would like me to
   contribute this change. If anyone has an opinion then please reply.
  
   Regarding your suggestion to save assets to local disk and retry them
  later:
   this is basically what a persistent message queue does. If you're
 going
  to
   go that route then it would be best to add a real message queue rather
  than
   a home-grown one. I would LOVE it if OpenSim used a message queue for
   communications, as it would allow ripping out thousands of lines of
  homemade
   communications code, and would be faster and more reliable to boot.
 But
   that's a bigger issue and I'll put it aside for now.
  
   In this particular case, using a persistent message queue isn't be the
  right
   solution: the right solution is to report failures immediately.
 Otherwise
   you'd get weird behavior such as a user who thinks they've
 successfully
  worn
   a piece of clothing, but when they teleport to another region it
  disappears
   because the other region can't load the asset (because it was never
  saved).
   To prevent these problems you need to fail-fast, and tell the user
   immediately when a problem happens. This doesn't mean to crash the
 sim; I
   strongly doubt any asset failure would cause that, it would just fail
 the
   specific packet or message that is currently being handled, as it
 should.
  
  
  
   --
   View this message in context:
  
 
 http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-ass
   et-tp7579223p7579225.html
   Sent from the opensim-dev mailing list archive at Nabble.com.
   ___
   Opensim-dev mailing list
   Opensim-dev@lists.berlios.de
   https://lists.berlios.de/mailman/listinfo/opensim-dev
  
   ___
   Opensim-dev mailing list
   Opensim-dev@lists.berlios.de
   https://lists.berlios.de/mailman/listinfo/opensim-dev
  
  
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev
 
 
 
 
 
 
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev