blob: f3525badfdd39bb5d62631fa70fbdb7565ac7b8d [file] [log] [blame]
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
namespace java org.apache.doris.thrift
namespace cpp doris
enum TBrokerOperationStatusCode {
OK = 0;
END_OF_FILE = 301;
// user input error
NOT_AUTHORIZED = 401;
DUPLICATE_REQUEST = 402;
INVALID_INPUT_OFFSET = 403; // user input offset is invalid, is large than file length
INVALID_INPUT_FILE_PATH = 404;
INVALID_ARGUMENT = 405;
// internal server error
FILE_NOT_FOUND = 501;
TARGET_STORAGE_SERVICE_ERROR = 502; // the target storage service error
OPERATION_NOT_SUPPORTED = 503; // the api is not implemented
}
struct TBrokerOperationStatus {
1: required TBrokerOperationStatusCode statusCode;
2: optional string message;
}
enum TBrokerVersion {
VERSION_ONE = 1;
}
enum TBrokerOpenMode {
APPEND = 1;
}
struct TBrokerFileStatus {
1: required string path; // 文件的路径
2: required bool isDir; // 表示文件是个目录还是文件?
3: required i64 size; // 文件的大小
4: required bool isSplitable; // 如果这个值是false,那么表示这个文件不可以切分,整个文件必须作为
// 一个完整的map task来进行导入,如果是一个压缩文件返回值也是false
}
struct TBrokerFD {
1: required i64 high;
2: required i64 low;
}
struct TBrokerListResponse {
1: required TBrokerOperationStatus opStatus;
2: optional list<TBrokerFileStatus> files;
}
struct TBrokerOpenReaderResponse {
1: required TBrokerOperationStatus opStatus;
2: optional TBrokerFD fd;
3: optional i64 size; // file size(Deprecated)
}
struct TBrokerReadResponse {
1: required TBrokerOperationStatus opStatus;
2: optional binary data;
}
struct TBrokerOpenWriterResponse {
1: required TBrokerOperationStatus opStatus;
2: optional TBrokerFD fd;
}
struct TBrokerCheckPathExistResponse {
1: required TBrokerOperationStatus opStatus;
2: required bool isPathExist;
}
struct TBrokerListPathRequest {
1: required TBrokerVersion version;
2: required string path;
3: required bool isRecursive;
4: required map<string,string> properties;
5: optional bool fileNameOnly;
}
struct TBrokerDeletePathRequest {
1: required TBrokerVersion version;
2: required string path;
3: required map<string,string> properties;
}
struct TBrokerRenamePathRequest {
1: required TBrokerVersion version;
2: required string srcPath;
3: required string destPath;
4: required map<string,string> properties;
}
struct TBrokerCheckPathExistRequest {
1: required TBrokerVersion version;
2: required string path;
3: required map<string,string> properties;
}
struct TBrokerOpenReaderRequest {
1: required TBrokerVersion version;
2: required string path;
3: required i64 startOffset;
4: required string clientId;
5: required map<string,string> properties;
}
struct TBrokerPReadRequest {
1: required TBrokerVersion version;
2: required TBrokerFD fd;
3: required i64 offset;
4: required i64 length;
}
struct TBrokerSeekRequest {
1: required TBrokerVersion version;
2: required TBrokerFD fd;
3: required i64 offset;
}
struct TBrokerCloseReaderRequest {
1: required TBrokerVersion version;
2: required TBrokerFD fd;
}
struct TBrokerOpenWriterRequest {
1: required TBrokerVersion version;
2: required string path;
3: required TBrokerOpenMode openMode;
4: required string clientId;
5: required map<string,string> properties;
}
struct TBrokerPWriteRequest {
1: required TBrokerVersion version;
2: required TBrokerFD fd;
3: required i64 offset;
4: required binary data;
}
struct TBrokerCloseWriterRequest {
1: required TBrokerVersion version;
2: required TBrokerFD fd;
}
struct TBrokerPingBrokerRequest {
1: required TBrokerVersion version;
2: required string clientId;
}
service TPaloBrokerService {
// 返回一个路径下的文件列表
TBrokerListResponse listPath(1: TBrokerListPathRequest request);
// 删除一个文件,如果删除文件失败,status code会返回error信息
// input:
// path: 删除文件的路径
TBrokerOperationStatus deletePath(1: TBrokerDeletePathRequest request);
// 将文件重命名
TBrokerOperationStatus renamePath(1: TBrokerRenamePathRequest request);
// 检查一个文件是否存在
TBrokerCheckPathExistResponse checkPathExist(1: TBrokerCheckPathExistRequest request);
// 打开一个文件用来读取
// input:
// path: 文件的路径
// startOffset: 读取的起始位置
// return:
// fd: 在broker内对这个文件读取流的唯一标识,用户每次读取的时候都需要带着这个fd,原因是一个broker
// 上可能有多个client端在读取同一个文件,所以需要用fd来分别标识。
TBrokerOpenReaderResponse openReader(1: TBrokerOpenReaderRequest request);
// 读取文件数据
// input:
// fd: open reader时返回的fd
// length: 读取的长度
// offset: 用户读取时必须每次带着offset,但是这并不表示用户可以指定offset来读取,这个offset主要是后端
// 用来验证是否重复读取时使用的。 在网络通信时很有可能用户发起一次读取,但是并没有得到result,
// 然后又读取了一次,很有可能第一次读取已经发生了,只是用户没有收到结果,这样用户发起第二次读取,
// 返回的数据是错的,但是用户无法感知。
// return:
// 正常情况下返回binary数据,异常情况,比如reader关闭了,文件读取到文件末尾了等,需要通过status code来返回
// 这里的binary以后会封装到一个response对象里。
TBrokerReadResponse pread(1: TBrokerPReadRequest request);
// 将reader的offset定位到特定的位置
TBrokerOperationStatus seek(1: TBrokerSeekRequest request);
// 将reader关闭
TBrokerOperationStatus closeReader(1: TBrokerCloseReaderRequest request);
// 根据path打开一个文件写入流,这个API主要是为以后的backup restore设计的,目前导入来看不需要这个API
// 1. 如果文件不存在那么就创建,并返回fd;
// 2. 如果文件存在,但是是一个directory,那么返回失败
// 这里不提供递归创建文件夹的参数,默认就是文件夹如果不存在,那么就创建
// 这个API 目前考虑只是为了备份使用的,跟导入无关。
// input:
// openMode: 打开写入流的方式,可选项:overwrite, create new, append等
TBrokerOpenWriterResponse openWriter(1: TBrokerOpenWriterRequest request);
// 向fd对应的文件中写入数据
TBrokerOperationStatus pwrite(1: TBrokerPWriteRequest request);
// 将文件写入流关闭
TBrokerOperationStatus closeWriter(1: TBrokerCloseWriterRequest request);
//
TBrokerOperationStatus ping(1: TBrokerPingBrokerRequest request);
}