Giter Club home page Giter Club logo

serverlessworkflow / synapse Goto Github PK

View Code? Open in Web Editor NEW
215.0 215.0 32.0 20.57 MB

Serverless Workflow Management System (WFMS)

Home Page: https://serverlessworkflow.io

License: Apache License 2.0

C# 61.98% Dockerfile 0.10% HTML 17.98% CSS 7.86% SCSS 6.74% JavaScript 2.63% Scilab 0.86% Less 0.97% Stylus 0.88%
asyncapi cli cloudevents docker graphql grpc kubernetes odata openapi rest runtime serverless-workflow ui websocket wfms workflow

synapse's People

Contributors

cbcrouse avatar cdavernas avatar indevdigital avatar jaliyaudagedara avatar jbbianchi avatar neuroglia-bot avatar nuqlear avatar ricardozanini avatar tsurdilo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

synapse's Issues

A cancelled workflow stays in cancelling status

What happened:
When cancelling an instance, it seems to stay stuck at the cancelling status

What you expected to happen:
To be cancelled

Anything else we need to know?:
Output:

Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/1.1 PUT http://localhost:42286/api/v1/workflow-instances/order-dog-rmuwrtuud0278lggvwjqsg/cancel - 0
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executing endpoint 'Synapse.Apis.Management.Http.Controllers.V1WorkflowInstancesController.Cancel (Synapse.Apis.Management.Http)'
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: Information: Route matched with {action = "Cancel", controller = "V1WorkflowInstances"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Cancel(System.String, System.Threading.CancellationToken) on controller Synapse.Apis.Management.Http.Controllers.V1WorkflowInstancesController (Synapse.Apis.Management.Http).
Synapse.Application.Commands.Correlations.V1CorrelateEventCommandHandler: Information: Processing event with id '1a191394-b0ad-4f93-8400-deb81aac93ce', type 'io.synapse/v1workflowinstance/cancelling/v1' and source 'https://synapse.io/runtime/events'...
System.Net.Http.HttpClient.CloudEventBus.LogicalHandler: Information: Start processing HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor: Information: Executing ObjectResult, writing value of type 'Synapse.Integration.Models.V1WorkflowInstance'.
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Sending HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: Information: Executed action Synapse.Apis.Management.Http.Controllers.V1WorkflowInstancesController.Cancel (Synapse.Apis.Management.Http) in 18.027ms
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executed endpoint 'Synapse.Apis.Management.Http.Controllers.V1WorkflowInstancesController.Cancel (Synapse.Apis.Management.Http)'
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished HTTP/1.1 PUT http://localhost:42286/api/v1/workflow-instances/order-dog-rmuwrtuud0278lggvwjqsg/cancel - 0 - 200 524 application/json;+charset=utf-8 33.7851ms
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2 POST http://localhost:41387/Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/CancelActivity application/grpc -
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executing endpoint 'gRPC - /Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/CancelActivity'
Synapse.Application.Commands.Correlations.V1CorrelateEventCommandHandler: Information: Processing event with id '56ca7984-130e-4267-9034-57665ff49c0d', type 'io.synapse/v1workflowactivity/cancelled/v1' and source 'https://synapse.io/runtime/events'...
Synapse.Application.Commands.Correlations.V1CorrelateEventCommandHandler: Information: Processing event with id '3983491c-1383-431f-b9bd-20c4b624fcdc', type 'io.synapse/v1workflowactivity/executed/v1' and source 'https://synapse.io/runtime/events'...
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executed endpoint 'gRPC - /Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/CancelActivity'
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished HTTP/2 POST http://localhost:41387/Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/CancelActivity application/grpc - - 200 - application/grpc 26.0757ms
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2 POST http://localhost:41387/Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/Cancel application/grpc -
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executing endpoint 'gRPC - /Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/Cancel'
Exception thrown: 'Neuroglia.Data.DomainException' in Synapse.Domain.dll
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executed endpoint 'gRPC - /Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/Cancel'
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished HTTP/2 POST http://localhost:41387/Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/Cancel application/grpc - - 200 - application/grpc 26.7641ms
Exception thrown: 'System.OperationCanceledException' in System.Private.CoreLib.dll
Exception thrown: 'System.OperationCanceledException' in System.Private.CoreLib.dll
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Received HTTP response headers after 118.6809ms - 200
System.Net.Http.HttpClient.CloudEventBus.LogicalHandler: Information: End processing HTTP request after 132.0862ms - 200
System.Net.Http.HttpClient.CloudEventBus.LogicalHandler: Information: Start processing HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Sending HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
Grpc.AspNetCore.Server.ServerCallHandler: Error: Error when executing service method 'Connect'.

System.OperationCanceledException: The operation was canceled.
   at System.Threading.Channels.AsyncOperation`1.GetResult(Int16 token)
   at System.Threading.Channels.ChannelReader`1.ReadAllAsync(CancellationToken cancellationToken)+MoveNext()
   at System.Threading.Channels.ChannelReader`1.ReadAllAsync(CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
   at Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi.Connect(String runtimeId, CallContext context)+MoveNext() in C:\Dev\Neuroglia\Github\synapse\src\apis\runtime\Synapse.Apis.Runtime.Grpc\Services\SynapseGrpcRuntimeApi.cs:line 75
   at Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi.Connect(String runtimeId, CallContext context)+MoveNext() in C:\Dev\Neuroglia\Github\synapse\src\apis\runtime\Synapse.Apis.Runtime.Grpc\Services\SynapseGrpcRuntimeApi.cs:line 75
   at Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi.Connect(String runtimeId, CallContext context)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
   at ProtoBuf.Grpc.Internal.Reshape.WriteTo[T](IAsyncEnumerable`1 reader, IServerStreamWriter`1 writer, CancellationToken cancellationToken) in /_/src/protobuf-net.Grpc/Internal/Reshape.cs:line 134
   at ProtoBuf.Grpc.Internal.Reshape.WriteTo[T](IAsyncEnumerable`1 reader, IServerStreamWriter`1 writer, CancellationToken cancellationToken) in /_/src/protobuf-net.Grpc/Internal/Reshape.cs:line 134
   at Grpc.Shared.Server.ServerStreamingServerMethodInvoker`3.Invoke(HttpContext httpContext, ServerCallContext serverCallContext, TRequest request, IServerStreamWriter`1 streamWriter)
   at Grpc.Shared.Server.ServerStreamingServerMethodInvoker`3.Invoke(HttpContext httpContext, ServerCallContext serverCallContext, TRequest request, IServerStreamWriter`1 streamWriter)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.ServerStreamingServerCallHandler`3.HandleCallAsyncCore(HttpContext httpContext, HttpContextServerCallContext serverCallContext)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.ServerCallHandlerBase`3.<HandleCallAsync>g__AwaitHandleCall|8_0(HttpContextServerCallContext serverCallContext, Method`2 method, Task handleCall)
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executed endpoint 'gRPC - /Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/Connect'
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished HTTP/2 POST http://localhost:41387/Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi/Connect application/grpc - - 200 - application/grpc 1210.3750ms
info: System.Net.Http.HttpClient.SynapseHttpManagementApiClient.ClientHandler[101]
      Received HTTP response headers after 176.8ms - 200
info: System.Net.Http.HttpClient.SynapseHttpManagementApiClient.LogicalHandler[101]
      End processing HTTP request after 178.5ms - 200
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Received HTTP response headers after 118.5912ms - 200
System.Net.Http.HttpClient.CloudEventBus.LogicalHandler: Information: End processing HTTP request after 125.1922ms - 200
System.Net.Http.HttpClient.CloudEventBus.LogicalHandler: Information: Start processing HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Sending HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Received HTTP response headers after 119.213ms - 200
System.Net.Http.HttpClient.CloudEventBus.LogicalHandler: Information: End processing HTTP request after 126.5378ms - 200

Extremely slow workflow details view

What happened:
After starting multiple instances, going to the workflow definitions' list and coming back to a workflow detail, the list of instances/graph takes multiple seconds to display!

What you expected to happen:
To be way faster

Collect and archive old workflow instances

What would you like to be added:

Punctually collect, package, export then clean old workflow instances from operational databases

Why is this needed:

Avoids useless resource starvation and improves write and read model repository performances while performing a backup (in a bucket store, for example) of old workflow instances, for auditing purpose

Start workflow input "resetting" on its own

What happened:
When some workflow instances are active, therefore triggering a render, the start workflow input is reset.

What you expected to happen:
The inputed value to stay where it is.

How to reproduce it:
Start a workflow, then try to input new start payload when the 1st instance is running.

Implement workflow replayability

What would you like to be added:

Implement replaying a given workflow instance from the specified state or activity. Users should also be able to patch both activity inputs and outputs

Why is this needed:

Allows to identify, isolate, compensate and resolve faulted workflows

Related tasks:

  • Add APIs to replay faulted workflows
  • Update the Dashboard by adding replay functionality
  • Update the CLI by adding replay commands

Consumed singleton correlations are never disposed of

What happened:

Consumed singleton correlations are never disposed of

What you expected to happen:

Whenever a correlation with singleton lifetime has been consumed, delete it from both write and read models

How to reproduce it:

  1. Deploy a workflow that contains a consume event activity
  2. Produce the expected event, thus consuming the singleton correlation that has been created
  3. The correlation is still present in both write and read model databases

Synapse on k8s got an error

What happened:
Deployed synapse on k8s using: https://github.com/serverlessworkflow/synapse/tree/main/deployment/kubernetes

Got an error:

[05/11/2022 11:05:33] info: ProtoBuf.Grpc.Server.ServicesExtensions.CodeFirstServiceMethodProvider[0]
      RPC services being provided by Synapse.Apis.Management.Grpc.SynapseGrpcManagementApi: 16
[05/11/2022 11:05:33] info: ProtoBuf.Grpc.Server.ServicesExtensions.CodeFirstServiceMethodProvider[0]
      RPC services being provided by Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi: 20
Unhandled exception. System.Net.Http.HttpRequestException: Connection failed
 ---> System.Net.Sockets.SocketException (99): Cannot assign requested address
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ConnectAsync(Socket socket)
   at System.Net.Sockets.Socket.ConnectAsync(EndPoint remoteEP, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.ConnectAsync(EndPoint remoteEP)
   at System.Net.Sockets.SocketTaskExtensions.ConnectAsync(Socket socket, EndPoint remoteEP)
   at Docker.DotNet.DockerClient.<>c__DisplayClass6_0.<<-ctor>b__1>d.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Docker.DotNet.DockerClient.<>c__DisplayClass6_0.<.ctor>b__1(String host, Int32 port, CancellationToken cancellationToken)
   at Microsoft.Net.Http.Client.ManagedHandler.ProcessRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.Net.Http.Client.ManagedHandler.ProcessRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Net.Http.Client.ManagedHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.Net.Http.Client.ManagedHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at Docker.DotNet.DockerClient.PrivateMakeRequestAsync(TimeSpan timeout, HttpCompletionOption completionOption, HttpMethod method, String path, IQueryString queryString, IDictionary`2 headers, IRequestContent data, CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Docker.DotNet.DockerClient.PrivateMakeRequestAsync(TimeSpan timeout, HttpCompletionOption completionOption, HttpMethod method, String path, IQueryString queryString, IDictionary`2 headers, IRequestContent data, CancellationToken cancellationToken)
   at Docker.DotNet.DockerClient.MakeRequestAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, IDictionary`2 headers, TimeSpan timeout, CancellationToken token)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Docker.DotNet.DockerClient.MakeRequestAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, IDictionary`2 headers, TimeSpan timeout, CancellationToken token)
   at Docker.DotNet.DockerClient.MakeRequestAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, IDictionary`2 headers, CancellationToken token)
   at Docker.DotNet.DockerClient.MakeRequestAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, CancellationToken token)
   at Docker.DotNet.NetworkOperations.Docker.DotNet.INetworkOperations.ConnectNetworkAsync(String id, NetworkConnectParameters parameters, CancellationToken cancellationToken)
   at Synapse.Runtime.Services.DockerRuntimeHost.ExecuteAsync(CancellationToken stoppingToken) in /src/src/runtime/Synapse.Runtime.Docker/Services/DockerRuntimeHost.cs:line 92
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Synapse.Runtime.Services.DockerRuntimeHost.ExecuteAsync(CancellationToken stoppingToken)
   at Microsoft.Extensions.Hosting.BackgroundService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Builder.WebApplication.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.AspNetCore.Builder.WebApplication.RunAsync(String url)
   at Program.<Main>$(String[] args) in /src/src/apps/Synapse.Server/Program.cs:line 82
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Program.<Main>$(String[] args)
   at Program.<Main>(String[] args)
--- End of stack trace from previous location ---
   at Docker.DotNet.DockerClient.<>c__DisplayClass6_0.<<-ctor>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.Net.Http.Client.ManagedHandler.ProcessRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at Microsoft.Net.Http.Client.ManagedHandler.ProcessRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Net.Http.Client.ManagedHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Docker.DotNet.DockerClient.PrivateMakeRequestAsync(TimeSpan timeout, HttpCompletionOption completionOption, HttpMethod method, String path, IQueryString queryString, IDictionary`2 headers, IRequestContent data, CancellationToken cancellationToken)
   at Docker.DotNet.DockerClient.MakeRequestAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, IDictionary`2 headers, TimeSpan timeout, CancellationToken token)
   at Synapse.Runtime.Services.DockerRuntimeHost.ExecuteAsync(CancellationToken stoppingToken) in /src/src/runtime/Synapse.Runtime.Docker/Services/DockerRuntimeHost.cs:line 92
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Program.<Main>$(String[] args) in /src/src/apps/Synapse.Server/Program.cs:line 82
   at Program.<Main>(String[] args)

tried adding ENV, still got same error.

        env:
          - name: KUBERNETES_SERVICE_HOST
            value: 10.96.0.1

What you expected to happen:

How to reproduce it:

Anything else we need to know?:

Environment:

k8s version: v1.22

Suspend: The method or operation is not implemented.

What happened:
When trying to suspend a workflow, the following error appears:

Grpc.AspNetCore.Server.ServerCallHandler: Error: Error when executing service method 'Suspend'.

System.NotImplementedException: The method or operation is not implemented.
   at Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi.SuspendAsync(String workflowInstanceId, CallContext context) in C:\Dev\Neuroglia\Github\synapse\src\apis\runtime\Synapse.Apis.Runtime.Grpc\Services\SynapseGrpcRuntimeApi.cs:line 175
   at Grpc.Shared.Server.UnaryServerMethodInvoker`3.AwaitInvoker(Task`1 invokerTask, GrpcActivatorHandle`1 serviceHandle)
   at Grpc.Shared.Server.UnaryServerMethodInvoker`3.AwaitInvoker(Task`1 invokerTask, GrpcActivatorHandle`1 serviceHandle)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.UnaryServerCallHandler`3.HandleCallAsyncCore(HttpContext httpContext, HttpContextServerCallContext serverCallContext)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.ServerCallHandlerBase`3.<HandleCallAsync>g__AwaitHandleCall|8_0(HttpContextServerCallContext serverCallContext, Method`2 method, Task handleCall)

