Some help diagnosing sync gateway error

I’ve got an error in my sync gateway logs that keeps repeating. I have a document and I see the error (below). The document if I view it in the sync gateway is at rev 32-d43…, but the error message (JS sync function (500 Exception in JS sync function)) is concerned with rev 30-381… which I don’t think exists in the system any more. I’m not too good at reading these error messages yet, any idea what’s going on?

2016-10-14T10:37:12.010+01:00 CRUD+: Invoking sync on doc "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" rev 30-381fb99a781a5f85ee286d45f02d447d
2016-10-14T10:37:12.011+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "29-e3fc0bae30c8c8d633c67f9ae0cadd4a"
2016-10-14T10:37:12.011+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "28-a8163fc14ec99a4beab3ff6f319c6f50"
2016-10-14T10:37:12.011+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "27-a957574972abdacf4414d80de697b69a"
2016-10-14T10:37:12.011+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "26-e2f6054459725bca4a89ee46e7e9dda5"
2016-10-14T10:37:12.012+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "25-fec5e1c3a817f937e023025de6baf555"
2016-10-14T10:37:12.012+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "24-a979a2698097fe0b0632c0e3169ff824"
2016-10-14T10:37:12.013+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "23-d9105df2020b860fb6581d3eca5f63fc"
2016-10-14T10:37:12.013+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "22-7f997f2d2198015283f3e351c96f18d4"
2016-10-14T10:37:12.013+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "21-26bedb9f943e1b1c32db1aaea24d9e1f"
2016-10-14T10:37:12.013+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "20-fca3bd582f795ee4cbe1e4b37fb365d1"
2016-10-14T10:37:12.013+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "19-bc9ea61ebf96f7987fc32b9eb8740667"
2016-10-14T10:37:12.013+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "18-3f194a0e3d205f664ae97d4b6b59f99f"
2016-10-14T10:37:12.014+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "17-f61b8a2804db6fbbf7d6c9c1d7ed4c18"
2016-10-14T10:37:12.014+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "16-a6f40134d55a55b4c18213bc0e34f40f"
2016-10-14T10:37:12.014+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "15-2c83eafe99834e1efb14d28f8f7eb9ce"
2016-10-14T10:37:12.016+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "14-810fb717984736f62a278e6e1f13c0e0"
2016-10-14T10:37:12.016+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "13-6370a202b8c30dde6bda2a24f1b008e8"
2016-10-14T10:37:12.016+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "12-f47160a2d72bb31c7c005b80e5965c8d"
2016-10-14T10:37:12.017+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "11-0e1e63fc909416907854c4d515b18561"
2016-10-14T10:37:12.017+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "10-d48c5021d9426cee6e3dc2a873ae85d3"
2016-10-14T10:37:12.017+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "9-971fffc9b7408b1dad49015bcba41cdc"
2016-10-14T10:37:12.017+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "8-2feaff0bd17b21e6742626082d2bc5cc"
2016-10-14T10:37:12.017+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "7-1035bb2dc62f2becc1ef111a6b1ecf78"
2016-10-14T10:37:12.017+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "6-e2cb5506fdd990bcd933d8ad196022fa"
2016-10-14T10:37:12.018+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "5-404586475703963faae4ca7a96402aae"
2016-10-14T10:37:12.018+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "4-297ca9748c3bcbd7f880e51b6efe82df"
2016-10-14T10:37:12.018+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "3-fac87e07690161622e74cf6b3a01777d"
2016-10-14T10:37:12.018+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "2-8f28949663f7b84886316b80d3a34664"
2016-10-14T10:37:12.018+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "1-ddde39806367b1cb158a211eb9e50033"
2016-10-14T10:37:12.023+01:00 WARNING: Sync fn exception: TypeError; doc = map[_rev:30-381fb99a781a5f85ee286d45f02d447d _deleted:%!s(bool=true) _revisions:map[ids:[381fb99a781a5f85ee286d45f02d447d e3fc0bae30c8c8d633c67f9ae0cadd4a a8163fc14ec99a4beab3ff6f319c6f50 a957574972abdacf4414d80de697b69a e2f6054459725bca4a89ee46e7e9dda5 fec5e1c3a817f937e023025de6baf555 a979a2698097fe0b0632c0e3169ff824 d9105df2020b860fb6581d3eca5f63fc 7f997f2d2198015283f3e351c96f18d4 26bedb9f943e1b1c32db1aaea24d9e1f fca3bd582f795ee4cbe1e4b37fb365d1 bc9ea61ebf96f7987fc32b9eb8740667 3f194a0e3d205f664ae97d4b6b59f99f f61b8a2804db6fbbf7d6c9c1d7ed4c18 a6f40134d55a55b4c18213bc0e34f40f 2c83eafe99834e1efb14d28f8f7eb9ce 810fb717984736f62a278e6e1f13c0e0 6370a202b8c30dde6bda2a24f1b008e8 f47160a2d72bb31c7c005b80e5965c8d 0e1e63fc909416907854c4d515b18561] start:%!s(float64=30)] _id:3bd85e31-5560-4a2d-a63f-3e16a1d2814d] -- db.(*Database).getChannelsAndAccess() at crud.go:871
2016-10-14T10:37:12.023+01:00 	BulkDocs: Doc "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" --> 500 Exception in JS sync function (500 Exception in JS sync function)

