blob: 63305dfad383a1fe6ad9f9ce5531e1ff77aa3bde [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// 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; //file path
2: required bool isDir; //determine whether it is a directory or a file
3: required i64 size; //file size
4: required bool isSplitable; //false mean indicates that the file is indivisible,
//and the entire file must be imported as a complete map task.
//the return value of the compressed file is 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 {
// return a list of files under a path
TBrokerListResponse listPath(1: TBrokerListPathRequest request);
// delete a file, if the deletion of the file fails, the status code will return an error message
// input:
// path: path to delete file
TBrokerOperationStatus deletePath(1: TBrokerDeletePathRequest request);
// rename the file
TBrokerOperationStatus renamePath(1: TBrokerRenamePathRequest request);
// check if a file exits
TBrokerCheckPathExistResponse checkPathExist(1: TBrokerCheckPathExistRequest request);
// open a file for reading
// input:
// path: file path
// startOffset: read start position
// return:
// fd: The unique identifier of the file read stream in the broker. The user needs to
//carry this fd every time they read it. The reason is that there may be multiple clients
//reading the same file on a broker, so fd is needed to read the file separately identified.
TBrokerOpenReaderResponse openReader(1: TBrokerOpenReaderRequest request);
// read file data
// input:
// fd: returned when open reader
// length: read file length
// offset: the user must carry the offset every time when reading, but this does not
//mean that the user can specify the offset to read. This offset is mainly used by the backend
//to verify whether to read repeatedly.During network communication, it is very likely that
//the user initiates a read, but does not get the result,and then reads it again. It is very
//likely that the first read has already occurred, but the user does not receive the result,
//so the user initiates a second read. The data returned is wrong,but the user cannot perceive it.
// return:
// under normal circumstances, binary data is returned. In abnormal cases, such as the reader is closed,
//the file is read to the end of the file, etc. it needs to be returned through the status code.
TBrokerReadResponse pread(1: TBrokerPReadRequest request);
// position the reader's offset to a specific position
TBrokerOperationStatus seek(1: TBrokerSeekRequest request);
// close reader
TBrokerOperationStatus closeReader(1: TBrokerCloseReaderRequest request);
// open a file to write a stream according to the path. This API is mainly designed for backup
//and restore in the future. At present, this API is not needed for import.
// 1. if the file does not exist then create it and return fd;
// 2. if the file exists, but is a directory, return failure
//the parameters for recursively creating folders are not provided here.
//the default is that if the folder does not exist, it will be created.
// this API is currently considered for backup use only, and has nothing to do with importing.
// input:
// openMode: options to open the write stream:overwrite、create new、append
TBrokerOpenWriterResponse openWriter(1: TBrokerOpenWriterRequest request);
// write data to the file corresponding to fd
TBrokerOperationStatus pwrite(1: TBrokerPWriteRequest request);
// close file write stream
TBrokerOperationStatus closeWriter(1: TBrokerCloseWriterRequest request);
//
TBrokerOperationStatus ping(1: TBrokerPingBrokerRequest request);
}