diff --git a/README.md b/README.md index 51f3dd4..434cd92 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ AssetLoaderArgs = "./assets/AssetSets.xml" [TSAssetService] ; Data plugin used by TSAssetConnector StorageProvider = "OpenSim.Data.MySQL.dll" -ConnectionString = "Data Source=127.0.0.1;Database=robust;User ID=opensim;Password=opensim123;Old Guids=true;SslMode=None;" +ConnectionString = "Data Source=127.0.0.1;Database=robust;User ID=opensim;Password=opensim123;Old Guids=true;SslMode=None;TSAdminBatchSize=2000;TSAdminCommandTimeoutSeconds=600;" ; Optional: explicit type list (sbyte range supports negatives) ; TSAssetType = "-2,-1,0,1,2,3,5,6,7,8,10,13,20,21,22,24,49,56,57" @@ -97,6 +97,7 @@ Notes: - `TSAssetConnector` is loaded from `OpenSim.Services.AssetService.dll`. - No separate `TSAssetService` assembly is required in `prebuild.xml`. - Keep `EnableFallbackAutoDelete = false` until migration behavior is validated on your server. +- Recommended operational defaults for admin commands: `TSAdminBatchSize=2000`, `TSAdminCommandTimeoutSeconds=600`. ## Recommended activation strategy (safe rollout) @@ -173,3 +174,186 @@ LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService" This disables TS routing immediately without removing TS code. +## Server console help (`help`) + +TSAsset commands are registered under the `tsasset` command category. + +```text +help tsasset +``` + +Shows all available TSAsset commands with syntax (`tsmove`, `tsshowmove`, `tsfind`, `tsverify`, `tsreindex`, `tscleanlegacy`). + +Also useful: + +```text +help +``` + +Lists all command categories in the current server process. + +## Quickstart (60 seconds) + +Minimal first validation directly in the `R.O.B.U.S.T.` console: + +```text +help tsasset +tsverify assets +tsshowmove assets 7 +tsmove assets 7 --force --batch=2000 --timeout=600 +tsverify 7 +tsverify assets +``` + +Interpretation: + +- `tsverify 7`: after a successful move, it should show `missing-index=0`, `wrong-index-type=0`, `orphan-index=0`. +- `tsverify assets`: `legacy-with-index` should not increase (ideally it decreases). +- To resume an interrupted move, run normally without `--reset`; use `--reset` only to intentionally restart. + +### Quickstart (read-only) + +Safe read-only check flow (no data changes): + +```text +help tsasset +tsverify all +tsshowmove assets 7 +tsfind 01234567-89ab-cdef-0123-456789abcdef +tsverify assets +``` + +## TSAsset server command: `tsmove` + +`TSAssetConnector` provides the `tsmove` server command to move TS asset rows between legacy and typed tables. + +Syntax: + +```text +tsmove --force +``` + +Optional flags: + +```text +--reset ; clears the current move checkpoint and starts from the beginning +--batch= ; overrides batch size (e.g. --batch=2000) +--timeout= ; overrides SQL command timeout per batch (e.g. --timeout=600) +``` + +Valid values for `` / ``: + +- `assets` (legacy table) +- `` (e.g. `7` => `assets_7`) +- `assets_` (e.g. `assets_7`) + +Beispiele: + +```text +tsmove assets 7 --force +tsmove 7 assets --force +tsmove assets_7 assets --force +tsmove assets 7 --force --reset +tsmove assets 7 --force --batch=2000 --timeout=600 +``` + +Behavior: + +- `tsmove` requires explicit `--force` (or `-f`) to prevent accidental bulk moves. +- `tsmove` is resumable via a persistent checkpoint (`tsassets_move_checkpoint`). +- `--reset` discards the existing checkpoint for that move route. +- `tsmove assets 7` only moves rows with `assetType = 7` from `assets`. +- Rows already present in the destination are also removed from the source. +- After a successful move, `tsassets_index` is updated accordingly (removed when destination is `assets`, set when destination is `assets_`). + +Tuning (ConnectionString in the `TSAssetService` block): + +```ini +ConnectionString = "...;TSAdminBatchSize=1000;TSAdminCommandTimeoutSeconds=300;" +``` + +### Dry-run preview: `tsshowmove` + +Use this command for a no-write preview: + +```text +tsshowmove +``` + +Beispiel: + +```text +tsshowmove assets 7 +``` + +Output includes the same counters as `tsmove` (`candidates`, `inserted`, `already-in-target`, `deleted-from-source`, `index-affected`) but does not write anything to the database. + +## Weitere TSAsset Commands + +### `tsfind` + +Searches an asset across all configured TS asset databases and shows table + index status. + +```text +tsfind +``` + +Beispiel: + +```text +tsfind 01234567-89ab-cdef-0123-456789abcdef +``` + +### `tsverify` + +Checks consistency between `assets`/`assets_` and `tsassets_index`. + +```text +tsverify [all|assets||assets_] +``` + +Beispiele: + +```text +tsverify +tsverify all +tsverify 7 +tsverify assets +``` + +Output fields: + +- `missing-index`: rows in `assets_` without an index row +- `wrong-index-type`: rows in `assets_` where index `assetType` is wrong +- `orphan-index`: index rows for a type without a matching row in `assets_` +- `legacy-with-index`: rows in `assets` that still have an index row + +### `tsreindex` + +Batch reindex/cleanup for `tsassets_index` (resumable via checkpoint). + +```text +tsreindex [all|assets||assets_] --force [--reset] [--batch=] [--timeout=] +``` + +Beispiele: + +```text +tsreindex all --force --batch=2000 --timeout=600 +tsreindex 7 --force +tsreindex assets --force +``` + +### `tscleanlegacy` + +Removes index rows that still point to `assets` (legacy). + +```text +tscleanlegacy --force [--batch=] [--timeout=] +``` + +Beispiel: + +```text +tscleanlegacy --force --batch=2000 --timeout=600 +```