A computer implemented method of controlling storage of data in one or more data stores, the method comprising: upon receiving, by a data storage system, one or more requests from one or more requestors to store an amount of data: returning, by the data storage system, to each requestor of the one or more requestors, a value of an allocation counter associated with an active data store, the active data store having a size and associated with an acknowledgment counter; and updating, by the data storage system, the value of the allocation counter based on each amount of data to be stored; determining, by each requestor, whether the returned value of the allocation counter does not exceed the size of the active data store and whether the returned value of the allocation counter plus the amount of data requested stored by the requestor exceeds the size of the active data store; and upon determining, by any one requestor of the one or more requestors, that the returned value of the allocation counter does not exceed the size of the active data store and that the returned value of the allocation counter plus the amount of data requested to be stored by the one requestor exceeds the size of the active data store, the method further comprises: designating, by the one requestor, a new data store as the active data store; and causing, by the one requestor, the data store previously designated as the active data store to be cleaned, wherein the requestors other than the one requestor of the one or more requestors do not designate a new data store as the active data store or cause the data store previously designated as the active data store to be cleaned. returning, by the data storage system, to each requestor of the one or more requestors, a value of an allocation counter associated with an active data store, the active data store having a size and associated with an acknowledgment counter; and updating, by the data storage system, the value of the allocation counter based on each amount of data to be stored; determining, by each requestor, whether the returned value of the allocation counter does not exceed the size of the active data store and whether the returned value of the allocation counter plus the amount of data requested stored by the requestor exceeds the size of the active data store; and upon determining, by any one requestor of the one or more requestors, that the returned value of the allocation counter does not exceed the size of the active data store and that the returned value of the allocation counter plus the amount of data requested to be stored by the one requestor exceeds the size of the active data store, the method further comprises: designating, by the one requestor, a new data store as the active data store; and causing, by the one requestor, the data store previously designated as the active data store to be cleaned, wherein the requestors other than the one requestor of the one or more requestors do not designate a new data store as the active data store or cause the data store previously designated as the active data store to be cleaned. designating, by the one requestor, a new data store as the active data store; and causing, by the one requestor, the data store previously designated as the active data store to be cleaned, wherein the requestors other than the one requestor of the one or more requestors do not designate a new data store as the active data store or cause the data store previously designated as the active data store to be cleaned.