And here’s the doc:

{
  "owner": "7f3b03b8-340d-4d41-80f9-d4ebec187216",
  "read_receipts_by_owner": {
    "95ee00f0-6f24-4553-8228-d045c4b4289d": "9a6f69e9-1e7a-44bd-984c-c7f70932824a",
    "86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3": "72ea4420-9a39-4ab0-a035-b3d1dda8ac05"
  },
  "_sync": {
    "time_saved": "2016-10-05T12:00:34.702907659+01:00",
    "sequence": 396868,
    "rev": "32-d4319144f7b3c1c64a77e17f3b76c979",
    "history": {
      "channels": [
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216"
        ],
        [
          "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216",
          "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3",
          "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d"
        ]
      ],
      "revs": [
        "18-3f194a0e3d205f664ae97d4b6b59f99f",
        "31-3440198aecb07364e3e8358ba9c2c627",
        "10-d48c5021d9426cee6e3dc2a873ae85d3",
        "25-fec5e1c3a817f937e023025de6baf555",
        "21-26bedb9f943e1b1c32db1aaea24d9e1f",
        "13-6370a202b8c30dde6bda2a24f1b008e8",
        "7-1035bb2dc62f2becc1ef111a6b1ecf78",
        "5-404586475703963faae4ca7a96402aae",
        "26-e2f6054459725bca4a89ee46e7e9dda5",
        "20-fca3bd582f795ee4cbe1e4b37fb365d1",
        "28-a8163fc14ec99a4beab3ff6f319c6f50",
        "17-f61b8a2804db6fbbf7d6c9c1d7ed4c18",
        "12-f47160a2d72bb31c7c005b80e5965c8d",
        "22-7f997f2d2198015283f3e351c96f18d4",
        "32-d4319144f7b3c1c64a77e17f3b76c979",
        "30-7bbb7bc7c258669226aa9913c2721445",
        "29-e3fc0bae30c8c8d633c67f9ae0cadd4a",
        "15-2c83eafe99834e1efb14d28f8f7eb9ce",
        "9-971fffc9b7408b1dad49015bcba41cdc",
        "11-0e1e63fc909416907854c4d515b18561",
        "27-a957574972abdacf4414d80de697b69a",
        "14-810fb717984736f62a278e6e1f13c0e0",
        "16-a6f40134d55a55b4c18213bc0e34f40f",
        "19-bc9ea61ebf96f7987fc32b9eb8740667",
        "6-e2cb5506fdd990bcd933d8ad196022fa",
        "1-ddde39806367b1cb158a211eb9e50033",
        "23-d9105df2020b860fb6581d3eca5f63fc",
        "24-a979a2698097fe0b0632c0e3169ff824",
        "2-8f28949663f7b84886316b80d3a34664",
        "4-297ca9748c3bcbd7f880e51b6efe82df",
        "3-fac87e07690161622e74cf6b3a01777d",
        "8-2feaff0bd17b21e6742626082d2bc5cc"
      ],
      "parents": [
        11,
        15,
        18,
        27,
        9,
        12,
        24,
        29,
        3,
        23,
        20,
        22,
        19,
        4,
        1,
        16,
        10,
        21,
        31,
        2,
        8,
        5,
        17,
        0,
        7,
        -1,
        13,
        26,
        25,
        30,
        28,
        6
      ]
    },
    "channels": {
      "ch_private_95ee00f0-6f24-4553-8228-d045c4b4289d": null,
      "ch_private_7f3b03b8-340d-4d41-80f9-d4ebec187216": null,
      "ch_private_86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3": null
    },
    "recent_sequences": [
      277869,
      277912,
      277955,
      277998,
      278041,
      278084,
      278240,
      278283,
      385894,
      388826,
      396868
    ]
  },
  "delivery_receipts_by_owner": {
    "95ee00f0-6f24-4553-8228-d045c4b4289d": "5ec82a0e-38d9-4024-ba06-cb28ab1a7fba",
    "86fc56d2-f1d3-4b9d-bcf5-5fc9f09fbdb3": "aa0bb6f5-3aa5-431b-a263-1301831f5a62"
  },
  "type": "chat-message",
  "content": {
    "imageAsset": {
      "isVertical": false,
      "fileSize": 363489,
      "location": null,
      "mimeType": "image/jpeg",
      "geoData": null,
      "thumbnailUri": null,
      "uri": "assets-library://asset/asset.JPG?id=8989B615-1A52-4DE0-846A-35A3425982EF&ext=JPG",
      "dimensions": {
        "width": 3024,
        "height": 4032
      },
      "timestamp": "1970-01-18T01:08:26Z"
    },
    "type": "image"
  },
  "client_timestamp_utc": "2016-09-05T08:54:51Z",
  "_attachments": {
    "slice": {
      "digest": "sha1-nGpsmKFOm0k+PXV2k0QtZzoXwFU=",
      "length": 6460,
      "stub": true,
      "content_type": "image/jpeg",
      "revpos": 5
    },
    "low-res": {
      "digest": "sha1-n8SbpHya5rDGLNHk9cigFgOPHrg=",
      "length": 38284,
      "stub": true,
      "content_type": "image/jpeg",
      "revpos": 4
    },
    "thumbnail": {
      "digest": "sha1-Jf8nRjc06jZ6Chs2MEhxum6HiTA=",
      "length": 6882,
      "stub": true,
      "content_type": "image/jpeg",
      "revpos": 4
    }
  },
  "server_timestamp_utc": "2016-09-05T08:54:55.818224175Z",
  "audit": {
    "user_id": "admin",
    "client_timestamp_utc": "2016-10-05T11:00:34.620Z"
  },
  "attachment_id": "d4302775-b744-4d5a-bc0d-572bceb75c6e",
  "chat_group_id": "-nZaP_8vgz_1kpW8PEX_QnL",
  "state": null
}

