Kosmos Filesystem中有关读后写的问题
来源:互联网 发布:黄播软件 编辑:程序博客网 时间:2024/06/05 02:58
KFS给出的测试程序中,所有的测试都是针对单独的读文件操作和单独的写文件操作进行的测试,然后读文件和写文件交叉进行会出现什么现象呢?
在读文件之后马上进行写文件,会造成系统阻塞!
测试:
在一个程序中创建一个新文件或者打开一个原有文件,然后对该文件进行以下序列的操作:写->读->写->读。
运行过程:
GETLAYOUT
SIZE
ALLOCATE
SIZE
WRITE_ID_ALLOC
WRITE_PREPARE
data transfer...
WRITE_SYNC
LEASE_ACQUIRE
READ
WRITE_ID_ALLOC
WRITE_PREPARE
data transfer...
WRITE_SYNC XXX:-1001
结果:
程序在WRITE_SYNC一步出现错误,返回值为-1001。
分析:
libClient程序无论在打开文件或关闭文件时,都不会与服务器进行通信,而只有在读写文件的时候才向服务器申请对应的lease。在ALLOCATE一步,服务端会检查该文件对应的chunk是否有读写lease,如果都没有,则分配写lease,用于写文件。而在读文件时,libClient程序会发送ALLOCATE命令到服务端,此时服务端并不进行任何检查(检查是否有写lease或者读lease),直接插入读lease到lease列表中。
这样,当再次调用写操作时,由于lease列表中已经存在读lease(并且这些lease没有失效),则无法进行下一次的写操作,返回错误。
解决方案之一:
在open和close函数中加入对服务器端状态进行清空的操作,保证lease及时释放;对于每一个文件的操作,只能进行读或写中的一个,而不能同时进行;当有一个用户读取文件时,其他用户可以进行读操作,任何用户不能进行写操作;有一个用户进行写操作时,其他用户不能进行读操作。
解决方案二:
在完成每一次的读操作之后,进行lease的清除操作。
注:还没有分析完整代码,可能会有错误!仅供参考。
- Kosmos Filesystem中有关读后写的问题
- HDFS(Hadoop distributed filesystem)和KFS (Kosmos distributed filesystem)比较
- java中有关日期的显示问题
- vc中有关备份数据库的问题
- Oracle中有关表主键的问题
- 有关GIS中坐标的问题
- 有关GIS中坐标的问题
- 有关电子书中图片的问题
- 有关Gridview中统计数据的问题
- JSP中有关乱码问题的解决
- 有关JSP中中文乱码的问题
- 有关java中resultSet的问题
- linux中有关僵尸进程的问题
- 有关android java 中package 的问题
- jsp中有关于超链接的问题
- grails中令人费解的有关问题
- 有关Repeater控件中选择的问题
- linux中有关僵尸进程的问题
- 请大家多多指教
- [ZZ]給程式設計師的Vim入門圖解說明
- 解决密码框和文本框长度不一致的问题
- 3.1.2跳跃的精灵——小工具
- 我要迎接明天的太阳
- Kosmos Filesystem中有关读后写的问题
- 配置Qt-embedded-4.5.1的configure选项
- 《win32汇编》时钟之C代码
- 角谷猜想
- ajax创建XMLHttpRequest对象
- C和汇编的一些基础知识
- 禅院钟声
- RSS格式规范
- EVC程序中文显示