Giter VIP home page Giter VIP logo

product-de-bring-your-own-datacenter's Introduction

fiskaltrust.Middleware - Bring your own Data Center

Problem description:

You have a distributed architecture of your point of sale system and therefore you are not able to connect a tse device directly to your pos-terminal. An on site (branchoffice) installation of the fiskaltrust.Middleware is not possible or would not be efficient.

Solution proposal:

By providing a standardized hardware platform by the customer, fiskaltrust.Middleware using a cloud-tse can be brought to the datatcenter directly where the receipt generation process of a distributed point of sale system occurs. This can be devlivered by a predefined Kubernetes Namespace which can be deployed by a Helm-Chart. fiskaltrust provides a "Backend POD" Docker image and Helm-Charts to deploy your own environment.

Architecture Overview

Architecture Overview

Requirements

  • Kubernetes cluster > v1.22
  • helm > v3.0
  • Network Connection Matrix and used IP Scopes can be found at Network Requirements

Quickstart

A brief step-by-step guide to get ByoDC up and running on your Docker Desktop can be found here

Installation

Install Emissary Ingress

Install emissary ingress v3.x. Please follow the official installation instructions.

Create Namespace

Connect to your Kubernetes cluster and create the bring-your-own-datacenter namespace.

kubectl create namespace bring-your-own-datacenter

Add helm repository

First add the fiskaltrust helm repository.

helm repo add fiskaltrust https://charts.fiskaltrust.cloud/

Update helm repository

helm repo update

Note: You can also skip this step, clone this repo and use the path to the Chart.yaml file as repo in the following commands.

Configure values

You can view all configurable values by running the following command.

helm show values fiskaltrust/bring-your-own-datacenter

This will output a values.yaml file containing all of the default values. You can create a file config.yaml and override the values you need.

Install chart

You can install the chart like this:

helm install bring-your-own-datcenter fiskaltrust/bring-your-own-datacenter --namespace bring-your-own-datacenter -f config.yaml

Leave out -f config.yaml to install it with default values.

Note: If you use a local repo you will have to run helm dependency update before installing.

Updating

Please see the Migration Guide for update instructions of specific versions.

If the version is not listed in the Migration Guide you can update the chart like this:

helm repo update
helm upgrade --install bring-your-own-datcenter fiskaltrust/bring-your-own-datacenter --namespace bring-your-own-datacenter -f config.yaml

*Note: The backend Pods will automatically update to the newest minor Middleware version. If this behaviour is not wanted you can set the byodc.image.tag Parameter in your config.yaml to a specific version (e.g. 1.3.29-buster).

Uninstallation

helm uninstall bring-your-own-datacenter --namespace bring-your-own-datacenter
kubectl delete namespace bring-your-own-datacenter

Supported Configurations

Queues

  • MySQL

SCUs

Parameter Reference

All Parameters and values you can use in "values.yaml" can be found here

HTTPS Reference

How to deal with SSL Certificates on the Ambassador endpoint can be found here

API Reference

ByoDC uses swagger to provide OpenAPI service definitions of the exposed API.

The API Explorer can be found at the /swagger endpoint and the OpenAPI definition at /swagger/v1/swagger.json.

Operations Reference

Collection of OPS related topics and QnAs here

Host FiscalCloudConnector instances in Bring your own Data Center

Bring your own Data Center can be configured to host FiscalCloudConnector instances in kubernetes. More details can be found here.

Minimal installations

In scenarios where only very few CashBoxes are operated and high availability is not a crucial factor, it's also possible to host a standalone instance of the BYODC container. More details can be found here.

Multiple installations in one cluster

If you want to run multiple different ByoDC installations on the same cluster you will need to install the Emissary Ingress in both namespaces. More infos can be found here.

product-de-bring-your-own-datacenter's People

Contributors

christian-rogobete avatar fiskaltrust-ckr avatar steininger avatar tschmiedlechner avatar volllly avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

product-de-bring-your-own-datacenter's Issues

Production Set Up

Hi there

We will be configuring our production infrastructure to support around 700 cashboxes.

  • Can you guys let us know how many nodes and the size of those nodes we will need to support that.
  • We are also interested in the size of the database that we will need this especially the number of connection that we will need to allow. Does each request to cashbox generate a new db connection, there is no connection pool from byodc pods to the db instance ?
  • we believe that redis instance can be kept to minimum as that is used only for synchronization

Thanks

Middleware DE, Journal Export

I would like to use the functionality that's partly described here:
https://github.com/fiskaltrust/interface-doc/blob/8985e2a18651744a468aed5a6c197af9b2aa907e/doc/appendix-de-kassensichv/reference-tables/type-of-journal-ftjournaltype.md

So my aim is to run the journal functionality and get the DSFinV-K export as .ZIP file.
I'm using fiskaltrusts bring-your-own-datacenter method, so my middleware is running in a kubernetes cluster at google cloud. It's working fine, I sucessfully created a start-receipt, signed a few other receipts and received the expected signatures.

I expected that if I run a GET request to this URL it will work ({{base_url}} contains "http://" + the public IP of the middleware container) :
{{base_url}}/json/v1/Journal?type=4919338167972134914
But I only get the following response:

{  
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",  
    "title": "Unsupported Media Type",  
    "status": 415,  
    "traceId": "00-6be61ee6ef6d804d8fb9c4ec0d48c1a8-66a6472629346d4e-00"  
}

4919338167972134914 is the decimal representation of 0x4445000000000002.
I tried a few variants of the path, but they all produce the same response, for example:
{{base_url}}/json/v1/Journal?type=4445000000000002
{{base_url}}/json/v1/Journal?type=0x4445000000000002
{{base_url}}/json/v1/Journal?ftJournalType=0x4445000000000002
{{base_url}}/json/v1/Journal?ftJournalType=4919338167972134914

What do I have to do to get the DSFinV-K export as .ZIP file? Am I maybe using an outdated version of the middleware? Running {{base_url}}/api/version tells me:

[
    "fiskaltrust.SignatureCloud.DE",
    "1.0.0",
    "api:v1"
]

Daily Closing Receipt kills the queue

Describe the bug
Sending daily closing receipts to the byodc app makes it unresponsive. The queue will hang and eventually we get 503 Response.

To Reproduce
Send a daily closing receipt:
{"ftReceiptCase":4919338172267102215,"ftCashBoxID":"3b5c912e-58ee-466b-84ba-0dae8990a5a2","cbTerminalID":"nWaswom9JWn_1MWu4jADjg","cbReceiptReference":"544","cbReceiptMoment":"2020-10-22T13:26:01.000Z","cbChargeItems":[],"cbPayItems":[]}

Expected behavior
daily closing receipt is handled successfully and after the queue can handle further receipts

Screenshots
If applicable, add screenshots to help explain your problem.

STDOUT/STDERR
`
wget --no-check-certificate --server-response --quiet \

--method POST
--timeout=0
--header 'cashboxid: 3b5c912e-58ee-466b-84ba-0dae8990a5a2'
--header 'accesstoken: BFhemlFpaw7tYIJTZVYK4hI01Ye2VpAUvy9ckdygOth5x/NM/g7NK8HxEc1WRfAoXU45idPmFqmEQdY/gRiEZG4='
--header 'Content-Type: application/json'
--body-data '{"ftReceiptCase":4919338172267102215,"ftCashBoxID":"3b5c912e-58ee-466b-84ba-0dae8990a5a2","cbTerminalID":"nWaswom9JWn_1MWu4jADjg","cbReceiptReference":"544","cbReceiptMoment":"2020-10-22T13:26:01.000Z","cbChargeItems":[],"cbPayItems":[]}'
'http://app.byodc.fiskaltrust.internal.dev/api/Sign'
HTTP/1.1 503 Service Unavailable
content-length: 95
content-type: text/plain
date: Thu, 22 Oct 2020 14:01:48 GMT
server: envoy
`

POSSystem (please complete the following information):

  • POSSystemID

Cashbox Information (please complete the following information):

  • 3b5c912e-58ee-466b-84ba-0dae8990a5a2

Additional context
we need to issue a zero receipt to bring the queue back

Failed to execute ExportDataAsync

Describe the bug

Hi there

We've see an increased number of timeouts this morning and we are trying to understand what caused it. The timeouts occured at around 10 am UTC 15.06.2021. Below is the log from the byodc pod. Morning is usually the time when the daily receipts are triggered automatically on our system.

