private static URI getApplicationAssociation(ConcurrentMap<Application, URI> applications, AbstractInvocationContext context) { return applications.get(toApplication(context.getLocator().getIdentifier())); }
static boolean addBlackListedDestination(AbstractInvocationContext context, URI destination) { Assert.checkNotNullParam("context", context); if (destination != null) { Set<URI> set = context.getAttachment(BL_KEY); if (set == null) { final Set<URI> appearing = context.putAttachmentIfAbsent(BL_KEY, set = new HashSet<>()); if (appearing != null) { set = appearing; } } Logs.INVOCATION.tracef("Blacklisting destination (locator = %s, weak affinity = %s, missing target = %s)", context.getLocator(), context.getWeakAffinity(), destination); return set.add(destination); } else { return false; } }
private IoFuture<ConnectionPeerIdentity> getConnection(final AbstractInvocationContext context, final URI target, @NotNull AuthenticationContext authenticationContext) throws Exception { Affinity affinity = context.getLocator().getAffinity(); String cluster = (affinity instanceof ClusterAffinity) ? ((ClusterAffinity) affinity).getClusterName() : context.getInitialCluster(); if (cluster != null) { return doPrivileged((PrivilegedAction<IoFuture<ConnectionPeerIdentity>>) () -> discoveredNodeRegistry.getConnectedIdentityUsingClusterEffective(Endpoint.getCurrent(), target, "ejb", "jboss", authenticationContext, cluster)); } return doPrivileged((PrivilegedAction<IoFuture<ConnectionPeerIdentity>>) () -> Endpoint.getCurrent().getConnectedIdentity(target, "ejb", "jboss", authenticationContext)); } }
private static boolean setDestination(final AbstractInvocationContext context, final NamingProvider namingProvider) { if (namingProvider != null) { final URI destination = context.getDestination(); if (destination == null) { final EJBLocator<?> locator = context.getLocator(); if (locator.getAffinity() == Affinity.NONE) { final Affinity weakAffinity = context.getWeakAffinity(); if (weakAffinity == Affinity.NONE) { return setNamingDestination(context, namingProvider); } } } } return true; }
private Application updateOrFollowApplication(AbstractInvocationContext context, ConcurrentMap<Application, URI> applications, boolean register) { URI destination = context.getDestination(); if (destination != null) { EJBIdentifier identifier = context.getLocator().getIdentifier(); Application application = toApplication(identifier); URI existing = applications.putIfAbsent(application, destination); if (existing != null) { // Someone else set a mapping, use it instead context.setDestination(existing); } else { if (register) { context.putAttachment(APPLICATION, application); } return application; } } else { Logs.TXN.trace("Failed assertion: a destination was supposed ot be present but wasn't"); } return null; }
private List<Throwable> doAnyDiscovery(AbstractInvocationContext context, final FilterSpec filterSpec, final EJBLocator<?> locator) { Logs.INVOCATION.tracef("Performing any discovery(locator = %s, weak affinity = %s, filter spec = %s)", context.getLocator(), context.getWeakAffinity(), filterSpec); final List<Throwable> problems;
private List<Throwable> doClusterDiscovery(AbstractInvocationContext context, final FilterSpec filterSpec) { Logs.INVOCATION.tracef("Performing cluster discovery(locator = %s, weak affinity = %s, filter spec = %s)", context.getLocator(), context.getWeakAffinity(), filterSpec); Map<String, URI> nodes = new HashMap<>(); final EJBClientContext clientContext = context.getClientContext(); final EJBLocator<?> locator = context.getLocator();
private void removeNode(final AbstractInvocationContext context) { final Affinity targetAffinity = context.getTargetAffinity(); if (targetAffinity instanceof NodeAffinity) { final RemoteEJBReceiver ejbReceiver = context.getClientContext().getAttachment(RemoteTransportProvider.ATTACHMENT_KEY); if (ejbReceiver != null) { final EJBClientChannel ejbClientChannel = context.getAttachment(RemoteEJBReceiver.EJBCC_KEY); if (ejbClientChannel != null) { final NodeInformation nodeInformation = ejbReceiver.getDiscoveredNodeRegistry().getNodeInformation(((NodeAffinity) targetAffinity).getNodeName()); if (nodeInformation != null) { nodeInformation.removeModule(ejbClientChannel, context.getLocator().getIdentifier().getModuleIdentifier()); } } } } } }
private List<Throwable> doFirstMatchDiscovery(AbstractInvocationContext context, final FilterSpec filterSpec, final FilterSpec fallbackFilterSpec) { Logs.INVOCATION.tracef("Performing first-match discovery(locator = %s, weak affinity = %s, filter spec = %s)", context.getLocator(), context.getWeakAffinity(), filterSpec); final List<Throwable> problems; final Set<URI> set = context.getAttachment(BL_KEY); assert context.getLocator().getAffinity() instanceof ClusterAffinity; Logs.INVOCATION.tracef("Performed first-match discovery, no match, falling back to cluster discovery"); return merge(problems, doClusterDiscovery(context, fallbackFilterSpec));
private void processMissingTarget(final AbstractInvocationContext context) { final URI destination = context.getDestination(); if (destination == null || context.getTargetAffinity() == Affinity.LOCAL) { // some later interceptor cleared it out on us return; } // Oops, we got some wrong information! addBlackListedDestination(context, destination); final EJBLocator<?> locator = context.getLocator(); if (! (locator.getAffinity() instanceof ClusterAffinity)) { // it *was* "none" affinity, but it has been relocated; locate it back again context.setLocator(locator.withNewAffinity(Affinity.NONE)); } // clear the weak affinity so that cluster invocations can be re-targeted. context.setWeakAffinity(Affinity.NONE); context.setTargetAffinity(null); context.setDestination(null); context.requestRetry(); } }
private List<Throwable> executeDiscovery(AbstractInvocationContext context) { assert context.getDestination() == null; final EJBLocator<?> locator = context.getLocator(); final Affinity affinity = locator.getAffinity(); final Affinity weakAffinity = context.getWeakAffinity();
private static URI getApplicationAssociation(ConcurrentMap<Application, URI> applications, AbstractInvocationContext context) { return applications.get(toApplication(context.getLocator().getIdentifier())); }
private static URI getApplicationAssociation(ConcurrentMap<Application, URI> applications, AbstractInvocationContext context) { return applications.get(toApplication(context.getLocator().getIdentifier())); }
static boolean addBlackListedDestination(AbstractInvocationContext context, URI destination) { Assert.checkNotNullParam("context", context); if (destination != null) { Set<URI> set = context.getAttachment(BL_KEY); if (set == null) { final Set<URI> appearing = context.putAttachmentIfAbsent(BL_KEY, set = new HashSet<>()); if (appearing != null) { set = appearing; } } Logs.INVOCATION.tracef("Blacklisting destination (locator = %s, weak affinity = %s, missing target = %s)", context.getLocator(), context.getWeakAffinity(), destination); return set.add(destination); } else { return false; } }
static boolean addBlackListedDestination(AbstractInvocationContext context, URI destination) { Assert.checkNotNullParam("context", context); if (destination != null) { Set<URI> set = context.getAttachment(BL_KEY); if (set == null) { final Set<URI> appearing = context.putAttachmentIfAbsent(BL_KEY, set = new HashSet<>()); if (appearing != null) { set = appearing; } } Logs.INVOCATION.tracef("Blacklisting destination (locator = %s, weak affinity = %s, missing target = %s)", context.getLocator(), context.getWeakAffinity(), destination); return set.add(destination); } else { return false; } }
private IoFuture<ConnectionPeerIdentity> getConnection(final AbstractInvocationContext context, final URI target, @NotNull AuthenticationContext authenticationContext) throws Exception { Affinity affinity = context.getLocator().getAffinity(); String cluster = (affinity instanceof ClusterAffinity) ? ((ClusterAffinity) affinity).getClusterName() : context.getInitialCluster(); if (cluster != null) { return doPrivileged((PrivilegedAction<IoFuture<ConnectionPeerIdentity>>) () -> discoveredNodeRegistry.getConnectedIdentityUsingClusterEffective(Endpoint.getCurrent(), target, "ejb", "jboss", authenticationContext, cluster)); } return doPrivileged((PrivilegedAction<IoFuture<ConnectionPeerIdentity>>) () -> Endpoint.getCurrent().getConnectedIdentity(target, "ejb", "jboss", authenticationContext)); } }
private IoFuture<ConnectionPeerIdentity> getConnection(final AbstractInvocationContext context, final URI target, @NotNull AuthenticationContext authenticationContext) throws Exception { Affinity affinity = context.getLocator().getAffinity(); String cluster = (affinity instanceof ClusterAffinity) ? ((ClusterAffinity) affinity).getClusterName() : context.getInitialCluster(); if (cluster != null) { return doPrivileged((PrivilegedAction<IoFuture<ConnectionPeerIdentity>>) () -> discoveredNodeRegistry.getConnectedIdentityUsingClusterEffective(Endpoint.getCurrent(), target, "ejb", "jboss", authenticationContext, cluster)); } return doPrivileged((PrivilegedAction<IoFuture<ConnectionPeerIdentity>>) () -> Endpoint.getCurrent().getConnectedIdentity(target, "ejb", "jboss", authenticationContext)); } }
private static boolean setDestination(final AbstractInvocationContext context, final NamingProvider namingProvider) { if (namingProvider != null) { final URI destination = context.getDestination(); if (destination == null) { final EJBLocator<?> locator = context.getLocator(); if (locator.getAffinity() == Affinity.NONE) { final Affinity weakAffinity = context.getWeakAffinity(); if (weakAffinity == Affinity.NONE) { return setNamingDestination(context, namingProvider); } } } } return true; }
private static boolean setDestination(final AbstractInvocationContext context, final NamingProvider namingProvider) { if (namingProvider != null) { final URI destination = context.getDestination(); if (destination == null) { final EJBLocator<?> locator = context.getLocator(); if (locator.getAffinity() == Affinity.NONE) { final Affinity weakAffinity = context.getWeakAffinity(); if (weakAffinity == Affinity.NONE) { return setNamingDestination(context, namingProvider); } } } } return true; }
private void removeNode(final AbstractInvocationContext context) { final Affinity targetAffinity = context.getTargetAffinity(); if (targetAffinity instanceof NodeAffinity) { final RemoteEJBReceiver ejbReceiver = context.getClientContext().getAttachment(RemoteTransportProvider.ATTACHMENT_KEY); if (ejbReceiver != null) { final EJBClientChannel ejbClientChannel = context.getAttachment(RemoteEJBReceiver.EJBCC_KEY); if (ejbClientChannel != null) { final NodeInformation nodeInformation = ejbReceiver.getDiscoveredNodeRegistry().getNodeInformation(((NodeAffinity) targetAffinity).getNodeName()); if (nodeInformation != null) { nodeInformation.removeModule(ejbClientChannel, context.getLocator().getIdentifier().getModuleIdentifier()); } } } } } }