Thanks for the suggestion Marshall! zoo_get() returns ZOK all the same except that the data is silently truncated to fit the buffer size. However, what I can do is to compare the buffer size to Stat.dataLength returned along with zoo_get().
On Friday, January 10, 2014 12:13 PM, Marshall McMullen <[email protected]> wrote: I think this is a pretty common use-case actually. If one client has put something into zookeeper and another client is trying to pull it out it may not know it advance how big the data client#1 put in. What we do locally is have a wrapper around zoo_get that starts with a reasonable default for buffer_len. If it fails b/c the data is larger than that, then you can inspect the size inside the returned Stat* and then re-issue the get with the correct value. On Fri, Jan 10, 2014 at 10:02 AM, Raúl Gutiérrez Segalés <[email protected]> wrote: On 10 January 2014 08:04, Kah-Chan Low <[email protected]> wrote: > >> int zoo_get(zhandle_t *zh, const char *path, int watch, char *buffer, >> int* buffer_len, struct Stat *stat) >> >> Developer has to anticipate the max. size of the node data. Is there any >> way to get around this? >> > >In which case would you not know the size? > >-rgs >