{"id": "36210703916567195509667632233428298925726238547117735937", "timestamp": 1623744121293, "message": "{\"log\":\"\\u001B[41m\\u001B[30mfail\\u001B[39m\\u001B[22m\\u001B[49m: fiskaltrust.Middleware.SCU.DE.Fiskaly.FiskalySCU[0]\\n Failed to execute ExportDataAsync - Request: {\\\"TokenId\\\":\\\"5b254fd3-34b7-40c9-b74f-3aa7aec80ebe\\\",\\\"MaxChunkSize\\\":1048576}\\n Fiskaly.Errors.FiskalyHttpTimeoutError: HTTP timeout\\n at Fiskaly.FiskalyHttpClient.ThrowOnError[T](JsonRpcResponse1 response)\n at Fiskaly.FiskalyHttpClient.Request(String method, String path, Byte[] body, Dictionary2 headers, Dictionary2 query)\n at System.Threading.Tasks.Task1.InnerInvoke()\\n at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)\\n --- End of stack trace from previous location ---\\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)\\n --- End of stack trace from previous location ---\\n at fiskaltrust.Middleware.SCU.DE.Fiskaly.Helpers.FiskalyApiProvider.GetExportStateInformationByIdAsync(Guid tssId, Guid exportId)\\n at fiskaltrust.Middleware.SCU.DE.Fiskaly.FiskalySCU.ExportDataAsync(ExportDataRequest request)\\n\",\"stream\":\"stdout\",\"docker\":{\"container_id\":\"f45f904bff42131df426b06e20351879fef22b3b7b72f0ea764467c037455625\"},\"kubernetes\":{\"container_name\":\"byodc\",\"namespace_name\":\"bring-your-own-datacenter\",\"pod_name\":\"byodc-7b4f76ff77-ntc45\",\"container_image\":\"ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster\",\"container_image_id\":\"docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:e474c26458ea263e699871ee304a8f2c2d0b229cb0aa9d75333b0d300807489b\",\"pod_id\":\"f2ce4038-758d-4696-8bf2-565ce5398a5f\",\"host\":\"ip-192-168-157-187.eu-central-1.compute.internal\",\"labels\":{\"app\":\"byodc\",\"pod-template-hash\":\"7b4f76ff77\"},\"master_url\":\"https://10.100.0.1:443/api\",\"namespace_id\":\"55e764f3-dcc1-456b-a56a-02b4edd83cd7\"}}"}

To Reproduce
Steps to reproduce the behavior:

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

STDOUT/STDERR
If applicable, add LogOutput from affected BackendPOD.

POSSystem (please complete the following information):

  • POSSystemID

Cashbox Information (please complete the following information):

  • CashboxID

Additional context
Add any other context about the problem here.

Recommended database setup for production with SLA's

To get SLA's from our service provider for MySQL on VMWare we have to use a supported version of mysql or compatible database like:

  • Oracle MySQL Enterprise
  • Percona Server
  • Percona XtraDB Cluster
  • MariaDB Platform
  • ...
    Any recommendations or certified platforms ?

byodc database per cashbox

Hi there

it does seam like the byodc generates a database per cashbox. Is there any way we can know which database correlates to which cashbox ?

Screenshot 2020-10-29 at 13 07 59

Load Balancer Request Routing

Is there a requirement that requests for a distinct cashbox always get routed to the same container in the Middleware cluster and if this requirement is in place, how will the cluster repair itself if a node in the cluster is taken down?

Journal export "upstream request timeout"

Describe the bug
When doing a DSFinV-K export (and often also TAR file export from TSE) the request fails with HTTP status code 504 Gateway Timeout and response body upstream request timeout after just a few seconds (usually around 3 seconds)

To Reproduce
Endpoint being used is /json/Journal?type=4919338167972134914

STDOUT/STDERR
In the log of the backend pod I can see that the DSFinV-K export generation is still running (even long after the request failed)

2021-03-23 17:50:08.133 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/22/2021 09:45:18.
2021-03-23 17:50:09.033 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/22/2021 09:45:18.
2021-03-23 17:50:09.033 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/22/2021 09:45:25.
2021-03-23 17:50:09.829 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/22/2021 09:45:25.
2021-03-23 17:50:09.829 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/23/2021 16:15:07.
2021-03-23 17:50:12.424 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/23/2021 16:15:07.
2021-03-23 17:50:12.424 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/23/2021 16:15:08.
2021-03-23 17:50:13.320 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/23/2021 16:15:08.
2021-03-23 17:50:14.227 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/02/2021 16:24:47.
2021-03-23 17:50:14.227 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/02/2021 16:24:56.
2021-03-23 17:50:14.320 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/02/2021 16:23:51.
2021-03-23 17:50:14.320 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/02/2021 16:23:58.
2021-03-23 17:50:15.619 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/02/2021 16:24:56.
2021-03-23 17:50:15.619 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/02/2021 16:25:04.
2021-03-23 17:50:15.730 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/02/2021 16:23:58.
2021-03-23 17:50:15.730 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Creating DSfinV-K for receipts before 03/02/2021 16:24:06.
2021-03-23 17:50:17.119 byodc-bdd4bbd76-rhkg9 byodc info info: fiskaltrust.Middleware.Queue.JournalProcessorDE[0]
      Finished creating DSfinV-K for receipts before 03/02/2021 16:24:06.

POSSystem (please complete the following information):

  • ecda5b15-104f-4f37-b7d1-d42babda1b4b

Cashbox Information (please complete the following information):

  • 91df5c17-0cdc-4f25-9d9b-4bc4b10ce662

Additional Information
As the POS Archive product is unavailable in production, the DSFinV-K export can NOT be generated unless the customer has the sorglos bundle.

Log warnings

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
Failed to determine the https port for redirect.

I assume this can be ignored?

warn: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0]
      Failed to remove queue upload for cashbox cashbox. cashboxid: ************

I assume this is just the pods ensuring that there is only one active cashbox in the cluster and can be ignored?

Hostname wildcard issue

Currently seeing this
2020/10/19 12:39:32 kubernetes:secret|bring-your-own-datacenter|*|hostname=*: ERROR: WORKER PANICKED: unable to parse requirement: invalid label value: "*": at key: "hostname": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')

message every 3 seconds in the logs. However, It doesn't appear to be affecting the operation of the load balancer.

It seems to be due to this issue:
emissary-ingress/emissary#2284
Can you give a workaround for your charts or support the workaround for this issue specified in the link in your charts?

BYOD: Error test with postman

Hello,

our installation is like your QuickStart guide.

All okay up to step 5 'Test reachability in the Browser'

On Step 7 'Test with Postman' have we a probelm.

The first Postman step has a response 'IIS 8.5 Detailed Error - 404.0 - Not Found'.

The reason file a attached.
Postman_response.html.txt

Kubernaut.io i/o timeout

getting a error in ambassador pod:

020-11-05T08:58:15.581088766Z time="2020-11-05 08:58:15" level=error msg="telemetry: Post \"https://kubernaut.io/scout\": dial tcp 35.193.8.157:443: i/o timeout" func=github.com/datawire/apro/cmd/amb-sidecar/kale.telemetry file="github.com/datawire/apro/cmd/amb-sidecar/kale/kale.go:149" MAIN=kale_worker

kubernaut.io is reachable in the pod when i use our proxy in the curl from the ambassador pod

curl -v https://kubernaut.io/scout -x {internal_proxy}
< HTTP/1.1 200 Connection established

How can i set proxy values?

Cashbox Template Generation causes wrong formatting of mysql connectionstring

Describe the bug

HI we are seeing intermittent issues with generating a cashbox and queue using our template:
here is our template:

{
  "ftCashBoxId": "|[cashbox_id]|",
  "ftSignaturCreationDevices": [
    {
      "Id": "|[scu0_id]|",
      "Package": "fiskaltrust.Middleware.SCU.DE.Fiskaly",
      "Configuration": {
        "ApiKey": "|[fyapikey]|",
        "ApiSecret": "|[fyapisecret]|",
        "TssId": "|[fytssid]|"
      },
      "Url": [
        "grpc://localhost:18004"
      ]
    }
  ],
  "ftQueues": [
    {
      "Id": "|[queue0_id]|",
      "Package": "fiskaltrust.Middleware.Queue.MySQL",
      "Configuration": {
        "connectionstring": "|[db_connection_string]|",
        "init_ftQueue": [
          {
            "ftQueueId": "|[queue0_id]|",
            "ftCashBoxId": "|[cashbox_id]|",
            "CountryCode": "DE",
            "Timeout": 15000
          }
        ],
        "init_ftQueueDE": [
          {
            "ftQueueDEId": "|[queue0_id]|",
            "ftSignaturCreationUnitDEId": "|[scu0_id]|",
            "CashBoxIdentification": "phorest|[queue0_id_base64withoutspecialchars]|"
          }
        ],
        "init_ftSignaturCreationUnitAT": [],
        "init_ftSignaturCreationUnitDE": [
          {
            "ftSignaturCreationUnitDEId": "|[scu0_id]|",
            "Url": "[\"grpc://localhost:18004\"]"
          }
        ],
        "init_ftSignaturCreationUnitFR": [],
        "init_ftCashBox": {
          "ftCashBoxId": "|[cashbox_id]|"
        }
      },
      "Url": [
        "rest://localhost:1500/|[queue0_id]|"
      ]
    }
  ]
}

and here is the error we are seeing in byodc:

