<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">There are, nevertheless, different
      approaches to failure, which sort of correlate with approaches to
      life in general too :-)<br>
      - constructivist (if life gives you lemons, make a lemonade)<br>
      - tantrum (complain loudly and as often as you can)<br>
      - passive-aggressive (don't say anything when it happens, but make
      a scene later)<br>
      - ...<br>
      <br>
      Melanie's suggested approach is more along the constructivist
      side. Tantrums are annoying.<br>
      <br>
      On 4/18/2014 3:12 PM, Oren Hurvitz wrote:<br>
    </div>
    <blockquote
cite="mid:CAHVj34+7pQHVyyzGv08uJJKB=Dg9YAMuPaDmEDhBYW9+CVJaQw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>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":<br>
          <br>
          "How happy is the blameless vestal's lot!<br>
          The world forgetting, by the world forgot.<br>
          Eternal sunshine of the spotless mind!<br>
          Each pray'r accepted, and each wish resign'd;"<br>
          <br>
        </div>
        To deny failure is to deny reality.<br>
        <div><br>
          <br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">On Sat, Apr 19, 2014 at 12:43 AM,
          Melanie <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:melanie@t-data.com" target="_blank">melanie@t-data.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            The point is no NOT let it fail. Asset storing never fails<br>
            permanently if it's retried until successful. The upper
            layers (all<br>
            the way to the viewer) are not equipped to handle an asset
            storing<br>
            failure. Propagating the exception would just annoy the user
            with<br>
            needless messages. Since asset servers can be "gone" for a
            while,<br>
            for instance when there is a net failure, there is no way to
            give it<br>
            a timeout, either. A sim in OSGrid, if it gets disconnected,
             could<br>
            run on locally cached assets and manage to reconnect after
            20<br>
            minutes and simply upload all new assets since then.
            Screaming<br>
            "failure" at the user is pointless in such a scenario.<br>
            <span class="HOEnZb"><font color="#888888"><br>
                - Melanie<br>
              </font></span>
            <div class="HOEnZb">
              <div class="h5"><br>
                On 18/04/2014 22:56, Oren Hurvitz wrote:<br>
                > There seems to be a misunderstanding here. We're
                talking about a case where<br>
                > the operation has FAILED. The only question is
                whether to pretend that it<br>
                > succeeded, so that the user will find out that it
                failed later, to their<br>
                > surprise, or to report failure immediately.
                Obviously it's better to report<br>
                > failure immediately.<br>
                ><br>
                ><br>
                ><br>
                > On Fri, Apr 18, 2014 at 10:40 PM, Melanie <<a
                  moz-do-not-send="true"
                  href="mailto:melanie@t-data.com">melanie@t-data.com</a>>
                wrote:<br>
                ><br>
                >> Name one valid use case where current OpenSim
                is able to handle such<br>
                >> an exception gracefully, e.g. without
                user-visible error.<br>
                >><br>
                >> - Melanie<br>
                >><br>
                >> On 18/04/2014 13:28, Mike Chase wrote:<br>
                >> > I'm inclined to agree with Oren.  Asset
                Writes could fail for a variety<br>
                >> of<br>
                >> > reasons and there are lots of use cases
                where you need to know the asset<br>
                >> is<br>
                >> > on disk.  I think propagating exceptions
                is the more sound approach IMO.<br>
                >> ><br>
                >> > I also agree re: the custom comms vs a
                persistent queue mechanism but I<br>
                >> > don't want to derail this topic.   That
                can wait for another day.<br>
                >> ><br>
                >> > Mike<br>
                >> ><br>
                >> > -----Original Message-----<br>
                >> > From: <a moz-do-not-send="true"
                  href="mailto:opensim-dev-bounces@lists.berlios.de">opensim-dev-bounces@lists.berlios.de</a><br>
                >> > [mailto:<a moz-do-not-send="true"
                  href="mailto:opensim-dev-bounces@lists.berlios.de">opensim-dev-bounces@lists.berlios.de</a>]
                On Behalf Of Oren Hurvitz<br>
                >> > Sent: Friday, April 18, 2014 7:06 AM<br>
                >> > To: <a moz-do-not-send="true"
                  href="mailto:opensim-dev@lists.berlios.de">opensim-dev@lists.berlios.de</a><br>
                >> > Subject: Re: [Opensim-dev] Error detection
                when storing an asset<br>
                >> ><br>
                >> > Regarding the hiding of exceptions: to be
                clear, I was already bitten by<br>
                >> > this behavior; that's why I started to
                investigate how assets are<br>
                >> stored. I<br>
                >> > have therefore already changed Kitely's
                version of OpenSim to propagate<br>
                >> > exceptions, and the question is whether
                other people would like me to<br>
                >> > contribute this change. If anyone has an
                opinion then please reply.<br>
                >> ><br>
                >> > Regarding your suggestion to save assets
                to local disk and retry them<br>
                >> later:<br>
                >> > this is basically what a persistent
                message queue does. If you're going<br>
                >> to<br>
                >> > go that route then it would be best to add
                a real message queue rather<br>
                >> than<br>
                >> > a home-grown one. I would LOVE it if
                OpenSim used a message queue for<br>
                >> > communications, as it would allow ripping
                out thousands of lines of<br>
                >> homemade<br>
                >> > communications code, and would be faster
                and more reliable to boot. But<br>
                >> > that's a bigger issue and I'll put it
                aside for now.<br>
                >> ><br>
                >> > In this particular case, using a
                persistent message queue isn't be the<br>
                >> right<br>
                >> > solution: the right solution is to report
                failures immediately. Otherwise<br>
                >> > you'd get weird behavior such as a user
                who thinks they've successfully<br>
                >> worn<br>
                >> > a piece of clothing, but when they
                teleport to another region it<br>
                >> disappears<br>
                >> > because the other region can't load the
                asset (because it was never<br>
                >> saved).<br>
                >> > To prevent these problems you need to
                fail-fast, and tell the user<br>
                >> > immediately when a problem happens. This
                doesn't mean to crash the sim; I<br>
                >> > strongly doubt any asset failure would
                cause that, it would just fail the<br>
                >> > specific packet or message that is
                currently being handled, as it should.<br>
                >> ><br>
                >> ><br>
                >> ><br>
                >> > --<br>
                >> > View this message in context:<br>
                >> ><br>
                >> <a moz-do-not-send="true"
