Skip to content

Commit d178d74

Browse files
An option to forbid database truncating on reindexing triggered (#143)
* Option to forbid database truncating on reindexing triggered * Docs
1 parent 65ef228 commit d178d74

File tree

15 files changed

+75
-36
lines changed

15 files changed

+75
-36
lines changed

CHANGELOG.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55
### Added
66

77
* Human-readable `CHANGELOG.md` 🕺
8-
9-
### Changed
10-
11-
* Reindex on schema hash mismatch was disabled until TimescaleDB issues won't be resolved.
8+
* `--forbid-reindexing` option added to `dipdup run` command. When this flag is set DipDup will raise `ReindexingRequiredError` instead of truncating database when reindexing is triggered for any reason.
129

1310
### Fixed
1411

src/demo_hic_et_nunc/hooks/on_rollback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dipdup.context import HookContext
22
from dipdup.datasources.datasource import Datasource
3+
from dipdup.exceptions import ReindexingReason
34

45

56
async def on_rollback(
@@ -9,4 +10,4 @@ async def on_rollback(
910
to_level: int,
1011
) -> None:
1112
await ctx.execute_sql('on_rollback')
12-
await ctx.reindex(reason='reorg message received')
13+
await ctx.reindex(ReindexingReason.ROLLBACK)

src/demo_quipuswap/hooks/on_rollback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dipdup.context import HookContext
22
from dipdup.datasources.datasource import Datasource
3+
from dipdup.exceptions import ReindexingReason
34

45

56
async def on_rollback(
@@ -9,4 +10,4 @@ async def on_rollback(
910
to_level: int,
1011
) -> None:
1112
await ctx.execute_sql('on_rollback')
12-
await ctx.reindex(reason='reorg message received')
13+
await ctx.reindex(ReindexingReason.ROLLBACK)

src/demo_registrydao/hooks/on_rollback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dipdup.context import HookContext
22
from dipdup.datasources.datasource import Datasource
3+
from dipdup.exceptions import ReindexingReason
34

45

56
async def on_rollback(
@@ -9,4 +10,4 @@ async def on_rollback(
910
to_level: int,
1011
) -> None:
1112
await ctx.execute_sql('on_rollback')
12-
await ctx.reindex(reason='reorg message received')
13+
await ctx.reindex(ReindexingReason.ROLLBACK)

src/demo_tezos_domains/hooks/on_rollback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dipdup.context import HookContext
22
from dipdup.datasources.datasource import Datasource
3+
from dipdup.exceptions import ReindexingReason
34

45

56
async def on_rollback(
@@ -9,4 +10,4 @@ async def on_rollback(
910
to_level: int,
1011
) -> None:
1112
await ctx.execute_sql('on_rollback')
12-
await ctx.reindex(reason='reorg message received')
13+
await ctx.reindex(ReindexingReason.ROLLBACK)

src/demo_tezos_domains_big_map/hooks/on_rollback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dipdup.context import HookContext
22
from dipdup.datasources.datasource import Datasource
3+
from dipdup.exceptions import ReindexingReason
34

45

56
async def on_rollback(
@@ -9,4 +10,4 @@ async def on_rollback(
910
to_level: int,
1011
) -> None:
1112
await ctx.execute_sql('on_rollback')
12-
await ctx.reindex(reason='reorg message received')
13+
await ctx.reindex(ReindexingReason.ROLLBACK)

src/demo_tzbtc/hooks/on_rollback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dipdup.context import HookContext
22
from dipdup.datasources.datasource import Datasource
3+
from dipdup.exceptions import ReindexingReason
34

45

56
async def on_rollback(
@@ -9,4 +10,4 @@ async def on_rollback(
910
to_level: int,
1011
) -> None:
1112
await ctx.execute_sql('on_rollback')
12-
await ctx.reindex(reason='reorg message received')
13+
await ctx.reindex(ReindexingReason.ROLLBACK)

src/demo_tzcolors/hooks/on_rollback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dipdup.context import HookContext
22
from dipdup.datasources.datasource import Datasource
3+
from dipdup.exceptions import ReindexingReason
34

45

56
async def on_rollback(
@@ -9,4 +10,4 @@ async def on_rollback(
910
to_level: int,
1011
) -> None:
1112
await ctx.execute_sql('on_rollback')
12-
await ctx.reindex(reason='reorg message received')
13+
await ctx.reindex(ReindexingReason.ROLLBACK)

src/dipdup/cli.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from sentry_sdk.integrations.aiohttp import AioHttpIntegration
1616
from sentry_sdk.integrations.logging import LoggingIntegration
1717

18+
import dipdup.context as context
1819
from dipdup import __spec_version__, __version__, spec_reindex_mapping, spec_version_mapping
1920
from dipdup.codegen import DEFAULT_DOCKER_ENV_FILE, DEFAULT_DOCKER_IMAGE, DEFAULT_DOCKER_TAG, DipDupCodeGenerator
2021
from dipdup.config import DipDupConfig, LoggingConfig, PostgresDatabaseConfig
@@ -135,12 +136,15 @@ async def cli(ctx, config: List[str], env_file: List[str], logging_config: str):
135136
@cli.command(help='Run indexing')
136137
@click.option('--reindex', is_flag=True, help='Drop database and start indexing from scratch')
137138
@click.option('--oneshot', is_flag=True, help='Synchronize indexes wia REST and exit without starting WS connection')
139+
@click.option('--forbid-reindexing', is_flag=True, help='Raise exception instead of truncating database when reindexing is triggered')
138140
@click.pass_context
139141
@cli_wrapper
140-
async def run(ctx, reindex: bool, oneshot: bool) -> None:
142+
async def run(ctx, reindex: bool, oneshot: bool, forbid_reindexing: bool) -> None:
141143
config: DipDupConfig = ctx.obj.config
142144
config.initialize()
143145
set_decimal_context(config.package)
146+
if forbid_reindexing:
147+
context.forbid_reindexing = True
144148
dipdup = DipDup(config)
145149
await dipdup.run(reindex, oneshot)
146150

src/dipdup/codegen.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,8 @@ async def _generate_callback(self, callback_config: CallbackMixin, sql: bool = F
453453
if sql:
454454
code.append(f"await ctx.execute_sql('{callback_config.callback}')")
455455
if callback_config.callback == 'on_rollback':
456-
code.append("await ctx.reindex(reason='reorg message received')")
456+
code.append('await ctx.reindex(ReindexingReason.ROLLBACK)')
457+
imports.add('from dipdup.context import ReindexingReason')
457458
else:
458459
code.append('...')
459460

0 commit comments

Comments
 (0)