Skip to main content

運用と保守

サーバー管理者向けの日常運用、障害対応、データベース保守手順を解説します。


起動確認と安全設計

MapArt Land Rentalは、起動時にデータベースのマイグレーションとキャッシュの整合性復元を行います。 この初期化が完了するまで、プラグインは永続化を伴う操作を拒否します。

起動時の確認事項

  • サーバーログに [MapArtLandRental] MapArt Land Rental is ready が出力されていることを確認します。
  • 経済プラグイン(Vault)が見つからない場合、新規レンタルや有料延長のみが一時停止され、区画の保護や期限切れ処理は継続して稼働します。
  • データベースの初期化に失敗した場合、安全のためレンタル機能は停止されます。

区画リセットの仕組みと障害復旧

区画リセットは、レンタル終了時または猶予期間経過後に自動実行されます。

リセット処理の内部構造

  • チャンク単位のセクション復元: Paperが非推奨としている危険なチャンク再生成APIは呼び出しません。 対象区画内のセクションを走査し、空でないセクションおよび床面を含むセクションを復元します。
  • 床面の初期化: 高さ base-y - 1BEDROCK、高さ base-yworld.base-material で再配置し、それ以外の高さをすべて AIR に戻します。
  • プレイヤーの安全な退避: 区画内に残っているプレイヤーは、Entity Schedulerを通じて安全な座標へ退避されます。
  • 冪等性と再開可能性: リセット処理は同じ初期状態へと収束するように設計されています。 途中でサーバーが停止した場合でも、再起動後に安全に再開できます。

リセット失敗時の対処

リセット処理中にワールドのアンロードや予期せぬI/Oエラーが発生した場合、対象区画は安全のため RESET_FAILED 状態として保持されます。 リセットが完了していない区画が新しいプレイヤーへ再貸出されることはありません。

復旧手順は以下のとおりです。

  1. サーバーログを確認し、エラーの原因となった外部要因(ワールドの読み込み不可など)を解消します。
  2. /mapart admin lease <id> または管理者GUIから対象Leaseの状態を確認します。
  3. リセット再試行コマンドを実行します。
/mapart admin retry-reset <Lease-ID>

リセットが正常に完了すると、データベースが更新され、区画が空き区画(FREE)へ戻ります。


経済決済の整合性と照合

経済プラグインの残高引き落としとデータベースの更新は、単一のACIDトランザクションに含めることができません。 MapArt Land Rentalでは不整合を防ぐため、以下の手順で処理します。

sequenceDiagram
participant P as プラグイン
participant DB as データベース
participant E as Vault (Economy)

P->>DB: 1. PENDING (未確定) 記録
P->>E: 2. 口座から引き落とし
alt 引き落とし成功
P->>DB: 3. Lease作成 & COMPLETED 確定
else DB確定失敗
P->>E: 4. 補償返金の実行
P->>DB: 5. REFUNDED 記録
end

未確定決済の照合(Reconciliation)

外部経済APIの処理中にサーバープロセスがクラッシュした場合、引き落としが実行されたかどうかが未確定のまま PENDING 記録として残る可能性があります。 サーバーの再起動後や経済障害の発生後は、未確定決済を確認します。

/mapart admin transactions

未確定の決済が存在する場合は、経済プラグインの台帳ログやプレイヤーの実際の残高を確認した上で、結論を記録します。

# 引き落としが行われていなかった場合
/mapart admin transaction resolve <ID> failed confirm

# 返金を確認済み、または手動で返金した場合
/mapart admin transaction resolve <ID> refunded confirm

# 調査継続のため未解決として残す場合
/mapart admin transaction resolve <ID> review confirm

:::warning 決済照合コマンドの注意点 照合コマンドは監査ログのステータスを更新する機能です。 二重引き落としや二重返金を防ぐため、このコマンドからゲーム内通貨の引き落としや返金が自動実行されることはありません。 :::


データベースのバックアップ

SQLiteの場合

サーバーまたはプラグインを停止させた状態で、plugins/MapArtLandRental/ 配下の以下のファイルを同一時点でコピーして保存します。

  • mapart.db
  • mapart.db-wal(WALログファイル)
  • mapart.db-shm(共有メモリファイル)

MySQLの場合

データベースサーバーが提供するトランザクション整合性のあるダンプツール(mysqldump --single-transaction 等)を使用してバックアップを取得します。

:::danger schema_version テーブルの保護 データベース内の schema_version テーブルはマイグレーションの進捗を記録しています。 手動での編集や削除は絶対に行わないでください。 :::


現地調査と強制解放

現在地の区画を調査する

管理者が現地に立ち、現在立っている場所の区画情報や契約状況を調査できます。

/mapart admin inspect

区画のタイプ、インデックス、契約中のLease ID、利用中のプロジェクトが表示されます。

区画を強制解放する

違反建築や放棄された区画を管理者が強制的に解放し、リセットを実行します。

/mapart admin force-release <Lease-ID>

確認メッセージの表示後、30秒以内に confirm を付けて実行すると強制返却が確定し、即座に区画リセットが開始されます。

/mapart admin force-release <Lease-ID> confirm