href="http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-ass"
                  target="_blank">http://opensim-dev.2196679.n2.nabble.com/Error-detection-when-storing-an-ass</a><br>
                >> > et-tp7579223p7579225.html<br>
                >> > Sent from the opensim-dev mailing list
                archive at Nabble.com.<br>
                >> >
                _______________________________________________<br>
                >> > Opensim-dev mailing list<br>
                >> > <a moz-do-not-send="true"
                  href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
                >> > <a moz-do-not-send="true"
                  href="https://lists.berlios.de/mailman/listinfo/opensim-dev"
                  target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
                >> ><br>
                >> >
                _______________________________________________<br>
                >> > Opensim-dev mailing list<br>
                >> > <a moz-do-not-send="true"
                  href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
                >> > <a moz-do-not-send="true"
                  href="https://lists.berlios.de/mailman/listinfo/opensim-dev"
                  target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
                >> ><br>
                >> ><br>
                >> _______________________________________________<br>
                >> Opensim-dev mailing list<br>
                >> <a moz-do-not-send="true"
                  href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
                >> <a moz-do-not-send="true"
                  href="https://lists.berlios.de/mailman/listinfo/opensim-dev"
                  target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
                >><br>
                ><br>
                ><br>
                ><br>
                ><br>
                ><br>
                > _______________________________________________<br>
                > Opensim-dev mailing list<br>
                > <a moz-do-not-send="true"
                  href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
                > <a moz-do-not-send="true"
                  href="https://lists.berlios.de/mailman/listinfo/opensim-dev"
                  target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
                _______________________________________________<br>
                Opensim-dev mailing list<br>
                <a moz-do-not-send="true"
                  href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
                <a moz-do-not-send="true"
                  href="https://lists.berlios.de/mailman/listinfo/opensim-dev"
                  target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
        <br clear="all">
        <br>
        -- <br>
        <div dir="ltr">Oren Hurvitz<br>
          VP R&D<br>
          Kitely Ltd.<br>
          <br>
          Email: <a moz-do-not-send="true"
            href="mailto:orenh@kitely.com" target="_blank">orenh@kitely.com</a></div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Opensim-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a>
<a class="moz-txt-link-freetext" href="https://lists.berlios.de/mailman/listinfo/opensim-dev">https://lists.berlios.de/mailman/listinfo/opensim-dev</a></pre>
    </blockquote>
    <br>
  </body>
</html>