Hi, Pavel Is it possible to provide type-safe API for ServiceProxyContext ? I think constructions like int arg1 = ctx.attribute("arg1"); are error prone.
Can we make something like this : //Signature with two generic params which allow the compiler to check if the service will be called with the wrong type context. public <T extends ContextedWith<CtxType>, CtxType> T serviceProxyTyped(ClusterGroup prj, String name, Class<? super T > srvcCls, CtxType optCtx, boolean sticky, long timeout) //new interface which services with scoped context should implement public interface ContextedWith<T> { T getCtx(); } // implementation can delegate to Map-like context or be POJO. interface MyServiceContext { int getArg1(); String getUserId(); } class MyService implements ContextedWith<MyServiceContext> { void doThings() { MyServiceContext ctx = getCtx(); System.out.println("ctx.getArg1() = " + ctx.getArg1()); } @Override public MyServiceContext getCtx() { return ServiceProxyContext.current(); } } WDYT? Best regards, Ed. On Fri, 8 Oct 2021 at 13:26, Pavel Pereslegin <xxt...@gmail.com> wrote: > Hello Igniters! > > I want to implement a feature to support a custom "caller" context in > ignite services (see example in ticket description [1]). > > Sometimes, when using Ignite services, it becomes necessary to pass > custom parameters from the "request source" to the service. This is > most commonly used to track the origin of a service call (user id, > request id, session id eg see this user question [2]). > At the moment, the only way to pass such parameters to a service is by > adding argument(s) to all called methods of the service, which makes > the code messy and also complicates development and maintenance. > > I propose letting the user set a custom context for the service proxy > and implicitly pass that context to the methods being called. This > function should not affect the execution of service methods in any way > unless the user has specified a context. > > An example of using the proposed API [1]. > PoC (except thin clients) [3]. > > WDYT? > > [1] https://issues.apache.org/jira/browse/IGNITE-15572 > [2] > https://stackoverflow.com/questions/57459071/apache-ignite-service-grid-service-call-context > [3] https://github.com/apache/ignite/pull/9440 >