InterDatanodeProtocol.proto 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. /**
  19. * These .proto interfaces are private and stable.
  20. * Please see http://wiki.apache.org/hadoop/Compatibility
  21. * for what changes are allowed for a *stable* .proto interface.
  22. */
  23. // This file contains protocol buffers that are used throughout HDFS -- i.e.
  24. // by the client, server, and data transfer protocols.
  25. option java_package = "org.apache.hadoop.hdfs.protocol.proto";
  26. option java_outer_classname = "InterDatanodeProtocolProtos";
  27. option java_generic_services = true;
  28. option java_generate_equals_and_hash = true;
  29. package hadoop.hdfs;
  30. import "hdfs.proto";
  31. /**
  32. * Block with location information and new generation stamp
  33. * to be used for recovery.
  34. */
  35. message InitReplicaRecoveryRequestProto {
  36. required RecoveringBlockProto block = 1;
  37. }
  38. /**
  39. * Repica recovery information
  40. */
  41. message InitReplicaRecoveryResponseProto {
  42. required bool replicaFound = 1;
  43. // The following entries are not set if there was no replica found.
  44. optional ReplicaStateProto state = 2; // State of the replica
  45. optional BlockProto block = 3; // block information
  46. }
  47. /**
  48. * Update replica with new generation stamp and length
  49. */
  50. message UpdateReplicaUnderRecoveryRequestProto {
  51. required ExtendedBlockProto block = 1; // Block identifier
  52. required uint64 recoveryId = 2; // New genstamp of the replica
  53. required uint64 newLength = 3; // New length of the replica
  54. }
  55. /**
  56. * Response returns updated block information
  57. */
  58. message UpdateReplicaUnderRecoveryResponseProto {
  59. optional string storageUuid = 1; // ID of the storage that stores replica
  60. }
  61. /**
  62. * Protocol used between datanodes for block recovery.
  63. *
  64. * See the request and response for details of rpc call.
  65. */
  66. service InterDatanodeProtocolService {
  67. /**
  68. * Initialize recovery of a replica
  69. */
  70. rpc initReplicaRecovery(InitReplicaRecoveryRequestProto)
  71. returns(InitReplicaRecoveryResponseProto);
  72. /**
  73. * Update a replica with new generation stamp and length
  74. */
  75. rpc updateReplicaUnderRecovery(UpdateReplicaUnderRecoveryRequestProto)
  76. returns(UpdateReplicaUnderRecoveryResponseProto);
  77. }