uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marshall Schor (JIRA)" <...@uima.apache.org>
Subject [jira] [Commented] (UIMA-2977) destroy method of shared resources never called
Date Tue, 18 Oct 2016 21:45:59 GMT

    [ https://issues.apache.org/jira/browse/UIMA-2977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15586757#comment-15586757

Marshall Schor commented on UIMA-2977:

Adding Burn's reply from the dev list, slightly edited:
re: *The PEAR support version of this just forwards calls relating to external resources and
cas pools to the parent.*
My understanding is that the RM's used by pears are created by copying the 5 resource maps
and the CasManager --- so destroying one pear's RM would destroy the resources shared by the
others.  (Marshall says: true. But remember, the framework never calls destroy on the Resource
Manager; it is up to the overall application to decide if and when to do this.)

We also have a use case where multiple pipelines need to share resources but can't share the
CasManager as their typesystems are different, and may be created much later.  We can use
the 5-arg constructor to create a subclassed Resource Manager, but this has a problem in that
it doesn't share the resources loaded by the original pipeline.  UIMA-5146 will allow a better
way to create the other Resource Manager such that it **does** share the resources loaded
by the original pipeline.

> destroy method of shared resources never called
> -----------------------------------------------
>                 Key: UIMA-2977
>                 URL: https://issues.apache.org/jira/browse/UIMA-2977
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>            Reporter: Richard Eckart de Castilho
>            Assignee: Marshall Schor
>              Labels: Resources
>             Fix For: 3.0.0SDKexp
> Apparently the ResourceManager and the resources created by the manager do not participate
in the usual component life cycle. On other components, such as analysis engines or readers,
the destroy() method is called when the component is disposed of. External resources never
get notified when they are no longer needed. At least any resources derived from Resource
(e.g. DataResource and ParametrizedDataResource) should be notified. The SharedResourceObject
interface does not define any such life cycle callback.
> As a side-note: An alternative to the rather heavy-weight Resource interface of UIMA
maybe be small life cycle interfaces such as the Spring InitializingBean and DisposableBean
interfaces, or Java annotations marking initialization and destruction methods (e.g. @PostConstruct
and @PreDestroy).

This message was sent by Atlassian JIRA

View raw message