DeleteObject с последующим UpdateObject

DeleteObject с последующим UpdateObject

Всякий раз, когда я удаляю файл в моей смонтированной файловой системе gcsfuse, DeleteObjectза командой всегда следует команда UpdateObject, которая не выполняется, потому что файл больше не существует. Само удаление выполняется успешно, как локально, так и в бакете, поэтому удаление ведет себя так, как и ожидалось, но я хотел бы понять, почему UpdateObjectотправляется команда, и является ли это просто ожидаемым поведением или, возможно, указывает на проблему конфигурации на моей стороне. Вот некоторые подробности настройки и выдержка из журнала (конфиденциальная информация отредактирована символами '#'):

версия gcsfuse:0.40.0

Команда монтирования: /usr/bin/gcsfuse --foreground --debug_fuse --debug_fs --debug_gcs --debug_http --debug_mutex --debug_invariants --log-file /home/###/gcsfuse.log ### /home/###/###

Команда удаления: rm deltest.txt

Выдержка из журнала:

  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "fuse_debug: Op 0x000037c6        connection.go:416] <- Unlink (parent 26, name \"deltest.txt\", PID 1193)\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 564194468
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "gcs: Req             0x44: <- DeleteObject(\"deltest.txt\")\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 564300578
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "http: ========== REQUEST:\nDELETE http://www.googleapis.com:443/storage/v1/b/###/o/deltest.txt HTTP/1.1\r\nHost: www.googleapis.com:443\r\nUser-Agent: gcsfuse/0.40.0 (Go version go1.17.6) \r\nAuthorization: Bearer ###\r\nAccept-Encoding: gzip\r\n\r\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 564477178
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "http: ========== RESPONSE:\nHTTP/2.0 204 No Content\r\nCache-Control: no-cache, no-store, max-age=0, must-revalidate\r\nContent-Type: application/json\r\nDate: Fri, 08 Apr 2022 08:59:05 GMT\r\nExpires: Mon, 01 Jan 1990 00:00:00 GMT\r\nPragma: no-cache\r\nServer: UploadServer\r\nVary: Origin\r\nVary: X-Origin\r\nX-Guploader-Uploadid: ###\r\n\r\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 599754186
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "http: ====================\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 599813546
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "gcs: Req             0x44: -> DeleteObject(\"deltest.txt\") (35.528748ms): OK\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 599832746
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "debug_fs: Unlink(26, \"deltest.txt\"): <nil>\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 599883646
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "fuse_debug: Op 0x000037c6        connection.go:498] -> OK ()\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 599908336
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "fuse_debug: Op 0x000037c8        connection.go:416] <- SetInodeAttributes (inode 35, PID 1193, mtime 2022-04-08 08:58:51.943138607 +0000 UTC)\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 599978196
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "gcs: Req             0x45: <- UpdateObject(\"deltest.txt\")\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 600124196
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "http: ========== REQUEST:\nPATCH http://www.googleapis.com:443/storage/v1/b/###/o/deltest.txt?generation=###&ifMetagenerationMatch=1&projection=full HTTP/1.1\r\nHost: www.googleapis.com:443\r\nUser-Agent: gcsfuse/0.40.0 (Go version go1.17.6) \r\nContent-Length: 64\r\nAuthorization: Bearer ###\r\nContent-Type: application/json\r\nAccept-Encoding: gzip\r\n\r\n{\"metadata\":{\"gcsfuse_mtime\":\"2022-04-08T08:58:51.943138607Z\"}}\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 600343366
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "http: ========== RESPONSE:\nHTTP/2.0 404 Not Found\r\nContent-Length: 383\r\nCache-Control: no-cache, no-store, max-age=0, must-revalidate\r\nContent-Type: application/json; charset=UTF-8\r\nDate: Fri, 08 Apr 2022 08:59:05 GMT\r\nExpires: Mon, 01 Jan 1990 00:00:00 GMT\r\nPragma: no-cache\r\nServer: UploadServer\r\nVary: Origin\r\nVary: X-Origin\r\nX-Guploader-Uploadid: ###\r\n\r\n{\n  \"error\": {\n    \"code\": 404,\n    \"message\": \"No such object:###/deltest.txt\",\n    \"errors\": [\n      {\n        \"message\": \"No such object: ###/deltest.txt\",\n        \"domain\": \"global\",\n        \"reason\": \"notFound\"\n      }\n    ]\n  }\n}\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 618031945
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "http: ====================\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 618071915
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "gcs: Req             0x45: -> UpdateObject(\"deltest.txt\") (18.039079ms): not retrying UpdateObject(\"deltest.txt\"): gcs.NotFoundError: googleapi: Error 404: No such object: ###/deltest.txt, notFound\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 618163665
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "debug_fs: SetInodeAttributes(35): SetMtime: UpdateObject: not retrying UpdateObject(\"###/deltest.txt\"): gcs.NotFoundError: googleapi: Error 404: No such object: ###/deltest.txt, notFound\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 618178515
  }
  {
    "name": "root",
    "levelname": "ERROR",
    "severity": "ERROR",
    "message": "SetInodeAttributes: input/output error, SetMtime: UpdateObject: not retrying UpdateObject(\"###/deltest.txt\"): gcs.NotFoundError: googleapi: Error 404: No such object: ###/deltest.txt, notFound\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 618219465
  }
  {
    "name": "root",
    "levelname": "DEBUG",
    "severity": "DEBUG",
    "message": "fuse_debug: Op 0x000037c8        connection.go:500] -> Error: \"input/output error\"\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 618257045
  }
  {
    "name": "root",
    "levelname": "ERROR",
    "severity": "ERROR",
    "message": "fuse: *fuseops.SetInodeAttributesOp error: input/output error\n",
    "timestampSeconds": 1649408345,
    "timestampNanos": 618267145
  }

Связанный контент