Geo: Failed Upload syncs due to incorrect checksum

This situation blocks Geo from downloading the uploads because the checksum sent with the request does not match.

I found this while investigating failed file_registry entries where the Upload file exists. This was the case for 5 user avatars, which were uploaded around the same time.

[#<Upload:0x00007f46879d1550
  id: 311041,
  size: 77052,
  path: "uploads/-/system/user/avatar/759517/avatar.png",
  checksum: "c1748b80a2993ef5a67989b80e1757cff7fd6d500503fa4aaa393324a6ec88fe",
  model_id: 759517,
  model_type: "User",
  uploader: "AvatarUploader",
  created_at: Mon, 05 Jun 2017 20:46:08 UTC +00:00,
  store: nil,
  mount_point: nil,
  secret: nil>,
 #<Upload:0x00007f46879d1410
  id: 311044,
  size: 84703,
  path: "uploads/-/system/user/avatar/968838/avatar.png",
  checksum: "90dee92157811c0315ce7fa56e76f8ff372f4d8ff978e62a60675e74ea985788",
  model_id: 968838,
  model_type: "User",
  uploader: "AvatarUploader",
  created_at: Mon, 05 Jun 2017 20:46:52 UTC +00:00,
  store: nil,
  mount_point: nil,
  secret: nil>,
 #<Upload:0x00007f46879d1028
  id: 311076,
  size: 90404,
  path: "uploads/-/system/user/avatar/1293358/avatar.png",
  checksum: "620f38b6db4fd1f30b43f340a9caf1c473955b9a6fcd130fae01fe203a720f88",
  model_id: 1293358,
  model_type: "User",
  uploader: "AvatarUploader",
  created_at: Mon, 05 Jun 2017 20:54:04 UTC +00:00,
  store: nil,
  mount_point: nil,
  secret: nil>,
 #<Upload:0x00007f46879d0ee8
  id: 311092,
  size: 41724,
  path: "uploads/-/system/user/avatar/1369002/avatar.png",
  checksum: "d54c6fee7ade12eb537d8e2a498f4b8916e535b7e6778a247a7eee39581f49a5",
  model_id: 1369002,
  model_type: "User",
  uploader: "AvatarUploader",
  created_at: Mon, 05 Jun 2017 20:55:25 UTC +00:00,
  store: nil,
  mount_point: nil,
  secret: nil>,
 #<Upload:0x00007f46879d0da8
  id: 311098,
  size: 87578,
  path: "uploads/-/system/user/avatar/1228457/avatar.png",
  checksum: "82218c97f96ed84e19f9122774ea15effcc79f7df27e8e93319ffa5e4fc25404",
  model_id: 1228457,
  model_type: "User",
  uploader: "AvatarUploader",
  created_at: Mon, 05 Jun 2017 20:57:34 UTC +00:00,
  store: nil,
  mount_point: nil,
  secret: nil>]

After I recalculated and saved their checksums, GPRD successfully synced them.

Note that the checksums don't even matter in this case, since these assets are public user avatars.

Since checksums are calculated before_save if under 100 MB (which these are), I don't know how they could mismatch. The files on the secondary already were the correct files.

This is weird, but rare. I don't know what, if anything, should be done.

Edited Mar 30, 2018 by Michael Kozono
Assignee Loading
Time tracking Loading