[
https://issues.redhat.com/browse/WFLY-13871?page=com.atlassian.jira.plugi...
]
Richard Achmatowicz edited comment on WFLY-13871 at 9/16/20 10:45 AM:
----------------------------------------------------------------------
The option described above says: introduce a new listener type for the association to
register, SuspendResumeListener, which involves changing the Association interface, the
AssociationImpl and then cause that new listener to be registered in the EJBRemoteService.
However, there is a short cut here that could simplify things considerably.
Because the SuspendResumeListener depends on being able to send module updates back to the
client, it will depend on having access to a ModuleAvailabilityListener, which *could* be
the same instance as passed to the method registerModuleAvailabilityListener.
The short cut is to not add in a new listener type to the Association, but simply register
the SuspendResumeListener in the registerModuleAvailabilityListener method of
AssociationImpl, at the same time that we register the "middleman listener" that
uses the ModuleAvailabilityListener parameter. It makes sense because module availability
is determined now by two things: what is happening in the deployment repository, as well
as whether or not the server is suspended. It avoids complicating the Association
interface with an extra method as well as the RemoteEJBService with an extra
registration.
The only possible negative side effect is that it doesn't make explicit the fact that
a suspend resume listener is being registered, at the Association interface level.
was (Author: rachmato):
The option described above says: introduce a new listener type for the association to
register, SuspendResumeListener, which involves changing the Association interface, the
AssociationImpl and then cause that new listener to be registered in the EJBRemoteService.
However, there is a short cut here that could simplify things considerably.
Because the SuspendResumeListener depends on being able to send module updates back to the
client, it will depend on having access to a ModuleAvailabilityListener, which *could* be
the same instance as passed to the method registerModuleAvailabilityListener.
The short cut is to not add in a new listener type to the Association, but simply register
the SuspendResumeListener in the registerModuleAvailabilityListener method of
AssociationImpl, at the same time that we register the ModuleAvailabilityListener. It
makes sense because module availability is determined now by two things: what is happening
in the deployment repository, as well as whether or not the server is suspended. It avoids
complicating the Association interface with an extra method as well as the
RemoteEJBService with an extra registration.
The only possible negative side effect is that it doesn't make explicit the fact that
a suspend resume listener is being registered, at the Association interface level.
Re-implement correct suspend/resume behaviour for EJB client
------------------------------------------------------------
Key: WFLY-13871
URL:
https://issues.redhat.com/browse/WFLY-13871
Project: WildFly
Issue Type: Bug
Components: EJB
Affects Versions: 21.0.0.Beta1
Reporter: Richard Achmatowicz
Assignee: Richard Achmatowicz
Priority: Major
Fix For: 21.0.0.Beta1
When a server is suspended, in order to avoid receipt of invocations which will never be
correctly processed, all connected clients should be notified that all modules on that
server are now unavailable; when the server is resumed, all connected clients should be
notified that all modules on that server are now again available so that the server may
again take part in processing invocations.
This behaviour was present in versions of EAP before EAP 7.1 but was not ported over to
the new EJB client server-side classes which were substantially refactored.
This issue will re-instante that behaviour. The two cases of standalone and clustered
deployments should be considered.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)