了解LeaseManager类必须了解Lease结构:
Lease的基本结构变量有:
1. private final String holder; 持有lease的client name
2. private long lastUpdate; 用于检查租约是否过期
3. private final Collection<String> paths = new TreeSet<String>(); 该client持有的租约的文件
Lease的基本方法有:
1. private String findPath(INodeFileUnderConstruction pendingFile)
查找是否该文件持有租约
2. boolean removePath(String src)
将该src的文件的租约
LeaseManager类用来管理文件系统的租约设置,租约是用来对文件系统中并发的文件读写进行加锁机制控制。
1. private final FSNamesystem fsnamesystem;
整个文件系统的操作以及目录树。
2. private SortedMap<String, Lease> leases = new TreeMap<String, Lease>();
保存了LeaseHolder到Lease的映射。
3. private SortedSet<Lease> sortedLeases = new TreeSet<Lease>();
保存了所有lease
4. private SortedMap<String, Lease> sortedLeasesByPath = new TreeMap<String, Lease>();
保存了path到Lease的映射。
重要的方法有:
1. Lease getLease(String holder)
根据holder名称,即client名称,获取其拥有的lease
2. synchronized Lease addLease(String holder, String src)
根据src文件名和holder client name添加租约
3. public Lease getLeaseByPath(String src)
根据Path名称获取拥有的lease
4. synchronized Lease addLease(String holder, String src)
根据client名称添加lease
5. synchronized void removeLease(Lease lease, String src)
根据src路径移除lease
6. synchronized Lease reassignLease(Lease lease, String src, String newHolder)
重新分配租约,将租约分配给新的client
7. synchronized String findPath(INodeFileUnderConstruction pendingFile)
根据INodeFile获取其租约对应的path路径
另外,LeaseManager内部有一个监听的线程class Monitor implements Runnable
用来监听是否lease有效性
Lease的基本结构变量有:
1. private final String holder; 持有lease的client name
2. private long lastUpdate; 用于检查租约是否过期
3. private final Collection<String> paths = new TreeSet<String>(); 该client持有的租约的文件
Lease的基本方法有:
1. private String findPath(INodeFileUnderConstruction pendingFile)
查找是否该文件持有租约
2. boolean removePath(String src)
将该src的文件的租约
LeaseManager类用来管理文件系统的租约设置,租约是用来对文件系统中并发的文件读写进行加锁机制控制。
1. private final FSNamesystem fsnamesystem;
整个文件系统的操作以及目录树。
2. private SortedMap<String, Lease> leases = new TreeMap<String, Lease>();
保存了LeaseHolder到Lease的映射。
3. private SortedSet<Lease> sortedLeases = new TreeSet<Lease>();
保存了所有lease
4. private SortedMap<String, Lease> sortedLeasesByPath = new TreeMap<String, Lease>();
保存了path到Lease的映射。
重要的方法有:
1. Lease getLease(String holder)
根据holder名称,即client名称,获取其拥有的lease
2. synchronized Lease addLease(String holder, String src)
根据src文件名和holder client name添加租约
3. public Lease getLeaseByPath(String src)
根据Path名称获取拥有的lease
4. synchronized Lease addLease(String holder, String src)
根据client名称添加lease
5. synchronized void removeLease(Lease lease, String src)
根据src路径移除lease
6. synchronized Lease reassignLease(Lease lease, String src, String newHolder)
重新分配租约,将租约分配给新的client
7. synchronized String findPath(INodeFileUnderConstruction pendingFile)
根据INodeFile获取其租约对应的path路径
另外,LeaseManager内部有一个监听的线程class Monitor implements Runnable
用来监听是否lease有效性