What you expected to happen:
The workflow to be suspended

How to reproduce it:
Suspend a running workflow instance

ServiceWorker is undefined

What happened:

On opening the main page I'm getting the error in the devtools console:

Uncaught TypeError: navigator.serviceWorker is undefined

What you expected to happen:

No error is thrown

How to reproduce it:

Navigate to the dashboard's root page

Anything else we need to know?:

It seems to come from line 173
<script>navigator.serviceWorker.register('service-worker.js');</script>

Activity does not produce a starting/started event before faulting

What happened:
On the WebSocket stream, an activity of type action doesn't seem to start, it's faulted and executed directly:

image

(Fault cause: An error occured while evaluting the specified expression: 'jq.exe' is not recognized as an internal or external command,\r\noperable program or batch file.)

What you expected to happen:
The activity to be started before being faulted/executed

How to reproduce it:
Deploy & run the following workflow:

{
  "id": "order-dog",
  "version": "1.0.0",
  "specVersion": "0.8",
  "name": "Order pet",
  "description": "A workflow used to order a pet on the Swagger pet store",
  "functions": [
    {
      "name": "get-user-by-name",
      "type": "rest",
      "operation": "https://petstore.swagger.io/v2/swagger.json#getUserByName"
    },
    {
      "name": "login-user",
      "type": "rest",
      "operation": "https://petstore.swagger.io/v2/swagger.json#loginUser"
    },
    {
      "name": "get-pets-by-status",
      "type": "rest",
      "operation": "https://petstore.swagger.io/v2/swagger.json#findPetsByStatus"
    },
    {
      "name": "create-order",
      "type": "rest",
      "operation": "https://petstore.swagger.io/v2/swagger.json#findPetsByStatus"
    }
  ],
  "states": [
    {
      "name": "PlaceOrder",
      "type": "operation",
      "actions": [
        {
          "name": "Get User Info",
          "functionRef": {
            "refName": "get-user-by-name",
            "arguments": {
              "username": "${ .username }"
            }
          },
          "actionDataFilter": {
            "toStateData": "${ .user }"
          }
        },
        {
          "name": "Login",
          "functionRef": {
            "refName": "login-user",
            "arguments": {
              "username": "${ .username }",
              "password": "${ .password }"
            }
          }
        },
        {
          "name": "Get Dog To Order",
          "functionRef": {
            "refName": "get-pets-by-status",
            "arguments": {
              "status": "available"
            }
          },
          "actionDataFilter": {
            "toStateData": "${ .dogToOrder }"
          }
        },
        {
          "name": "Place order",
          "functionRef": {
            "refName": "create-order",
            "arguments": {
              "petId": "${ .dogToOrder.id }",
              "quantity": "${ .quantityToOrder }",
              "complete": true
            }
          },
          "actionDataFilter": {
            "toStateData": "${ .order }"
          }
        }
      ],
      "end": true
    }
  ]
}

