Version 0.6.0 (2024-07-25)¶
Added¶
Cache: the hishel-based cache implementation now shares the blob storage with the rest of the application, to avoid duplicate work and storage.
CLI: it’s now possible to load examples from the command line using the
-e <name>
flag, and also to load examples from an application using-e <app:name>
; extension is now detected automatically.CLI/Rules: the
rules
application now has a command line interface to interact with the rule engine, and allows toharp rules lint
and/orharp rules run
a set of rules using a given test request.DX: when out of development environment, a
start
command stub is available so that the unadvised user does not wonder where it went.Monitoring: monitoring of background worker tasks pressure.
Storage: redis support for blob storage.
Storage: audit log will now react to background worker tasks pressure by disabling storage partially or entirely based on the pressure amount: >10 disables content blob storage, >100 disables header blob storage, > 1000 disables message storage and > 10000 disables all storage for the transaction.
Storage: added a
NullBlobStorage
implementation for testing purposes (or to disable blob storage easily).Rules: prototype of the
rules
application, implementing a rule engine to tune transactions with basically anything.Rules: examples and documentation
Changed¶
Applications: simpler and cleaner interface for defining applications and their configuration.
Core: configuration building and system instanciation was refactored and is now WAY simpler. As a result, the bootstrapping (internal) API has changed and there is no more “kernel factory” or complex “Config” object. Instead, we have a ConfigurationBuilder and a SystemBuilder that will expose a simple and understandable output api.
Logging: reverted the exception formatter to plain_traceback, as it’s the usual default python formatter. It works better with external tools and is more readable because of the reduced verbosity.
Logging: all loggers have now the WARNING default level.
Install(helm): the helm chart now accepts arguments to be passed to the application, and the default values are now set in the
values.yaml
file.Monitoring: normalized, enhanced and complemented prometheus observability.
Rules: removed the need to call set_response in a rule to override the response. Now, you can simply return a response object from the rule and it will be used as the response.
Storage: blob storage is now separated from the main storage, to allow different underlying implementations.
Storage: application
harp_apps.sqlalchemy_storage
was renamed toharp_apps.storage
, to reflect the fact thatsqlalchemy
is an implementation detail, and that it now handles more than just sql or sqlalchemy-based storage.Storage: SQL blob storage now keeps a LRU cache of known blobs to avoid querying the database if the answer can be closer.
Storage: background worker queue for storage is now separated from the storage implementation.
Storage: test fixture
storage
has been renamed tosql_storage
for expliciteness and less linter conflicts.Storage: the default sqlite settings is set to in-memory instead of memory or file depending on where the default comes from.
Storage: removed unused storage “type” where the only valid value in the foreseeable future was “sqlalchemy”.
Fixed¶
CI/CD: issues with connections checks on certain environments
CI/CD: fix issues with container and helm chart that caused broken 0.6.0a6 release
Core: server process now corretly uses current working directory as base for relative paths
Dashboard: fixed a bug where the dashboard would not show python dependencies when the application was installed as a wheel.
DX: default logging level shows harp infos, access logs and server listening infos.
Proxy: some errors happening when the server unexpectedly closes the connection although the client is waiting for data are now caught and logged like other network/system related errors.
Updated¶
bump cryptography from 42.0.8 to 43.0.0
bump furo from 2024.5.6 to 2024.7.18
bump hishel from 0.0.29 to 0.0.30
bump orjson from 3.10.5 to 3.10.6
bump ruff from 0.4.10 to 0.5.2
bump sentry-sdk from 2.7.0 to 2.11.0
bump sphinx from 7.3.7 to 7.4.6
bump structlog from 24.2.0 to 24.4.0
bump testcontainers from 4.6.0 to 4.7.2