shareddata 6.85.9__tar.gz → 6.85.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {shareddata-6.85.9/src/shareddata.egg-info → shareddata-6.85.10}/PKG-INFO +1 -1
- {shareddata-6.85.9 → shareddata-6.85.10}/setup.py +1 -1
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Table.py +10 -2
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableProtocol.py +9 -3
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableRewrite.py +22 -3
- {shareddata-6.85.9 → shareddata-6.85.10/src/shareddata.egg-info}/PKG-INFO +1 -1
- {shareddata-6.85.9 → shareddata-6.85.10}/LICENSE +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/MANIFEST.in +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/README.md +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/pyproject.toml +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/setup.cfg +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/ServerGunicorn.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/ServerWaitress.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/apidocs-dark.css +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/apidocs.yml +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/auth.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/constants.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/download_paths.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/download_slots.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/install/worker.ps1 +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/install/worker.sh +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/listcache.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/cache.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/collections.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/data.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/downloads.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/metadata.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/operations.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/schedules.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/sqlite.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/system.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/tables.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/timeseries.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/web_routes.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/routes/workers.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/API/utils.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Auth/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Auth/bootstrap.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Auth/migrate.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Auth/store.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Auth/workers.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/CacheRedis.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/CollectionMongoDB.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/catalog.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/config.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/errors.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/indexes.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/readers.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/resolve.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/DataAPI/service.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Database.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Defaults.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/AWSEC2.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/AWSS3.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/AutoDocstrings.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/ClientAPI.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/ClientSocket.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/ClientWebSocket.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/LogHandlerAPI.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/LogReader.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/MongoDBClient.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/SaveTables.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/ServerSocket.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/ServerWebSocket.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/StreamsCache.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/StreamsPersist.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/SyncTable.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/TunnelWebSocket.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/IO/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Listing.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/LockWaiters.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Logger.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/MCP/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/MCP/__main__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/MCP/client.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/MCP/server.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Metadata.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/MultiProc.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/OpenFIGI.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Redaction.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/ArchiveOldCollections.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/BatchJob.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/ContainerHealth.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/JobStore.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/RoutineCommand.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/RoutineOrigin.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/Schedule.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/ScheduleMirror.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/ScheduleMonitor.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/ScheduleStore.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/Scheduler.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/UpdateActiveJobs.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/Worker.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/WorkerBootstrap.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/WorkerLib.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/WorkerPool.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Routines/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/SQLite.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/SharedData.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/SharedNumpy.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/StreamKafka.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Symbol.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableDisk.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableIndex.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableIndexJitFunctions.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableIndexJitFunctionsManual.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableIndexJitGenerate.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableIndexJitHash.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableIndexJitLoc.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TableRead.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TimeSeriesDisk.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/TimeseriesContainer.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Users.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Utils.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/ADDING_A_PAGE.md +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/activity_logger.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/app.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/dashAgGridComponentFunctions.js +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/dashAgGridFunctions.js +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/google_logo.png +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/kafka_keys.js +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/logs.css +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/sched.css +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/styles.css +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/auth.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/backends.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/config.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/containers.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/identity.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/kafka_view.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/mongo_view.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/proc.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/redis_view.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/route_health.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/route_registry.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/sched.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/schedule_editor.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/server.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/services.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/shell.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/standalone.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/account.js +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/custom.css +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/favicon.ico +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/favicon.png +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/logo.png +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/logo_96x96.png +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/shareddata-mark.svg +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/shell.css +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/shell.js +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/standalone.css +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/static/standalone.js +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/suggest.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/account.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/base.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/claim.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/claim_done.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/dash.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/index.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/login.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/login_2fa.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/partials/navbar.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/partials/scripts.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/recovery_codes.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/shell.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/templates/standalone.html +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/twofactor.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/utils.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/workerpool.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/__init__.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/build_info.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/fleet.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/preflight.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/private_files.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/release_backup.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/server.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/services.py +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/sharedmutexwin.pyd +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/shareddata.egg-info/SOURCES.txt +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/shareddata.egg-info/dependency_links.txt +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/shareddata.egg-info/entry_points.txt +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/shareddata.egg-info/requires.txt +0 -0
- {shareddata-6.85.9 → shareddata-6.85.10}/src/shareddata.egg-info/top_level.txt +0 -0
|
@@ -1764,7 +1764,8 @@ class Table:
|
|
|
1764
1764
|
|
|
1765
1765
|
with structure(self):
|
|
1766
1766
|
publish_rewrite(self, None, 'defrag', start=0, transform=move_pointers,
|
|
1767
|
-
header_updates={'next_bson_ptr': payload, 'mtime': max(datetime.now().timestamp(), float(self.hdr['mtime']) + 0.001)
|
|
1767
|
+
header_updates={'next_bson_ptr': payload, 'mtime': max(datetime.now().timestamp(), float(self.hdr['mtime']) + 0.001),
|
|
1768
|
+
'isidxcreated': int(self.hdr['isidxcreated'])}, # pointers only: the index stays valid
|
|
1768
1769
|
bson=dict(token=token, stage=stage, sha256=digest.hexdigest(), size=new_size))
|
|
1769
1770
|
stats = {'original_size': original_size, 'new_size': new_size,
|
|
1770
1771
|
'reclaimed': original_size - new_size, 'live_bytes': payload, 'live_rows': int(len(live_idx))}
|
|
@@ -3017,11 +3018,18 @@ class Table:
|
|
|
3017
3018
|
self._set_mode(DIRTY)
|
|
3018
3019
|
# A nested alias may follow a failed publication by this thread;
|
|
3019
3020
|
# only an in-progress structural operation of this thread is STRUCT.
|
|
3021
|
+
self._rewrite_kept_index = False
|
|
3020
3022
|
if self.type == 1 and mode(self.mutex['type']) != STRUCT:
|
|
3021
3023
|
from SharedData.TableRewrite import recover_rewrite
|
|
3022
3024
|
recover_rewrite(self)
|
|
3025
|
+
# A pending defrag descriptor means the dead holder was only in the defrag (one holder at a time, a
|
|
3026
|
+
# crashed upsert would have been repaired before it could start): keys and rows never moved, so the
|
|
3027
|
+
# index it left is valid and the dirty repair must not rebuild it (a rebuild can be refused).
|
|
3028
|
+
kept_index = getattr(self, '_rewrite_kept_index', False)
|
|
3023
3029
|
self._refresh_mapping(dirty=dirty)
|
|
3024
|
-
if
|
|
3030
|
+
if kept_index and self.hasindex:
|
|
3031
|
+
self.index.rememmap() # keep the index, but map its files as they are now (the dirty refresh skips it)
|
|
3032
|
+
if dirty and self.hdr is not None and not kept_index:
|
|
3025
3033
|
self.hdr['isidxcreated'] = 0
|
|
3026
3034
|
if self.hasindex:
|
|
3027
3035
|
self.index.initialize()
|
|
@@ -154,9 +154,15 @@ def structure(table):
|
|
|
154
154
|
try:
|
|
155
155
|
yield
|
|
156
156
|
except BaseException:
|
|
157
|
-
table
|
|
158
|
-
|
|
159
|
-
table
|
|
157
|
+
if getattr(table, '_rewrite_live_untouched', False):
|
|
158
|
+
# A defrag that failed before it replaced any live file: the table is exactly as it was, so it is
|
|
159
|
+
# neither dirty nor does its index need a rebuild (which a legacy table can refuse).
|
|
160
|
+
table._rewrite_live_untouched = False
|
|
161
|
+
table._set_mode(previous)
|
|
162
|
+
else:
|
|
163
|
+
table._set_mode(DIRTY)
|
|
164
|
+
if table.hdr is not None:
|
|
165
|
+
table.hdr['isidxcreated'] = 0
|
|
160
166
|
raise
|
|
161
167
|
else:
|
|
162
168
|
word = int(table.mutex['type'])
|
|
@@ -190,6 +190,8 @@ def _load(table):
|
|
|
190
190
|
raise ValueError('invalid BSON digest')
|
|
191
191
|
elif 'bson' in descriptor:
|
|
192
192
|
raise ValueError('BSON section requires version 2')
|
|
193
|
+
if 'index_valid' in descriptor and descriptor['index_valid'] not in (0, 1):
|
|
194
|
+
raise ValueError('invalid index validity')
|
|
193
195
|
return descriptor
|
|
194
196
|
except Exception as error:
|
|
195
197
|
raise RewriteError('invalid pending record rewrite; files preserved') from error
|
|
@@ -208,10 +210,21 @@ def _finish(table, descriptor, recovery=False):
|
|
|
208
210
|
if 'bson' in descriptor:
|
|
209
211
|
table._reset_bson_mapping() # the BSON file was replaced together with the records
|
|
210
212
|
checkpoint(prefix + 'data_attached')
|
|
211
|
-
|
|
212
|
-
|
|
213
|
+
# A defrag moves BSON pointers only: keys, row positions and so every index file stay valid and mapped.
|
|
214
|
+
# initialize() always resets and rebuilds the index, and the rebuild refuses legacy tables with an
|
|
215
|
+
# empty-key row ("explicit cleanup required"), so a defrag neither invalidates nor rebuilds it.
|
|
216
|
+
keeps_index = descriptor.get('operation') == 'defrag'
|
|
217
|
+
table._rewrite_kept_index = keeps_index # acquire(): a dirty owner that just finished such a recovery must not rebuild
|
|
218
|
+
if not keeps_index:
|
|
219
|
+
table.hdr['isidxcreated'] = 0
|
|
220
|
+
sync_header(table)
|
|
221
|
+
elif descriptor.get('index_valid') is not None and int(table.hdr['isidxcreated']) != descriptor['index_valid']:
|
|
222
|
+
# structure() clears the bit when a failure follows the attach: the index files never changed, so the
|
|
223
|
+
# validity they had before the defrag is restored (descriptors of older releases do not carry it).
|
|
224
|
+
table.hdr['isidxcreated'] = descriptor['index_valid']
|
|
225
|
+
sync_header(table)
|
|
213
226
|
checkpoint(prefix + 'index_invalid_synced')
|
|
214
|
-
if table.hasindex:
|
|
227
|
+
if table.hasindex and not keeps_index:
|
|
215
228
|
table.index.initialize()
|
|
216
229
|
sync_header(table)
|
|
217
230
|
checkpoint(prefix + 'final_header_synced')
|
|
@@ -317,6 +330,9 @@ def publish_rewrite(table, order, operation, *, capacity=None, start=0, sorted_f
|
|
|
317
330
|
raise RewriteError('disk record publication requires writer ownership')
|
|
318
331
|
if pending_path(table).exists():
|
|
319
332
|
raise RewriteError('unresolved record rewrite')
|
|
333
|
+
# Until the first live file is replaced a failing defrag leaves the table untouched (structure() then
|
|
334
|
+
# restores the mode instead of marking it dirty).
|
|
335
|
+
table._rewrite_live_untouched = operation == 'defrag'
|
|
320
336
|
checkpoint('struct_enter')
|
|
321
337
|
table.shf_data.flush()
|
|
322
338
|
sync_header(table)
|
|
@@ -393,6 +409,8 @@ def publish_rewrite(table, order, operation, *, capacity=None, start=0, sorted_f
|
|
|
393
409
|
transaction=token, table=str(table.relpath).replace('\\', '/'),
|
|
394
410
|
operation=operation, start=int(start), stage=stage.name,
|
|
395
411
|
old=old, new=new)
|
|
412
|
+
if operation == 'defrag':
|
|
413
|
+
descriptor['index_valid'] = int(table.hdr['isidxcreated'])
|
|
396
414
|
if bson:
|
|
397
415
|
bson_stage = Path(table.bsonpath).parent / ('bson.bin.stage.' + token)
|
|
398
416
|
if not bson_stage.is_file() or bson_stage.stat().st_size != bson['size']:
|
|
@@ -412,6 +430,7 @@ def publish_rewrite(table, order, operation, *, capacity=None, start=0, sorted_f
|
|
|
412
430
|
checkpoint('prepare_installed')
|
|
413
431
|
fsync_directory(stage.parent)
|
|
414
432
|
checkpoint('prepare_dir_synced')
|
|
433
|
+
table._rewrite_live_untouched = False # from the first replacement on, recovery and DIRTY apply
|
|
415
434
|
if bson:
|
|
416
435
|
os.replace(bson_stage, table.bsonpath)
|
|
417
436
|
checkpoint('bson_replaced')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shareddata-6.85.9 → shareddata-6.85.10}/src/SharedData/Web/assets/dashAgGridComponentFunctions.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|