From d158a8d7d87ecf4ab2be3aa8f59af14049987312 Mon Sep 17 00:00:00 2001 From: lichaoguang973 Date: Thu, 27 Dec 2018 11:22:12 +0800 Subject: [PATCH 1/2] async cache tooling --- tools/scripts/asynccache/AsyncCache.proto | 31 +++ tools/scripts/asynccache/AsyncCache_pb2.py | 214 +++++++++++++++++++++ tools/scripts/asynccache/alluxiosc.c | 160 +++++++++++++++ tools/scripts/asynccache/ava_cache.py | 81 ++++++++ tools/scripts/asynccache/ava_cache.sh | 66 +++++++ tools/scripts/asynccache/mk_alluxiosc.sh | 2 + 6 files changed, 554 insertions(+) create mode 100755 tools/scripts/asynccache/AsyncCache.proto create mode 100755 tools/scripts/asynccache/AsyncCache_pb2.py create mode 100755 tools/scripts/asynccache/alluxiosc.c create mode 100755 tools/scripts/asynccache/ava_cache.py create mode 100755 tools/scripts/asynccache/ava_cache.sh create mode 100755 tools/scripts/asynccache/mk_alluxiosc.sh diff --git a/tools/scripts/asynccache/AsyncCache.proto b/tools/scripts/asynccache/AsyncCache.proto new file mode 100755 index 0000000..914392e --- /dev/null +++ b/tools/scripts/asynccache/AsyncCache.proto @@ -0,0 +1,31 @@ +// Options for caching a block asynchronously +// next available id: 6 +message AsyncCacheRequest { + optional int64 block_id = 1; + // TODO(calvin): source host and port should be replace with WorkerNetAddress + optional string source_host = 2; + optional int32 source_port = 3; + optional OpenUfsBlockOptions open_ufs_block_options = 4; + optional int64 length = 5; +} + +// Options to open a UFS block. +// next available id: 7 +message OpenUfsBlockOptions { + optional string ufs_path = 1; + // The offset of the block in within the file. + optional int64 offset_in_file = 2; + // The block size. + optional int64 block_size = 3; + optional int32 maxUfsReadConcurrency = 4; + optional int64 mountId = 5; + // If set, do not try to cache the block locally when reading the data from the UFS. + optional bool no_cache = 6; + // The client does not need to set this. This is set by the worker. + optional string user = 7; +} + +message LocalBlockOpenResponse { + optional string path = 1; +} + diff --git a/tools/scripts/asynccache/AsyncCache_pb2.py b/tools/scripts/asynccache/AsyncCache_pb2.py new file mode 100755 index 0000000..a014d74 --- /dev/null +++ b/tools/scripts/asynccache/AsyncCache_pb2.py @@ -0,0 +1,214 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: AsyncCache.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='AsyncCache.proto', + package='', + serialized_pb=_b('\n\x10\x41syncCache.proto\"\x95\x01\n\x11\x41syncCacheRequest\x12\x10\n\x08\x62lock_id\x18\x01 \x01(\x03\x12\x13\n\x0bsource_host\x18\x02 \x01(\t\x12\x13\n\x0bsource_port\x18\x03 \x01(\x05\x12\x34\n\x16open_ufs_block_options\x18\x04 \x01(\x0b\x32\x14.OpenUfsBlockOptions\x12\x0e\n\x06length\x18\x05 \x01(\x03\"\xa3\x01\n\x13OpenUfsBlockOptions\x12\x10\n\x08ufs_path\x18\x01 \x01(\t\x12\x16\n\x0eoffset_in_file\x18\x02 \x01(\x03\x12\x12\n\nblock_size\x18\x03 \x01(\x03\x12\x1d\n\x15maxUfsReadConcurrency\x18\x04 \x01(\x05\x12\x0f\n\x07mountId\x18\x05 \x01(\x03\x12\x10\n\x08no_cache\x18\x06 \x01(\x08\x12\x0c\n\x04user\x18\x07 \x01(\t\"&\n\x16LocalBlockOpenResponse\x12\x0c\n\x04path\x18\x01 \x01(\t') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_ASYNCCACHEREQUEST = _descriptor.Descriptor( + name='AsyncCacheRequest', + full_name='AsyncCacheRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='block_id', full_name='AsyncCacheRequest.block_id', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='source_host', full_name='AsyncCacheRequest.source_host', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='source_port', full_name='AsyncCacheRequest.source_port', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='open_ufs_block_options', full_name='AsyncCacheRequest.open_ufs_block_options', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='length', full_name='AsyncCacheRequest.length', index=4, + number=5, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=21, + serialized_end=170, +) + + +_OPENUFSBLOCKOPTIONS = _descriptor.Descriptor( + name='OpenUfsBlockOptions', + full_name='OpenUfsBlockOptions', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='ufs_path', full_name='OpenUfsBlockOptions.ufs_path', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='offset_in_file', full_name='OpenUfsBlockOptions.offset_in_file', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='block_size', full_name='OpenUfsBlockOptions.block_size', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='maxUfsReadConcurrency', full_name='OpenUfsBlockOptions.maxUfsReadConcurrency', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mountId', full_name='OpenUfsBlockOptions.mountId', index=4, + number=5, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='no_cache', full_name='OpenUfsBlockOptions.no_cache', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='OpenUfsBlockOptions.user', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=173, + serialized_end=336, +) + + +_LOCALBLOCKOPENRESPONSE = _descriptor.Descriptor( + name='LocalBlockOpenResponse', + full_name='LocalBlockOpenResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='path', full_name='LocalBlockOpenResponse.path', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + extension_ranges=[], + oneofs=[ + ], + serialized_start=338, + serialized_end=376, +) + +_ASYNCCACHEREQUEST.fields_by_name['open_ufs_block_options'].message_type = _OPENUFSBLOCKOPTIONS +DESCRIPTOR.message_types_by_name['AsyncCacheRequest'] = _ASYNCCACHEREQUEST +DESCRIPTOR.message_types_by_name['OpenUfsBlockOptions'] = _OPENUFSBLOCKOPTIONS +DESCRIPTOR.message_types_by_name['LocalBlockOpenResponse'] = _LOCALBLOCKOPENRESPONSE + +AsyncCacheRequest = _reflection.GeneratedProtocolMessageType('AsyncCacheRequest', (_message.Message,), dict( + DESCRIPTOR = _ASYNCCACHEREQUEST, + __module__ = 'AsyncCache_pb2' + # @@protoc_insertion_point(class_scope:AsyncCacheRequest) + )) +_sym_db.RegisterMessage(AsyncCacheRequest) + +OpenUfsBlockOptions = _reflection.GeneratedProtocolMessageType('OpenUfsBlockOptions', (_message.Message,), dict( + DESCRIPTOR = _OPENUFSBLOCKOPTIONS, + __module__ = 'AsyncCache_pb2' + # @@protoc_insertion_point(class_scope:OpenUfsBlockOptions) + )) +_sym_db.RegisterMessage(OpenUfsBlockOptions) + +LocalBlockOpenResponse = _reflection.GeneratedProtocolMessageType('LocalBlockOpenResponse', (_message.Message,), dict( + DESCRIPTOR = _LOCALBLOCKOPENRESPONSE, + __module__ = 'AsyncCache_pb2' + # @@protoc_insertion_point(class_scope:LocalBlockOpenResponse) + )) +_sym_db.RegisterMessage(LocalBlockOpenResponse) + + +# @@protoc_insertion_point(module_scope) diff --git a/tools/scripts/asynccache/alluxiosc.c b/tools/scripts/asynccache/alluxiosc.c new file mode 100755 index 0000000..fb49cd8 --- /dev/null +++ b/tools/scripts/asynccache/alluxiosc.c @@ -0,0 +1,160 @@ +#define _GNU_SOURCE_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MNT_MAX 100 +char *seed = ".tmp.ava.alluxiosc.tmp"; // keep same with server +char *cache_seed = ".tmp.cache.tmp.ava.alluxiosc.tmp"; // keep same with server + +typedef struct ava_struct { + char *mnt_slots[MNT_MAX]; + int mnt_idx; + int debug; + int query; + int cache; +} ava_struct; + +ava_struct ava; + +FILE* (*my_fopen)(const char *filename, const char* mode); +int (*my_open)(const char *filename, int flags); +int (*my_open64)(const char *filename, int flags); + +int (*my__xstat)(int ver, const char *path, struct stat *buf); +int (*my__xstat64)(int ver, const char *path, struct stat64 *buf); + +void __attribute__ ((constructor)) init(void){ + FILE *file= setmntent("/proc/mounts", "r"); + struct mntent *ent; + + ava.debug = (getenv("alluxiosc_debug") != NULL); + ava.query = (getenv("alluxiosc_query") != NULL); + ava.cache = (getenv("alluxiosc_cache") != NULL); + if (ava.cache) seed = cache_seed; + ava.mnt_idx = 0; + + my_fopen = dlsym(RTLD_NEXT, "fopen"); + my_open = dlsym(RTLD_NEXT, "open"); + my_open64 = dlsym(RTLD_NEXT, "open64"); + my__xstat = dlsym(RTLD_NEXT, "__xstat"); + my__xstat64 = dlsym(RTLD_NEXT, "__xstat64"); + + if (file== NULL) { + perror("setmntent"); + return; + } + + while (NULL != (ent = getmntent(file))) { + if (0 == strcmp("alluxio-fuse", ent->mnt_fsname)) { + ava.mnt_slots[ava.mnt_idx++] = strdup(ent->mnt_dir); + } + } + endmntent(file); +} + +int is_alluxio_file(const char *fullpath) +{ + for (int i = 0; i < ava.mnt_idx; i++) { + char *path = strstr(fullpath, ava.mnt_slots[i]); + if (path == fullpath) { + return 1; + } + } + return 0; +} + +int get_sc(const char *filename, char *sc, int size, int *af) +{ + char buf[PATH_MAX + 1], *path = NULL; + int rc = 0, i = 0; + FILE *f = NULL; + + *af = 0; + if (NULL == realpath(filename, buf)) return 0; + if (!is_alluxio_file(buf)) return 0; + *af = 1; + + strcat(buf, seed); + + if ((f = my_fopen(buf, "r")) && fgets(sc, size, f)) { + i = strlen(sc); + if (sc[i - 1] == '\n') sc[i - 1] = '\0'; + rc = ('/' == sc[0]); + } + if (f) fclose(f); + return rc; +} + +int __xstat(int ver, const char *path, struct stat *buf) +{ + char full[PATH_MAX + 1]; + if (ava.query) { + char sc[PATH_MAX + 1]; + int af, rc = get_sc(path, sc, sizeof(sc), &af); + printf("query=%s\n", sc); + return my__xstat(ver, path, buf); + } + + if (NULL == realpath(path, full)) return my__xstat(ver, path, buf); // error out + if (!is_alluxio_file(full)) return my__xstat(ver, path, buf); + + if (ava.debug) fprintf(stderr, "--- async cache %s\n", full); + strcat(full, seed); + return my__xstat(ver, full, buf); +} + +int __xstat64(int ver, const char *path, struct stat64 *buf) +{ + char full[PATH_MAX + 1]; + if (ava.query) { + char sc[PATH_MAX + 1]; + int af, rc = get_sc(path, sc, sizeof(sc), &af); + printf("query=%s\n", sc); + return my__xstat64(ver, path, buf); + } + + if (NULL == realpath(path, full)) return my__xstat64(ver, path, buf); // error out + if (!is_alluxio_file(full)) return my__xstat64(ver, path, buf); + + if (ava.debug) fprintf(stderr, "--- async cache64 %s\n", full); + strcat(full, seed); + return my__xstat64(ver, full, buf); +} + +FILE* fopen(const char* filename, const char* mode){ + char sc[PATH_MAX + 1]; + memset(sc, 0, sizeof(sc)); + int af, rc = get_sc(filename, sc, sizeof(sc), &af); + if (ava.debug && af) fprintf(stderr, "--- fopen filename=%s, rc=%d, sc=%s\n", filename, rc, sc); + FILE *f = rc ? my_fopen(sc, mode) : NULL; + return f ? f : my_fopen(filename, mode); +} + +int open(const char *filename, int flags) +{ + char sc[PATH_MAX + 1]; + memset(sc, 0, sizeof(sc)); + int af, rc = get_sc(filename, sc, sizeof(sc), &af); + if (ava.debug && af) fprintf(stderr, "--- open filename=%s, rc=%d, sc=%s\n", filename, rc, sc); + int fd = rc ? my_open(sc, flags) : 0; + return fd ? fd : my_open(filename, flags); +} + +int open64(const char *filename, int flags) +{ + char sc[PATH_MAX + 1]; + memset(sc, 0, sizeof(sc)); + int af, rc = get_sc(filename, sc, sizeof(sc), &af); + if (ava.debug && af) fprintf(stderr, "--- open64 filename=%s, rc=%d, sc=%s\n", filename, rc, sc); + int fd = rc ? my_open64(sc, flags) : 0; + return fd ? fd : my_open64(filename, flags); +} + diff --git a/tools/scripts/asynccache/ava_cache.py b/tools/scripts/asynccache/ava_cache.py new file mode 100755 index 0000000..ecc374d --- /dev/null +++ b/tools/scripts/asynccache/ava_cache.py @@ -0,0 +1,81 @@ +#! /usr/bin/python3 +""" +apt-get update +apt-get install -y python3-pip +pip3 install google-apputils +pip3 install protobuf +protoc --proto_path=. --python_out=. AsyncCache.proto +""" + +from AsyncCache_pb2 import AsyncCacheRequest, LocalBlockOpenResponse +import sys +import socket +import struct +import time + +if len(sys.argv) != 4: + print("Usage:", sys.argv[0], "ip port file_list") + sys.exit(-1) + +ip = sys.argv[1] +port = int(sys.argv[2]) +flist = sys.argv[3] + +address = (ip, port) +clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +clientsocket.connect(address) + +TH_HI = 100 +TH_LOW = 50 +ID_PURGE_BLOCK = 0 +ID_QUERY_BLOCK = -1 + + +def async_cache(id, length): + data = AsyncCacheRequest() + data.length = length + data.block_id = id + s = data.SerializeToString() + # (long)length - (int)id - (int)packet_length - packet + clientsocket.sendall(struct.pack('>QII', 16 + len(s), 112, len(s)) + s) + + +def evict(id): + async_cache(id, ID_PURGE_BLOCK) + + +def trim(idlist, low): + rsp = LocalBlockOpenResponse() + while len(idlist) > low: + not_done = [] + for id in idlist: + async_cache(id, ID_QUERY_BLOCK) + result = clientsocket.recv(16) + if result == b'': + raise RuntimeError("socket connection broken") + alen, retid, plen = struct.unpack('>QII', result) + if retid != 106: + raise RuntimeError("not expect id") + result = clientsocket.recv(plen) + rsp.ParseFromString(result) + if rsp.path[0] != '/': + print("done ", id) + else: + not_done.append(id) + evict(id) + idlist = not_done + time.sleep(2) + return idlist + + +idlist = [] +with open(flist, "r") as lines: + for line in lines: + id = int(line.split()[0]) + if len(idlist) >= TH_HI: + idlist = trim(idlist, TH_LOW) + print("evicting ", id) + evict(id) + idlist.append(id) + +trim(idlist, 0) diff --git a/tools/scripts/asynccache/ava_cache.sh b/tools/scripts/asynccache/ava_cache.sh new file mode 100755 index 0000000..72349e5 --- /dev/null +++ b/tools/scripts/asynccache/ava_cache.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +if [ $# -lt 2 ] +then + echo usage "$0 " + exit -1 +fi + +so=$1 +list=$2 +if [ ! -e $so ] +then + echo "so file $so does not exist" + exit -1 +fi +if [ ! -e $list ] +then + echo "list file $list does not exist" + exit -1 +fi + +MAX=50 + +cache=() +trim() { + left=() + for f in ${cache[@]} + do + if [ ! -e "$f" ] + then + echo "remove non existing $f ..." + continue + fi + ok=`alluxiosc_query=1 LD_PRELOAD=$so ls "$f" | grep 'query=/'` + if [ -z "$ok" ] + then + echo "trying to cache again $f ..." + left+=("$f") + alluxiosc_cache=1 LD_PRELOAD=$so ls "$f" > /dev/null & + else + echo "done cache $f ..." + fi + done + cache=(${left[@]}) +} + +while read line +do + while [ ${#cache[@]} -gt $MAX ] + do + sleep 2 + trim + done + + f=`echo $line | awk '{print $1}'` + cache+=("$f") + echo "trying to cache $f ..." + alluxiosc_cache=1 LD_PRELOAD=$so ls "$f" > /dev/null & +done < $list + +while [ ${#cache[@]} -gt 0 ] +do + sleep 1 + trim +done + diff --git a/tools/scripts/asynccache/mk_alluxiosc.sh b/tools/scripts/asynccache/mk_alluxiosc.sh new file mode 100755 index 0000000..0547f58 --- /dev/null +++ b/tools/scripts/asynccache/mk_alluxiosc.sh @@ -0,0 +1,2 @@ +rm alluxiosc.so +gcc -D_GNU_SOURCE -fPIC -shared -O2 alluxiosc.c -o alluxiosc.so -ldl From bc7a8143968cda7ca4c43796f136755cb773a384 Mon Sep 17 00:00:00 2001 From: lichaoguang973 Date: Thu, 27 Dec 2018 11:26:47 +0800 Subject: [PATCH 2/2] rm tools/scripts/asynccache/AsyncCache_pb2.py --- tools/scripts/asynccache/AsyncCache_pb2.py | 214 --------------------- 1 file changed, 214 deletions(-) delete mode 100755 tools/scripts/asynccache/AsyncCache_pb2.py diff --git a/tools/scripts/asynccache/AsyncCache_pb2.py b/tools/scripts/asynccache/AsyncCache_pb2.py deleted file mode 100755 index a014d74..0000000 --- a/tools/scripts/asynccache/AsyncCache_pb2.py +++ /dev/null @@ -1,214 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: AsyncCache.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -from google.protobuf import descriptor_pb2 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='AsyncCache.proto', - package='', - serialized_pb=_b('\n\x10\x41syncCache.proto\"\x95\x01\n\x11\x41syncCacheRequest\x12\x10\n\x08\x62lock_id\x18\x01 \x01(\x03\x12\x13\n\x0bsource_host\x18\x02 \x01(\t\x12\x13\n\x0bsource_port\x18\x03 \x01(\x05\x12\x34\n\x16open_ufs_block_options\x18\x04 \x01(\x0b\x32\x14.OpenUfsBlockOptions\x12\x0e\n\x06length\x18\x05 \x01(\x03\"\xa3\x01\n\x13OpenUfsBlockOptions\x12\x10\n\x08ufs_path\x18\x01 \x01(\t\x12\x16\n\x0eoffset_in_file\x18\x02 \x01(\x03\x12\x12\n\nblock_size\x18\x03 \x01(\x03\x12\x1d\n\x15maxUfsReadConcurrency\x18\x04 \x01(\x05\x12\x0f\n\x07mountId\x18\x05 \x01(\x03\x12\x10\n\x08no_cache\x18\x06 \x01(\x08\x12\x0c\n\x04user\x18\x07 \x01(\t\"&\n\x16LocalBlockOpenResponse\x12\x0c\n\x04path\x18\x01 \x01(\t') -) -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - - - - -_ASYNCCACHEREQUEST = _descriptor.Descriptor( - name='AsyncCacheRequest', - full_name='AsyncCacheRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='block_id', full_name='AsyncCacheRequest.block_id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='source_host', full_name='AsyncCacheRequest.source_host', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='source_port', full_name='AsyncCacheRequest.source_port', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='open_ufs_block_options', full_name='AsyncCacheRequest.open_ufs_block_options', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='length', full_name='AsyncCacheRequest.length', index=4, - number=5, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - extension_ranges=[], - oneofs=[ - ], - serialized_start=21, - serialized_end=170, -) - - -_OPENUFSBLOCKOPTIONS = _descriptor.Descriptor( - name='OpenUfsBlockOptions', - full_name='OpenUfsBlockOptions', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='ufs_path', full_name='OpenUfsBlockOptions.ufs_path', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='offset_in_file', full_name='OpenUfsBlockOptions.offset_in_file', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='block_size', full_name='OpenUfsBlockOptions.block_size', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='maxUfsReadConcurrency', full_name='OpenUfsBlockOptions.maxUfsReadConcurrency', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mountId', full_name='OpenUfsBlockOptions.mountId', index=4, - number=5, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='no_cache', full_name='OpenUfsBlockOptions.no_cache', index=5, - number=6, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='user', full_name='OpenUfsBlockOptions.user', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - extension_ranges=[], - oneofs=[ - ], - serialized_start=173, - serialized_end=336, -) - - -_LOCALBLOCKOPENRESPONSE = _descriptor.Descriptor( - name='LocalBlockOpenResponse', - full_name='LocalBlockOpenResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='path', full_name='LocalBlockOpenResponse.path', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - extension_ranges=[], - oneofs=[ - ], - serialized_start=338, - serialized_end=376, -) - -_ASYNCCACHEREQUEST.fields_by_name['open_ufs_block_options'].message_type = _OPENUFSBLOCKOPTIONS -DESCRIPTOR.message_types_by_name['AsyncCacheRequest'] = _ASYNCCACHEREQUEST -DESCRIPTOR.message_types_by_name['OpenUfsBlockOptions'] = _OPENUFSBLOCKOPTIONS -DESCRIPTOR.message_types_by_name['LocalBlockOpenResponse'] = _LOCALBLOCKOPENRESPONSE - -AsyncCacheRequest = _reflection.GeneratedProtocolMessageType('AsyncCacheRequest', (_message.Message,), dict( - DESCRIPTOR = _ASYNCCACHEREQUEST, - __module__ = 'AsyncCache_pb2' - # @@protoc_insertion_point(class_scope:AsyncCacheRequest) - )) -_sym_db.RegisterMessage(AsyncCacheRequest) - -OpenUfsBlockOptions = _reflection.GeneratedProtocolMessageType('OpenUfsBlockOptions', (_message.Message,), dict( - DESCRIPTOR = _OPENUFSBLOCKOPTIONS, - __module__ = 'AsyncCache_pb2' - # @@protoc_insertion_point(class_scope:OpenUfsBlockOptions) - )) -_sym_db.RegisterMessage(OpenUfsBlockOptions) - -LocalBlockOpenResponse = _reflection.GeneratedProtocolMessageType('LocalBlockOpenResponse', (_message.Message,), dict( - DESCRIPTOR = _LOCALBLOCKOPENRESPONSE, - __module__ = 'AsyncCache_pb2' - # @@protoc_insertion_point(class_scope:LocalBlockOpenResponse) - )) -_sym_db.RegisterMessage(LocalBlockOpenResponse) - - -# @@protoc_insertion_point(module_scope)