Win32Exception thrown when invoking `JQ` with a very large command on Windows

What happened:

When executing an action that returns a very large payload, the worker application will fault by throwing the following exception:

System.ComponentModel.Win32Exception (206): An error occurred trying to start process 'cmd.exe' with working directory '[DIRECTORY]'. The filename or extension is too long.

What you expected to happen:

In case the input data, the filter expression and the variables are too long, they should be written to separate, temporary files, thus avoiding the path's length restriction

How to reproduce it:

Run an instance of a workflow that defines an action which will return a large JSON payload

Anything else we need to know?:

Only seems to occur on Windows

Environment:

Windows 11 PRO x64

CloudEventBus circuit breaker stuck in a loop : The circuit is now open and is not allowing calls.

What happened:
The following error keeps appearing in the server logs:

System.Net.Http.HttpClient.CloudEventBus.LogicalHandler: Information: Start processing HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Sending HTTP request POST https://en37uhd2he6t4.x.pipedream.net/
System.Net.Http.HttpClient.CloudEventBus.ClientHandler: Information: Received HTTP response headers after 722.1693ms - 413
Neuroglia.Eventing.Services.CloudEventBus: Error: An error occured while posting a cloud events to the broker: Polly.CircuitBreaker.BrokenCircuitException`1[System.Net.Http.HttpResponseMessage]: The circuit is now open and is not allowing calls.
   at Polly.CircuitBreaker.CircuitStateController`1.OnActionPreExecute()
   at Polly.CircuitBreaker.AsyncCircuitBreakerEngine.ImplementationAsync[TResult](Func`3 action, Context context, CancellationToken cancellationToken, Boolean continueOnCapturedContext, ExceptionPredicates shouldHandleExceptionPredicates, ResultPredicates`1 shouldHandleResultPredicates, ICircuitController`1 breakerController)
   at Polly.AsyncPolicy`1.ExecuteAsync(Func`3 action, Context context, CancellationToken cancellationToken, Boolean continueOnCapturedContext)
   at Polly.Wrap.AsyncPolicyWrapEngine.<>c__DisplayClass0_0`1.<<ImplementationAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, CancellationToken cancellationToken, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext)
   at Polly.AsyncPolicy`1.ExecuteAsync(Func`3 action, Context context, CancellationToken cancellationToken, Boolean continueOnCapturedContext)
   at Polly.Wrap.AsyncPolicyWrapEngine.ImplementationAsync[TResult](Func`3 func, Context context, CancellationToken cancellationToken, Boolean continueOnCapturedContext, IAsyncPolicy`1 outerPolicy, IAsyncPolicy`1 innerPolicy)
   at Polly.AsyncPolicy`1.ExecuteAsync(Func`3 action, Context context, CancellationToken cancellationToken, Boolean continueOnCapturedContext)
   at Microsoft.Extensions.Http.PolicyHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Neuroglia.Eventing.Services.CloudEventBus.<>c__DisplayClass31_0.<<DequeueAndPublishPendingEventsAsync>b__1>d.MoveNext()

(because the output payload of a workflow/state/action was too big???)

What you expected to happen:
No error, or, at best, a limited numbers of retries?

How to reproduce it:
Not sure, try:

  • Launch the server in self-hosted mode
  • Add the following workflow def:
{
        "id": "order-dog",
        "version": "1.0.0",
        "specVersion": "0.8",
        "name": "Order pet",
        "description": "A workflow used to order a pet on the Swagger pet store",
        "functions": [
            {
                "name": "get-user-by-name",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#getUserByName"
            },
            {
                "name": "login-user",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#loginUser"
            },
            {
                "name": "get-pets-by-status",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#findPetsByStatus"
            },
            {
                "name": "create-order",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#findPetsByStatus"
            }
        ],
        "states":[
            {
                "name": "PlaceOrder",
                "type": "operation",
                "actions": [
                    {
                        "name": "Get User Info",
                        "functionRef":{
                            "refName": "get-user-by-name",
                            "arguments":{
                                "username": "${ .username }"
                            }
                        }, 
                        "actionDataFilter":{
                            "toStateData": "${ .user }"
                        }
                    },
                    {
                        "name": "Login",
                        "functionRef":{
                            "refName": "login-user",
                            "arguments":{
                                "username": "${ .username }",
                                "password": "${ .password }"
                            }
                        }
                    },
                    {
                        "name": "Get Dog To Order",
                        "functionRef": {
                            "refName": "get-pets-by-status",
                            "arguments":{
                                "status": "available"
                            }
                        },
                        "actionDataFilter":{
                            "toStateData": "${ .dogToOrder }"
                        }
                    },
                    {
                        "name": "Place order",
                        "functionRef":{
                            "refName": "create-order",
                            "arguments":{
                                "petId": "${ .dogToOrder.id }",
                                "quantity": "${ .quantityToOrder }",
                                "complete": true
                            }
                        },
                         "actionDataFilter":{
                            "toStateData": "${ .order }"
                        }
                    }
                ],
                "end": true
            }
        ]}
  • Launch an instance with an existing user/pet

Environment:
Win 10 x64 - self hosted

An error occurred trying to start process 'cmd.exe' ... The filename or extension is too long.

What happened:
An action failed with the error An error occurred trying to start process 'cmd.exe' with working directory 'C:\\...\\synapse\\src\\apps\\Synapse.Server\\bin\\Debug\\net6.0\\bin\\worker'. The filename or extension is too long.

How to reproduce it:

  • Launch the server in self-hosted mode
  • Add the following workflow def:
{
        "id": "order-dog",
        "version": "1.0.0",
        "specVersion": "0.8",
        "name": "Order pet",
        "description": "A workflow used to order a pet on the Swagger pet store",
        "functions": [
            {
                "name": "get-user-by-name",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#getUserByName"
            },
            {
                "name": "login-user",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#loginUser"
            },
            {
                "name": "get-pets-by-status",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#findPetsByStatus"
            },
            {
                "name": "create-order",
                "type": "rest",
                "operation": "https://petstore.swagger.io/v2/swagger.json#findPetsByStatus"
            }
        ],
        "states":[
            {
                "name": "PlaceOrder",
                "type": "operation",
                "actions": [
                    {
                        "name": "Get User Info",
                        "functionRef":{
                            "refName": "get-user-by-name",
                            "arguments":{
                                "username": "${ .username }"
                            }
                        }, 
                        "actionDataFilter":{
                            "toStateData": "${ .user }"
                        }
                    },
                    {
                        "name": "Login",
                        "functionRef":{
                            "refName": "login-user",
                            "arguments":{
                                "username": "${ .username }",
                                "password": "${ .password }"
                            }
                        }
                    },
                    {
                        "name": "Get Dog To Order",
                        "functionRef": {
                            "refName": "get-pets-by-status",
                            "arguments":{
                                "status": "available"
                            }
                        },
                        "actionDataFilter":{
                            "toStateData": "${ .dogToOrder }"
                        }
                    },
                    {
                        "name": "Place order",
                        "functionRef":{
                            "refName": "create-order",
                            "arguments":{
                                "petId": "${ .dogToOrder.id }",
                                "quantity": "${ .quantityToOrder }",
                                "complete": true
                            }
                        },
                         "actionDataFilter":{
                            "toStateData": "${ .order }"
                        }
                    }
                ],
                "end": true
            }
        ]}
  • Launch an instance with an existing user/pet

Environment:
Win 10 x64 - self hosted

Incorrect events "specVersion"

What happened:
Events are sent over websocket (MonitoringAPI) with "specVersion": "CloudNative.CloudEvents.CloudEventsSpecVersion",

What you expected to happen:
To have a proper specVersion (ex: 1.0)

Add application metrics and statistics

What would you like to be added:

Add application metrics and statistics, such as number of workflow definitions, number of workflow instances, execution success rate, etc.

Why is this needed:

Provides information about overall state of the application

Implement and handle errors

What would you like to be added:

Implement and handle errors thrown during a workflow's execution

Why is this needed:

Allows for fine-grained processing - and possibly forking - of faulted activities

Depends on:

  • Updates to the Serverless Workflow Specification, which does not define well enough errors, thus tightly couply them to runtime implementations

When running a workflow that defines a transition, the dashboard throws an error and stops rendering progress

What happened:

When running a workflow that defines a transition, the dashboard throws an error and stops rendering progress.

fail: Neuroglia.Data.Flux.Store[0]
      An error occured while dispatching an action of type 'AddV1WorkflowActivity': System.NotSupportedException: The specified V1WorkflowActivityType 'Transition' is not supported
         at Synapse.Dashboard.GraphExtensions.GetNodeFor(IGraphViewModel graph, V1WorkflowActivity activity) in C:\Users\User\source\repos\Synapse\synapse\src\dashboard\Synapse.Dashboard\Extensions\GraphExtensions.cs:line 98
         at Synapse.Dashboard.GraphExtensions.DisplayActivityStatusFor(IGraphViewModel graph, IEnumerable`1 instances) in C:\Users\User\source\repos\Synapse\synapse\src\dashboard\Synapse.Dashboard\Extensions\GraphExtensions.cs:line 42
         at Synapse.Dashboard.WorkflowDiagram.DisplayActivityStatusFor(IEnumerable`1 instances) in C:\Users\User\source\repos\Synapse\synapse\src\dashboard\Synapse.Dashboard\Features\Shared\WorkflowDiagram\WorkflowDiagram.razor:line 52
         at Synapse.Dashboard.Pages.Workflows.View.UpdateActivities() in C:\Users\User\source\repos\Synapse\synapse\src\dashboard\Synapse.Dashboard\Pages\Workflows\View.razor:line 220
         at Synapse.Dashboard.Pages.Workflows.View.<OnInitializedAsync>b__21_1(V1WorkflowActivityCollectionState activities) in C:\Users\User\source\repos\Synapse\synapse\src\dashboard\Synapse.Dashboard\Pages\Workflows\View.razor:line 184
         at System.Reactive.AnonymousObserver`1[[Synapse.Dashboard.V1WorkflowActivityCollectionState, Synapse.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].OnNextCore(V1WorkflowActivityCollectionState value) in /_/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs:line 67
         at System.Reactive.ObserverBase`1[[Synapse.Dashboard.V1WorkflowActivityCollectionState, Synapse.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].OnNext(V1WorkflowActivityCollectionState value) in /_/Rx.NET/Source/src/System.Reactive/ObserverBase.cs:line 34
         at System.Reactive.Subjects.Subject`1[[Synapse.Dashboard.V1WorkflowActivityCollectionState, Synapse.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].OnNext(V1WorkflowActivityCollectionState value) in /_/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs:line 147
         at Neuroglia.Data.Flux.Feature`1[[Synapse.Dashboard.V1WorkflowActivityCollectionState, Synapse.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].set_State(V1WorkflowActivityCollectionState value)
         at Neuroglia.Data.Flux.Feature`1.<ReduceStateAsync>d__17[[Synapse.Dashboard.V1WorkflowActivityCollectionState, Synapse.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
         at Neuroglia.Data.Flux.Store.DispatchAsync(Object action)

What you expected to happen:

The dashboard properly renders transitions

How to reproduce it:

Create and run a workflow that defines a state transition

Enable plugin-based configuration of the application's repositories

What would you like to be added:

Implement fine-grained, plugin-based configuration of the application's repositories. By fine-grained, we mean the ability to configure independently every single repository of the application

Why is this needed:

Allows for fine-grained control of how and where data is persisted

Implement Kubernetes runtime host

What would you like to be added:

Implement a new runtime host that leverages Kubernetes. Unlike other runtime host, the Kubernetes one must also be able to perform CRD reconciliation, as users should be able to create workflow instances using the K8s CRD API instead of Synapse's.

Why is this needed:

Adds yet another supported runtime platform, which is in addition the most reliable one, and a cloud-native one, too. Finally, it's getting back to the origins of Synapse, which initially was running solely on this platform.

Add docker-compose deployment for Synapse with persistence enabled

What would you like to be added:

docker-compose files for setting up Synapse with persistence enabled, meaning including - and configured for - its database dependencies.

Why is this needed:

Allows to boostrap Synapse with persistence enabled in a single command

Cloud events are not published by the server

What happened:

Cloud events are not published by the server, resulting in all event-based activities to fail.

This is due to the fact that, by default, we have been using a webhook.site endpoint which breaks after a certain amount of time and/or requests.
The default sink should be replaced with something a bit more reliable (such as pipedream.net), and means to configure it should be added.

What you expected to happen:

Cloud events are published as expected.

How to reproduce it:

Deploy a workflow on Synapse, for example. You will then be able to observe publishing errors in the server's logs

Worker faults workflow because it does not find defined transition

What happened:

The worker faults workflows that use a state defining a string-based transition because it cannot find said transition

What you expected to happen:

The worker performs the transition as expected

How to reproduce it:

Create and execute a workflow with a state using a string-based transition (ex: "transition": "NextState")

Empty workflow list when navigating back to `Workflows` view

What happened:

When coming back to the workflow list from within a given workflow's view, the list is empty, an no error is to be found in logs and/or requests.

What you expected to happen:

The list should display existing workflows

How to reproduce it:

Navigate to a specific workflow's view, then go back to the workflow list view using the breadcrumb, for example.

If it is, as I think, related to #90, you should first follow the latter's instructions on how to repro.

Anything else we need to know?:

This is probably linked to #90, as I could only reproduce it when it occurs

Implement worker log collection

What would you like to be added:

Collect and package logs before disposing of executed worker computing units

Why is this needed:

Disposing of worker computing units allows to avoid useless resource starvation on some platforms (Docker, Kubernetes)

Provide a set of sample workflow definitions to pick and run

What would you like to be added:

Add sample workflow definitions and example use-cases

Why is this needed:

For demos and getting started experience for new users, it would be nice to
have a list of sample workflow definitions users can just pick and run (don't have to create themselves).

404 when trying to download the worker binaries in native mode on OSX

What happened:

The server fails to donwload the worker in native mode on OSX because of a typo in the download url

What you expected to happen:

The server successfully downloads the worker

How to reproduce it:

  1. Start Synapse in native mode on OSX
  2. App startup fails with a 404

Worker fails to aggregate the output of child actions if one of them is outputless

What happened:

The Worker fails to aggregate the output of child actions if one of them is outputless

What you expected to happen:

The Worker ignores the outputless action, and continues aggregating outputs

How to reproduce it:

Create an OperationStateDefinition that defines multiples actions, amongst which at least one that does not output anything

Add an UI to manage correlations

What would you like to be added:

Add an UI to the dashboard to manage correlations as well as an editor to produce cloud events

Why is this needed:

Allows for fine grained control of pending correlations

Synapse creates its network but does not connect to it on first launch

What happened:

Synapse creates its network but does not connect to it on first launch, resulting in workers not being able to contact it using its advertized host name (i.e. synapse)

What you expected to happen:

Synapse connects to its network after creating it, in case it does not exist

How to reproduce it:

  1. Delete the synapse network if it already exist
  2. Start Synapse
  3. Deploy and start a workflow
  4. The deployed worker crashes upon startup, failling to resolve the synapse DNS

Environment:

Docker

Workaround:

  1. Start Synapse, wait for it to be ready and accepting requests
  2. Restart Synapse
  3. Voila!

Installing Synapse in native mode does not install jq

What happened:

If jq was not previously installed on target OS, workflows will systematically fail.

What you expected to happen:

The synctl native install command must make sure that jq is installed, otherwise should download/install it.
Furthermore, dependency to jq should be mentionned on README page.

How to reproduce it:

Anything else we need to know?:

Environment:

Implement compensation

What would you like to be added:

Implement workflow compensation

Why is this needed:

Allows for procedural compensation

Could not execute because the application was not found or a compatible .NET SDK is not installed

What happened:

Containers running using Synapse's 0.1.3 docker image systematically crashes at startup with following error message:

Could not execute because the application was not found or a compatible .NET SDK is not installed

What you expected to happen:

The container starts as expected

How to reproduce it:

Run a container using Synapse's 0.1.3 docker image

Anything else we need to know?:

This is due to an invalid Synapse Server Dockerfile.
The last change to the application's assembly name broke the unedited Dockerfile.
Furthermore, the image was not referencing the proper project anymore (ex: Infrastructure, Kubernetes, ...).

lack cli install url and docker image

What happened:
docker pull synapse/operator:0.1.0
Error response from daemon: pull access denied for synapse/operator, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
What you expected to happen:
docker pull synapse/operator:0.1.0 success
How to reproduce it:

Anything else we need to know?:

Environment:
Darwin MacBook-Pro.local 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:27 PDT 2021; root:xnu-7195.141.2~5/RELEASE_ARM64_T8101 arm64

CORS error when using a DNS other than localhost

What happened:

A CORS error is thrown by the dashboard

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:42286/api/ws/negotiate?negotiateVersion=1. (Reason: CORS request did not succeed). Status code: (null).

What you expected to happen:

No CORS error is thrown and the dashboard works as expected

How to reproduce it:

Run Synapse on a DNS other than localhost

Anything else we need to know?:

Probably origin is not used in one or more of the XHR requests (I got this twice on the single page reload).

Implement and handle timeouts

What would you like to be added:

Implement and handle timeouts, at workflow, state and activity (action) level

Why is this needed:

Allows to timeout abnormaly long processes, thus avoiding resource starvation for possibly faulted processes

Depends on:

Properly dispose grpc connection?

There is an error poping when an instance is executed:

Grpc.AspNetCore.Server.ServerCallHandler: Error: Error when executing service method 'Connect'.

System.OperationCanceledException: The operation was canceled.
   at System.Threading.Channels.AsyncOperation`1.GetResult(Int16 token)
   at System.Threading.Channels.ChannelReader`1.ReadAllAsync(CancellationToken cancellationToken)+MoveNext()
   at System.Threading.Channels.ChannelReader`1.ReadAllAsync(CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
   at Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi.Connect(String runtimeId, CallContext context)+MoveNext() in C:\Dev\Neuroglia\Github\synapse\src\apis\runtime\Synapse.Apis.Runtime.Grpc\Services\SynapseGrpcRuntimeApi.cs:line 75
   at Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi.Connect(String runtimeId, CallContext context)+MoveNext() in C:\Dev\Neuroglia\Github\synapse\src\apis\runtime\Synapse.Apis.Runtime.Grpc\Services\SynapseGrpcRuntimeApi.cs:line 75
   at Synapse.Apis.Runtime.Grpc.SynapseGrpcRuntimeApi.Connect(String runtimeId, CallContext context)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
   at ProtoBuf.Grpc.Internal.Reshape.WriteTo[T](IAsyncEnumerable`1 reader, IServerStreamWriter`1 writer, CancellationToken cancellationToken) in /_/src/protobuf-net.Grpc/Internal/Reshape.cs:line 134
   at ProtoBuf.Grpc.Internal.Reshape.WriteTo[T](IAsyncEnumerable`1 reader, IServerStreamWriter`1 writer, CancellationToken cancellationToken) in /_/src/protobuf-net.Grpc/Internal/Reshape.cs:line 134
   at Grpc.Shared.Server.ServerStreamingServerMethodInvoker`3.Invoke(HttpContext httpContext, ServerCallContext serverCallContext, TRequest request, IServerStreamWriter`1 streamWriter)
   at Grpc.Shared.Server.ServerStreamingServerMethodInvoker`3.Invoke(HttpContext httpContext, ServerCallContext serverCallContext, TRequest request, IServerStreamWriter`1 streamWriter)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.ServerStreamingServerCallHandler`3.HandleCallAsyncCore(HttpContext httpContext, HttpContextServerCallContext serverCallContext)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.ServerCallHandlerBase`3.<HandleCallAsync>g__AwaitHandleCall|8_0(HttpContextServerCallContext serverCallContext, Method`2 method, Task handleCall)

My guess is that the grpc connection isn't properly closed/disposed before destroying the running instance.

@cdavernas do you concur?

Failed to load plugin .tar.gz archives

What happened:

The Synapse server fails to extract .tar.gz plugin package files

What you expected to happen:

The server successfully extracts and loads .tar.gz plugin package files

How to reproduce it:

Put a .tar.gz plugin package in the server's plugins directory

Improve workflow instance details display speed & Blazor monaco feedback

What would you like to be added:
Checking the details of a workflow instance can be very slow, the more activities (input/output payloads), the slower it gets. This is due to Blazor Monaco being a little slow and the accumulation its of instances in the workflow instance details. To prevent that problem, accordions should not render their body if it's not "expanded" (instead of just toggling css classes).
It would also be nice to add a loader indicator while Blazor Monaco is processing the data.

Why is this needed:
Better UX.

Add actions activity badges

What would you like to be added:
An activity counter badge on actions, like it exists of states.

Why is this needed:
Better UX, readability of the workflow progress.

Implement sleep mode

What would you like to be added:

Implement the sleep mode, which is the worker ability to scale to zero when waiting for too long for incoming events or when hitting too long a sleep period when processing a sleep state

Why is this needed:

Avoids wasting resources on workers that have been innactive for too long

Add a mechanism to configure workers to ignore SSL certificate errors

What would you like to be added:

Add a mechanism (such as an environment variable) to configure workers to ignore SSL certificate errors

Why is this needed:

In some cases, users might want to connect to services using self-signed (or invalid) certificates, and have no way to work around it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.