RTVS icon indicating copy to clipboard operation
RTVS copied to clipboard

OperationCancelledException in OWIN Web service

Open yakimovim opened this issue 6 years ago • 2 comments

I'm trying to use Microsoft.R.Host.Client.API inside Owin Web service. The code of controller is:

public class RlangController : ApiController
{
    [Route("data/{dataId}/execute-r-query")]
    [HttpPost]
    [ResponseType(typeof(ResponseModel))]
    public async Task<IHttpActionResult> RawQueryAction(long dataId
        , [FromBody]RequestModel requestModel)
    {
        try
        {
            var session = RHostSession.Create("AAA", @"c:\Program Files\R\R-3.5.1\");
            await session.StartHostAsync(new RHostSessionCallback());

            ....

At the call of session.StartHostAsync I get OperationCancelledException:

   at System.Threading.CancellationToken.ThrowOperationCanceledException()
   at System.IO.Pipes.NamedPipeServerStream.EndWaitForConnection(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Microsoft.R.Host.Client.Host.LocalBrokerClient.<ConnectToBrokerWorker>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Host.LocalBrokerClient.<EnsureBrokerStartedAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Host.LocalBrokerClient.<ConnectAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Session.RSession.<StartHostAsyncBackground>d__111.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Session.RSession.<StartHostAsync>d__110.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at WebService.Controllers.RlangController.<RawQueryAction>d__0.MoveNext() in C:\dev\service\WebService\Controllers\RLangController.cs:line 53

At the same time, if I use ASP.NET MVC application (without Owin) the same code works fine.

Do you have any idea about the reason of such behaviour?

Thank you!

yakimovim avatar Jul 31 '18 09:07 yakimovim

I'm trying to use Microsoft.R.Host.Client.API inside Owin Web service. The code of controller is:

public class RlangController : ApiController
{
    [Route("data/{dataId}/execute-r-query")]
    [HttpPost]
    [ResponseType(typeof(ResponseModel))]
    public async Task<IHttpActionResult> RawQueryAction(long dataId
        , [FromBody]RequestModel requestModel)
    {
        try
        {
            var session = RHostSession.Create("AAA", @"c:\Program Files\R\R-3.5.1\");
            await session.StartHostAsync(new RHostSessionCallback());

            ....

At the call of session.StartHostAsync I get OperationCancelledException:

   at System.Threading.CancellationToken.ThrowOperationCanceledException()
   at System.IO.Pipes.NamedPipeServerStream.EndWaitForConnection(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Microsoft.R.Host.Client.Host.LocalBrokerClient.<ConnectToBrokerWorker>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Host.LocalBrokerClient.<EnsureBrokerStartedAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Host.LocalBrokerClient.<ConnectAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Session.RSession.<StartHostAsyncBackground>d__111.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.R.Host.Client.Session.RSession.<StartHostAsync>d__110.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at WebService.Controllers.RlangController.<RawQueryAction>d__0.MoveNext() in C:\dev\service\WebService\Controllers\RLangController.cs:line 53

At the same time, if I use ASP.NET MVC application (without Owin) the same code works fine.

Do you have any idea about the reason of such behaviour?

Thank you!

Any luck with this, I also facing the same issue

apumex avatar Nov 14 '18 19:11 apumex

No, still no changes.

yakimovim avatar Nov 15 '18 05:11 yakimovim