Moved assets, PS thinks they're still in old location

I used to have my assets in my library folder. I moved them to a new location (S3 storage, mounted on host, mapped to container). Photostructure displays all assets but when I click “info,” it shows the old path (e.g., “/old-library/img0001.jpg”) but /old-library/ no longer exists. I try “Rebuild” but nothing changes. I also tried docker exec -it photostructure ./photostructure sync --forcebut nothing changes.

How do I tell Photostructure that the info it has about my assets is no longer valid and it should re-sync all directories and load new info?

PhotoStructure is chicken careful about removing prior paths: it’ll only remove paths to a directory as the last, “cleanup phase” of syncing that directory.

If it doesn’t ever sync that directory, it doesn’t know that all those paths are missing.

This can be a bit confusing Here’s a concrete example:

  1. You have an external drive that you mount to /mnt/external.

  2. You tell PhotoStructure to sync /mnt/external/Photos.

  3. You unmount /mnt/external.

Basically until you re-mount /mnt/external, PhotoStructure will never remove references to those asset file variations. To clean that up, you’d need to /mnt/external again and re-scan that directory.

It doesn’t need to be the same mountpoint, but the volsha needs to be the same.

You can check a volume sha both via the about page and the asset info panel.

With one of my test libraries, one of the volumes is a remote NAS that I’ve mounted to /var/rusty-homes. Here’s my about page:

image

Here’s an image that has a variation that PhotoStructure found from this volume:

If I hover over the “rusty-homes” path, or just click “rusty-homes”, I’ll see the volume sha in the URL:

http://localhost:1787/tag/fs/2oyBGNU3F

Thanks for that clear explanation and guide!

To be more clear, I left all my assets in the original library folder, I just added .nomedia to them. So that library is still mounted, but the asset directories have .nomedia files. Do I need to actually remove the assets from the library directory, then rescan?

Also, another point of clarification: with the assets copied to the new directory, when Photostructure scans them, should they show up as duplicates? They’re not showing up at all. I don’t think the scan is happening. When I click “Rebuild”, the log shows this within a second or 2:

2021-07-03T23:28:09.104Z main-25 warn  Deferred({"cmd":"renice","args":["-1","-p","901"]}) settled multiple times (already resolved) { value: { result: '', code: 1, pid: 916 } }
2021-07-03T23:28:44.055Z main-25 warn  ChildProcess endProcess(901) { killed: false, connected: false }
2021-07-03T23:28:44.329Z main-25 warn  Deferred({"cmd":"ps","args":["-p","901,25","-wwwo","pid,lstart,command"]}) settled multiple times (already resolved) { value:
{ result:
'    PID                  STARTED COMMAND\n     25 Sat Jul  3 22:46:15 2021 PhotoStructure\n    901 Sat Jul  3 23:28:07 2021 PhotoStructure sync\n',
code: 0,
pid: 925 } }
2021-07-03T23:28:44.450Z main-25 warn  Deferred({"cmd":"ps","args":["-p","901,25","-wwwo","pid,lstart,command"]}) settled multiple times (already resolved) { value:
{ result:
'    PID                  STARTED COMMAND\n     25 Sat Jul  3 22:46:15 2021 PhotoStructure\n',
code: 0,
pid: 926 } }
2021-07-03T23:28:45.272Z main-25 warn  Deferred({"cmd":"ps","args":["-p","25,39","-wwwo","pid,lstart,command"]}) settled multiple times (already resolved) { value:
{ result:
'    PID                  STARTED COMMAND\n     25 Sat Jul  3 22:46:15 2021 PhotoStructure\n     39 Sat Jul  3 22:46:17 2021 PhotoStructure web\n',
code: 0,
pid: 940 } }
2021-07-03T23:28:45.484Z main-25 warn  ChildProcess stdoutResult(): on(exit) { pid: 942,
cmd: 'renice',
exitCode: 1,
args: [ '-1', '-p', '927' ],
elapsedMs: 2,
result: '' }
2021-07-03T23:28:45.485Z main-25 warn  ChildProcess stdoutResult(): on(close) { pid: 942,
cmd: 'renice',
exitCode: 1,
args: [ '-1', '-p', '927' ],
elapsedMs: 2,
result: '' }
2021-07-03T23:28:45.486Z main-25 warn  Deferred({"cmd":"renice","args":["-1","-p","927"]}) settled multiple times (already resolved) { value: { result: '', code: 1, pid: 942 } }

Oh, dang. PhotoStructure should handle that properly.

I’m going to mark this as a bug and look into it soon.