Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Cloud Storage transactions?

It does not appear that GCS has any transaction mechanism. Is this correct?

I would like to be able to have a long lived transaction. For example, it would be great if I could start a transaction and specify an expiration time (if not committed within X time it automatically gets rolled back). Then I could use this handle to insert objects, compose, delete etc. and if all goes well, issue a isCommitPossible(), and if yes, then commit().

Is this a possibility?

like image 905
Robert D Avatar asked May 02 '14 20:05

Robert D


2 Answers

Object writes are transactional (either the complete object and its metadata are successfully written and the object becomes visible; or it fails without becoming visible). But there's no transaction mechanism spanning multiple GCS operations.

Mike

like image 153
Mike Schwartz Avatar answered Sep 21 '22 19:09

Mike Schwartz


The Cloud Storage client libraries offer a file-like object to work with, which has an Open() and Close() operation. If a single operation can be transactional then, in theory, it should be possible to open a single "lock file" for the duration of all other operations, only closing it when you're done will all the other files.

In other words, you would have to write your processes to use a "lock file" and, in that way, you could, at the least, know whether or not all your files were written/read or if there was some error. Whenever the next round of operations takes place, it would just look for the existence of the lock file that corresponds to the set of files written (you'd have to arrange your naming, directory layout, etc, to have it make sense for this). If it exists, we can assume that the file group was written successfully. If it doesn't exist, assume that something happened (or that the process hasn't yet completed).

I have not actually tested this out. But I offer it as an idea for others who might be desperate enough to try.

like image 31
Dave Avatar answered Sep 19 '22 19:09

Dave