Skip to content

RDBC-1039 Implement DatabaseSmuggler and store.smuggler property#279

Open
redknightlois wants to merge 1 commit intoravendb:v7.1from
redknightlois:RDBC-1039
Open

RDBC-1039 Implement DatabaseSmuggler and store.smuggler property#279
redknightlois wants to merge 1 commit intoravendb:v7.1from
redknightlois:RDBC-1039

Conversation

@redknightlois
Copy link
Member

Issue link

https://issues.hibernatingrhinos.com/issue/RDBC-1039

Additional description

RDBC-1039 – Adds DatabaseSmuggler with export() and import_data() methods, accessible via store.smuggler. Export streams the server response directly to a local file without buffering it in memory. Import sends the file as a multipart form upload and waits for the resulting server-side operation to complete. All smuggler options (OperateOnTypes, OperateOnDatabaseRecordTypes, encryption key, compression algorithm, etc.) match the C# reference, including the full default sets for both type enumerations.

Type of change

  • Bug fix
  • Regression bug fix
  • Optimization
  • New feature

How risky is the change?

  • Low
  • Moderate
  • High
  • Not relevant

Backward compatibility

  • Non breaking change
  • Ensured. Please explain how has it been implemented?
  • Breaking change
  • Not relevant

Is it platform specific issue?

  • Yes. Please list the affected platforms.
  • No

Documentation update

  • This change requires a documentation update. Please mark the issue on YouTrack using Documentation Required tag.
  • No documentation update is needed

Testing by Contributor

  • Tests have been added that prove the fix is effective or that the feature works
  • Internal classes added to the test class (e.g. entity or index definition classes) have the lowest possible access modifier (preferable private)
  • It has been verified by manual testing
  • Existing tests verify the correct behavior

Testing by RavenDB QA team

  • This change requires a special QA testing due to possible performance or resources usage implications (CPU, memory, IO). Please mark the issue on YouTrack using QA Required tag.
  • No special testing by RavenDB QA team is needed

Is there any existing behavior change of other features due to this change?

  • Yes. Please list the affected features/subsystems and provide appropriate explanation
  • No

UI work

  • It requires further work in the Studio. Please mark the issue on YouTrack using Studio Required tag.
  • No UI work is needed

- Add DatabaseSmuggler class with export() and import_data() methods
- Add DatabaseSmugglerOptions, DatabaseSmugglerExportOptions, DatabaseSmugglerImportOptions
  with all fields matching the C# reference: IncludeExpired, IncludeArtificial,
  IncludeArchived, RemoveAnalyzers, TransformScript, MaxStepsForTransformScript,
  EncryptionKey, MaxReadOpsPerSecond, SkipCorruptedData, OperateOnDatabaseRecordTypes,
  CompressionAlgorithm (export only), SkipRevisionCreation (import only)
- Add DatabaseRecordItemType and ExportCompressionAlgorithm enums to common.py
- Add _ALL_RECORD_TYPES default set matching C# DefaultOperateOnDatabaseRecordTypes
- Export uses stream=True via send() override (follows StreamCommand pattern) and
  writes the response body to file in process_response(), so execute_command error
  handling (retries, DatabaseDoesNotExistException, topology refresh) is preserved
- Import streams file handle to server instead of buffering it in memory
- Add store.smuggler lazy-cached property
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant