Re: Bug report: unexpected behavior when executing Lua object class

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the explanation Greg. I think that having even 64 bytes
would be useful for most scenarios I can think of, and in the worst
case it could be used to provide a unique identifier to retrieve a
larger blob.

On Mon, Jun 5, 2017 at 11:04 AM, Gregory Farnum <gfarnum@xxxxxxxxxx> wrote:
>
>
> On Mon, Jun 5, 2017 at 10:43 AM Noah Watkins <noahwatkins@xxxxxxxxx> wrote:
>>
>> I haven't taken the time to really grok why the limitation exists
>> (e.g. i'd be interested in to know if it's fundamental). There is a
>> comment here:
>>
>> https://github.com/ceph/ceph/blob/master/src/osd/PrimaryLogPG.cc#L3221
>
>
> We need to send back identical data if an operation is retried (because,
> say, an OSD failed and we're sending it to the new primary). That's not
> possible if an op performs a read (which it returns) and then write, because
> that (or a later op) may have overwritten the data being read.
>
> Fixing it would require we persist the entire returned bufferlist, which
> isn't feasible in general. There's a proposal that gets floated periodically
> about letting write ops return up to 64 bytes or something, and persisting
> those in the pglog for reliable delivery on retries. But I don't recall if
> anybody's actually made progress on it. (We did get *closer* to real work
> last time, at least.)
> -Greg
>
>>
>>
>>
>> - Noah
>>
>> On Sat, Jun 3, 2017 at 8:18 PM, Zheyuan Chen <zchen137@xxxxxxxx> wrote:
>> >> Unfortunately, this isn't a bug. Rados clears any returned data from
>> >> an object class method if the operation also writes to the object.
>> >
>> > Do you have any idea why RADOS behaves like this?
>> >
>> >
>> >
>> > On Sat, Jun 3, 2017 at 9:30 AM, Noah Watkins <noahwatkins@xxxxxxxxx>
>> > wrote:
>> >>
>> >> Comments inline
>> >>
>> >> > ---------- Forwarded message ----------
>> >> > From: Zheyuan Chen <zchen137@xxxxxxxx>
>> >> > Date: Sat, Jun 3, 2017 at 1:45 PM
>> >> > Subject:  Bug report: unexpected behavior when executing
>> >> > Lua object class
>> >> > To: ceph-users@xxxxxxxxxxxxxx
>> >> >
>> >> > Bug 1: I can not get returned output in the first script. "data" is
>> >> > always empty.
>> >> >
>> >> >> import rados, json
>> >> >> cluster = rados.Rados(conffile='')
>> >> >> cluster.connect()
>> >> >> ioctx = cluster.open_ioctx('data')
>> >> >> cmd = {
>> >> >>     "script": """
>> >> >>         function test(input, output)
>> >> >>             data = bufferlist.new()
>> >> >>             data:append("test")
>> >> >>             objclass.write_full(data, #data)
>> >> >>             output:append("Here is the return value")
>> >> >>         end
>> >> >>         objclass.register(test)
>> >> >>     """,
>> >> >>     "handler": "test",
>> >> >>     "input": "",
>> >> >> }
>> >> >> # I can not get returned data
>> >> >> ret, data = ioctx.execute('test', 'lua', 'eval_json',
>> >> >> json.dumps(cmd))
>> >> >> print ret, data
>> >>
>> >> Unfortunately, this isn't a bug. Rados clears any returned data from
>> >> an object class method if the operation also writes to the object.
>> >>
>> >> > Bug 2:
>> >> > The returned mtime is always 0.
>> >>
>> >> This might be a bug, but there are a few things to rule out. Did you
>> >> write to the object before running stat? There is also a test case
>> >> here: can you try to run them?
>> >>
>> >>
>> >>
>> >> https://github.com/ceph/ceph/blob/master/src/test/cls_lua/test_cls_lua.cc#L679
>> >>
>> >> - Noah
>> >
>> >
>> _______________________________________________
>> ceph-users mailing list
>> ceph-users@xxxxxxxxxxxxxx
>> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com



[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux