vrtmrz / obsidian-livesync

MIT License
3.92k stars 132 forks source link

The request may have failed. The reason sent by the server: 404: #412

Open zedtools opened 2 months ago

zedtools commented 2 months ago

Abstract

Since updating to 0.22.19, I have noticed an error The request may have failed. The reason sent by the server: 404: is logged multiple times when doing a sync.

Expected behaviour

Actually happened

Reproducing procedure

  1. Obsidian synced up to date and using LiveSync.
  2. Close Obsidian.
  3. Using Docker couchdb:latest
  4. docker compose down
  5. docker compose up -d to recreate thezcontainer.
  6. Run Obsidian.
  7. Wait for replication to finish.
  8. Check the logs.

Report materials

Report from the LiveSync

For more information, please refer to Making the report.

Report from hatch ``` ---- Obsidian info ---- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.16 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36 ---- remote config ---- cors: credentials: "true" headers: accept, authorization, content-type, origin, referer max_age: "3600" methods: GET, PUT, POST, HEAD, DELETE origins: app://obsidian.md,capacitor://localhost,http://localhost chttpd: bind_address: any max_http_request_size: "4294967296" port: "5984" require_valid_user: "true" admins: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 vendor: name: The Apache Software Foundation feature_flags: partitioned||*: "true" chttpd_auth: authentication_redirect: /REDACTED/_utils/session.html hash_algorithms: sha256, sha require_valid_user: "true" indexers: couch_mrview: "true" prometheus: additional_port: "false" bind_address: 127.0.0.1 port: "17986" httpd: WWW-Authenticate: Basic realm="couchdb" bind_address: 127.0.0.1 enable_cors: "true" port: "5986" smoosh: state_dir: ./data couch_httpd_auth: authentication_db: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 secret: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 authentication_redirect: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 couchdb_engines: couch: couch_bt_engine couchdb: database_dir: ./data max_document_size: "50000000" single_node: "true" uuid: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 view_index_dir: ./data ---- Plug-in config --- version:0.22.19 couchDB_URI: self-hosted(HTTPS) couchDB_USER: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 couchDB_PASSWORD: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 couchDB_DBNAME: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 liveSync: true syncOnSave: false syncOnStart: false savingDelay: 200 lessInformationInLog: false gcDelay: 0 versionUpFlash: "" minimumChunkSize: 20 longLineThreshold: 250 showVerboseLog: true suspendFileWatching: false trashInsteadDelete: true periodicReplication: false periodicReplicationInterval: 60 syncOnFileOpen: false encrypt: false passphrase: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 usePathObfuscation: false doNotDeleteFolder: false resolveConflictsByNewerFile: false batchSave: false deviceAndVaultName: "" usePluginSettings: false showOwnPlugins: false showStatusOnEditor: true showStatusOnStatusbar: true showOnlyIconsOnEditor: false usePluginSync: false autoSweepPlugins: false autoSweepPluginsPeriodic: false notifyPluginOrSettingUpdated: false checkIntegrityOnSave: false batch_size: 25 batches_limit: 25 useHistory: true disableRequestURI: true skipOlderFilesOnSync: true checkConflictOnlyOnOpen: false showMergeDialogOnlyOnActive: false syncInternalFiles: false syncInternalFilesBeforeReplication: false syncInternalFilesIgnorePatterns: \/node_modules\/, \/\.git\/, \/obsidian-livesync\/ syncInternalFilesInterval: 60 additionalSuffixOfDatabaseName: 8b242be278c86c9b ignoreVersionCheck: false lastReadUpdates: 22 deleteMetadataOfDeletedFiles: false syncIgnoreRegEx: "" syncOnlyRegEx: "" customChunkSize: 50 readChunksOnline: true watchInternalFileChanges: true automaticallyDeleteMetadataOfDeletedFiles: 0 disableMarkdownAutoMerge: false writeDocumentsIfConflicted: false useDynamicIterationCount: false syncAfterMerge: false configPassphraseStore: "" encryptedPassphrase: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 encryptedCouchDBConnection: 𝑅𝐸𝐷𝐴𝐢𝑇𝐸𝐷 permitEmptyPassphrase: false useIndexedDBAdapter: true useTimeouts: false writeLogToTheFile: false doNotPaceReplication: false hashCacheMaxCount: 300 hashCacheMaxAmount: 50 concurrencyOfReadChunksOnline: 30 minimumIntervalOfReadChunksOnline: 25 hashAlg: xxhash64 suspendParseReplicationResult: false doNotSuspendOnFetching: false useIgnoreFiles: false ignoreFiles: .gitignore syncOnEditorSave: false pluginSyncExtendedSetting: {} syncMaxSizeInMB: 50 settingSyncFile: "" writeCredentialsForSettingSync: false notifyAllSettingSyncFile: false isConfigured: true settingVersion: 0 enableCompression: false ```

Obsidian debug info

Plug-in log

We can see the log by tapping the Document box icon. If you noticed something suspicious, please let me know. Note: Please enable Verbose Log. For detail, refer to Logging, please.

Plug-in log ``` 22/04/2024, 20:54:57->Cache initialized 300 / 250000000000 22/04/2024, 20:54:57->loading plugin 22/04/2024, 20:54:57->Self-hosted LiveSync v0.22.19 0.22.19 22/04/2024, 20:54:57->xxhash for plugin initialised 22/04/2024, 20:54:57->Waiting for ready... 22/04/2024, 20:54:57->Cache initialized 10 / 1000000000 22/04/2024, 20:54:57->Cache initialized 300 / 50000000 22/04/2024, 20:54:57->Newer xxhash has been initialised 22/04/2024, 20:54:57->Opening Database... 22/04/2024, 20:54:57->Database info 22/04/2024, 20:54:57->{ "doc_count": 8262, "update_seq": 8263, "db_name": "Obsidian-8b242be278c86c9b-livesync-v2-indexeddb", "auto_compaction": false, "adapter": "indexeddb" } 22/04/2024, 20:54:57->Database is now ready. 22/04/2024, 20:54:58->Log window opened 22/04/2024, 20:54:58->Initialize and checking database files 22/04/2024, 20:54:58->Checking deleted files 22/04/2024, 20:54:58->Collecting local files on the storage 22/04/2024, 20:54:58->Collecting local files on the DB 22/04/2024, 20:55:01->Collecting local files on the DB: 25 22/04/2024, 20:55:01->Collecting local files on the DB: 50 22/04/2024, 20:55:01->Collecting local files on the DB: 75 22/04/2024, 20:55:01->Collecting local files on the DB: 100 22/04/2024, 20:55:01->Collecting local files on the DB: 125 22/04/2024, 20:55:01->Collecting local files on the DB: 150 22/04/2024, 20:55:01->Collecting local files on the DB: 175 22/04/2024, 20:55:01->Collecting local files on the DB: 200 22/04/2024, 20:55:01->Collecting local files on the DB: 225 22/04/2024, 20:55:01->Collecting local files on the DB: 250 22/04/2024, 20:55:01->Collecting local files on the DB: 275 22/04/2024, 20:55:01->Collecting local files on the DB: 300 22/04/2024, 20:55:01->Collecting local files on the DB: 325 22/04/2024, 20:55:01->Collecting local files on the DB: 350 22/04/2024, 20:55:01->Collecting local files on the DB: 375 22/04/2024, 20:55:01->Collecting local files on the DB: 400 22/04/2024, 20:55:01->Collecting local files on the DB: 425 22/04/2024, 20:55:01->Collecting local files on the DB: 450 22/04/2024, 20:55:01->Collecting local files on the DB: 475 22/04/2024, 20:55:01->Collecting local files on the DB: 500 22/04/2024, 20:55:01->Collecting local files on the DB: 525 22/04/2024, 20:55:01->Collecting local files on the DB: 550 22/04/2024, 20:55:01->Collecting local files on the DB: 575 22/04/2024, 20:55:01->Collecting local files on the DB: 600 22/04/2024, 20:55:01->Collecting local files on the DB: 625 22/04/2024, 20:55:01->Collecting local files on the DB: 650 22/04/2024, 20:55:01->Collecting local files on the DB: 675 22/04/2024, 20:55:01->Collecting local files on the DB: 700 22/04/2024, 20:55:01->Collecting local files on the DB: 725 22/04/2024, 20:55:01->Collecting local files on the DB: 750 22/04/2024, 20:55:01->Collecting local files on the DB: 775 22/04/2024, 20:55:01->Collecting local files on the DB: 800 22/04/2024, 20:55:01->Collecting local files on the DB: 825 22/04/2024, 20:55:01->Collecting local files on the DB: 850 22/04/2024, 20:55:01->Collecting local files on the DB: 875 22/04/2024, 20:55:01->Collecting local files on the DB: 900 22/04/2024, 20:55:01->Collecting local files on the DB: 925 22/04/2024, 20:55:01->Collecting local files on the DB: 950 22/04/2024, 20:55:01->Collecting local files on the DB: 975 22/04/2024, 20:55:01->Collecting local files on the DB: 1000 22/04/2024, 20:55:01->Collecting local files on the DB: 1025 22/04/2024, 20:55:01->Collecting local files on the DB: 1050 22/04/2024, 20:55:01->Collecting local files on the DB: 1075 22/04/2024, 20:55:01->Collecting local files on the DB: 1100 22/04/2024, 20:55:01->Collecting local files on the DB: 1125 22/04/2024, 20:55:01->Collecting local files on the DB: 1150 22/04/2024, 20:55:01->Collecting local files on the DB: 1175 22/04/2024, 20:55:01->Collecting local files on the DB: 1200 22/04/2024, 20:55:01->Collecting local files on the DB: 1225 22/04/2024, 20:55:01->Collecting local files on the DB: 1250 22/04/2024, 20:55:01->Collecting local files on the DB: 1275 22/04/2024, 20:55:01->Collecting local files on the DB: 1300 22/04/2024, 20:55:01->Collecting local files on the DB: 1325 22/04/2024, 20:55:01->Collecting local files on the DB: 1350 22/04/2024, 20:55:01->Collecting local files on the DB: 1375 22/04/2024, 20:55:01->Collecting local files on the DB: 1400 22/04/2024, 20:55:01->Collecting local files on the DB: 1425 22/04/2024, 20:55:01->Collecting local files on the DB: 1450 22/04/2024, 20:55:01->Collecting local files on the DB: 1475 22/04/2024, 20:55:01->Collecting local files on the DB: 1500 22/04/2024, 20:55:01->Collecting local files on the DB: 1525 22/04/2024, 20:55:01->Collecting local files on the DB: 1550 22/04/2024, 20:55:01->Collecting local files on the DB: 1575 22/04/2024, 20:55:01->Collecting local files on the DB: 1600 22/04/2024, 20:55:01->Collecting local files on the DB: 1625 22/04/2024, 20:55:01->Collecting local files on the DB: 1650 22/04/2024, 20:55:01->Collecting local files on the DB: 1675 22/04/2024, 20:55:01->Opening the key-value database 22/04/2024, 20:55:01->Updating database by new files 22/04/2024, 20:55:01->UPDATE DATABASE: Nothing to do 22/04/2024, 20:55:01->UPDATE STORAGE: Nothing to do 22/04/2024, 20:55:04->Initialized, NOW TRACKING! 22/04/2024, 20:55:04->Cache initialized 300 / 50000000 22/04/2024, 20:55:04->Modifying callback of the save command 22/04/2024, 20:55:04->Additional safety scan.. 22/04/2024, 20:55:04->Before LiveSync, start OneShot once... 22/04/2024, 20:55:04->OneShot Sync begin... (pullOnly) 22/04/2024, 20:55:05->Replication activated 22/04/2024, 20:55:05->The request may have failed. The reason sent by the server: 404: 22/04/2024, 20:55:05->{"error":"not_found","reason":"missing"} 22/04/2024, 20:55:05->There are no conflicted files 22/04/2024, 20:55:05->Additional safety scan done 22/04/2024, 20:55:09->Replication paused 22/04/2024, 20:55:09->Replication completed 22/04/2024, 20:55:09->LiveSync begin... 22/04/2024, 20:55:09->The request may have failed. The reason sent by the server: 404: 22/04/2024, 20:55:09->{"error":"not_found","reason":"missing"} 22/04/2024, 20:55:09->Replication activated 22/04/2024, 20:55:09->The request may have failed. The reason sent by the server: 404: 22/04/2024, 20:55:09->{"error":"not_found","reason":"missing"} 22/04/2024, 20:55:23->Replication paused ```
vrtmrz commented 1 month ago

Thank you for the complete report! I understand you have seen a few 404 errors, especially in the early phases.

These errors most likely indicate that the plug-in could not find information about the last sync point or previous connected devices. If they would not be seen after the subsequent synchronisation (in each device), they should be expected errors!

zedtools commented 1 month ago

Yes, it is fine after the first sync completes. It is just every time the Docker container is recreated that the 404 errors are logged.

I noticed the latest version (0.23.6) now displays {"error":"not_found","reason":"missing"} in the UI instead of a 404 error. If it is expected behaviour, maybe a more informative message that does not say "error" might be helpful... something like "recreating sync points" or whatever is actually going on.

Just a thought... otherwise others might report it as an error too.