41db8dcc17ebd31ed30b' at line 1)\\n       ---> MySqlConnector.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '679e0018db4441db8dcc17ebd31ed30b; USE 679e0018db4441db8dcc17ebd31ed30b' at line 1\\n       ---> MySqlConnector.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '679e0018db4441db8dcc17ebd31ed30b; USE 679e0018db4441db8dcc17ebd31ed30b' at line 1\\n         at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in //src/MySqlConnector/Core/ServerSession.cs:line 817\\n         at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in //src/MySqlConnector/Core/ResultSet.cs:line 49\\n         at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in //src/MySqlConnector/MySqlDataReader.cs:line 118\\n         at MySqlConnector.MySqlDataReader.CreateAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary`2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlDataReader.cs:line 436\\n         at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(IReadOnlyList`1 commands, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/CommandExecutor.cs:line 60\\n         at MySqlConnector.MySqlCommand.ExecuteNonQueryAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlCommand.cs:line 264\\n         at Dapper.SqlMapper.ExecuteImplAsync(IDbConnection cnn, CommandDefinition command, Object param) in /_/Dapper/SqlMapper.Async.cs:line 687\\n         at fiskaltrust.Middleware.Storage.MySQL.DatabaseInitialization.DatabaseMigrator.MigrateAsync()\\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.InitAsync(Guid queueId, Dictionary`2 configuration, ILogger`1 logger)\\n         --- End of inner exception stack trace ---\\n         at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.ConfigureStorageServices(IServiceCollection serviceCollection)\\n         at fiskaltrust.Middleware.Queue.MySQL.PosBootstrapper.ConfigureServices(IServiceCollection serviceCollection)\\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateQueue(ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 211\\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.<>c__DisplayClass10_0.<<CreateAsync>b__0>d.MoveNext() in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 185\\n      --- End of stack trace from previous location ---\\n         at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func`1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 36\\n         at
2:10
fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateAsync(Guid cashboxid, String accesstoken, ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 187\\n         at fiskaltrust.SignatureCloud.DE.Controllers.SignController.Post(ReceiptRequest request) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/SignController.cs:line 102\\n         at lambda_method11(Closure , Object )\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\\n         at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\\n         at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\\n         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)\\n\",\"stream\":\"stdout\",\"docker\":{\"container_id\":\"d94347dfe48e156f5760acb6eaf47141dfc58ac49df8102798c81f319d327bd4\"},\"kubernetes\":{\"container_name\":\"byodc\",\"namespace_name\":\"bring-your-own-datacenter\",\"pod_name\":\"byodc-5d6579fbff-zbgl9\",\"container_image\":\"ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster\",\"container_image_id\":\"docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:7443476fc54d0f2233758b9bd499ddf660b7fe35d27cb3d049c33b565cc6f271\",\"pod_id\":\"683adb66-ebf8-452e-b2c6-a57260f7680b\",\"host\":\"ip-192-168-128-81.eu-central-1.compute.internal\",\"labels\":{\"app\":\"byodc\",\"pod-template-hash\":\"5d6579fbff\"},\"master_url\":\"https://10.100.0.1:443/api\",\"namespace_id\":\"55e764f3-dcc1-456b-a56a-02b4edd83cd7\"}}"}

in the above it looks like the connection string generated is not properly formatted.
we need to generate a new cashbox with the same template and the same parameters and usually the second run that creates a new cashbox and queue resolves the issue which is strange because it is the same template and the same template variables, nothing changes on our side in that regard

To Reproduce
Steps to reproduce the behavior:

Expected behavior
the cashbox and queue are properly generated in fiskaltrust portal

Screenshots
If applicable, add screenshots to help explain your problem.

STDOUT/STDERR

41db8dcc17ebd31ed30b' at line 1)\\n       ---> MySqlConnector.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '679e0018db4441db8dcc17ebd31ed30b; USE 679e0018db4441db8dcc17ebd31ed30b' at line 1\\n       ---> MySqlConnector.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '679e0018db4441db8dcc17ebd31ed30b; USE 679e0018db4441db8dcc17ebd31ed30b' at line 1\\n         at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in //src/MySqlConnector/Core/ServerSession.cs:line 817\\n         at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in //src/MySqlConnector/Core/ResultSet.cs:line 49\\n         at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in //src/MySqlConnector/MySqlDataReader.cs:line 118\\n         at MySqlConnector.MySqlDataReader.CreateAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary`2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlDataReader.cs:line 436\\n         at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(IReadOnlyList`1 commands, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/CommandExecutor.cs:line 60\\n         at MySqlConnector.MySqlCommand.ExecuteNonQueryAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlCommand.cs:line 264\\n         at Dapper.SqlMapper.ExecuteImplAsync(IDbConnection cnn, CommandDefinition command, Object param) in /_/Dapper/SqlMapper.Async.cs:line 687\\n         at fiskaltrust.Middleware.Storage.MySQL.DatabaseInitialization.DatabaseMigrator.MigrateAsync()\\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.InitAsync(Guid queueId, Dictionary`2 configuration, ILogger`1 logger)\\n         --- End of inner exception stack trace ---\\n         at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.ConfigureStorageServices(IServiceCollection serviceCollection)\\n         at fiskaltrust.Middleware.Queue.MySQL.PosBootstrapper.ConfigureServices(IServiceCollection serviceCollection)\\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateQueue(ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 211\\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.<>c__DisplayClass10_0.<<CreateAsync>b__0>d.MoveNext() in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 185\\n      --- End of stack trace from previous location ---\\n         at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func`1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 36\\n         at
2:10
fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateAsync(Guid cashboxid, String accesstoken, ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 187\\n         at fiskaltrust.SignatureCloud.DE.Controllers.SignController.Post(ReceiptRequest request) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/SignController.cs:line 102\\n         at lambda_method11(Closure , Object )\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\\n         at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\\n         at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\\n         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)\\n\",\"stream\":\"stdout\",\"docker\":{\"container_id\":\"d94347dfe48e156f5760acb6eaf47141dfc58ac49df8102798c81f319d327bd4\"},\"kubernetes\":{\"container_name\":\"byodc\",\"namespace_name\":\"bring-your-own-datacenter\",\"pod_name\":\"byodc-5d6579fbff-zbgl9\",\"container_image\":\"ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster\",\"container_image_id\":\"docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:7443476fc54d0f2233758b9bd499ddf660b7fe35d27cb3d049c33b565cc6f271\",\"pod_id\":\"683adb66-ebf8-452e-b2c6-a57260f7680b\",\"host\":\"ip-192-168-128-81.eu-central-1.compute.internal\",\"labels\":{\"app\":\"byodc\",\"pod-template-hash\":\"5d6579fbff\"},\"master_url\":\"https://10.100.0.1:443/api\",\"namespace_id\":\"55e764f3-dcc1-456b-a56a-02b4edd83cd7\"}}"}

POSSystem (please complete the following information):
46a60bc4-42f6-4a95-b758-77c8da74f203

Cashbox Information (please complete the following information):

  • CashboxID

Additional context
Add any other context about the problem here.

Latest helm chart forces to change redis host name

Describe the bug

latest chart version 1.3.18 breaks our redis url and doesn't allow to override the full redis host

version: 1.3.18 in templates/manifest/byodc.yml

  env:
            - name: Redis__ConnectionString
              value: {{ .Values.byodc.config.redis.host }}.{{ .Release.Namespace }}:{{ .Values.byodc.config.redis.port }}

vs 1.3.16

 - name: Redis__ConnectionString
              value: {{ .Values.byodc.config.redis.host }}:{{ .Values.byodc.config.redis.port }}

To Reproduce
Steps to reproduce the behavior:

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

STDOUT/STDERR
If applicable, add LogOutput from affected BackendPOD.

POSSystem (please complete the following information):

  • POSSystemID

Cashbox Information (please complete the following information):

  • CashboxID

Additional context
Add any other context about the problem here.

Redis TimeoutException

Describe the bug

We have an aws redis cluster setup and we are seeing an intermittent issue with RedisLockService. What would be the cause of it and how to fix it ?

Connection id "0HM7A43PJN16G", Request id "0HM7A43PJN16G:00000002": An unhandled exception was thrown by the application.

