static boolean setNamingDestination(final AbstractInvocationContext context, final NamingProvider namingProvider) { final ProviderEnvironment providerEnvironment = namingProvider.getProviderEnvironment(); final List<URI> providerUris = providerEnvironment.getProviderUris(); List<URI> uris = findPreferredURIs(context, providerUris); if (uris == null) { uris = new ArrayList<>(providerUris.size()); for (URI uri : providerUris) { if (!isBlackListed(context, uri)) { uris.add(uri); } } } final int size = uris.size(); if (size == 0) { // we can't discover the location; fail return false; } else if (size == 1) { context.setDestination(uris.get(0)); return true; } else { context.setDestination(uris.get(ThreadLocalRandom.current().nextInt(size))); } if (context instanceof EJBSessionCreationInvocationContext) { DiscoveryEJBClientInterceptor.setupSessionAffinities((EJBSessionCreationInvocationContext)context); } return true; }
private void setupStickinessIfRequired(AbstractInvocationContext context, boolean propagate, AbstractTransaction transaction) { ConcurrentMap<Application, URI> applications = null; if (transaction instanceof RemoteTransaction) { final URI location = ((RemoteTransaction) transaction).getLocation(); // we can only route this request to one place; do not load-balance if (location != null) { context.setDestination(location); setupSessionAffinitiesIfNeeded(context); } } else if (transaction instanceof LocalTransaction && propagate){ applications = getOrCreateApplicationMap(transaction); URI destination = getApplicationAssociation(applications, context); if (destination != null) { context.setDestination(destination); setupSessionAffinitiesIfNeeded(context); } else { if (applications.size() > 0) { context.putAttachment(PREFERRED_DESTINATIONS, applications.values()); } context.putAttachment(APPLICATIONS, applications); } } }
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 void processMissingTarget(final AbstractInvocationContext context) { final URI destination = context.getDestination(); if (destination == null || context.getTargetAffinity() == Affinity.LOCAL) { // nothing we can/should do. return; } // Oops, we got some wrong information! addBlackListedDestination(context, destination); // clear the weak affinity so that cluster invocations can be re-targeted. context.setWeakAffinity(Affinity.NONE); context.setTargetAffinity(null); context.setDestination(null); context.requestRetry(); }
context.setDestination(location); if (nodeName != null) context.setTargetAffinity(new NodeAffinity(nodeName)); return problems;
final URI uri = entry.getValue(); context.setTargetAffinity(new NodeAffinity(nodeName)); context.setDestination(uri); context.setDestination(uri); context.setTargetAffinity(new NodeAffinity(selectedNode));
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(); } }
context.setDestination(location); Logs.INVOCATION.tracef("Performed first-match discovery(target affinity = %s, destination = %s)", context.getTargetAffinity(), context.getDestination()); return queue.getProblems();
if (! isBlackListed(context, affinity.getUri())) { context.setDestination(affinity.getUri()); context.setTargetAffinity(affinity); } else if (affinity == Affinity.NONE && weakAffinity instanceof URIAffinity) { if (! isBlackListed(context, weakAffinity.getUri())) { context.setDestination(weakAffinity.getUri()); context.setTargetAffinity(weakAffinity); } else if (weakAffinity instanceof URIAffinity || weakAffinity == Affinity.LOCAL) { context.setDestination(weakAffinity.getUri()); context.setTargetAffinity(weakAffinity); return null;
static boolean setNamingDestination(final AbstractInvocationContext context, final NamingProvider namingProvider) { final ProviderEnvironment providerEnvironment = namingProvider.getProviderEnvironment(); final List<URI> providerUris = providerEnvironment.getProviderUris(); List<URI> uris = findPreferredURIs(context, providerUris); if (uris == null) { uris = new ArrayList<>(providerUris.size()); for (URI uri : providerUris) { if (!isBlackListed(context, uri)) { uris.add(uri); } } } final int size = uris.size(); if (size == 0) { // we can't discover the location; fail return false; } else if (size == 1) { context.setDestination(uris.get(0)); return true; } else { context.setDestination(uris.get(ThreadLocalRandom.current().nextInt(size))); } if (context instanceof EJBSessionCreationInvocationContext) { DiscoveryEJBClientInterceptor.setupSessionAffinities((EJBSessionCreationInvocationContext)context); } return true; }
static boolean setNamingDestination(final AbstractInvocationContext context, final NamingProvider namingProvider) { final ProviderEnvironment providerEnvironment = namingProvider.getProviderEnvironment(); final List<URI> providerUris = providerEnvironment.getProviderUris(); List<URI> uris = findPreferredURIs(context, providerUris); if (uris == null) { uris = new ArrayList<>(providerUris.size()); for (URI uri : providerUris) { if (!isBlackListed(context, uri)) { uris.add(uri); } } } final int size = uris.size(); if (size == 0) { // we can't discover the location; fail return false; } else if (size == 1) { context.setDestination(uris.get(0)); return true; } else { context.setDestination(uris.get(ThreadLocalRandom.current().nextInt(size))); } if (context instanceof EJBSessionCreationInvocationContext) { DiscoveryEJBClientInterceptor.setupSessionAffinities((EJBSessionCreationInvocationContext)context); } return true; }
private void setupStickinessIfRequired(AbstractInvocationContext context, boolean propagate, AbstractTransaction transaction) { ConcurrentMap<Application, URI> applications = null; if (transaction instanceof RemoteTransaction) { final URI location = ((RemoteTransaction) transaction).getLocation(); // we can only route this request to one place; do not load-balance if (location != null) { context.setDestination(location); setupSessionAffinitiesIfNeeded(context); } } else if (transaction instanceof LocalTransaction && propagate){ applications = getOrCreateApplicationMap(transaction); URI destination = getApplicationAssociation(applications, context); if (destination != null) { context.setDestination(destination); setupSessionAffinitiesIfNeeded(context); } else { if (applications.size() > 0) { context.putAttachment(PREFERRED_DESTINATIONS, applications.values()); } context.putAttachment(APPLICATIONS, applications); } } }
private void setupStickinessIfRequired(AbstractInvocationContext context, boolean propagate, AbstractTransaction transaction) { ConcurrentMap<Application, URI> applications = null; if (transaction instanceof RemoteTransaction) { final URI location = ((RemoteTransaction) transaction).getLocation(); // we can only route this request to one place; do not load-balance if (location != null) { context.setDestination(location); setupSessionAffinitiesIfNeeded(context); } } else if (transaction instanceof LocalTransaction && propagate){ applications = getOrCreateApplicationMap(transaction); URI destination = getApplicationAssociation(applications, context); if (destination != null) { context.setDestination(destination); setupSessionAffinitiesIfNeeded(context); } else { if (applications.size() > 0) { context.putAttachment(PREFERRED_DESTINATIONS, applications.values()); } context.putAttachment(APPLICATIONS, applications); } } }
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 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 void processMissingTarget(final AbstractInvocationContext context) { final URI destination = context.getDestination(); if (destination == null || context.getTargetAffinity() == Affinity.LOCAL) { // nothing we can/should do. return; } // Oops, we got some wrong information! addBlackListedDestination(context, destination); // 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 void processMissingTarget(final AbstractInvocationContext context) { final URI destination = context.getDestination(); if (destination == null || context.getTargetAffinity() == Affinity.LOCAL) { // nothing we can/should do. return; } // Oops, we got some wrong information! addBlackListedDestination(context, destination); // 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 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 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(); } }
context.setDestination(location); Logs.INVOCATION.tracef("Performed first-match discovery(target affinity = %s, destination = %s)", context.getTargetAffinity(), context.getDestination()); return queue.getProblems();