Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

This section provides general information about SCSP UPDATE that applies to both named and unnamed objects.

The UPDATE request is formatted as a simple HTTP request using the PUT method.

SCSP Method

HTTP Method

RFC 7231 Section

SCSP UPDATE

PUT

4.3.4

Special Query Arguments

replicate

Protects rapid updates

Important: Objects can be updated at a maximum frequency of once per second. Updating more frequently can cause unpredictable results with the stored object version and can trigger a 409 (Conflict) error. If your application updates objects faster than once per second, include the replicate=immediate query argument to verify more than one node can return the latest version in a subsequent read.

newname

Renames object

To rename a named object within the same bucket, use the newname query argument, which provides a new name with the update request (PUT, COPY, APPEND). After you rename an object, requests for the original name return a 404 Not Found and the prior search metadata is removed. (Note that the newname argument also allows renaming domains and buckets.)

preserve

Updates custom headers

PUT only saves new headers, but the preserve argument allows keeping the existing headers as well as save any new ones. (v9.5)

UPDATE for named objects

UPDATE is a request to the storage cluster to modify a specific named object or alias object with new content. The UPDATE request is formatted as a simple HTTP request using the PUT method:

PUT /bucket/file.txt HTTP/1.1
  Host: cluster.example.com
  User-Agent: Swarm Client/0.1 
  Content-Length: 43402 
  Expect: 100-continue
  Content-Type: image/jpeg 
  Content-Language: en/us, x-pig-latin
  Content-Version: 42
  Last-Modified: Wed, 1 Sept 2010 15:59:02 GMT 
  Created-Date: Wed, 1 Sept 2010 15:59:02 GMT
  CRLF
  [ content ]

UPDATE for unnamed objects

The UPDATE request is formatted as a simple HTTP request using the PUT method. The normal response to a PUT request, similar to a POST, is a 201 Created response.

PUT /06eec5e2c3f1aadcb41ef7fd52adc049 HTTP/1.1
  Host: cluster.example.com
  User-Agent: Swarm Client/0.1 
  Content-Length: 43402 
  Expect: 100-continue
  Content-Type: image/jpeg
  Content-Language: en/us, x-pig-latin
  Content-Version: 42
  Last-Modified: Wed, 1 Sept 2010 15:59:02 GMT
  Created-Date: Wed, 1 Sept 2010 15:59:02 GMT
  CRLF
  [ content ]

PUT returns a 404 Not Found error if the object name or UUID you specify in the command does not exist.

Note

The object can be erasure-coded, which has a smaller storage footprint, if a non-erasure-coded object is updated and the update causes the object to meet the criteria described in Erasure Coding.

UPDATE for alias objects

To update alias object, adding alias=yes is optional because this method applies only to mutable objects.

If UPDATE succeeds on an alias object, the content sent in the body of the request will be written as a new object. The first line of the HTTP PUT will be updated to point to the new object, and the original UUID of the object is returned to the client.

Normal Responses to UPDATE

For a list of response headers, see SCSP Headers.

Error Responses to UPDATE

If you execute the UPDATE method on an object in a domain but the domain does not exist or is not in the content cache on the node that receives the request, Swarm responds with 409 Conflict.

Rapid updates

Rapid updates of an object can trigger a 409 Conflict error, that a "Later version already exists."

Rapid updates or overwrites to an object in a versioned bucket can cause temporary listing inconsistency, even when replication=immediate is used (default with Gateway). Those unlisted versions can still be accessed directly by the versionid. Using a 1-second delay should avoid this.


  • No labels