| /** |
| * 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.distributedlog.thrift.service |
| |
| /* Response stats codes */ |
| enum StatusCode { |
| /* 2xx: action requested by the client was received, understood, accepted and processed successfully. */ |
| |
| /* standard response for successful requests. */ |
| SUCCESS = 200, |
| |
| /* 3xx: client must take additional action to complete the request. */ |
| |
| /* client closed. */ |
| CLIENT_CLOSED = 301, |
| /* found the stream in a different server, a redirection is required by client. */ |
| FOUND = 302, |
| |
| /* 4xx: client seems to have erred. */ |
| |
| /* request is denied for some reason */ |
| REQUEST_DENIED = 403, |
| /* request record too large */ |
| TOO_LARGE_RECORD = 413, |
| |
| /* 5xx: server failed to fulfill an apparently valid request. */ |
| |
| /* Generic error message, given when no more specific message is suitable. */ |
| INTERNAL_SERVER_ERROR = 500, |
| /* Not implemented */ |
| NOT_IMPLEMENTED = 501, |
| /* Already Closed Exception */ |
| ALREADY_CLOSED = 502, |
| /* Service is currently unavailable (because it is overloaded or down for maintenance). */ |
| SERVICE_UNAVAILABLE = 503, |
| /* Locking exception */ |
| LOCKING_EXCEPTION = 504, |
| /* ZooKeeper Errors */ |
| ZOOKEEPER_ERROR = 505, |
| /* Metadata exception */ |
| METADATA_EXCEPTION = 506, |
| /* BK Transmit Error */ |
| BK_TRANSMIT_ERROR = 507, |
| /* Flush timeout */ |
| FLUSH_TIMEOUT = 508, |
| /* Log empty */ |
| LOG_EMPTY = 509, |
| /* Log not found */ |
| LOG_NOT_FOUND = 510, |
| /* Truncated Transactions */ |
| TRUNCATED_TRANSACTION = 511, |
| /* End of Stream */ |
| END_OF_STREAM = 512, |
| /* Transaction Id Out of Order */ |
| TRANSACTION_OUT_OF_ORDER = 513, |
| /* Write exception */ |
| WRITE_EXCEPTION = 514, |
| /* Stream Unavailable */ |
| STREAM_UNAVAILABLE = 515, |
| /* Write cancelled exception */ |
| WRITE_CANCELLED_EXCEPTION = 516, |
| /* over-capacity/backpressure */ |
| OVER_CAPACITY = 517, |
| /** stream exists but is not ready (recovering etc.). |
| the difference between NOT_READY and UNAVAILABLE is that UNAVAILABLE |
| indicates the stream is no longer owned by the proxy and we should |
| redirect. NOT_READY indicates the stream exist at the proxy but isn't |
| eady for writes. */ |
| STREAM_NOT_READY = 518, |
| /* Region Unavailable */ |
| REGION_UNAVAILABLE = 519, |
| /* Invalid Enveloped Entry */ |
| INVALID_ENVELOPED_ENTRY = 520, |
| /* Unsupported metadata version */ |
| UNSUPPORTED_METADATA_VERSION = 521, |
| /* Log Already Exists */ |
| LOG_EXISTS = 522, |
| /* Checksum failed on the request */ |
| CHECKSUM_FAILED = 523, |
| /* Overcapacity: too many streams */ |
| TOO_MANY_STREAMS = 524, |
| /* Log Segment Not Found */ |
| LOG_SEGMENT_NOT_FOUND = 525, |
| /* End of Log Segment */ |
| END_OF_LOG_SEGMENT = 526, |
| /* Log Segment Is Truncated */ |
| LOG_SEGMENT_IS_TRUNCATED = 527, |
| |
| /* 6xx: unexpected */ |
| |
| UNEXPECTED = 600, |
| INTERRUPTED = 601, |
| INVALID_STREAM_NAME = 602, |
| ILLEGAL_STATE = 603, |
| |
| /* 10xx: reader exceptions */ |
| |
| RETRYABLE_READ = 1000, |
| LOG_READ_ERROR = 1001, |
| /* Read cancelled exception */ |
| READ_CANCELLED_EXCEPTION = 1002, |
| } |
| |
| /* Response Header */ |
| struct ResponseHeader { |
| 1: required StatusCode code; |
| 2: optional string errMsg; |
| 3: optional string location; |
| } |
| |
| /* Write Response */ |
| struct WriteResponse { |
| 1: required ResponseHeader header; |
| 2: optional string dlsn; |
| } |
| |
| /* Bulk write response */ |
| struct BulkWriteResponse { |
| 1: required ResponseHeader header; |
| 2: optional list<WriteResponse> writeResponses; |
| } |
| |
| /* Write Context */ |
| struct WriteContext { |
| 1: optional set<string> triedHosts; |
| 2: optional i64 crc32; |
| 3: optional bool isRecordSet; |
| } |
| |
| /* HeartBeat Options */ |
| struct HeartbeatOptions { |
| 1: optional bool sendHeartBeatToReader; |
| } |
| |
| /* Server Status */ |
| enum ServerStatus { |
| /* service is writing and accepting new streams */ |
| WRITE_AND_ACCEPT = 100, |
| /* service is only writing to old streams, not accepting new streams */ |
| WRITE_ONLY = 200, |
| /* service is shutting down, will not write */ |
| DOWN = 300, |
| } |
| |
| /* Server Info */ |
| struct ServerInfo { |
| 1: optional map<string, string> ownerships; |
| 2: optional ServerStatus serverStatus; |
| } |
| |
| /* Client Info */ |
| struct ClientInfo { |
| 1: optional string streamNameRegex; |
| 2: optional bool getOwnerships; |
| } |
| |
| service DistributedLogService { |
| |
| /* Deprecated */ |
| ServerInfo handshake(); |
| |
| ServerInfo handshakeWithClientInfo(ClientInfo clientInfo); |
| |
| /* Deprecated */ |
| WriteResponse heartbeat(string stream, WriteContext ctx); |
| |
| WriteResponse heartbeatWithOptions(string stream, WriteContext ctx, HeartbeatOptions options); |
| |
| /* Deprecated */ |
| WriteResponse write(string stream, binary data); |
| |
| WriteResponse writeWithContext(string stream, binary data, WriteContext ctx); |
| |
| BulkWriteResponse writeBulkWithContext(string stream, list<binary> data, WriteContext ctx); |
| |
| WriteResponse truncate(string stream, string dlsn, WriteContext ctx); |
| |
| WriteResponse release(string stream, WriteContext ctx); |
| |
| WriteResponse create(string stream, WriteContext ctx); |
| |
| WriteResponse delete(string stream, WriteContext ctx); |
| |
| WriteResponse getOwner(string stream, WriteContext ctx); |
| |
| /* Admin Methods */ |
| void setAcceptNewStream(bool enabled); |
| } |