|
@@ -48,6 +48,7 @@ import org.apache.hadoop.hdfs.protocol.OpenFilesIterator.OpenFilesType;
|
|
|
import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;
|
|
|
import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier;
|
|
|
import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenSelector;
|
|
|
+import org.apache.hadoop.hdfs.server.namenode.ha.ReadOnly;
|
|
|
import org.apache.hadoop.hdfs.server.protocol.DatanodeStorageReport;
|
|
|
import org.apache.hadoop.io.EnumSetWritable;
|
|
|
import org.apache.hadoop.io.Text;
|
|
@@ -128,6 +129,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly(atimeAffected = true)
|
|
|
LocatedBlocks getBlockLocations(String src, long offset, long length)
|
|
|
throws IOException;
|
|
|
|
|
@@ -137,6 +139,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
FsServerDefaults getServerDefaults() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -277,6 +280,7 @@ public interface ClientProtocol {
|
|
|
* @return All the in-use block storage policies currently.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
BlockStoragePolicy[] getStoragePolicies() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -319,6 +323,7 @@ public interface ClientProtocol {
|
|
|
* If file/dir <code>src</code> is not found
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
BlockStoragePolicy getStoragePolicy(String path) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -685,6 +690,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
DirectoryListing getListing(String src, byte[] startAfter,
|
|
|
boolean needLocation) throws IOException;
|
|
|
|
|
@@ -695,6 +701,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
SnapshottableDirectoryStatus[] getSnapshottableDirListing()
|
|
|
throws IOException;
|
|
|
|
|
@@ -775,6 +782,7 @@ public interface ClientProtocol {
|
|
|
* </ul>
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
long[] getStats() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -782,6 +790,7 @@ public interface ClientProtocol {
|
|
|
* in the filesystem.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
ReplicatedBlockStats getReplicatedBlockStats() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -789,6 +798,7 @@ public interface ClientProtocol {
|
|
|
* in the filesystem.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
ECBlockGroupStats getECBlockGroupStats() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -798,6 +808,7 @@ public interface ClientProtocol {
|
|
|
* otherwise all datanodes if type is ALL.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
DatanodeInfo[] getDatanodeReport(HdfsConstants.DatanodeReportType type)
|
|
|
throws IOException;
|
|
|
|
|
@@ -805,6 +816,7 @@ public interface ClientProtocol {
|
|
|
* Get a report on the current datanode storages.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
DatanodeStorageReport[] getDatanodeStorageReport(
|
|
|
HdfsConstants.DatanodeReportType type) throws IOException;
|
|
|
|
|
@@ -817,6 +829,7 @@ public interface ClientProtocol {
|
|
|
* a symlink.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
long getPreferredBlockSize(String filename)
|
|
|
throws IOException;
|
|
|
|
|
@@ -971,6 +984,7 @@ public interface ClientProtocol {
|
|
|
* cookie returned from the previous call.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
CorruptFileBlocks listCorruptFileBlocks(String path, String cookie)
|
|
|
throws IOException;
|
|
|
|
|
@@ -1006,6 +1020,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
HdfsFileStatus getFileInfo(String src) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1020,6 +1035,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
boolean isFileClosed(String src) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1036,6 +1052,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
HdfsFileStatus getFileLinkInfo(String src) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1050,6 +1067,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
HdfsLocatedFileStatus getLocatedFileInfo(String src, boolean needBlockToken)
|
|
|
throws IOException;
|
|
|
|
|
@@ -1064,6 +1082,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
ContentSummary getContentSummary(String path) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1176,6 +1195,7 @@ public interface ClientProtocol {
|
|
|
* or an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
String getLinkTarget(String path) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1245,6 +1265,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
DataEncryptionKey getDataEncryptionKey() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1313,6 +1334,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException on error
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
SnapshotDiffReport getSnapshotDiffReport(String snapshotRoot,
|
|
|
String fromSnapshot, String toSnapshot) throws IOException;
|
|
|
|
|
@@ -1340,6 +1362,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException on error
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
SnapshotDiffReportListing getSnapshotDiffReportListing(String snapshotRoot,
|
|
|
String fromSnapshot, String toSnapshot, byte[] startPath, int index)
|
|
|
throws IOException;
|
|
@@ -1386,6 +1409,7 @@ public interface ClientProtocol {
|
|
|
* @return A batch of CacheDirectiveEntry objects.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
BatchedEntries<CacheDirectiveEntry> listCacheDirectives(
|
|
|
long prevId, CacheDirectiveInfo filter) throws IOException;
|
|
|
|
|
@@ -1427,6 +1451,7 @@ public interface ClientProtocol {
|
|
|
* @return A batch of CachePoolEntry objects.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
BatchedEntries<CachePoolEntry> listCachePools(String prevPool)
|
|
|
throws IOException;
|
|
|
|
|
@@ -1473,6 +1498,7 @@ public interface ClientProtocol {
|
|
|
* Gets the ACLs of files and directories.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
AclStatus getAclStatus(String src) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1486,6 +1512,7 @@ public interface ClientProtocol {
|
|
|
* Get the encryption zone for a path.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
EncryptionZone getEZForPath(String src)
|
|
|
throws IOException;
|
|
|
|
|
@@ -1497,6 +1524,7 @@ public interface ClientProtocol {
|
|
|
* @return Batch of encryption zones.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
BatchedEntries<EncryptionZone> listEncryptionZones(
|
|
|
long prevId) throws IOException;
|
|
|
|
|
@@ -1521,6 +1549,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
BatchedEntries<ZoneReencryptionStatus> listReencryptionStatus(long prevId)
|
|
|
throws IOException;
|
|
|
|
|
@@ -1554,6 +1583,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
List<XAttr> getXAttrs(String src, List<XAttr> xAttrs)
|
|
|
throws IOException;
|
|
|
|
|
@@ -1569,6 +1599,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
List<XAttr> listXAttrs(String src)
|
|
|
throws IOException;
|
|
|
|
|
@@ -1603,6 +1634,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException see specific implementation
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
void checkAccess(String path, FsAction mode) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1611,6 +1643,7 @@ public interface ClientProtocol {
|
|
|
* the starting point for the inotify event stream.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
long getCurrentEditLogTxid() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1618,6 +1651,7 @@ public interface ClientProtocol {
|
|
|
* transactions for txids equal to or greater than txid.
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
EventBatchList getEditsFromTxid(long txid) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1675,6 +1709,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
ErasureCodingPolicyInfo[] getErasureCodingPolicies() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1683,6 +1718,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
Map<String, String> getErasureCodingCodecs() throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1693,6 +1729,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
ErasureCodingPolicy getErasureCodingPolicy(String src) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1704,6 +1741,11 @@ public interface ClientProtocol {
|
|
|
|
|
|
/**
|
|
|
* Get {@link QuotaUsage} rooted at the specified directory.
|
|
|
+ *
|
|
|
+ * Note: due to HDFS-6763, standby/observer doesn't keep up-to-date info
|
|
|
+ * about quota usage, and thus even though this is ReadOnly, it can only be
|
|
|
+ * directed to the active namenode.
|
|
|
+ *
|
|
|
* @param path The string representation of the path
|
|
|
*
|
|
|
* @throws AccessControlException permission denied
|
|
@@ -1713,6 +1755,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException If an I/O error occurred
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly(activeOnly = true)
|
|
|
QuotaUsage getQuotaUsage(String path) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1726,6 +1769,7 @@ public interface ClientProtocol {
|
|
|
*/
|
|
|
@Idempotent
|
|
|
@Deprecated
|
|
|
+ @ReadOnly
|
|
|
BatchedEntries<OpenFileEntry> listOpenFiles(long prevId) throws IOException;
|
|
|
|
|
|
/**
|
|
@@ -1740,6 +1784,7 @@ public interface ClientProtocol {
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Idempotent
|
|
|
+ @ReadOnly
|
|
|
BatchedEntries<OpenFileEntry> listOpenFiles(long prevId,
|
|
|
EnumSet<OpenFilesType> openFilesTypes, String path) throws IOException;
|
|
|
|