release notes

Release notes Indicium 2022.2.13

Related products: Indicium Service Tier
Release notes Indicium 2022.2.13

Hello everyone,

In this sprint, Indicium can periodically remove unused application models from memory.
Furthermore, you can now log to AWS CloudWatch, and the internal OpenAPI specification has been improved.

You can read more about Indicium's features in the Indicium user manual.

We will keep you updated regularly about Indicium's progress.

 

About Indicium

For this version, one type of the Thinkwise Indicium Application Tier is available:

 

Contents of this release

 

Indicium - New

 

Periodic removal of unused application models from memory

Indicium
As of this release, Indicium can periodically remove unused application models from memory.

An application model is considered unused when:

  • It has not received any API calls during the specified time.
  • There has been no active system flow during the specified time.
  • It has not been marked as a preloaded application model.

We have added a new configuration option for this feature that you can set in the appsettings.json. Please note that "Applications" is the same configuration section as the "Applications" section mentioned in preloaded application model.

"Applications": {
"RemoveUnusedModelAfterHours": 72
}

The default (and recommended) value of this setting is 72 hours. This may feel like a long time to keep unused application models in memory, but the goal is not to clear the memory as quickly and often as possible. After all, it is a cache that serves an important purpose. The performance-memory trade-off needs to be considered because once an application model is removed from memory and requested again through an API call, it needs to be loaded from the database, which will be a performance hit on that API call.

The main goal of this feature is to ensure that Indicium instances that are rarely restarted, for example, because they are in use 24/7, don't gradually use more and more memory for 'dead' application models that have not been used for weeks.

We recommend to lower this value only if all of the points below are true:

  • Indicium is restarted rarely.
  • Many applications are used for a short time within a short time.
  • Indicium's memory usage is noticeably growing to several gigabytes within the 72-hours.

Logging to AWS CloudWatch

Indicium

When running Indicium on AWS, you can now log to AWS CloudWatch. This AWS functionality makes it easier to monitor the behavior and performance of your Indicium instance. For example, you can show the logs on your AWS dashboard or create an alarm based on a log pattern.

To enable AWS CloudWatch, add the following code to the appsettings.json configuration file, under the "Logging" section:

   "AWSCloudWatch": {
"LogGroup": "indicium-tst"
}

To get access to AWS CloudWatch, your EC2 instance needs to have the following policy attached to it:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "logs:DescribeLogGroups",
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:CreateLogGroup",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:<location>:<account-number>:log-group:indicium-tst:*"
}
]
}

In this code fragment, replace indicium-tst with the name of your log group in appsettings.json and specify your account-number and location.

To add the logs to your AWS CloudWatch Dashboard:

  1. Open the AWS console.
  2. Open the AWS CloudWatch dashboard.
  3. Click Add widget.
  4. Select Logs table.
  5. In Logs Insights, select Log group. This is the name of the log group in appsettings.json.
  6. Add the following query to the log to show, for example, the last 20 items:
fields @timestamp, @message
| sort @timestamp desc
| limit 20
  1. Click Create widget to show your logs on the dashboard.

Indicium - Changes

Indicium OpenAPI specification improved

Indicium In this release, the internal OpenAPI specification has been improved. This API specification can be used by a third-party code generation tool like NSwagStudio or Swagger to call or to display the Indicium API. These third-party tools can then generate higher quality code with improved readability.

Minor fixes and tasks

  • Indicium Filter conditions containing a negation (for example, not equal todoes not start withdoes not contain) were not handled correctly.
    For example, the condition <some_column> not equal to 1 
    would result in false when <some_column> was NULL.
    This has been fixed.