rados: watcher apis are now stable

Watcher apis are now stable as per the stability plan.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
John Mulligan 2022-06-13 13:38:45 -04:00 committed by mergify[bot]
parent 096745e86b
commit ec0b9a1455
4 changed files with 44 additions and 83 deletions

View File

@ -937,6 +937,50 @@
{
"name": "WriteOp.CmpExt",
"comment": "CmpExt ensures that given object range (extent) satisfies comparison.\n\nImplements:\n void rados_write_op_cmpext(rados_write_op_t write_op,\n const char * cmp_buf,\n size_t cmp_len,\n uint64_t off,\n int * prval);\n"
},
{
"name": "IOContext.Watch",
"comment": "Watch creates a Watcher for the specified object.\n\nA Watcher receives all notifications that are sent to the object on which it\nhas been created. It exposes two read-only channels: Events() receives all\nthe NotifyEvents and Errors() receives all occuring errors. A typical code\ncreating a Watcher could look like this:\n\n watcher, err := ioctx.Watch(oid)\n go func() { // event handler\n for ne := range watcher.Events() {\n ...\n ne.Ack([]byte(\"response data...\"))\n ...\n }\n }()\n go func() { // error handler\n for err := range watcher.Errors() {\n ... handle err ...\n }\n }()\n\nCAUTION: the Watcher references the IOContext in which it has been created.\nTherefore all watchers must be deleted with the Delete() method before the\nIOContext is being destroyed.\n\nImplements:\n int rados_watch2(rados_ioctx_t io, const char* o, uint64_t* cookie,\n rados_watchcb2_t watchcb, rados_watcherrcb_t watcherrcb, void* arg)\n"
},
{
"name": "IOContext.WatchWithTimeout",
"comment": "WatchWithTimeout creates a watcher on an object. Same as Watcher(), but\ndifferent timeout than the default can be specified.\n\nImplements:\n int rados_watch3(rados_ioctx_t io, const char *o, uint64_t *cookie,\n\t rados_watchcb2_t watchcb, rados_watcherrcb_t watcherrcb, uint32_t timeout,\n\t void *arg);\n"
},
{
"name": "Watcher.ID",
"comment": "ID returns the WatcherId of the Watcher\n"
},
{
"name": "Watcher.Events",
"comment": "Events returns a read-only channel, that receives all notifications that are\nsent to the object of the Watcher.\n"
},
{
"name": "Watcher.Errors",
"comment": "Errors returns a read-only channel, that receives all errors for the Watcher.\n"
},
{
"name": "Watcher.Check",
"comment": "Check on the status of a Watcher.\n\nReturns the time since it was last confirmed. If there is an error, the\nWatcher is no longer valid, and should be destroyed with the Delete() method.\n\nImplements:\n int rados_watch_check(rados_ioctx_t io, uint64_t cookie)\n"
},
{
"name": "Watcher.Delete",
"comment": "Delete the watcher. This closes both the event and error channel.\n\nImplements:\n int rados_unwatch2(rados_ioctx_t io, uint64_t cookie)\n"
},
{
"name": "IOContext.Notify",
"comment": "Notify sends a notification with the provided data to all Watchers of the\nspecified object.\n\nCAUTION: even if the error is not nil. the returned slices\nmight still contain data.\n"
},
{
"name": "IOContext.NotifyWithTimeout",
"comment": "NotifyWithTimeout is like Notify() but with a different timeout than the\ndefault.\n\nImplements:\n int rados_notify2(rados_ioctx_t io, const char* o, const char* buf, int buf_len,\n uint64_t timeout_ms, char** reply_buffer, size_t* reply_buffer_len)\n"
},
{
"name": "NotifyEvent.Ack",
"comment": "Ack sends an acknowledgement with the specified response data to the notfier\nof the NotifyEvent. If a notify is not ack'ed, the originating Notify() call\nblocks and eventiually times out.\n\nImplements:\n int rados_notify_ack(rados_ioctx_t io, const char *o, uint64_t notify_id,\n uint64_t cookie, const char *buf, int buf_len)\n"
},
{
"name": "Conn.WatcherFlush",
"comment": "WatcherFlush flushes all pending notifications of the cluster.\n\nImplements:\n int rados_watch_flush(rados_t cluster)\n"
}
],
"preview_api": [
@ -982,72 +1026,6 @@
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "IOContext.Watch",
"comment": "Watch creates a Watcher for the specified object.\n\nA Watcher receives all notifications that are sent to the object on which it\nhas been created. It exposes two read-only channels: Events() receives all\nthe NotifyEvents and Errors() receives all occuring errors. A typical code\ncreating a Watcher could look like this:\n\n watcher, err := ioctx.Watch(oid)\n go func() { // event handler\n for ne := range watcher.Events() {\n ...\n ne.Ack([]byte(\"response data...\"))\n ...\n }\n }()\n go func() { // error handler\n for err := range watcher.Errors() {\n ... handle err ...\n }\n }()\n\nCAUTION: the Watcher references the IOContext in which it has been created.\nTherefore all watchers must be deleted with the Delete() method before the\nIOContext is being destroyed.\n\nImplements:\n int rados_watch2(rados_ioctx_t io, const char* o, uint64_t* cookie,\n rados_watchcb2_t watchcb, rados_watcherrcb_t watcherrcb, void* arg)\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "IOContext.WatchWithTimeout",
"comment": "WatchWithTimeout creates a watcher on an object. Same as Watcher(), but\ndifferent timeout than the default can be specified.\n\nImplements:\n int rados_watch3(rados_ioctx_t io, const char *o, uint64_t *cookie,\n\t rados_watchcb2_t watchcb, rados_watcherrcb_t watcherrcb, uint32_t timeout,\n\t void *arg);\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "Watcher.ID",
"comment": "ID returns the WatcherId of the Watcher\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "Watcher.Events",
"comment": "Events returns a read-only channel, that receives all notifications that are\nsent to the object of the Watcher.\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "Watcher.Errors",
"comment": "Errors returns a read-only channel, that receives all errors for the Watcher.\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "Watcher.Check",
"comment": "Check on the status of a Watcher.\n\nReturns the time since it was last confirmed. If there is an error, the\nWatcher is no longer valid, and should be destroyed with the Delete() method.\n\nImplements:\n int rados_watch_check(rados_ioctx_t io, uint64_t cookie)\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "Watcher.Delete",
"comment": "Delete the watcher. This closes both the event and error channel.\n\nImplements:\n int rados_unwatch2(rados_ioctx_t io, uint64_t cookie)\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "IOContext.Notify",
"comment": "Notify sends a notification with the provided data to all Watchers of the\nspecified object.\n\nCAUTION: even if the error is not nil. the returned slices\nmight still contain data.\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "IOContext.NotifyWithTimeout",
"comment": "NotifyWithTimeout is like Notify() but with a different timeout than the\ndefault.\n\nImplements:\n int rados_notify2(rados_ioctx_t io, const char* o, const char* buf, int buf_len,\n uint64_t timeout_ms, char** reply_buffer, size_t* reply_buffer_len)\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "NotifyEvent.Ack",
"comment": "Ack sends an acknowledgement with the specified response data to the notfier\nof the NotifyEvent. If a notify is not ack'ed, the originating Notify() call\nblocks and eventiually times out.\n\nImplements:\n int rados_notify_ack(rados_ioctx_t io, const char *o, uint64_t notify_id,\n uint64_t cookie, const char *buf, int buf_len)\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "Conn.WatcherFlush",
"comment": "WatcherFlush flushes all pending notifications of the cluster.\n\nImplements:\n int rados_watch_flush(rados_t cluster)\n",
"added_in_version": "v0.14.0",
"expected_stable_version": "v0.16.0"
},
{
"name": "IOContext.SetLocator",
"comment": "SetLocator sets the key for mapping objects to pgs within an io context.\nUntil a different locator key is set, all objects in this io context will be placed in the same pg.\nTo reset the locator, an empty string must be set.\n\nImplements:\n void rados_ioctx_locator_set_key(rados_ioctx_t io, const char *key);\n",

View File

@ -32,17 +32,6 @@ WriteOp.AssertVersion | v0.14.0 | v0.16.0 |
WriteOp.SetXattr | v0.14.0 | v0.16.0 |
ReadOpOmapGetValsByKeysStep.Next | v0.14.0 | v0.16.0 |
ReadOp.GetOmapValuesByKeys | v0.14.0 | v0.16.0 |
IOContext.Watch | v0.14.0 | v0.16.0 |
IOContext.WatchWithTimeout | v0.14.0 | v0.16.0 |
Watcher.ID | v0.14.0 | v0.16.0 |
Watcher.Events | v0.14.0 | v0.16.0 |
Watcher.Errors | v0.14.0 | v0.16.0 |
Watcher.Check | v0.14.0 | v0.16.0 |
Watcher.Delete | v0.14.0 | v0.16.0 |
IOContext.Notify | v0.14.0 | v0.16.0 |
IOContext.NotifyWithTimeout | v0.14.0 | v0.16.0 |
NotifyEvent.Ack | v0.14.0 | v0.16.0 |
Conn.WatcherFlush | v0.14.0 | v0.16.0 |
IOContext.SetLocator | v0.15.0 | v0.17.0 |
## Package: rbd

View File

@ -1,6 +1,3 @@
//go:build ceph_preview
// +build ceph_preview
package rados
/*

View File

@ -1,6 +1,3 @@
//go:build ceph_preview
// +build ceph_preview
package rados
import (