Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Fixed
- cli: Fixed
initcrash when package name is equal to one of the project typenames.
6.5.7 - 2022-05-30
Added
- config: Added
advanced.decimal_precisionoption to adjust decimal context precision.
Fixed
- database: Fixed
OperationalErrorraised in some cases after callingbulk_create. - database: Allow running project scripts and queries on SQLite.
- database: Don't cleanup model updates on every loop.
- http: Mark
asyncio.TimeoutErrorexception as safe to retry.
Other
- http: Deserialize JSON responses with
orjson.
6.5.6 - 2022-05-02
Fixed
- config: Fixed crash due to incorrect parsing of
eventindex definitions. - http: Fixed waiting for response indefinitely when IPFS hash is not available.
Other
- ci: Slim Docker image updated to Alpine 3.17.
- metadata: Added
nairobinetto supported networks.
6.5.5 - 2022-04-17
Fixed
- config: Enable early realtime mode when config contains bigmap indexes with
skip_history. - http: Fixed crash when using custom datasources.
- index: Allow mixing
sourceandentrypointfilters inoperationindex pattern.
Other
- ci: Default git branch switched to
next.
6.5.4 - 2022-03-31
Fixed
- config: Fixed incorrest parsing of
token_transferindex filters.
Other
- deps: Updated pytezos to 3.9.0.
6.5.3 - 2022-03-28
Fixed
- cli: Don't enforce logging
DeprecationWarningwarnings. - cli: Fixed
BrokenPipeErrormessages when interrupting with DipDup with SIGINT. - config: Fixed crash when
token_transferindex hasfromortofilter.
Security
- hasura: Forbid using Hasura instances affected by GHSA-c9rw-rw2f-mj4x.
6.5.2 - 2023-03-09
Fixed
- codegen: Fixed type generation for contracts with "default" entrypoint.
- metadata: Add "mumbainet" to available networks.
- sentry: Fixed bug leading to crash reports not being sent in some cases.
- sentry: Fixed crash report grouping.
Deprecated
- ci:
-slimimages will be based on Ubuntu instead of Alpine in the next major release.
6.5.1 - 2023-02-21
Fixed
- codegen: Fixed bug leading to incorrect imports in generated callbacks in some cases.
- codegen: Fixed validation of created package after
dipdup init. - config: Allow using empty string as default env (
{DEFAULT_EMPTY:-}).
Other
- deps: Updated pydantic to 1.10.5
- deps: Updated datamodel-code-generator to 0.17.1
- deps: Updated tortoise-orm to 0.19.3
- deps: Updated pytezos to 3.8.0
6.5.0 - 2023-01-28
Added
- hasura: Apply arbitrary metadata from
hasuraproject directory. - config: Added
allow_inconsistent_metadataoption tohasurasection.
Fixed
- config: Do not include coinbase datasource credentials in config repr.
- database: Fixed crash when schema generation should fail with
schema_modified. - hasura: Stop using deprecated schema/metadata API.
- index: Fixed unnecessary prefetching of migration originations in
operationindex. - index: Remove disabled indexes from the dispatcher queue.
- sentry: Flush and reopen session daily.
- tzkt: Fixed
OperationData.typefield value for migration originations. - tzkt: Added missing
last_levelargument to migration origination fetching methods.
Other
- tzkt: Updated current testnet protocol (
limanet). - deps: Updated asyncpg to 0.27.0
- deps: Updated hasura to 2.17.0
6.4.3 - 2023-01-05
Fixed
- context: Fixed order of
add_contractmethod arguments. - index: Fixed matching operations when both
addressandcode_hashfilters are specified. - sentry: Fixed sending crash reports when DSN is not set implicitly.
- sentry: Increase event length limit.
6.4.2 - 2022-12-31
Added
- config: Added
http.ratelimit_sleepoption to set fixed sleep time on 429 responses. - context: Allow adding contracts by code hash in runtime.
Fixed
- http: Fixed merging user-defined HTTP settings and datasource defaults.
- tzkt: Fixed iterating over big map keys.
6.4.1 - 2022-12-22
Fixed
- models: Fixed package model detection.
6.4.0 - 2022-12-20
Fixed
- cli:
updateanduninstallcommands no longer require a valid config. - cli: Fixed a regression in
newcommand leading to crash withTypeError. - config: Fixed
jobssection deserialization. - database: Ignore abstract models during module validation.
6.4.0rc1 - 2022-12-09
Added
- config: Added optional
code_hashfield to contract config. - context: Added
first_levelandlast_levelarguments toctx.add_indexmethods. - index: Filtering by
code_hashis available foroperationindex. - tzkt: Added datasource methods
get_contract_addressandget_contract_hashes. - tzkt: Originations and operations now can be fetched by contract code hashes.
- tzkt: Added
sender_code_hashandtarget_code_hashfields toOperationDatamodel.
Fixed
- codegen: Unresolved index templates are now correctly processed during types generation.
- demos: Fixed outdated
demo_daoproject. - http: Fixed a crash when datasource URL contains trailing slash.
- metadata: Add
limanetto supported networks. - projects: Do not scaffold an outdated
poetry.lock.
Changed
- demos: Demos were renamed to better indicate their purpose.
- exceptions:
FrameworkExceptionis raised instead of plainRuntimeErrorwhen a framework error occurs. - exceptions: Known exceptions are inherited from
FrameworkError. - tzkt: Some datasource methods have changed their signatures.
Deprecated
- config:
similar_to.addressfilter is an alias fororiginated_contract.code_hashand will be removed in the next major release. - config:
DipDupErroris an alias forFrameworkErrorand will be removed in the next major release.
6.3.1 - 2022-11-25
Fixed
- cli: Do not apply cli hacks on module import.
- codegen: Include PEP 561 marker in generated packages.
- codegen: Untyped originations are now correctly handled.
- codegen: Fixed
aliasconfig field having no effect on originations. - codegen: Fixed optional arguments in generated callbacks.
- config: Suggest snake_case for package name.
- config: Fixed crash with
RuntimeErrorwhen index has no subscriptions. - http: Limit aiohttp sessions to specific base URL.
- index: Do not deserialize originations matched by the
sourcefilter. - index: Wrap storage deserialization exceptions with
InvalidDataError. - projects: Fixed Hasura environment in docker-compose examples.
Security
- hasura: Forbid using Hasura instances running vulnerable versions (GHSA-g7mj-g7f4-hgrg)
Other
- ci:
mypy --strictis now enforced on a codebase. - ci: Finished migration to
pytest.
6.3.0 - 2022-11-15
Added
- context: Added
execute_sql_querymethod to run queries fromsqlproject directory. - context:
execute_sqlmethod now accepts arbitrary arguments to format SQL script (unsafe, use with caution). - index: New filters for
token_transferindex.
Fixed
- cli: Fixed missing log messages from
ctx.logger. - codegen: Better PEP 8 compatibility of generated callbacks.
- context: Fixed SQL scripts executed in the wrong order.
- context: Fixed
execute_sqlmethod crashes when the path is not a directory. - database: Fixed crash with
CannotConnectNowErrorbefore establishing the database connection. - database: Fixed crash when using F expressions inside versioned transactions.
- http: Fixed caching datasource responses when
replay_pathcontains tilde. - http: Adjusted per-datasource default config values.
- project: Use the latest stable version instead of hardcoded values.
- tzkt: Fixed deserializing of
EventDataandOperationDatamodels. - tzkt: Fixed matching migration originations by address.
Deprecated
- ci:
pytezosextra and corresponding Docker image are deprecated.
6.2.0 - 2022-10-12
Added
- cli:
newcommand to create a new project interactively. - cli:
install/update/uninstallcommands to manage local DipDup installation. - index: New index kind
eventto process contract events. - install: New interactive installer based on pipx (
install.pyordipdup-install).
Fixed
- cli: Fixed commands that don't require a valid config yet crash with
ConfigurationError. - codegen: Fail on demand when
datamodel-codegenis not available. - codegen: Fixed Jinja2 template caching.
- config: Allow
sentry.dsnfield to be empty. - config: Fixed greedy environment variable regex.
- hooks: Raise a
FeatureAvailabilityHookinstead of a warning when trying to execute hooks on SQLite.
Improved
- cli: Detect
src/layout when guessing package path. - codegen: Improved cross-platform compatibility.
- config:
sentry.user_idoption to set user ID for Sentry (affects release adoption data). - sentry: Detect environment when not set in config (docker/gha/tests/local)
- sentry: Expose more tags under the
dipdupnamespace.
Performance
- cli: Up to 5x faster startup for some commands.
Security
- sentry: Prevent Sentry from leaking hostname if
server_nameis not set. - sentry: Notify about using Sentry when DSN is set or crash reporting is enabled.
Other
- ci: A significantly faster execution of GitHub Actions.
- docs: Updated "Contributing Guide" page.
6.1.3 - 2022-09-21
Added
- sentry: Enable crash-free session reporting.
Fixed
- metadata: Updated protocol aliases.
- sentry: Unwrap
CallbackErrortraceback to fix event grouping. - sentry: Hide "attempting to send..." message on shutdown.
Other
- ci: Do not build default and
-pytezosnightly images.
6.1.2 - 2022-09-16
Added
- config: Added
aliasfield to operation pattern items. - tzkt: Added quote field
gbp.
Fixed
- config: Require aliases for multiple operations with the same entrypoint.
- http: Raise
InvalidRequestErroron 204 No Content responses. - tzkt: Verify API version on datasource initialization.
- tzkt: Remove deprecated block field
priority.
6.1.1 - 2022-09-01
Fixed
- ci: Lock Pydantic to 1.9.2 to avoid breaking changes in dataclasses.
6.1.0 - 2022-08-30
Added
- ci: Build
arm64images for M1/M2 silicon. - ci: Build
-slimimages based on Alpine Linux. - ci: Introduced official MacOS support.
- ci: Introduced interactive installer (dipdup.io/install.py).
6.0.1 - 2022-08-19
Fixed
- codegen: Fixed invalid
models.pytemplate. - context: Do not wrap known exceptions with
CallbackError. - database: Raise
DatabaseConfigurationErrorwhen backward relation name equals table name. - database: Wrap schema wiping in a transaction to avoid orphaned tables in the immune schema.
- hasura: Fixed processing M2M relations.
- sentry: Fixed "invalid value
environment" error. - sentry: Ignore events from project callbacks when
crash_reportingis enabled.
6.0.0 - 2022-08-08
This release contains no changes except for the version number.
6.0.0rc2 - 2022-08-06
Added
- config: Added
advanced.crash_reportingflag to enable reporting crashes to Baking Bad. - dipdup: Save Sentry crashdump in
/tmp/dipdup/crashdumps/XXXXXXX.jsonon a crash.
Fixed
- config: Do not perform env variable substitution in commented-out lines.
Removed
- cli:
--logging-configoption is removed. - cli: All
runcommand flags are removed. Use theadvancedsection of the config. - cli:
cache showandcache clearcommands are removed. - config:
http.cacheflag is removed.
6.0.0-rc1 - 2022-07-26
Added
- cli: Added
config export --fullflag to resolve templates before printing config. - config: Added
advanced.rollback_depthfield, a number of levels to keep in a database for rollback. - context: Added
rollbackmethod to perform database rollback. - database: Added an internal
ModelUpdatemodel to store the latest database changes.
Fixed
- prometheus: Fixed updating
dipdup_index_handlers_matched_totalmetric.
Changed
- codegen:
on_index_rollbackhook callsctx.rollbackby default. - database: Project models must be subclassed from
dipdup.models.Model - database:
bulk_createandbulk_updatemodel methods are no longer supported.
Removed
- hooks: Removed deprecated
on_rollbackhook. - index: Do not try to avoid single-level rollbacks by comparing operation hashes.
5.2.5 - 2022-07-26
Fixed
- index: Fixed crash when adding an index with new subscriptions in runtime.
5.2.4 - 2022-07-17
Fixed
- cli: Fixed logs being printed to stderr instead of stdout.
- config: Fixed job scheduler not starting when config contains no indexes.
5.2.3 - 2022-07-07
Added
- sentry: Allow customizing
server_nameandreleasetags with corresponding fields in Sentry config.
Fixed
- cli: Fixed
hasura configurecommand crash when models have emptyMeta.table. - config: Removed secrets from config
__repr__.
5.2.2 - 2022-07-03
Fixed
- hasura: Fixed metadata generation.
5.2.1 - 2022-07-02
Fixed
- cli: Fixed setting default logging level.
- hasura: Fixed metadata generation for relations with a custom field name.
- hasura: Fixed configuring existing instances after changing
camel_casefield in config.
5.2.0 - 2022-06-28
Added
- config: Added
loggingconfig field. - config: Added
hasura.create_sourceflag to create PostgreSQL source if missing.
Fixed
- hasura: Do not apply table customizations to tables from other sources.
Deprecated
- cli:
--logging-configoption is deprecated. - cli: All
runcommand flags are deprecated. Use theadvancedsection of the config. - cli:
cache showandcache clearcommands are deprecated. - config:
http.cacheflag is deprecated.
5.1.7 - 2022-06-15
Fixed
- index: Fixed
token_transferindex not receiving realtime updates.
5.1.6 - 2022-06-08
Fixed
- cli: Commands with
--helpoption no longer require a working DipDup config. - index: Fixed crash with
RuntimeErrorafter continuous realtime connection loss.
Performance
- cli: Lazy import dependencies to speed up startup.
Other
- docs: Migrate docs from GitBook to mdbook.
5.1.5 - 2022-06-05
Fixed
- config: Fixed crash when rollback hook is about to be called.
5.1.4 - 2022-06-02
Fixed
- config: Fixed
OperationIndexConfig.typesfield being partially ignored. - index: Allow mixing oneshot and regular indexes in a single config.
- index: Call rollback hook instead of triggering reindex when single-level rollback has failed.
- index: Fixed crash with
RuntimeErrorafter continuous realtime connection loss. - tzkt: Fixed
originationsubscription missing whenmerge_subscriptionsflag is set.
Performance
- ci: Decrease the size of generic and
-pytezosDocker images by 11% and 16%, respectively.
5.1.3 - 2022-05-26
Fixed
- database: Fixed special characters in password not being URL encoded.
Performance
- context: Do not reinitialize config when adding a single index.
5.1.2 - 2022-05-24
Added
- tzkt: Added
originated_contract_tzipsfield toOperationData.
Fixed
- jobs: Fixed jobs with
daemonschedule never start. - jobs: Fixed failed jobs not throwing exceptions into the main loop.
Other
- database: Tortoise ORM updated to
0.19.1.
5.1.1 - 2022-05-13
Fixed
- index: Ignore indexes with different message types on rollback.
- metadata: Add
ithacanetto available networks.
5.1.0 - 2022-05-12
Added
- ci: Push
XandX.Ytags to the Docker Hub on release. - cli: Added
config envcommand to export env-file with default values. - cli: Show warning when running an outdated version of DipDup.
- hooks: Added a new hook
on_index_rollbackto perform per-index rollbacks.
Fixed
- index: Fixed fetching
migrationoperations. - tzkt: Fixed possible data corruption when using the
buffer_sizeoption. - tzkt: Fixed reconnection due to
websocketsmessage size limit.
Deprecated
- hooks: The
on_rollbackdefault hook is superseded byon_index_rollbackand will be removed later.
5.0.4 - 2022-05-05
Fixed
- exceptions: Fixed incorrect formatting and broken links in help messages.
- index: Fixed crash when the only index in config is
head. - index: Fixed fetching originations during the initial sync.
5.0.3 - 2022-05-04
Fixed
- index: Fixed crash when no block with the same level arrived after a single-level rollback.
- index: Fixed setting initial index level when
IndexConfig.first_levelis set. - tzkt: Fixed delayed emitting of buffered realtime messages.
- tzkt: Fixed inconsistent behavior of
first_level/last_levelarguments in different getter methods.
5.0.2 - 2022-04-21
Fixed
- context: Fixed reporting incorrect reindexing reason.
- exceptions: Fixed crash with
FrozenInstanceErrorwhen an exception is raised from a callback. - jobs: Fixed graceful shutdown of daemon jobs.
Improved
- codegen: Refined
on_rollbackhook template. - exceptions: Updated help messages for known exceptions.
- tzkt: Do not request reindexing if missing subgroups have matched no handlers.
5.0.1 - 2022-04-12
Fixed
- cli: Fixed
schema initcommand crash with SQLite databases. - index: Fixed spawning datasources in oneshot mode.
- tzkt: Fixed processing realtime messages.
5.0.0 - 2022-04-08
This release contains no changes except for the version number.
5.0.0-rc4 - 2022-04-04
Added
- tzkt: Added ability to process realtime messages with lag.
4.2.7 - 2022-04-02
Fixed
- config: Fixed
jobsconfig section validation. - hasura: Fixed metadata generation for v2.3.0 and above.
- tzkt: Fixed
get_originated_contractsandget_similar_contractsmethods response.
5.0.0-rc3 - 2022-03-28
Added
- config: Added
customsection to store arbitrary user data.
Fixed
- config: Fixed default SQLite path (
:memory:). - tzkt: Fixed pagination in several getter methods.
- tzkt: Fixed data loss when
skip_historyoption is enabled.
Removed
- config: Removed dummy
advanced.oneshotflag. - cli: Removed
docker initcommand. - cli: Removed dummy
schema approve --hashesflag.
5.0.0-rc2 - 2022-03-13
Fixed
- tzkt: Fixed crash in methods that do not support cursor pagination.
- prometheus: Fixed invalid metric labels.
5.0.0-rc1 - 2022-03-02
Added
- metadata: Added
metadata_interfacefeature flag to expose metadata in TzKT format. - prometheus: Added ability to expose Prometheus metrics.
- tzkt: Added missing fields to the
HeadBlockDatamodel. - tzkt: Added
iter_...methods to iterate over item batches.
Fixed
- tzkt: Fixed possible OOM while calling methods that support pagination.
- tzkt: Fixed possible data loss in
get_originationsandget_quotesmethods.
Changed
- tzkt: Added
offsetandlimitarguments to all methods that support pagination.
Removed
- bcd: Removed
bcddatasource and config section.
Performance
- dipdup: Use fast
orjsonlibrary instead of built-injsonwhere possible.
4.2.6 - 2022-02-25
Fixed
- database: Fixed generating table names from uppercase model names.
- http: Fixed bug that leads to caching invalid responses on the disk.
- tzkt: Fixed processing realtime messages with data from multiple levels.
4.2.5 - 2022-02-21
Fixed
- database: Do not add the
schemaargument to the PostgreSQL connection string when not needed. - hasura: Wait for Hasura to be configured before starting indexing.
4.2.4 - 2022-02-14
Added
- config: Added
httpdatasource to making arbitrary http requests.
Fixed
- context: Fixed crash when calling
fire_hookmethod. - context: Fixed
HookConfig.atomicflag, which was ignored infire_hookmethod. - database: Create missing tables even if
Schemamodel is present. - database: Fixed excess increasing of
decimalcontext precision. - index: Fixed loading handler callbacks from nested packages (@veqtor).
Other
- ci: Added GitHub Action to build and publish Docker images for each PR opened.
4.2.3 - 2022-02-08
Fixed
- ci: Removed
black 21.12b0dependency since bug indatamodel-codegen-generatoris fixed. - cli: Fixed
config exportcommand crash whenadvanced.reindexdictionary is present. - cli: Removed optionals from
config exportoutput so the result can be loaded again. - config: Verify
advanced.schedulerconfig for the correctness and unsupported features. - context: Fixed ignored
waitargument offire_hookmethod. - hasura: Fixed processing relation fields with missing
related_name. - jobs: Fixed default
apschedulerconfig. - tzkt: Fixed crash occurring when reorg message is the first one received by the datasource.
4.2.2 - 2022-02-01
Fixed
- config: Fixed
ipfsdatasource config.
4.2.1 - 2022-01-31
Fixed
- ci: Added
black 21.12b0dependency to avoid possible conflict withdatamodel-codegen-generator.
4.2.0 - 2022-01-31
Added
- context: Added
waitargument tofire_hookmethod to escape current transaction context. - context: Added
ctx.get_<kind>_datasourcehelpers to avoid type casting. - hooks: Added ability to configure
apschedulerwithAdvancedConfig.schedulerfield. - http: Added
requestmethod to send arbitrary requests (affects all datasources). - ipfs: Added
ipfsdatasource to download JSON and binary data from IPFS.
Fixed
- http: Removed dangerous method
close_session. - context: Fixed help message of
IndexAlreadyExistsErrorexception.
Deprecated
- bcd: Added deprecation notice.
Other
- dipdup: Removed unused internal methods.
4.1.2 - 2022-01-27
Added
- cli: Added
schema wipe --forceargument to skip confirmation prompt.
Fixed
- cli: Show warning about deprecated
--hashesargument - cli: Ignore
SIGINTsignal when shutdown is in progress. - sentry: Ignore exceptions when shutdown is in progress.
4.1.1 - 2022-01-25
Fixed
- cli: Fixed stacktraces missing on exception.
- cli: Fixed wrapping
OSErrorwithConfigurationErrorduring config loading. - hasura: Fixed printing help messages on
HasuraError. - hasura: Preserve a list of sources in Hasura Cloud environments.
- hasura: Fixed
HasuraConfig.sourceconfig option.
Changed
- cli: Unknown exceptions are no longer wrapped with
DipDupError.
Performance
- hasura: Removed some useless requests.
4.1.0 - 2022-01-24
Added
- cli: Added
schema initcommand to initialize database schema. - cli: Added
--forceflag tohasura configurecommand. - codegen: Added support for subpackages inside callback directories.
- hasura: Added
dipdup_head_statusview and REST endpoint. - index: Added an ability to skip historical data while synchronizing
big_mapindexes. - metadata: Added
metadatadatasource. - tzkt: Added
get_big_mapandget_contract_big_mapsdatasource methods.
4.0.5 - 2022-01-20
Fixed
- index: Fixed deserializing manually modified typeclasses.
4.0.4 - 2022-01-17
Added
- cli: Added
--keep-schemasflag toinitcommand to preserve JSONSchemas along with generated types.
Fixed
- demos: Tezos Domains and Homebase DAO demos were updated from edo2net to mainnet contracts.
- hasura: Fixed missing relations for models with
ManyToManyFieldfields. - tzkt: Fixed parsing storage with nested structures.
Performance
- dipdup: Minor overall performance improvements.
Other
- ci: Cache virtual environment in GitHub Actions.
- ci: Detect CI environment and skip tests that fail in GitHub Actions.
- ci: Execute tests in parallel with
pytest-xdistwhen possible. - ci: More strict linting rules of
flake8.
4.0.3 - 2022-01-09
Fixed
- tzkt: Fixed parsing parameter with an optional value.
4.0.2 - 2022-01-06
Added
- tzkt: Added optional
delegate_addressanddelegate_aliasfields toOperationData.
Fixed
- tzkt: Fixed crash due to unprocessed pysignalr exception.
- tzkt: Fixed parsing
OperationData.amountfield. - tzkt: Fixed parsing storage with top-level boolean fields.
4.0.1 - 2021-12-30
Fixed
- codegen: Fixed generating storage typeclasses with
Unionfields. - codegen: Fixed preprocessing contract JSONSchema.
- index: Fixed processing reindexing reason saved in the database.
- tzkt: Fixed processing operations with default entrypoint and empty parameter.
- tzkt: Fixed crash while recursively applying bigmap diffs to the storage.
Performance
- tzkt: Increased speed of applying bigmap diffs to operation storage.
4.0.0 - 2021-12-24
This release contains no changes except for the version number.
4.0.0-rc3 - 2021-12-20
Fixed
- cli: Fixed missing
schema approve --hashesargument. - codegen: Fixed contract address used instead of an alias when typename is not set.
- tzkt: Fixed processing operations with entrypoint
default. - tzkt: Fixed regression in processing migration originations.
- tzkt: Fixed filtering of big map diffs by the path.
Removed
- cli: Removed deprecated
run --oneshotargument andclear-cachecommand.
4.0.0-rc2 - 2021-12-11
Migration
- Run
dipdup initcommand to generateon_synchronizedhook stubs.
Added
- hooks: Added
on_synchronizedhook, which fires each time all indexes reach realtime state.
Fixed
- cli: Fixed config not being verified when invoking some commands.
- codegen: Fixed generating callback arguments for untyped operations.
- index: Fixed incorrect log messages, remove duplicate ones.
- index: Fixed crash while processing storage of some contracts.
- index: Fixed matching of untyped operations filtered by
sourcefield (@pravin-d).
Performance
- index: Checks performed on each iteration of the main DipDup loop are slightly faster now.
4.0.0-rc1 - 2021-12-02
Migration
- Run
dipdup schema approvecommand on every database you want to use with 4.0.0-rc1. Runningdipdup migrateis not necessary sincespec_versionhasn't changed in this release.
Added
- cli: Added
run --early-realtimeflag to establish a realtime connection before all indexes are synchronized. - cli: Added
run --merge-subscriptionsflag to subscribe to all operations/big map diffs during realtime indexing. - cli: Added
statuscommand to print the current status of indexes from the database. - cli: Added
config export [--unsafe]command to print config after resolving all links and variables. - cli: Added
cache showcommand to get information about file caches used by DipDup. - config: Added
first_levelandlast_leveloptional fields toTemplateIndexConfig. These limits are applied after ones from the template itself. - config: Added
daemonboolean field toJobConfigto run a single callback indefinitely. Conflicts withcrontabandintervalfields. - config: Added
advancedtop-level section.
Fixed
- cli: Fixed crashes and output inconsistency when piping DipDup commands.
- cli: Fixed
schema wipe --immuneflag being ignored. - codegen: Fixed missing imports in handlers generated during init.
- coinbase: Fixed possible data inconsistency caused by caching enabled for method
get_candles. - http: Fixed increasing sleep time between failed request attempts.
- index: Fixed invocation of head index callback.
- index: Fixed
CallbackErrorraised instead ofReindexingRequiredErrorin some cases. - tzkt: Fixed resubscribing when realtime connectivity is lost for a long time.
- tzkt: Fixed sending useless subscription requests when adding indexes in runtime.
- tzkt: Fixed
get_originated_contractsandget_similar_contractsmethods whose output was limited toHTTPConfig.batch_sizefield. - tzkt: Fixed lots of SignalR bugs by replacing
aiosignalrcorelibrary withpysignalr.
Changed
- cli:
dipdup schema wipecommand now requires confirmation when invoked in the interactive shell. - cli:
dipdup schema approvecommand now also causes a recalculation of schema and index config hashes. - index: DipDup will recalculate respective hashes if reindexing is triggered with
config_modified: ignoreorschema_modified: ignorein advanced config.
Deprecated
- cli:
run --oneshotoption is deprecated and will be removed in the next major release. The oneshot mode applies automatically whenlast_levelfield is set in the index config. - cli:
clear-cachecommand is deprecated and will be removed in the next major release. Usecache clearcommand instead.
Performance
- config: Configuration files are loaded 10x times faster.
- index: Number of operations processed by matcher reduced by 40%-95% depending on the number of addresses and entrypoints used.
- tzkt: Rate limit was increased. Try to set
connection_timeoutto a higher value if requests fail withConnectionTimeoutexception. - tzkt: Improved performance of response deserialization.
3.1.3 - 2021-11-15
Fixed
- codegen: Fixed missing imports in operation handlers.
- codegen: Fixed invalid imports and arguments in big_map handlers.
3.1.2 - 2021-11-02
Fixed
- Fixed crash occurred during synchronization of big map indexes.
3.1.1 - 2021-10-18
Fixed
- Fixed loss of realtime subscriptions occurred after TzKT API outage.
- Fixed updating schema hash in
schema approvecommand. - Fixed possible crash occurred while Hasura is not ready.
3.1.0 - 2021-10-12
Added
- New index class
HeadIndex(configuration:dipdup.config.HeadIndexConfig). Use this index type to handle head (limited block header content) updates. This index type is realtime-only: historical data won't be indexed during the synchronization stage. - Added three new commands:
schema approve,schema wipe, andschema export. Rundipdup schema --helpcommand for details.
Changed
- Triggering reindexing won't lead to dropping the database automatically anymore.
ReindexingRequiredErroris raised instead.--forbid-reindexingoption has become default. --reindexoption is removed. Usedipdup schema wipeinstead.- Values of
dipdup_schema.reindexfield updated to simplify querying database. Seedipdup.enums.ReindexingReasonclass for possible values.
Fixed
- Fixed
ReindexRequiredErrornot being raised when running DipDup after reindexing was triggered. - Fixed index config hash calculation. Hashes of existing indexes in a database will be updated during the first run.
- Fixed issue in
BigMapIndexcausing the partial loss of big map diffs. - Fixed printing help for CLI commands.
- Fixed merging storage which contains specific nested structures.
Improved
- Raise
DatabaseConfigurationErrorexception when project models are not compatible with GraphQL. - Another bunch of performance optimizations. Reduced DB pressure, speeded up parallel processing lots of indexes.
- Added initial set of performance benchmarks (run:
./scripts/run_benchmarks.sh)
3.0.4 - 2021-10-04
Improved
- A significant increase in indexing speed.
Fixed
- Fixed unexpected reindexing caused by the bug in processing zero- and single-level rollbacks.
- Removed unnecessary file IO calls that could cause
PermissionErrorexception in Docker environments. - Fixed possible violation of block-level atomicity during realtime indexing.
Changes
- Public methods of
TzktDatasourcenow return immutable sequences.
3.0.3 - 2021-10-01
Fixed
- Fixed processing of single-level rollbacks emitted before rolled back head.
3.0.2 - 2021-09-30
Added
- Human-readable
CHANGELOG.md🕺 - Two new options added to
dipdup runcommand:--forbid-reindexing– raiseReindexingRequiredErrorinstead of truncating database when reindexing is triggered for any reason. To continue indexing with existing database runUPDATE dipdup_schema SET reindex = NULL;--postpone-jobs– job scheduler won't start until all indexes are synchronized.
Changed
- Migration to this version requires reindexing.
dipdup_index.head_idforeign key removed.dipdup_headtable still contains the latest blocks from Websocket received by each datasource.
Fixed
- Removed unnecessary calls to TzKT API.
- Fixed removal of PostgreSQL extensions (
timescaledb,pgcrypto) by functiontruncate_databasetriggered on reindex. - Fixed creation of missing project package on
init. - Fixed invalid handler callbacks generated on
init. - Fixed detection of existing types in the project.
- Fixed race condition caused by event emitter concurrency.
- Capture unknown exceptions with Sentry before wrapping to
DipDupError. - Fixed job scheduler start delay.
- Fixed processing of reorg messages.
3.0.1 - 2021-09-24
Added
- Added
get_quoteandget_quotesmethods toTzKTDatasource.
Fixed
- Defer spawning index datasources until initial sync is complete. It helps to mitigate some WebSocket-related crashes, but initial sync is a bit slower now.
- Fixed possible race conditions in
TzKTDatasource. - Start
jobsscheduler after all indexes sync with a current head to speed up indexing.