System.TimeoutException: Failed to acquire lock after 00:01:00. Timeout
at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func`1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 36
at fiskaltrust.SignatureCloud.DE.Controllers.SignController.Post(ReceiptRequest request) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/SignController.cs:line 102
at lambda_method6(Closure , Object )

To Reproduce
Steps to reproduce the behavior:

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

STDOUT/STDERR

๏ฟฝ[41m๏ฟฝ[30mfail๏ฟฝ[39m๏ฟฝ[22m๏ฟฝ[49m: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HM7A43PJN16I", Request id "0HM7A43PJN16I:00000002": An unhandled exception was thrown by the application.
System.TimeoutException: Failed to acquire lock after 00:01:00. Timeout
at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func`1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 36
at fiskaltrust.SignatureCloud.DE.Controllers.SignController.Post(ReceiptRequest request) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/SignController.cs:line 102
at lambda_method6(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

POSSystem (please complete the following information):

  • POSSystemID

Cashbox Information (please complete the following information):

  • CashboxID

Additional context
Add any other context about the problem here.

Failed to export TAR file from SCU - "Internal Server Error"

Describe the bug
hi we are seeing an increased number of errors for the last couple of days for the daily closing. The error doesn't say much just "Internal Server Error" Below you will find log from the pods.

{ Status: "-20000", Error: "Internal Server Error", Code: "", RequestId: "ef4ab5e6c5e21ca4530de1c15e13ab1a" }

To Reproduce
Steps to reproduce the behavior:

Expected behavior
Tar file is exported successfully.

Screenshots
If applicable, add screenshots to help explain your problem.

STDOUT/STDERR

Field | Value
-- | --
@ingestionTime | 1627322870051
@log | 863263560856:/eks/fiskaltrust-middleware-prod/containers
@logStream | byodc-5b6dbc6868-xz57q_bring-your-own-datacenter_byodc-c394b9adce79a043cae71849663dce5666a79c73d9978546fd47757c78639a45
@message | {"log":"\u001B[41m\u001B[30mfail\u001B[39m\u001B[22m\u001B[49m: fiskaltrust.Middleware.SCU.DE.Fiskaly.FiskalySCU[0]\n Failed to execute StartExportSessionAsync - Request: {\"ClientId\":null,\"Erase\":true}\n { Status: \"-20000\", Error: \"Internal Server Error\", Code: \"\", RequestId: \"c680ff288e5d7c1bf972bf390f320d1c\" }\n","stream":"stdout","docker":{"container_id":"c394b9adce79a043cae71849663dce5666a79c73d9978546fd47757c78639a45"},"kubernetes":{"container_name":"byodc","namespace_name":"bring-your-own-datacenter","pod_name":"byodc-5b6dbc6868-xz57q","container_image":"ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster","container_image_id":"docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:e474c26458ea263e699871ee304a8f2c2d0b229cb0aa9d75333b0d300807489b","pod_id":"1599c220-cbbf-41e4-bd97-f1cc4044d324","host":"ip-192-168-144-20.eu-central-1.compute.internal","labels":{"app":"byodc","pod-template-hash":"5b6dbc6868"},"master_url":"https://10.100.0.1:443/api","namespace_id":"55e764f3-dcc1-456b-a56a-02b4edd83cd7"}}
@timestamp | 1627322863621
docker.container_id | c394b9adce79a043cae71849663dce5666a79c73d9978546fd47757c78639a45
kubernetes.container_image | ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster
kubernetes.container_image_id | docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:e474c26458ea263e699871ee304a8f2c2d0b229cb0aa9d75333b0d300807489b
kubernetes.container_name | byodc
kubernetes.host | ip-192-168-144-20.eu-central-1.compute.internal
kubernetes.labels.app | byodc
kubernetes.labels.pod-template-hash | 5b6dbc6868
kubernetes.master_url | https://10.100.0.1:443/api
kubernetes.namespace_id | 55e764f3-dcc1-456b-a56a-02b4edd83cd7
kubernetes.namespace_name | bring-your-own-datacenter
kubernetes.pod_id | 1599c220-cbbf-41e4-bd97-f1cc4044d324
kubernetes.pod_name | byodc-5b6dbc6868-xz57q
log | ๏ฟฝ[41m๏ฟฝ[30mfail๏ฟฝ[39m๏ฟฝ[22m๏ฟฝ[49m: fiskaltrust.Middleware.SCU.DE.Fiskaly.FiskalySCU[0]Failed to execute StartExportSessionAsync - Request: {"ClientId":null,"Erase":true}{ Status: "-20000", Error: "Internal Server Error", Code: "", RequestId: "c680ff288e5d7c1bf972bf390f320d1c" }
stream | stdout


Field | Value
-- | --
@ingestionTime | 1627323876627
@log | 863263560856:/eks/fiskaltrust-middleware-prod/containers
@logStream | byodc-5b6dbc6868-kr7lx_bring-your-own-datacenter_byodc-c188c1c7acb6b09ed2c45ed741fdd3da14b851e14492131d44dcab71f8df0124
@message | {"log":"\u001B[41m\u001B[30mfail\u001B[39m\u001B[22m\u001B[49m: fiskaltrust.Middleware.Localization.QueueDE.SignProcessorDE[0]\n Failed to export TAR file from SCU.\n { Status: \"-20000\", Error: \"Internal Server Error\", Code: \"\", RequestId: \"ef4ab5e6c5e21ca4530de1c15e13ab1a\" }\n","stream":"stdout","docker":{"container_id":"c188c1c7acb6b09ed2c45ed741fdd3da14b851e14492131d44dcab71f8df0124"},"kubernetes":{"container_name":"byodc","namespace_name":"bring-your-own-datacenter","pod_name":"byodc-5b6dbc6868-kr7lx","container_image":"ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster","container_image_id":"docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:e474c26458ea263e699871ee304a8f2c2d0b229cb0aa9d75333b0d300807489b","pod_id":"9bb89578-685d-42c0-af29-1e6402aa0c34","host":"ip-192-168-157-187.eu-central-1.compute.internal","labels":{"app":"byodc","pod-template-hash":"5b6dbc6868"},"master_url":"https://10.100.0.1:443/api","namespace_id":"55e764f3-dcc1-456b-a56a-02b4edd83cd7"}}
@timestamp | 1627323876200
docker.container_id | c188c1c7acb6b09ed2c45ed741fdd3da14b851e14492131d44dcab71f8df0124
kubernetes.container_image | ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster
kubernetes.container_image_id | docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:e474c26458ea263e699871ee304a8f2c2d0b229cb0aa9d75333b0d300807489b
kubernetes.container_name | byodc
kubernetes.host | ip-192-168-157-187.eu-central-1.compute.internal
kubernetes.labels.app | byodc
kubernetes.labels.pod-template-hash | 5b6dbc6868
kubernetes.master_url | https://10.100.0.1:443/api
kubernetes.namespace_id | 55e764f3-dcc1-456b-a56a-02b4edd83cd7
kubernetes.namespace_name | bring-your-own-datacenter
kubernetes.pod_id | 9bb89578-685d-42c0-af29-1e6402aa0c34
kubernetes.pod_name | byodc-5b6dbc6868-kr7lx
log | ๏ฟฝ[41m๏ฟฝ[30mfail๏ฟฝ[39m๏ฟฝ[22m๏ฟฝ[49m: fiskaltrust.Middleware.Localization.QueueDE.SignProcessorDE[0]Failed to export TAR file from SCU.{ Status: "-20000", Error: "Internal Server Error", Code: "", RequestId: "ef4ab5e6c5e21ca4530de1c15e13ab1a" }
stream | stdout


POSSystem (please complete the following information):

  • 46a60bc4-42f6-4a95-b758-77c8da74f203

Cashbox Information (please complete the following information):

  • CashboxID

Additional context
Add any other context about the problem here.

Failed to export TAR file from SCU

Hi there, could we get some more info on the bellow error reported by byodc. We have disabled the tar file export in the portal for the tse

Screenshot 2020-11-03 at 11 18 12

What is the export used for by the way? Is it done on every receipt request ?

fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory[0]
      Worker created. cashboxid: e5db2934-bbcc-4f69-8d75-de51c5f7f8a1
fail: fiskaltrust.Middleware.Localization.QueueDE.SignProcessorDE[0]
      Failed to export TAR file from SCU.
System.ArgumentNullException: Value cannot be null. (Parameter 's')
   at System.Convert.FromBase64String(String s)
   at fiskaltrust.Middleware.Localization.QueueDE.SignProcessorDE.ProcessTarFileExportAsync(Guid queueId, String cashboxIdentification, IDESSCD client, Boolean erase)
   at fiskaltrust.Middleware.Localization.QueueDE.SignProcessorDE.PerformTarFileExportAsync(ftQueueItem queueItem, ftQueue queue, ftQueueDE queueDE, IDESSCD client, Boolean erase)

Annotations AWS Loadbalancer

In our BYODC Middleware configuration we have "TLS termination at the load balancer" (https://www.getambassador.io/docs/edge-stack/latest/topics/running/ambassador-with-aws/#tls-termination-at-the-load-balancer)
We need to add some annotations to the current chart, specifically to the ambassador service

apiVersion: v1
kind: Service
metadata:
  name: ambassador
  namespace: ambassador
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ACM_CERT_ARN}}
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
spec:
  type: LoadBalancer
  ports:
  - name: HTTP
    port: 80
    targetPort: 8080
  - name: HTTPS
    port: 443
    targetPort: 8080
  selector:
    service: ambassador

do you have a recommendation to add these annotations or are you planning to include annotations in the following releases?

Meaning of "middleware not created" after quickstart guide

I followed the quickstart guide, the k8s components are up and running and I can reach them from outside.
I can also communicate with my MySQL database (hosted in Azure) from my workstation using the connection string set up in the Fiskaltrust queue.
But when I run the Echo example from the Postman collection I get the message "middleware not created".
Where could I have missed something?

Failed to remove queue upload

We are seeing a bunch of following warnings, we would like to know how to fix those and what might be the side effect to this:

warn: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0] Failed to remove queue upload for cashbox cashbox. cashboxid: 917a0698-01e9-439f-a255-93f37acc652d

cashboxid not provided

Describe the bug

We are trying to deploy local BYODC version 1.3.12-rc1-buster with the sandbox-helipad
We have followed the instructions in https://github.com/fiskaltrust/product-de-bring-your-own-datacenter/blob/master/QuickStart.md with some changes.
The "Test reachability in the Browser" was right but when we try to reach the endpoint /api/Echo with Postman the response is "cashboxid not provided"

To Reproduce

  • We use the option with "including MySQL POD"
  • We deploy all in a K3s Cluster without Ambassador because Ambassador LoadBalancer was always in pending due to the K3S LoadBalancer
byodc:
  # Set docker image and tag for the byodc
  image:
    name: ghcr.io/fiskaltrust/byodc-mysql-fiskaly
    # use to override the default version
    tag: 1.3.12-rc1-buster
    pullSecret: false
  # proxy settings for the byocd container maps to these env vatiables https://docs.docker.com/network/proxy/#set-the-environment-variables-manually
  proxy:
    http: null
    https: null
    "no": null
    ftp: null
  # configuration settings for the byodc
  config:
    redis:
      # hostname of the redis instance (only change if using external redis instance)
      host: redis
      # port of the redis instance (also sets the port for the internal redis instance)
      port: 6379
      channel: byodc
    applicationInsights:
      instrumentationKey: null
    # LogLevel of the byodc logs
    logLevel: Information
    # helipad used by the byodc
    helipad:
      baseUrl: https://helipad-sandbox.fiskaltrust.cloud
    # number of byodc instances
    replicas: 4
    # pod limits
    limits:
      cpu: 100m
      memory: 100Mi
    # http timeouts
    timeout:
      all: 0
      connect: 15_000
      
mysql:
  enabled: true

redis:
  # enable redis
  enabled: true

ambassador:
  # installs ambassador
  install: false
  config:
    # tls config. see https://www.getambassador.io/docs/latest/howtos/tls-termination/#create-a-self-signed-certificate for information about `cert` and `key` files.
    # you can use `--set-file ambassador.config.tls.crt="./cert.pem"` to pass files to the helm command. please make sure the files start with `-----BEGIN [...]`.
    # the cert file may also contain intermediate certificates
    tls:
      # enables tls
      enabled: false
      # set cert as base64 encoded file contents
      crtBase64: null
      # set key as base64 encoded file contents
      keyBase64: null
      # set cert as file contents
      crt: null
      # set key as file contents
      key: null
    # hostname by which ambasador is reachable
    hostname: localhost
  # controls the replicacount of ambassador
  replicaCount: 2

Expected behaviour

Get the Echo response

Screenshots

Log file from all BYODC pods

Pods

kubectl logs -l app=byodc -n bring-your-own-datacenter

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://[::]:80
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app
warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.

Cluster

kubectl get all -n bring-your-own-datacenter

NAME                                     READY   STATUS    RESTARTS   AGE
pod/byodc-764f7c7b5c-mfcvq               1/1     Running   0          2d23h
pod/byodc-764f7c7b5c-xld4c               1/1     Running   0          2d23h
pod/mysql-5fcbd966bf-7ctjh               1/1     Running   0          2d23h
pod/byodc-764f7c7b5c-5k6fl               1/1     Running   0          2d23h
pod/byodc-764f7c7b5c-m6ms9               1/1     Running   0          2d23h
pod/redis-69d445ff55-fjlfj               1/1     Running   0          2d23h
pod/whoami-deployment-844cd9768c-fcj67   1/1     Running   0          3h13m

NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/byodc            ClusterIP   10.43.218.181   <none>        80/TCP,443/TCP   2d23h
service/mysql            ClusterIP   10.43.115.8     <none>        3306/TCP         2d23h
service/redis            ClusterIP   10.43.80.62     <none>        6379/TCP         2d23h
service/whoami-service   ClusterIP   10.43.89.86     <none>        80/TCP           3h24m

NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mysql               1/1     1            1           2d23h
deployment.apps/byodc               4/4     4            4           2d23h
deployment.apps/redis               1/1     1            1           2d23h
deployment.apps/whoami-deployment   1/1     1            1           3h24m

NAME                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/mysql-5fcbd966bf               1         1         1       2d23h
replicaset.apps/byodc-764f7c7b5c               4         4         4       2d23h
replicaset.apps/redis-69d445ff55               1         1         1       2d23h
replicaset.apps/whoami-deployment-844cd9768c   1         1         1       3h13m

POSSystem (please complete the following information):

Cashbox Information (please complete the following information):

5e1ebae1-2635-47f4-8779-b1fcd1f1147c

Additional context

Echo Endpoint

curl request to the /api/Echo Endpoint
curl --location --request POST 'http://localhost:80/api/Echo' \--header 'cashboxid: 5e1ebae1-2635-47f4-8779-b1fcd1f1147c' \--header 'accesstoken: BPTSxxujC+XQvwfKkpeyXIHwR3A1e49HaXUtM6b5ZC8WzRtozpvZ5rAq867vALoQMAMbKJXkdkWRvQJcOxPlbBI=' \--header 'Content-Type: application/json' \--data-raw '{ "message": "hola"}'

"cashboxid not provided"

Whoami Endpoint

We have our Echo Service behind the same LoadBalancer and when we request it all the headers are there
curl --location --request POST 'http://localhost:80/whoami' \--header 'cashboxid: 5e1ebae1-2635-47f4-8779-b1fcd1f1147c' \--header 'accesstoken: BPTSxxujC+XQvwfKkpeyXIHwR3A1e49HaXUtM6b5ZC8WzRtozpvZ5rAq867vALoQMAMbKJXkdkWRvQJcOxPlbBI=' \--header 'Content-Type: application/json' \--data-raw '{ "message": "hola"}'

Hostname: whoami-deployment-844cd9768c-fcj67
IP: 127.0.0.1
IP: ::1
IP: 10.42.0.149
IP: fe80::10e0:41ff:fe74:498b
POST /whoami HTTP/1.1
Host: localhost
User-Agent: curl/7.68.0
Content-Length: 20
Accept: */*
Accept-Encoding: gzip
Accesstoken: BPTSxxujC+XQvwfKkpeyXIHwR3A1e49HaXUtM6b5ZC8WzRtozpvZ5rAq867vALoQMAMbKJXkdkWRvQJcOxPlbBI=
Cashboxid: 5e1ebae1-2635-47f4-8779-b1fcd1f1147c
Content-Type: application/json
X-Forwarded-For: 10.42.0.139
X-Forwarded-Host: localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: traefik-7c5556d74c-w2hzf
X-Real-Ip: 10.42.0.139

{ "message": "hola"}

Using BYOD with MSSQL-Server (Entity-Provider) Options

I want to use BYOD with MSSQL-Server. Because of size issues I want to have control over the database schema (using compression, creating indexes, using partitioning etc.) for data lifecycle management and long term storage.#

  • How is the database schema created ? Will customized settings be rolled back by queue updates ?
  • how is the lifecycle of the schema managed regarding schema changes on existing data ?
  • What is the mapping between queues, database users, databases, schemas ?
    I would prefer to use one SQL-Server database and one named schema per user, preferrably DBaaS like Azure SQL Database
    Any helpful links are welcome

Cashbox Configuration Changes

When I change the mysql ConnectionString configuration value for a queue on the portal sandbox, the change is not updated to the Middleware containers until they are restarted.
Does a Middleware container get the configurations for a cashbox from helipad on the first request only for that cashbox?

BYOD v. 1.3.18 many errors by installation on k8s v.1.20

helm search repo fiskaltrust
NAME CHART VERSION APP VERSION DESCRIPTION
fiskaltrust/bring-your-own-datacenter 1.3.18

helm install bring-your-own-datacenter fiskaltrust/bring-your-own-datacenter --namespace fiskaltrust-dev -f ~/install/config.yaml

W0428 14:02:51.123721 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.146792 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.201990 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.232566 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.261371 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.324033 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.357279 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.392925 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.449534 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.523235 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.548221 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.578618 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.605038 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.630597 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.667499 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.687816 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.709551 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.733172 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0428 14:02:51.754019 3026082 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
W0428 14:02:52.382048 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
W0428 14:02:52.387297 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
W0428 14:02:52.391179 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0428 14:02:52.398779 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0428 14:02:52.402773 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role
W0428 14:02:52.406927 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role
W0428 14:02:52.411742 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
W0428 14:02:52.418779 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
W0428 14:02:52.573971 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
W0428 14:02:52.583217 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRole is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRole
W0428 14:02:52.596381 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0428 14:02:52.613130 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
W0428 14:02:52.633098 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role
W0428 14:02:52.633193 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role
W0428 14:02:52.641677 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
W0428 14:02:52.642340 3026082 warnings.go:70] rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
NAME: bring-your-own-datacenter
LAST DEPLOYED: Wed Apr 28 14:02:51 2021
NAMESPACE: fiskaltrust-dev
STATUS: deployed
REVISION: 1

Failed to acquire lock after 00:01:00. Timeout

Describe the bug
We see an increased number of Redis Timeout exceptions which are not related to pod restarts.

System.TimeoutException: Failed to acquire lock after 00:01:00. Timeout\\n at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func 1 executeMethod) in

To Reproduce
Steps to reproduce the behavior:

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

STDOUT/STDERR

9:50 {"id": "36212614997347399125404144454156738234561626347393646592", "timestamp": 1623829817119, "message": "{\"log\":\"\\u001B[41m\\u001B[30mfail\\u001B[39m\\u001B[22m\\u001B[49m: Microsoft.AspNetCore.Server.Kestrel[13]\\n Connection id \\\"0HM9GHEDFGSMT\\\", Request id \\\"0HM9GHEDFGSMT:00000002\\\": An unhandled exception was thrown by the application.\\n System.TimeoutException: Failed to acquire lock after 00:01:00. Timeout\\n at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 36\n at fiskaltrust.SignatureCloud.DE.Controllers.SignController.Post(ReceiptRequest request) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/SignController.cs:line 102\n at lambda_method13(Closure , Object )\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask)\\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\\n at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\\n at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\\n at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication1 application)\n","stream":"stdout","docker":{"container_id":"7e00f6edf4f368b147e809c950c5538519a206b4848402aafb78bb5d3380f0a8"},"kubernetes":{"container_name":"byodc","namespace_name":"bring-your-own-datacenter","pod_name":"byodc-77cdc8cf66-8pbdk","container_image":"ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3.16-buster","container_image_id":"docker-pullable://ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:7443476fc54d0f2233758b9bd499ddf660b7fe35d27cb3d049c33b565cc6f271","pod_id":"c42db78d-d92d-4060-8789-f622b8128221","host":"ip-192-168-153-146.eu-central-1.compute.internal","labels":{"app":"byodc","pod-template-hash":"77cdc8cf66"},"master_url":"https://10.100.0.1:443/api\",\"namespace_id\":\"55e764f3-dcc1-456b-a56a-02b4edd83cd7\"}}"}
`

POSSystem (please complete the following information):

  • 46a60bc4-42f6-4a95-b758-77c8da74f203

Cashbox Information (please complete the following information):

  • 79cfcecf-3a7b-4e34-90be-bc3e322dc176 (a single example only but involves multiple cashboxes )

Additional context
We don't see any high load on the cluster, about 20 requests per minute at max

The redis instance is quiet but we do see a spike in the number of items which drops at around 8am UTC

Screenshot 2021-06-16 at 17 09 59

We don't see a huge increase in the number of workers created during that time, here is the search in the logs for "Worker created" text (the times here are UTC+2:
Screenshot 2021-06-16 at 17 14 12

Our Setup:
10 pods with limits: cpu: 1, memory: 1536Mi handling over 700 cashboxes, and we don't see any restarts or any of the pod getting close to their limits when the issue happens

Each of salons would be generating a 'Daily Closing Receipt" first thing in the morning so my suspicion is that it's related to that. It's hard to know what's causing it without knowing how the pods work internally in terms of those redis locks.

Database Connection Properties Configuration

From the ByoDC documentation, it appears that the database connection properties are configured via the fiskal portal. Is there a way to automate this, for example using configuration files or scripting via an API?

Call to Journal endpoint to get DSFinV-K export as .ZIP file doesn't work

In this #26 (comment) @TSchmiedlechner pointed out, that the Journal endpoint returns a default JSON object that has the meaning, that the middleware couldn't parse the ftJournalType.
Here's a screenshot of the postman-request that illustrates the issue:
image

I tried all variants of ftJournalType, sending it in decimal, hex, octal: It's always returning the same result.
I also tried the other possible values for ftJournalType as described here but that doesn't change anything.

I now tried upgrading byodc to version 1.3.12-rc1-buster, but this didn't help. The only thing that changed is that I get the response now in plaintext instead of array of ascii-codes.

Please fix the DSFinV-K export (or did I use the middleware wrongly?). Maybe you need the cashbox-id I'm working with, it is: 23ca4176-7c93-40ae-8a15-ab2b1276c522

Horizontal Pod Autoscaler

Hi there, what's your recommendation on running horizontal pod autoscaler in the cluster? With the cashboxes being routed to the same pod and having a bit of overhead at the initialization time is hpa something you would recommend to run in the cluster ?

redis port and channel settings NOT working

Describe the bug
If the redis port is changed byodc fails to start with an exception

If the redis channel is changed and both the sandbox and the live environment are running on the same kubernetes cluster (even though in different namespaces) then some messages end up in the wrong environment and the web service does return configuration not readable

byodc:
...
  config:
    redis:
      # hostname of the redis instance (only change if using external redis instance)
      host: redis
      # port of the redis instance (also sets the port for the internal redis instance)
      port: 6375
      channel: byodc-stg
...

Log when changing redis channel

fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory[0]
      Failed to get configuration. cashboxid: 91df5c17-0cdc-4f25-9d9b-4bc4b10ce662, download: False
      fiskaltrust.SignatureCloud.DE.Services.HelipadException: Unauthorized
         at fiskaltrust.SignatureCloud.DE.Services.HelipadService.GetConfigurationAsync(Guid cashBoxId, String accessToken) in /src/src/fiskaltrust.SignatureCloud.DE/Services/HelipadService.cs:line 182
         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.GetConfiguration(Guid cashboxid, String accesstoken, Boolean download) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 71

Log when changing redis port

Unhandled exception. StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). UnableToConnect on redis:6375/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.2.4.27433
   at StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(ConfigurationOptions configuration, TextWriter log) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 1163
   at StackExchange.Redis.ConnectionMultiplexer.Connect(ConfigurationOptions configuration, TextWriter log) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 1032
   at StackExchange.Redis.ConnectionMultiplexer.Connect(String configuration, TextWriter log) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 1015
   at fiskaltrust.SignatureCloud.DE.Startup.<>c__DisplayClass5_0.<RegisterRedisServices>b__0(IServiceProvider x) in /src/src/fiskaltrust.SignatureCloud.DE/Startup.cs:line 112
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
   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 Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at fiskaltrust.SignatureCloud.DE.Program.Main(String[] args) in /src/src/fiskaltrust.SignatureCloud.DE/Program.cs:line 16

gRPC client supported in byodc scenario

Is the gRPC client library supported for communication with a byodc service?
The reason for this question is, that an application running in the same cluster cannot communicate with the byodc service via gRPC. So before I go on a wild goose chase, I just wanted to confirm that this should work (preferrably via http, since we're talking about intra-cluster communication).

Cheers
Dennis

JSON Casing

Describe the bug
The casing of JSON-Responses from Fiskaltrust is documented to sometimes start with a capital letter and sometimes not.
https://docs.fiskaltrust.cloud/de/docs/poscreators/middleware-doc/general/data-structures#signature-entry
For Example, the "Data" Tag is written with a capital letter.
When using BYOD, the response JSON is always starting with a lowercase letter.

To Reproduce
Request:
Target URL: http://localhost:80/json/V1/sign

Request::

{
   "ftReceiptCase":"XXXX",
   "ftCashboxID":"XXXX",
   "cbTerminalID":"MS1",
   "cbUser":{
      "ID":"XXXX"
   },
   "cbCustomer":{
      "CustomerId":"XXXX",
      "CustomerName":"XXXX",
      "CustomerName2":"XXXX",
      "CustomerStreet":"XXXX",
      "CustomerZip":"XXXX",
      "CustomerCity":"XXXX"
   },
   "cbReceiptReference":"XXXX",
   "cbPreviousReceiptReference":"",
   "cbReceiptMoment":"2021-02-18T14:05:52.0000000Z",
   "cbChargeItems":[
      
   ],
   "cbPayItems":[
      
   ]
}

Response:

{
   "ftCashBoxID":"XXXX",
   "ftQueueID":"7f4ee3a1-3faa-49b0-9ac8-2abf03cc2f9b",
   "ftQueueItemID":"00810e7c-eb94-4cf4-98a6-93275aa378e0",
   "ftQueueRow":4,
   "cbTerminalID":"XXXX",
   "cbReceiptReference":"XXXX",
   "ftCashBoxIdentification":"XXXX",
   "ftReceiptIdentification":"XXXX",
   "ftReceiptMoment":"2021-02-18T14:07:13.886793Z",
   "ftReceiptHeader":null,
   "ftChargeItems":null,
   "ftChargeLines":null,
   "ftPayItems":null,
   "ftPayLines":null,
   "ftSignatures":[
      {
         "ftSignatureFormat":13,
         "ftSignatureType":4919338167972134928,
         "caption":"start-transaction-result",
         "data":"XXXX"
      },
      {
         "ftSignatureFormat":13,
         "ftSignatureType":4919338167972134929,
         "caption":"finish-transaction-payload",
         "data":"XXXX"
      },
      {
         "ftSignatureFormat":13,
         "ftSignatureType":4919338167972134930,
         "caption":"finish-transaction-result",
         "data":"XXXX"
      }
   ]
}

Expected behavior
The BYOD should respond in the same format as documented here
and return a uppercase "Data" and uppercase "Caption" Tag. I believe there will be more tags acting like this.

Failed to acquire lock after 00:01:00. Timeout

Describe the bug
We upgraded BYODC from 1.3.11 to 1.3.12 yesterday (3rd February 2021)
With 1.3.11 we did not have a single locking issue
Since upgrading 1.3.12 we do have locking issues every 5 to 10 requests - it usually takes around 5-10 minutes for it to resolve by itself

We are using a Fiskaly TSE (not sure if it is related

To Reproduce
unknown - behavior seems random - happens on regular receipt signing requests

it does not seem to be related to the request itself, because when we retry the same request over and over again (2-3 minutes) it does work after a few retries

The request immediately before the locking issue does occur does always return the following plain text response:

upstream connect error or disconnect/reset before headers. reset reason: connection termination

Expected behavior
there shouldn't be any locking issues - this is usually an indicator that something crashed

Screenshots
not applicable

Log file from all BYODC pods

Log file timestamps are in CET (UTC+1) - this is important when comparing it with the request timestamps listed in the additional context.

2021-02-04 10:14:13.424 byodc-6d49d56b95-mg47m byodc info info: fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory[0]
      Worker created. cashboxid: 98d8c0dc-1ffb-4066-9cf9-60d0a8642340
2021-02-04 10:15:38.351 byodc-6d49d56b95-mg47m byodc info info: fiskaltrust.SignatureCloud.DE.Startup[0]
      Redis is configured.
2021-02-04 10:15:48.353 byodc-6d49d56b95-mg47m byodc info info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://[::]:80
2021-02-04 10:15:48.353 byodc-6d49d56b95-mg47m byodc info info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
2021-02-04 10:15:48.353 byodc-6d49d56b95-mg47m byodc info info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
2021-02-04 10:15:48.353 byodc-6d49d56b95-mg47m byodc info info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app
2021-02-04 10:16:32.051 byodc-6d49d56b95-mg47m byodc warn warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.
2021-02-04 10:16:40.967 byodc-6d49d56b95-6sxvt byodc warn warn: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0]
      Failed to remove queue upload for cashbox cashbox. cashboxid: 98d8c0dc-1ffb-4066-9cf9-60d0a8642340
2021-02-04 10:16:40.970 byodc-6d49d56b95-7khcj byodc warn warn: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0]
      Failed to remove queue upload for cashbox cashbox. cashboxid: 98d8c0dc-1ffb-4066-9cf9-60d0a8642340
2021-02-04 10:17:03.057 byodc-6d49d56b95-mg47m byodc info info: fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory[0]
      Worker created. cashboxid: 98d8c0dc-1ffb-4066-9cf9-60d0a8642340
2021-02-04 10:18:04.257 byodc-6d49d56b95-mg47m byodc fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HM68TM7LDNEC", Request id "0HM68TM7LDNEC:00000002": An unhandled exception was thrown by the application.
      System.TimeoutException: Failed to acquire lock after 00:01:00. Timeout
         at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func`1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 33
         at fiskaltrust.SignatureCloud.DE.Controllers.SignController.Post(ReceiptRequest request) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/SignController.cs:line 96
         at lambda_method4(Closure , Object )
         at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
         at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
         at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)
         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)
         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

POSSystem (please complete the following information):

  • ecda5b15-104f-4f37-b7d1-d42babda1b4b

Cashbox Information (please complete the following information):

  • 98d8c0dc-1ffb-4066-9cf9-60d0a8642340

Additional context
Timestamp of request which caused the upstream connect error or disconnect/reset before headers. reset reason: connection termination error: 2021-02-04T09:14:30.395Z

Before this one I had only one other receipt signed (was the first receipt today) at (Moment) 2021-02-04T09:14:07.139Z - the ftReceiptMoment for this receipt was 2021-02-04T09:14:13.907224Z

4th retry was successful at 2021-02-04T09:20:35.256Z

Application logs to file

Can fiskaltrust.Middleware be configured to send application logs to a file on the local filesystem rather than stdout/stderr?

Retry handling with out of service response

In cases where we receive out of service state (0x4445000000000001) for a signature request, we're trying to retry the request by first sending a receipt request (ftReceiptCase + "receipt request" flag - 0x0000800000000000) to see if the receipt is generated or not, but we get the same response with the out of service state. In such cases, should we send the same signature request with the failed receipt flag (ftReceiptCase + "failed receipt" flag - 0x000000000000010000)?

The documentation states that the TSE failure cases should not be retried, but there is no explicit information on the out of service state.

Updating cashbox configuration when MySql query string is wrong

Describe the bug
After a cashbox is configured with MySql wrong credentials we cannot restart the configuration only for that cashbox

To Reproduce

Expected behavior
We should be able to download the new correct configuration of the cashbox without restart the entire cluster.
We expect following behavior

  • Create a new cashbox in Fiskaltrust- Portal with the wrong MySql credentials
  • Request the "4. Zero Receipt (+ TSE Info)" endpoint
  • Change the MySql query string of the cashbox in Fiskaltrust-Portal and "rebuild configuration"
  • Request the "Echo" endpoint to restart the configuration of the cashbox
  • Request the "4. Zero Receipt (+ TSE Info)" endpoint
    • Download new cashbox configuration
    • works

Screenshots
Pods in our cluster
Bildschirmfoto 2021-07-26 um 15 18 18

STDOUT/STDERR
With the wrong MySql connection we request the endpoint /json/v1/Sign to generate a ZeroReceipt

{
    "log": "\u001b[40m\u001b[1m\u001b[33mwarn\u001b[39m\u001b[22m\u001b[49m: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0]\n      Failed to remove queue upload for cashbox cashbox. cashboxid: b7cbd467-0dbf-4496-94d1-3b7eef760905\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-kpvxb",
        "container_name": "byodc",
        "docker_id": "9d8cf62e6240a55c22e7c85ed2902ede9c7943396c365a71ff0a02945623a00f",
        "container_hash": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:adde70ed0481ff88caa6a27c36541dcab9ab3e59ae8da3403fba85d8c66c2ecd",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
},
{
    "log": "\u001b[40m\u001b[1m\u001b[33mwarn\u001b[39m\u001b[22m\u001b[49m: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0]\n      Failed to remove queue upload for cashbox cashbox. cashboxid: b7cbd467-0dbf-4496-94d1-3b7eef760905\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-zxz9x",
        "container_name": "byodc",
        "docker_id": "faa3c92ffd2dcebe6aad0c9553b45a3857841877eb1e90f8860f7209914c96e9",
        "container_hash": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:adde70ed0481ff88caa6a27c36541dcab9ab3e59ae8da3403fba85d8c66c2ecd",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
},
{
    "log": "\u001b[41m\u001b[30mfail\u001b[39m\u001b[22m\u001b[49m: fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory[0]\n      Failed to create worker. casboxid: b7cbd467-0dbf-4496-94d1-3b7eef760905\n      System.AggregateException: One or more errors occurred. (Access denied for user 'user'@'10.1.10.36' (using password: YES))\n       ---> MySqlConnector.MySqlException (0x80004005): Access denied for user 'user'@'10.1.10.36' (using password: YES)\n         at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, Int32 startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 462\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 110\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 140\n         at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 846\n         at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 410\n         at fiskaltrust.Middleware.Storage.MySQL.DatabaseInitialization.DatabaseMigrator.MigrateAsync()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.InitAsync(Guid queueId, Dictionary`2 configuration, ILogger`1 logger)\n         --- End of inner exception stack trace ---\n         at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\n         at System.Threading.Tasks.Task.Wait()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.ConfigureStorageServices(IServiceCollection serviceCollection)\n         at fiskaltrust.Middleware.Queue.MySQL.PosBootstrapper.ConfigureServices(IServiceCollection serviceCollection)\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateQueue(ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 211\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.<>c__DisplayClass10_0.<<CreateAsync>b__0>d.MoveNext() in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 171\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-b4fnc",
        "container_name": "byodc",
        "docker_id": "f79f095b67dd4d647f9782c8fc848eeed4f3705c2881b67a692ae71dd6d8acf5",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
},
{
    "log": "\u001b[41m\u001b[30mfail\u001b[39m\u001b[22m\u001b[49m: Microsoft.AspNetCore.Server.Kestrel[13]\n      Connection id \"0HMAG62LR2SS4\", Request id \"0HMAG62LR2SS4:00000002\": An unhandled exception was thrown by the application.\n      System.AggregateException: One or more errors occurred. (Access denied for user 'user'@'10.1.10.36' (using password: YES))\n       ---> MySqlConnector.MySqlException (0x80004005): Access denied for user 'user'@'10.1.10.36' (using password: YES)\n         at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, Int32 startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 462\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 110\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 140\n         at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 846\n         at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 410\n         at fiskaltrust.Middleware.Storage.MySQL.DatabaseInitialization.DatabaseMigrator.MigrateAsync()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.InitAsync(Guid queueId, Dictionary`2 configuration, ILogger`1 logger)\n         --- End of inner exception stack trace ---\n         at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\n         at System.Threading.Tasks.Task.Wait()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.ConfigureStorageServices(IServiceCollection serviceCollection)\n         at fiskaltrust.Middleware.Queue.MySQL.PosBootstrapper.ConfigureServices(IServiceCollection serviceCollection)\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateQueue(ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 211\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.<>c__DisplayClass10_0.<<CreateAsync>b__0>d.MoveNext() in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 171\n      --- End of stack trace from previous location ---\n         at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func`1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 29\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateAsync(Guid cashboxid, String accesstoken, ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 85\n         at fiskaltrust.SignatureCloud.DE.Controllers.SignController.Post(ReceiptRequest request) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/SignController.cs:line 90\n         at lambda_method11(Closure , Object )\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n         at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n         at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\n         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-b4fnc",
        "container_name": "byodc",
        "docker_id": "f79f095b67dd4d647f9782c8fc848eeed4f3705c2881b67a692ae71dd6d8acf5",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
},

After the MySql query string was fixed and the echo request was performed

{
    "log": "\u001b[40m\u001b[1m\u001b[33mwarn\u001b[39m\u001b[22m\u001b[49m: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0]\n      Failed to remove queue upload for cashbox cashbox. cashboxid: b7cbd467-0dbf-4496-94d1-3b7eef760905\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-zxz9x",
        "container_name": "byodc",
        "docker_id": "faa3c92ffd2dcebe6aad0c9553b45a3857841877eb1e90f8860f7209914c96e9",
        "container_hash": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:adde70ed0481ff88caa6a27c36541dcab9ab3e59ae8da3403fba85d8c66c2ecd",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
},
{
    "log": "\u001b[40m\u001b[1m\u001b[33mwarn\u001b[39m\u001b[22m\u001b[49m: fiskaltrust.SignatureCloud.DE.Services.HelipadUploader[0]\n      Failed to remove queue upload for cashbox cashbox. cashboxid: b7cbd467-0dbf-4496-94d1-3b7eef760905\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-kpvxb",
        "container_name": "byodc",
        "docker_id": "9d8cf62e6240a55c22e7c85ed2902ede9c7943396c365a71ff0a02945623a00f",
        "container_hash": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly@sha256:adde70ed0481ff88caa6a27c36541dcab9ab3e59ae8da3403fba85d8c66c2ecd",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
},
{
    "log": "\u001b[41m\u001b[30mfail\u001b[39m\u001b[22m\u001b[49m: fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory[0]\n      Failed to create worker. casboxid: b7cbd467-0dbf-4496-94d1-3b7eef760905\n      System.AggregateException: One or more errors occurred. (Access denied for user 'user'@'10.1.21.142' (using password: YES))\n       ---> MySqlConnector.MySqlException (0x80004005): Access denied for user 'user'@'10.1.21.142' (using password: YES)\n         at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in /_/src/MySqlConnector/Core/ServerSession.cs:line 815\n         at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, Int32 startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 462\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 110\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 140\n         at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 846\n         at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 410\n         at fiskaltrust.Middleware.Storage.MySQL.DatabaseInitialization.DatabaseMigrator.MigrateAsync()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.InitAsync(Guid queueId, Dictionary`2 configuration, ILogger`1 logger)\n         --- End of inner exception stack trace ---\n         at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\n         at System.Threading.Tasks.Task.Wait()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.ConfigureStorageServices(IServiceCollection serviceCollection)\n         at fiskaltrust.Middleware.Queue.MySQL.PosBootstrapper.ConfigureServices(IServiceCollection serviceCollection)\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateQueue(ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 211\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.<>c__DisplayClass10_0.<<CreateAsync>b__0>d.MoveNext() in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 171\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-b4fnc",
        "container_name": "byodc",
        "docker_id": "f79f095b67dd4d647f9782c8fc848eeed4f3705c2881b67a692ae71dd6d8acf5",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
},
{
    "log": "\u001b[41m\u001b[30mfail\u001b[39m\u001b[22m\u001b[49m: Microsoft.AspNetCore.Server.Kestrel[13]\n      Connection id \"0HMAG62LR2SS8\", Request id \"0HMAG62LR2SS8:00000002\": An unhandled exception was thrown by the application.\n      System.AggregateException: One or more errors occurred. (Access denied for user 'user'@'10.1.21.142' (using password: YES))\n       ---> MySqlConnector.MySqlException (0x80004005): Access denied for user 'user'@'10.1.21.142' (using password: YES)\n         at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in /_/src/MySqlConnector/Core/ServerSession.cs:line 815\n         at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, Int32 startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 462\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 110\n         at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 140\n         at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 846\n         at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 410\n         at fiskaltrust.Middleware.Storage.MySQL.DatabaseInitialization.DatabaseMigrator.MigrateAsync()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.InitAsync(Guid queueId, Dictionary`2 configuration, ILogger`1 logger)\n         --- End of inner exception stack trace ---\n         at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\n         at System.Threading.Tasks.Task.Wait()\n         at fiskaltrust.Middleware.Storage.MySQL.MySQLBootstrapper.ConfigureStorageServices(IServiceCollection serviceCollection)\n         at fiskaltrust.Middleware.Queue.MySQL.PosBootstrapper.ConfigureServices(IServiceCollection serviceCollection)\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateQueue(ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 211\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.<>c__DisplayClass10_0.<<CreateAsync>b__0>d.MoveNext() in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 171\n      --- End of stack trace from previous location ---\n         at fiskaltrust.SignatureCloud.DE.Services.Locking.RedisLockService.ProcessLockiningAsync[T](String lockName, Func`1 executeMethod) in /src/src/fiskaltrust.SignatureCloud.DE/Services/Locking/RedisLockService.cs:line 29\n         at fiskaltrust.SignatureCloud.DE.Services.MiddlewareInstanceFactory.CreateAsync(Guid cashboxid, String accesstoken, ftCashBoxConfiguration configuration) in /src/src/fiskaltrust.SignatureCloud.DE/Services/MiddlewareInstanceFactory.cs:line 85\n         at fiskaltrust.SignatureCloud.DE.Controllers.EchoController.Post(EchoRequest message) in /src/src/fiskaltrust.SignatureCloud.DE/Controllers/EchoController.cs:line 78\n         at lambda_method44(Closure , Object )\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n         at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n         at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\n         at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)\n         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)\n",
    "stream": "stdout",
    "kubernetes": {
        "pod_name": "byodc-7467d7bcf6-b4fnc",
        "container_name": "byodc",
        "docker_id": "f79f095b67dd4d647f9782c8fc848eeed4f3705c2881b67a692ae71dd6d8acf5",
        "container_image": "ghcr.io/fiskaltrust/byodc-mysql-fiskaly:1.3-buster"
    }
}

POSSystem (please complete the following information):

  • POSSystemID: a04755c4-8877-4891-8e9b-0e555e2e1079

Cashbox Information (please complete the following information):

  • CashboxID: b7cbd467-0dbf-4496-94d1-3b7eef760905 (Sandbox environment)

Additional context
We have 3 Backend PODs in our environment

  • pod/byodc-7467d7bcf6-b4fnc
  • pod/byodc-7467d7bcf6-kpvxb
  • pod/byodc-7467d7bcf6-zxz9x

Lock Resolution after POD Crash

Hi Christian

thanks for feedback, here are our additional questions:

  1. Is there a way for application to release the lock automatically when it crashes. Is that lock released automatically after certain amount of time ?
  2. We noticed that we were able to run the same cashbox with new configuration when we cleared the Redis Cache. Can you confirm that it's possible to do it this way. We could use that workaround at least in our dev environment.

Thanks

Originally posted by @darek-phorest in #18 (comment)

Redis Pod Replicas

In the helm chart value overrides, it is not possible to specify more than 1 pod replica for the redis container.
Is this by design or is it possible to have more than one pod replica for the redis container in the byodc cluster?

Only some Cashboxes work, the others return 500 - Internal Server Error

Describe the bug
We create two Cashboxes in the same way. We create a new Queue for each one and the queues reference the same tse.
When we call the /api/echo endpoint for one, we receive a successful response. The other returns 500 - Internal Server error.
We had this problem with many cashboxes, but cannot see a pattern.

To Reproduce
Create one TSE
Create Two Queues (with http endpoint)
Create two Cashboxes

Sometimes only one works..

Expected behavior
Cashboxes created this way should echo without an error.
It should work like here:
https://docs.fiskaltrust.cloud/de/docs/posdealers/rollout-doc/middleware#konfiguration-der-scu

Screenshots
image
image

STDOUT/STDERR
This is the only log i found. I have no idea if it is because of our error or something completely different:

2021/03/04 14:58:45 kubernetes:secret\|bring-your-own-datacenter\|*\|hostname=*: ERROR: WORKER PANICKED: unable to parse requirement: invalid label value: "*": at key: "hostname": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')

Cashbox Information (please complete the following information):
Working:
1b6318aa-5cf5-44c8-8cce-5825497bc6c3

Not working:
d372f363-9872-48b5-a62c-1a5ec597655b
55a75454-5f2e-4d81-86e1-ae215b38157c

Additional context
If we created the cashbox in a wrong way, please send us the wiki page with a working sample solution.

What is the importance of Redis in the cluster?

In the Kubernetes cluster, there is a Redis pod running. Can you explain the importance of this Redis pod and how critical its usage and does it requires having a Redis cluster for better failover handling? Should we concern about its health?

Internal Server Error at Request "Echo - Cashbox Restart"

I followed the guide at https://github.com/fiskaltrust/product-de-bring-your-own-datacenter to install bring-your-own-datacenter at a GoogleCloudPlatform Kubernetes-Cluster. It seems the installation was successful because if I navigate to http://[AMBASSADOR_ENDPOINT_IP]/api/version I get the expected output:
[
"fiskaltrust.SignatureCloud.DE",
"1.0.0",
"api:v1"
]

Now I used the guide at https://github.com/fiskaltrust/product-de-bring-your-own-datacenter/blob/master/QuickStart.md to set up a cashbox. After doing all the steps I tried doing the "1. Echo - Cashbox Restart" request from the "fiskaltrust DE ByoDC TestCall" postman collection (of course I set the cashbox-id, accesstoken and base_url...). The request runs for around 15 seconds and then crashes with "500 Internal Server Error". What can I do to troubleshoot this?

I already have a few suspicions:

  1. At the logs of the Kubernetes-Cluster I see this:
    "2020/10/28 10:27:52 kubernetes:service|bring-your-own-datacenter||hostname=: ERROR: WORKER PANICKED: unable to parse requirement: invalid label value: "*": at key: "hostname": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')"
    If I view the configuration-settings using this command...
    helm show values fiskaltrust/bring-your-own-datacenter
    ... I see there's a value
    hostname: "*"
    I think this could be the problem. Did you ever try your application at a googleCloudPlatform Kubernetes-Cluster?
    I will try to fix this by specifying an empty string instead of * at the hostname value
    UPDATE (29.10.2020): empty string instead of "*" at the hostname configuration entry helped, I don't see any errors anymore in the cluster and container logs after fixing this

  2. At creating the queue in the sandbox portal the guide reads, I shall click the "http(REST)" button to create an endpoint and after doing this the UI proposes this in the endpoint inputbox:
    rest://localhost:1500/8facd875-5204-4900-82ce-838f01d1613a
    I now replaced localhost:1500 by the IP of my ambassador endpoint before saving so the result I saved was:
    rest://[AMBASSADOR_ENDPOINT_IP]/8facd875-5204-4900-82ce-838f01d1613a
    Is this correct? Or should I have used [AMBASSADOR_ENDPOINT_IP]:1500? Or maybe don't edit the value at all and leave localhost there?

  3. At creating the SCU I have a similar issue as in the previous point. The guide reads I shall click the gRPC button to craete a gRPC endpoint. The inputbox proposed "grpc://localhost:1401". I replaced again localhost by the ambassador endpoint IP and removed the port information :1401 so the result was grpc:// [AMBASSADOR_ENDPOINT_IP]. Is it correct to do it like that?

Please answer my questions that I highlighted in bold. Any other input that will help me to move forward is also appreciated of course :-) Thank you.

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.