You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							678 lines
						
					
					
						
							17 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							678 lines
						
					
					
						
							17 KiB
						
					
					
				
								syntax = "proto3";
							 | 
						|
								
							 | 
						|
								package volume_server_pb;
							 | 
						|
								option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb";
							 | 
						|
								
							 | 
						|
								import "remote.proto";
							 | 
						|
								
							 | 
						|
								//////////////////////////////////////////////////
							 | 
						|
								
							 | 
						|
								service VolumeServer {
							 | 
						|
								    //Experts only: takes multiple fid parameters. This function does not propagate deletes to replicas.
							 | 
						|
								    rpc BatchDelete (BatchDeleteRequest) returns (BatchDeleteResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc VacuumVolumeCheck (VacuumVolumeCheckRequest) returns (VacuumVolumeCheckResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VacuumVolumeCompact (VacuumVolumeCompactRequest) returns (stream VacuumVolumeCompactResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VacuumVolumeCommit (VacuumVolumeCommitRequest) returns (VacuumVolumeCommitResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VacuumVolumeCleanup (VacuumVolumeCleanupRequest) returns (VacuumVolumeCleanupResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc DeleteCollection (DeleteCollectionRequest) returns (DeleteCollectionResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc AllocateVolume (AllocateVolumeRequest) returns (AllocateVolumeResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc VolumeSyncStatus (VolumeSyncStatusRequest) returns (VolumeSyncStatusResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeIncrementalCopy (VolumeIncrementalCopyRequest) returns (stream VolumeIncrementalCopyResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc VolumeMount (VolumeMountRequest) returns (VolumeMountResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeUnmount (VolumeUnmountRequest) returns (VolumeUnmountResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeDelete (VolumeDeleteRequest) returns (VolumeDeleteResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeMarkReadonly (VolumeMarkReadonlyRequest) returns (VolumeMarkReadonlyResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeMarkWritable (VolumeMarkWritableRequest) returns (VolumeMarkWritableResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeConfigure (VolumeConfigureRequest) returns (VolumeConfigureResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeStatus (VolumeStatusRequest) returns (VolumeStatusResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // copy the .idx .dat files, and mount this volume
							 | 
						|
								    rpc VolumeCopy (VolumeCopyRequest) returns (stream VolumeCopyResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc ReadVolumeFileStatus (ReadVolumeFileStatusRequest) returns (ReadVolumeFileStatusResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc CopyFile (CopyFileRequest) returns (stream CopyFileResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc ReceiveFile (stream ReceiveFileRequest) returns (ReceiveFileResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc ReadNeedleBlob (ReadNeedleBlobRequest) returns (ReadNeedleBlobResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc ReadNeedleMeta (ReadNeedleMetaRequest) returns (ReadNeedleMetaResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc WriteNeedleBlob (WriteNeedleBlobRequest) returns (WriteNeedleBlobResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc ReadAllNeedles (ReadAllNeedlesRequest) returns (stream ReadAllNeedlesResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc VolumeTailSender (VolumeTailSenderRequest) returns (stream VolumeTailSenderResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeTailReceiver (VolumeTailReceiverRequest) returns (VolumeTailReceiverResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // erasure coding
							 | 
						|
								    rpc VolumeEcShardsGenerate (VolumeEcShardsGenerateRequest) returns (VolumeEcShardsGenerateResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardsRebuild (VolumeEcShardsRebuildRequest) returns (VolumeEcShardsRebuildResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardsCopy (VolumeEcShardsCopyRequest) returns (VolumeEcShardsCopyResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardsDelete (VolumeEcShardsDeleteRequest) returns (VolumeEcShardsDeleteResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardsMount (VolumeEcShardsMountRequest) returns (VolumeEcShardsMountResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardsUnmount (VolumeEcShardsUnmountRequest) returns (VolumeEcShardsUnmountResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardRead (VolumeEcShardReadRequest) returns (stream VolumeEcShardReadResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcBlobDelete (VolumeEcBlobDeleteRequest) returns (VolumeEcBlobDeleteResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardsToVolume (VolumeEcShardsToVolumeRequest) returns (VolumeEcShardsToVolumeResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeEcShardsInfo (VolumeEcShardsInfoRequest) returns (VolumeEcShardsInfoResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // tiered storage
							 | 
						|
								    rpc VolumeTierMoveDatToRemote (VolumeTierMoveDatToRemoteRequest) returns (stream VolumeTierMoveDatToRemoteResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeTierMoveDatFromRemote (VolumeTierMoveDatFromRemoteRequest) returns (stream VolumeTierMoveDatFromRemoteResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc VolumeServerStatus (VolumeServerStatusRequest) returns (VolumeServerStatusResponse) {
							 | 
						|
								    }
							 | 
						|
								    rpc VolumeServerLeave (VolumeServerLeaveRequest) returns (VolumeServerLeaveResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // remote storage
							 | 
						|
								    rpc FetchAndWriteNeedle (FetchAndWriteNeedleRequest) returns (FetchAndWriteNeedleResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // <experimental> query
							 | 
						|
								    rpc Query (QueryRequest) returns (stream QueriedStripe) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc VolumeNeedleStatus (VolumeNeedleStatusRequest) returns (VolumeNeedleStatusResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    rpc Ping (PingRequest) returns (PingResponse) {
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								//////////////////////////////////////////////////
							 | 
						|
								
							 | 
						|
								message BatchDeleteRequest {
							 | 
						|
								    repeated string file_ids = 1;
							 | 
						|
								    bool skip_cookie_check = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message BatchDeleteResponse {
							 | 
						|
								    repeated DeleteResult results = 1;
							 | 
						|
								}
							 | 
						|
								message DeleteResult {
							 | 
						|
								    string file_id = 1;
							 | 
						|
								    int32 status = 2;
							 | 
						|
								    string error = 3;
							 | 
						|
								    uint32 size = 4;
							 | 
						|
								    uint32 version = 5;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message Empty {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VacuumVolumeCheckRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VacuumVolumeCheckResponse {
							 | 
						|
								    double garbage_ratio = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VacuumVolumeCompactRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    int64 preallocate = 2;
							 | 
						|
								}
							 | 
						|
								message VacuumVolumeCompactResponse {
							 | 
						|
								    int64 processed_bytes = 1;
							 | 
						|
								    float load_avg_1m = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VacuumVolumeCommitRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VacuumVolumeCommitResponse {
							 | 
						|
								    bool is_read_only = 1;
							 | 
						|
								    uint64 volume_size = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VacuumVolumeCleanupRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VacuumVolumeCleanupResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message DeleteCollectionRequest {
							 | 
						|
								    string collection = 1;
							 | 
						|
								}
							 | 
						|
								message DeleteCollectionResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message AllocateVolumeRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    int64 preallocate = 3;
							 | 
						|
								    string replication = 4;
							 | 
						|
								    string ttl = 5;
							 | 
						|
								    uint32 memory_map_max_size_mb = 6;
							 | 
						|
								    string disk_type = 7;
							 | 
						|
								    uint32 version = 8;
							 | 
						|
								}
							 | 
						|
								message AllocateVolumeResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeSyncStatusRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VolumeSyncStatusResponse {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    string replication = 4;
							 | 
						|
								    string ttl = 5;
							 | 
						|
								    uint64 tail_offset = 6;
							 | 
						|
								    uint32 compact_revision = 7;
							 | 
						|
								    uint64 idx_file_size = 8;
							 | 
						|
								    uint32 version = 9;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeIncrementalCopyRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 since_ns = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeIncrementalCopyResponse {
							 | 
						|
								    bytes file_content = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeMountRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VolumeMountResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeUnmountRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VolumeUnmountResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeDeleteRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    bool only_empty = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeDeleteResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeMarkReadonlyRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    bool persist = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeMarkReadonlyResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeMarkWritableRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VolumeMarkWritableResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeConfigureRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string replication = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeConfigureResponse {
							 | 
						|
								    string error = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeStatusRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VolumeStatusResponse {
							 | 
						|
								    bool is_read_only = 1;
							 | 
						|
								    uint64 volume_size = 2;
							 | 
						|
								    uint64 file_count = 3;
							 | 
						|
								    uint64 file_deleted_count = 4;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeCopyRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    string replication = 3;
							 | 
						|
								    string ttl = 4;
							 | 
						|
								    string source_data_node = 5;
							 | 
						|
								    string disk_type = 6;
							 | 
						|
								    int64 io_byte_per_second = 7;
							 | 
						|
								}
							 | 
						|
								message VolumeCopyResponse {
							 | 
						|
								    uint64 last_append_at_ns = 1;
							 | 
						|
								    int64 processed_bytes = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message CopyFileRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string ext = 2;
							 | 
						|
								    uint32 compaction_revision = 3;
							 | 
						|
								    uint64 stop_offset = 4;
							 | 
						|
								    string collection = 5;
							 | 
						|
								    bool is_ec_volume = 6;
							 | 
						|
								    bool ignore_source_file_not_found = 7;
							 | 
						|
								}
							 | 
						|
								message CopyFileResponse {
							 | 
						|
								    bytes file_content = 1;
							 | 
						|
								    int64 modified_ts_ns = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message ReceiveFileRequest {
							 | 
						|
								    oneof data {
							 | 
						|
								        ReceiveFileInfo info = 1;
							 | 
						|
								        bytes file_content = 2;
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message ReceiveFileInfo {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string ext = 2;
							 | 
						|
								    string collection = 3;
							 | 
						|
								    bool is_ec_volume = 4;
							 | 
						|
								    uint32 shard_id = 5;
							 | 
						|
								    uint64 file_size = 6;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message ReceiveFileResponse {
							 | 
						|
								    uint64 bytes_written = 1;
							 | 
						|
								    string error = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message ReadNeedleBlobRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    int64 offset = 3; // actual offset
							 | 
						|
								    int32 size = 4;
							 | 
						|
								}
							 | 
						|
								message ReadNeedleBlobResponse {
							 | 
						|
								    bytes needle_blob = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message ReadNeedleMetaRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 needle_id = 2;
							 | 
						|
								    int64 offset = 3; // actual offset
							 | 
						|
								    int32 size = 4;
							 | 
						|
								}
							 | 
						|
								message ReadNeedleMetaResponse {
							 | 
						|
								    uint32 cookie = 1;
							 | 
						|
								    uint64 last_modified = 2;
							 | 
						|
								    uint32 crc = 3;
							 | 
						|
								    string ttl = 4;
							 | 
						|
								    uint64 append_at_ns = 5;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message WriteNeedleBlobRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 needle_id = 2;
							 | 
						|
								    int32 size = 3;
							 | 
						|
								    bytes needle_blob = 4;
							 | 
						|
								}
							 | 
						|
								message WriteNeedleBlobResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message ReadAllNeedlesRequest {
							 | 
						|
								    repeated uint32 volume_ids = 1;
							 | 
						|
								}
							 | 
						|
								message ReadAllNeedlesResponse {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 needle_id = 2;
							 | 
						|
								    uint32 cookie = 3;
							 | 
						|
								    bytes needle_blob = 5;
							 | 
						|
								    bool needle_blob_compressed = 6;
							 | 
						|
								    uint64 last_modified = 7;
							 | 
						|
								    uint32 crc = 8;
							 | 
						|
								    bytes name = 9;
							 | 
						|
								    bytes mime = 10;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeTailSenderRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 since_ns = 2;
							 | 
						|
								    uint32 idle_timeout_seconds = 3;
							 | 
						|
								}
							 | 
						|
								message VolumeTailSenderResponse {
							 | 
						|
								    bytes needle_header = 1;
							 | 
						|
								    bytes needle_body = 2;
							 | 
						|
								    bool is_last_chunk = 3;
							 | 
						|
								    uint32 version = 4;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeTailReceiverRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 since_ns = 2;
							 | 
						|
								    uint32 idle_timeout_seconds = 3;
							 | 
						|
								    string source_volume_server = 4;
							 | 
						|
								}
							 | 
						|
								message VolumeTailReceiverResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsGenerateRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsGenerateResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsRebuildRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsRebuildResponse {
							 | 
						|
								    repeated uint32 rebuilt_shard_ids = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsCopyRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    repeated uint32 shard_ids = 3;
							 | 
						|
								    bool copy_ecx_file = 4;
							 | 
						|
								    string source_data_node = 5;
							 | 
						|
								    bool copy_ecj_file = 6;
							 | 
						|
								    bool copy_vif_file = 7;
							 | 
						|
								    uint32 disk_id = 8;  // Target disk ID for storing EC shards
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsCopyResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsDeleteRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    repeated uint32 shard_ids = 3;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsDeleteResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsMountRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    repeated uint32 shard_ids = 3;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsMountResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsUnmountRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    repeated uint32 shard_ids = 3;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsUnmountResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardReadRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint32 shard_id = 2;
							 | 
						|
								    int64 offset = 3;
							 | 
						|
								    int64 size = 4;
							 | 
						|
								    uint64 file_key = 5;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardReadResponse {
							 | 
						|
								    bytes data = 1;
							 | 
						|
								    bool is_deleted = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcBlobDeleteRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    uint64 file_key = 3;
							 | 
						|
								    uint32 version = 4;
							 | 
						|
								}
							 | 
						|
								message VolumeEcBlobDeleteResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsToVolumeRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsToVolumeResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeEcShardsInfoRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message VolumeEcShardsInfoResponse {
							 | 
						|
								    repeated EcShardInfo ec_shard_infos = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message EcShardInfo {
							 | 
						|
								    uint32 shard_id = 1;
							 | 
						|
								    int64 size = 2;
							 | 
						|
								    string collection = 3;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message ReadVolumeFileStatusRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								}
							 | 
						|
								message ReadVolumeFileStatusResponse {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 idx_file_timestamp_seconds = 2;
							 | 
						|
								    uint64 idx_file_size = 3;
							 | 
						|
								    uint64 dat_file_timestamp_seconds = 4;
							 | 
						|
								    uint64 dat_file_size = 5;
							 | 
						|
								    uint64 file_count = 6;
							 | 
						|
								    uint32 compaction_revision = 7;
							 | 
						|
								    string collection = 8;
							 | 
						|
								    string disk_type = 9;
							 | 
						|
								    VolumeInfo volume_info = 10;
							 | 
						|
								    uint32 version = 11;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message DiskStatus {
							 | 
						|
								    string dir = 1;
							 | 
						|
								    uint64 all = 2;
							 | 
						|
								    uint64 used = 3;
							 | 
						|
								    uint64 free = 4;
							 | 
						|
								    float percent_free = 5;
							 | 
						|
								    float percent_used = 6;
							 | 
						|
								    string disk_type = 7;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message MemStatus {
							 | 
						|
								    int32 goroutines = 1;
							 | 
						|
								    uint64 all = 2;
							 | 
						|
								    uint64 used = 3;
							 | 
						|
								    uint64 free = 4;
							 | 
						|
								    uint64 self = 5;
							 | 
						|
								    uint64 heap = 6;
							 | 
						|
								    uint64 stack = 7;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// tired storage on volume servers
							 | 
						|
								message RemoteFile {
							 | 
						|
								    string backend_type = 1;
							 | 
						|
								    string backend_id = 2;
							 | 
						|
								    string key = 3;
							 | 
						|
								    uint64 offset = 4;
							 | 
						|
								    uint64 file_size = 5;
							 | 
						|
								    uint64 modified_time = 6;
							 | 
						|
								    string extension = 7;
							 | 
						|
								}
							 | 
						|
								message VolumeInfo {
							 | 
						|
								    repeated RemoteFile files = 1;
							 | 
						|
								    uint32 version = 2;
							 | 
						|
								    string replication = 3;
							 | 
						|
								    uint32 bytes_offset = 4;
							 | 
						|
								    int64 dat_file_size = 5; // store the original dat file size
							 | 
						|
								    uint64 expire_at_sec = 6; // expiration time of ec volume
							 | 
						|
								    bool read_only = 7;
							 | 
						|
								}
							 | 
						|
								message OldVersionVolumeInfo {
							 | 
						|
								    repeated RemoteFile files = 1;
							 | 
						|
								    uint32 version = 2;
							 | 
						|
								    string replication = 3;
							 | 
						|
								    uint32 BytesOffset = 4;
							 | 
						|
								    int64 dat_file_size = 5; // store the original dat file size
							 | 
						|
								    uint64 DestroyTime = 6; // expiration time of ec volume
							 | 
						|
								    bool read_only = 7;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// tiered storage
							 | 
						|
								message VolumeTierMoveDatToRemoteRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    string destination_backend_name = 3;
							 | 
						|
								    bool keep_local_dat_file = 4;
							 | 
						|
								}
							 | 
						|
								message VolumeTierMoveDatToRemoteResponse {
							 | 
						|
								    int64 processed = 1;
							 | 
						|
								    float processedPercentage = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeTierMoveDatFromRemoteRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    string collection = 2;
							 | 
						|
								    bool keep_remote_dat_file = 3;
							 | 
						|
								}
							 | 
						|
								message VolumeTierMoveDatFromRemoteResponse {
							 | 
						|
								    int64 processed = 1;
							 | 
						|
								    float processedPercentage = 2;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeServerStatusRequest {
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								message VolumeServerStatusResponse {
							 | 
						|
								    repeated DiskStatus disk_statuses = 1;
							 | 
						|
								    MemStatus memory_status = 2;
							 | 
						|
								    string version = 3;
							 | 
						|
								    string data_center = 4;
							 | 
						|
								    string rack = 5;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeServerLeaveRequest {
							 | 
						|
								}
							 | 
						|
								message VolumeServerLeaveResponse {
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// remote storage
							 | 
						|
								message FetchAndWriteNeedleRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 needle_id = 2;
							 | 
						|
								    uint32 cookie = 3;
							 | 
						|
								    int64 offset = 4;
							 | 
						|
								    int64 size = 5;
							 | 
						|
								    message Replica {
							 | 
						|
								        string url = 1;
							 | 
						|
								        string public_url = 2;
							 | 
						|
								        int32 grpc_port = 3;
							 | 
						|
								    }
							 | 
						|
								    repeated Replica replicas = 6;
							 | 
						|
								    string auth = 7;
							 | 
						|
								    // remote conf
							 | 
						|
								    remote_pb.RemoteConf remote_conf = 15;
							 | 
						|
								    remote_pb.RemoteStorageLocation remote_location = 16;
							 | 
						|
								}
							 | 
						|
								message FetchAndWriteNeedleResponse {
							 | 
						|
								    string e_tag = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// select on volume servers
							 | 
						|
								message QueryRequest {
							 | 
						|
								    repeated string selections = 1;
							 | 
						|
								    repeated string from_file_ids = 2;
							 | 
						|
								    message Filter {
							 | 
						|
								        string field = 1;
							 | 
						|
								        string operand = 2;
							 | 
						|
								        string value = 3;
							 | 
						|
								    }
							 | 
						|
								    Filter filter = 3;
							 | 
						|
								
							 | 
						|
								    message InputSerialization {
							 | 
						|
								        // NONE | GZIP | BZIP2
							 | 
						|
								        string compression_type = 1;
							 | 
						|
								        message CSVInput {
							 | 
						|
								            string file_header_info = 1; // Valid values: NONE | USE | IGNORE
							 | 
						|
								            string record_delimiter = 2; // Default: \n
							 | 
						|
								            string field_delimiter = 3; // Default: ,
							 | 
						|
								            string quote_character = 4; // Default: "
							 | 
						|
								            string quote_escape_character = 5; // Default: "
							 | 
						|
								            string comments = 6; // Default: #
							 | 
						|
								            // If true, records might contain record delimiters within quote characters
							 | 
						|
								            bool allow_quoted_record_delimiter = 7; // default False.
							 | 
						|
								        }
							 | 
						|
								        message JSONInput {
							 | 
						|
								            string type = 1; // Valid values: DOCUMENT | LINES
							 | 
						|
								        }
							 | 
						|
								        message ParquetInput {
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        CSVInput csv_input = 2;
							 | 
						|
								        JSONInput json_input = 3;
							 | 
						|
								        ParquetInput parquet_input = 4;
							 | 
						|
								    }
							 | 
						|
								    InputSerialization input_serialization = 4;
							 | 
						|
								
							 | 
						|
								    message OutputSerialization {
							 | 
						|
								        message CSVOutput {
							 | 
						|
								            string quote_fields = 1; // Valid values: ALWAYS | ASNEEDED
							 | 
						|
								            string record_delimiter = 2; // Default: \n
							 | 
						|
								            string field_delimiter = 3; // Default: ,
							 | 
						|
								            string quote_character = 4; // Default: "
							 | 
						|
								            string quote_escape_character = 5; // Default: "
							 | 
						|
								        }
							 | 
						|
								        message JSONOutput {
							 | 
						|
								            string record_delimiter = 1;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        CSVOutput csv_output = 2;
							 | 
						|
								        JSONOutput json_output = 3;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    OutputSerialization output_serialization = 5;
							 | 
						|
								}
							 | 
						|
								message QueriedStripe {
							 | 
						|
								    bytes records = 1;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message VolumeNeedleStatusRequest {
							 | 
						|
								    uint32 volume_id = 1;
							 | 
						|
								    uint64 needle_id = 2;
							 | 
						|
								}
							 | 
						|
								message VolumeNeedleStatusResponse {
							 | 
						|
								    uint64 needle_id = 1;
							 | 
						|
								    uint32 cookie = 2;
							 | 
						|
								    uint32 size = 3;
							 | 
						|
								    uint64 last_modified = 4;
							 | 
						|
								    uint32 crc = 5;
							 | 
						|
								    string ttl = 6;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								message PingRequest {
							 | 
						|
								    string target = 1; // default to ping itself
							 | 
						|
								    string target_type = 2;
							 | 
						|
								}
							 | 
						|
								message PingResponse {
							 | 
						|
								    int64 start_time_ns = 1;
							 | 
						|
								    int64 remote_time_ns = 2;
							 | 
						|
								    int64 stop_time_ns = 3;
							 | 
						|
								}
							 |