Hi Vincent, one way, used in VisualWorks, is to ensure that only valid handles exist. So very early at startup the system does some allInstances invocations on the classes of handles and invalidates all the handles found. This doesn't fix handles stored as raw integers anywhere, but provided the system is designed to have specific objects for external handles (and I hope it is) this shouldn't happen. Since snapshot is relatively rare and start-up relatively frequent (at least in e.g. a web deployment context), one performance improvement is to do the allInstances before snapshot, and then merely enumerate the collection of handles, rather than use allInstances. On Thu, Nov 13, 2014 at 9:05 AM, Blondeau Vincent <[hidden email]> wrote:
best,
Eliot |
On 13 November 2014 18:37, Eliot Miranda <[hidden email]> wrote:
Just to add: - (re)validating external resources could vary depending on library or how short/long-lived the resource is etc. As you described, one of the scenarios is to flush invalid handles at system startup. In NB i using session checking, to do it lazily, once there's an attempt to use external resource. But all that, of course, doesn't addresses the problem when external resource get invalidated, for one or another reason, during same session. Using proxy to control each and every access to external resource is, of course, an ultimate solution, but alas, quite expensive since imposes high overhead. I would call it a brute-force solution. To minimize overhead, my approach often is to place a check at key entry part of algorithm, so if check passed, then rest of algorithm can run safely without excessive checking. But that really depends on design of external library/framework, whether it possible or not. Usually, if you cleverly organize the access to services, it is possible to do it without using brute-force proxyfying.
-- Best regards,
Igor Stasenko. |
Free forum by Nabble | Edit this page |