The doc body from Couchbase Server is indeed rev-32 but from the logs the error is happening on rev-30.

Here’s my somewhat logical interpretation.

The meaning of No old revision in the logs seems to indicate it couldn’t find the parent revision. I’m guessing that in processing rev-30 in the Sync Function, Sync Gateway needs to retrieve the parent revision (second argument in the Sync Function). If 2016-10-14T10:37:12.011+01:00 CRUD+: No old revision "3bd85e31-5560-4a2d-a63f-3e16a1d2814d" / "29-e3fc0bae30c8c8d633c67f9ae0cadd4a" means that it couldn’t find the direct parent then it would try to load rev-28 and so on until it reaches rev-1. Then since it can’t find a parent rev it calls the Sync Function with null as the parent revision. oldDoc in the signature below.

function (doc, oldDoc) {
  ...
}

The Sync Function is usually called with null as the parent revision for document creation (rev-1s) but maybe your Sync Function expects the parent revision to be a dictionary (to access a property on it) and because there isn’t one it throws a type error when it sees oldDoc is null?

James

Good theory! Thanks - I’ll investigate.

Am I right in thinking that new docs don’t have a parent? So this doc would look similar to the sync function?

Yes, docs with a revision number like 1-... are first generation and don’t have a parent. So in that case oldDoc is null in the sync function. If you can share your sync function in a GitHub gist it might help to find out if there’s something that could cause this JS exception.

Actually the first thing to check is whether you are using oldDoc in the sync function?

I am using oldDoc in places…

I don’t see anything that could cause a JS error.

If you can repro it, you could log the keys of doc and oldDoc and see what they are just before the TypeError occurs

  console.log("doc :: " + _.keys(doc));
  if (oldDoc) {
    console.log("oldDoc :: " + _.keys(oldDoc));
  }

The underscore lib is available in the Sync Function, we should document this.

From the logs, it appears that the error is happening at crud.go:871 in the source of sync gateway. Might be worth to dig there too to see what happens in getChannelsAndAccess.

James

But I’ve no idea where the error occurs. There’s very little information in the error message

@adamf can you help out here in reading the error message (see logs in 1st message of this thread ↑ ).

Line 116 in your sync function looks like the only place you’re using oldDoc without checking whether it exists. It’s possible that a client is trying to push an older _deleted document (rev 30-381…), and Sync Gateway isn’t able to identify an ancestor for that revision.

What Adam said — I found the same line before seeing his comment.

  if (newDoc._deleted) {
    assignToChannels(oldDoc);

If oldDoc is undefined, this will fail inside assignToChannels.

Of course. Thanks for spotting that. Didn’t envisage the situation where a doc could be deleted with there being an old doc.

Hi, how finally was the solution to avoid "No old revisions"
something like this:
if (newDoc._deleted) {
if(oldDoc && !oldDoc._deleted){
assignToChannels(oldDoc);
}
}
because a i have a similar problem with “No old revisions” log. and that only happens on production and my local environment doesnt happen so I want to make sure to do the right. thanks

Yes, so just because a document gets deleted (or indeed modified), that does not mean that there will be a prior revision. I guess they get cleaned up from time to time.