项目:hadoop-EAR
文件:FSDirectory.java
/**
* Retrieves a list of random files with some information.
*
* @param percent
* the percent of files to return
* @return the list of files
*/
public List<FileStatusExtended> getRandomFileStats(double percent) {
readLock();
try {
List<FileStatusExtended> stats = new LinkedList<FileStatusExtended>();
for (INodeFile file : getRandomFiles(percent)) {
try {
String path = file.getFullPathName();
FileStatus stat = createFileStatus(path,file);
Lease lease = this.getFSNamesystem().leaseManager.getLeaseByPath(path);
String holder = (lease == null) ? null : lease.getHolder();
long hardlinkId = (file instanceof INodeHardLinkFile) ? ((INodeHardLinkFile) file)
.getHardLinkID() : -1;
stats.add(new FileStatusExtended(stat,file.getBlocks(),holder,hardlinkId));
} catch (IOException ioe) {
// the file has already been deleted; ingore it
}
}
return stats;
} finally {
readUnlock();
}
}
/**
* This is invoked when a lease expires. On lease expiry,* all the files that were written from that dfsclient should be
* recovered.
*/
void internalReleaseLease(Lease lease,String src,INodeFileUnderConstruction pendingFile) throws IOException {
if (lease.hasPath()) {
// make a copy of the paths because internalReleaseLeaSEOne removes
// pathnames from the lease record.
String[] leasePaths = new String[lease.getPaths().size()];
lease.getPaths().toArray(leasePaths);
LOG.info("Recovering lease: " + lease + " for paths "
+ Arrays.toString(leasePaths));
for (String p: leasePaths) {
internalReleaseLeaSEOne(lease,p);
}
} else {
internalReleaseLeaSEOne(lease,src,pendingFile,false);
}
}
/**
* Serializes leases.
*/
void saveFilesUnderConstruction(DataOutputStream out) throws IOException {
synchronized (leaseManager) {
out.writeInt(leaseManager.countPath()); // write the size
for (Lease lease : leaseManager.getSortedLeases()) {
for(String path : lease.getPaths()) {
// verify that path exists in namespace
INode node = dir.getFileINode(path);
if (node == null) {
throw new IOException("saveLeases found path " + path +
" but no matching entry in namespace.");
}
if (!node.isUnderConstruction()) {
throw new IOException("saveLeases found path " + path +
" but is not under construction.");
}
INodeFileUnderConstruction cons = (INodeFileUnderConstruction) node;
FSImage.writeINodeUnderConstruction(out,cons,path);
}
}
}
}
项目:RDFS
文件:FSDirectory.java
/**
* Retrieves a list of random files with some information.
*
* @param maxFiles
* the maximum number of files to return
* @return the list of files
*/
public List<FileStatusExtended> getRandomFileStats(int maxFiles) {
readLock();
try {
List<FileStatusExtended> stats = new LinkedList<FileStatusExtended>();
for (INodeFile file : getRandomFiles(maxFiles)) {
String path = file.getFullPathName();
FileStatus stat = createFileStatus(path,file);
Lease lease = this.getFSNamesystem().leaseManager.getLeaseByPath(path);
String holder = (lease == null) ? null : lease.getHolder();
stats.add(new FileStatusExtended(stat,holder));
}
return stats;
} finally {
readUnlock();
}
}
/**
* This is invoked when a lease expires. On lease expiry,false);
}
}
/**
* Serializes leases.
*/
void saveFilesUnderConstruction(DataOutputStream out) throws IOException {
synchronized (leaseManager) {
out.writeInt(leaseManager.countPath()); // write the size
for (Lease lease : leaseManager.getSortedLeases()) {
for(String path : lease.getPaths()) {
// verify that path exists in namespace
INode node = dir.getFileINode(path);
if (node == null) {
throw new IOException("saveLeases found path " + path +
" but no matching entry in namespace.");
}
if (!node.isUnderConstruction()) {
throw new IOException("saveLeases found path " + path +
" but is not under construction.");
}
INodeFileUnderConstruction cons = (INodeFileUnderConstruction) node;
FSImage.writeINodeUnderConstruction(out,path);
}
}
}
}
/**
* Serializes leases.
*/
void saveFilesUnderConstruction(DataOutputStream out) throws IOException {
synchronized (leaseManager) {
out.writeInt(leaseManager.countPath()); // write the size
for (Lease lease : leaseManager.getSortedLeases()) {
for(String path : lease.getPaths()) {
// verify that path exists in namespace
INode node = dir.getFileINode(path);
if (node == null) {
throw new IOException("saveLeases found path " + path +
" but no matching entry in namespace.");
}
if (!node.isUnderConstruction()) {
throw new IOException("saveLeases found path " + path +
" but is not under construction.");
}
INodeFileUnderConstruction cons = (INodeFileUnderConstruction) node;
FSImage.writeINodeUnderConstruction(out,path);
}
}
}
}
/**
* Serializes leases.
*/
void saveFilesUnderConstruction(DataOutputStream out) throws IOException {
synchronized (leaseManager) {
out.writeInt(leaseManager.countPath()); // write the size
for (Lease lease : leaseManager.getSortedLeases()) {
for(String path : lease.getPaths()) {
// verify that path exists in namespace
INode node = dir.getFileINode(path);
if (node == null) {
throw new IOException("saveLeases found path " + path +
" but no matching entry in namespace.");
}
if (!node.isUnderConstruction()) {
throw new IOException("saveLeases found path " + path +
" but is not under construction.");
}
INodeFileUnderConstruction cons = (INodeFileUnderConstruction) node;
FSImage.writeINodeUnderConstruction(out,path);
}
}
}
}
项目:hadoop
文件:NameNodeAdapter.java
/**
* @return the timestamp of the last renewal of the given lease,* or -1 in the case that the lease doesn't exist.
*/
public static long getLeaserenewalTime(NameNode nn,String path) {
LeaseManager lm = nn.getNamesystem().leaseManager;
Lease l = lm.getLeaseByPath(path);
if (l == null) {
return -1;
}
return l.getLastUpdate();
}
项目:aliyun-oss-hadoop-fs
文件:NameNodeAdapter.java
public static Lease getLeaseForPath(NameNode nn,String path) {
final FSNamesystem fsn = nn.getNamesystem();
INode inode;
try {
inode = fsn.getFSDirectory().getINode(path,false);
} catch (UnresolvedLinkException e) {
throw new RuntimeException("Lease manager should not support symlinks");
}
return inode == null ? null : fsn.leaseManager.getLease((INodeFile) inode);
}
项目:big-c
文件:NameNodeAdapter.java
private Lease reassignLease(Lease lease,String newHolder,INodeFile pendingFile) {
assert hasWriteLock();
if(newHolder == null)
return lease;
// The following transaction is not synced. Make sure it's sync'ed later.
logReassignLease(lease.getHolder(),newHolder);
return reassignLeaseInternal(lease,newHolder,pendingFile);
}
项目:hadoop-2.6.0-cdh5.4.3
文件:NameNodeAdapter.java
public OpenFilesInfo getopenFiles() throws IOException {
List <FileStatusExtended> openFiles = new ArrayList <FileStatusExtended>();
for (Lease lease : leaseManager.getSortedLeases()) {
for (String path : lease.getPaths()) {
FileStatusExtended stat = this.getFileInfoExtended(path,lease.getHolder());
if (stat != null) {
openFiles.add(stat);
}
}
}
return new OpenFilesInfo(openFiles,this.getGenerationStamp());
}
Lease reassignLease(Lease lease,INodeFileUnderConstruction pendingFile) {
if(newHolder == null)
return lease;
pendingFile.setClientName(newHolder);
return leaseManager.reassignLease(lease,newHolder);
}
private Lease reassignLease(Lease lease,INodeFileUnderConstruction pendingFile) {
assert hasWriteLock();
if(newHolder == null)
return lease;
// The following transaction is not synced. Make sure it's sync'ed later.
logReassignLease(lease.getHolder(),pendingFile);
}
项目:hadoop-plus
文件:NameNodeAdapter.java
private Lease reassignLease(Lease lease,pendingFile);
}
/**
* Get the total number of COMPLETE blocks in the system.
* For safe mode only complete blocks are counted.
*/
private long getCompleteBlocksTotal() {
// Calculate number of blocks under construction
long numUCBlocks = 0;
readLock();
try {
for (Lease lease : leaseManager.getSortedLeases()) {
for (String path : lease.getPaths()) {
final INodeFile cons;
try {
cons = dir.getINode(path).asFile();
Preconditions.checkState(cons.isUnderConstruction());
} catch (UnresolvedLinkException e) {
throw new AssertionError("Lease files should reside on this FS");
}
BlockInfo[] blocks = cons.getBlocks();
if(blocks == null)
continue;
for(BlockInfo b : blocks) {
if(!b.isComplete())
numUCBlocks++;
}
}
}
LOG.info("Number of blocks under construction: " + numUCBlocks);
return getBlocksTotal() - numUCBlocks;
} finally {
readUnlock();
}
}
项目:FlexMap
文件:NameNodeAdapter.java
private Lease reassignLease(Lease lease,pendingFile);
}
项目:hadoop-TCP
文件:NameNodeAdapter.java
/**
* This is invoked when a lease expires. On lease expiry,String src) throws IOException {
if (lease.hasPath()) {
// make a copy of the paths because internalReleaseLeaSEOne removes
// pathnames from the lease record.
String[] leasePaths = new String[lease.getPaths().size()];
lease.getPaths().toArray(leasePaths);
for (String p: leasePaths) {
internalReleaseLeaSEOne(lease,src);
}
}
private Lease reassignLease(Lease lease,newHolder);
}
private Lease reassignLease(Lease lease,pendingFile);
}
项目:hardfs
文件:NameNodeAdapter.java
private Lease reassignLease(Lease lease,pendingFile);
}
/**
* Get the total number of COMPLETE blocks in the system.
* For safe mode only complete blocks are counted.
*/
private long getCompleteBlocksTotal() {
// Calculate number of blocks under construction
long numUCBlocks = 0;
readLock();
try {
for (Lease lease : leaseManager.getSortedLeases()) {
for (String path : lease.getPaths()) {
final INodeFile cons;
try {
cons = dir.getINode(path).asFile();
Preconditions.checkState(cons.isUnderConstruction());
} catch (UnresolvedLinkException e) {
throw new AssertionError("Lease files should reside on this FS");
}
BlockInfo[] blocks = cons.getBlocks();
if(blocks == null)
continue;
for(BlockInfo b : blocks) {
if(!b.isComplete())
numUCBlocks++;
}
}
}
LOG.info("Number of blocks under construction: " + numUCBlocks);
return getBlocksTotal() - numUCBlocks;
} finally {
readUnlock();
}
}
项目:hadoop-on-lustre2
文件:NameNodeAdapter.java
Lease reassignLease(Lease lease,newHolder);
}
/**
* Serializes leases.
*/
void saveFilesUnderConstruction(DataOutputStream out) throws IOException {
synchronized (leaseManager) {
out.writeInt(leaseManager.countPath()); // write the size
for (Lease lease : leaseManager.getSortedLeases()) {
for(String path : lease.getPaths()) {
// verify that path exists in namespace
INode node;
try {
node = dir.getFileINode(path);
} catch (UnresolvedLinkException e) {
throw new AssertionError("Lease files should reside on this FS");
}
if (node == null) {
throw new IOException("saveLeases found path " + path +
" but no matching entry in namespace.");
}
if (!node.isUnderConstruction()) {
throw new IOException("saveLeases found path " + path +
" but is not under construction.");
}
INodeFileUnderConstruction cons = (INodeFileUnderConstruction) node;
FSImageSerialization.writeINodeUnderConstruction(out,path);
}
}
}
}
public OpenFilesInfo getopenFiles() throws IOException {
List <FileStatusExtended> openFiles = new ArrayList <FileStatusExtended>();
for (Lease lease : leaseManager.getSortedLeases()) {
for (String path : lease.getPaths()) {
FileStatusExtended stat = this.getFileInfoExtended(path,this.getGenerationStamp());
}
Lease reassignLease(Lease lease,newHolder);
}
/**
* Serializes leases.
*/
void saveFilesUnderConstruction(SaveNamespaceContext ctx,DataOutputStream out) throws IOException {
synchronized (leaseManager) {
out.writeInt(leaseManager.countPath()); // write the size
LightWeightLinkedSet<Lease> sortedLeases = leaseManager.getSortedLeases();
Iterator<Lease> itr = sortedLeases.iterator();
while (itr.hasNext()) {
ctx.checkCancelled();
Lease lease = itr.next();
for (String path : lease.getPaths()) {
// verify that path exists in namespace
INode node = dir.getFileINode(path);
if (node == null) {
throw new IOException("saveLeases found path " + path +
" but no matching entry in namespace.");
}
if (!node.isUnderConstruction()) {
throw new IOException("saveLeases found path " + path +
" but is not under construction.");
}
INodeFileUnderConstruction cons = (INodeFileUnderConstruction) node;
FSImageSerialization.writeINodeUnderConstruction(out,path);
}
}
}
}
/**
* This is invoked when a lease expires. On lease expiry,src);
}
}
private Lease reassignLease(Lease lease,newHolder);
}
private Lease reassignLease(Lease lease,INodeFile pendingFile) {
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。