Dscope: Bulutli server tizimlarida haqiqiy ma'lumotlarning buzilishini aniqlash


Download 0.68 Mb.
Pdf ko'rish
bet20/44
Sana18.06.2023
Hajmi0.68 Mb.
#1572260
1   ...   16   17   18   19   20   21   22   23   ...   44
Bog'liq
dscope SOCC18

4
java.nio
1
yoki interfeyslar
java.util
2
Preks sinfi
1
DataInput oilasi
Fayl
InputStream oilasi
Reader oilasi
Buer oilasi
kanallari. Kanallar oilasi
Iterator, Roÿyxat roÿyxati,
Navbat, Set,
StringTokenizer
12
java.io
10
8
'
.
135 i 3 2 = i 2 7 + 1
535
o'tish
ÿ 531 qator
/ / S oot IR
127 $b6 = i 1 cmp i 0 128
agar
$b6 >= 0 boÿlsa ÿ139 qatorga
oÿtish / /
i 0 istheu ppe r bogÿlangan
136 i 3 7 = i 3 2 + 1
// i 1 istheloopind ex
129 . . .
130 i 7 = i 1 + 1
/ / S oot IR
530 $ i 5 = r 1
531
agar
i 1 >= $ i 5
oÿtish
liniyasi #536 / /
i 1 istheloopind ex
532 $ i 9 =
; / /
$ i 9 isthestrid
533 i 1 = i 1 + $ i 9
131 i 1 2 = i 7 + 1
< B yte B uffer : limit > / /
$ i 5 istheu ppe r bog'langan
132 i 1 7 = i 1 2 + 1
133 i 2 2 = i 1 7 + 1
saretestridlar
134 i 2 7 = i 2 2 + 1
137 i 1 = i 3 7 + 1 / /
hammasi
1 138
o'tish
qatori ÿ127
. . .
Machine Translated by Google


#HDFSÿ5438( v0 . 2 3 . 0 )
. . .
1689 }
1667
boo lean
fayl C omplete =
noto'g'ri ;
1668
wh
i le
(! C fayli to'liq) { C fayli to'liq = dfs C
lient. nom tugunlari. c om pl ete (srcdfs C lient. clien tName
last );
// DFSO u tpu tS t ream. jav
a
1665
xususiy vo id
F ile (Ex tende dBl ock
oxirgi )
{
1669
. . .
,
. . .
Fayl
Chegaralarni tekshiring
Indeksni tiklash
o'qish*
o'qing
-
pop
-
ip
chegarasi aniq
aniq
qo'shing
-
Teskari
indeks
aniq
yangi
-
yangi
bor*
yaratmoq*
DataInput
oilasi
qolgan*
-
-
yangi
yangi
yozish
-
Stak
yangi
10-rasm: HDFS-5438 xatosining kod qismi. ExtendedBlock oxirgi buzilganda fileComplete
o'zgaruvchisi hech qachon rost bo'lmaydi va bu DFSOutputStream da innite sikliga sabab bo'ladi.
pozitsiya
olish*
qo'yish*
Roÿyxat va oÿrnatish
so'rov
-
Durang
Keyingisi
olish*
o'qish*
Buer
oilasi
yangi
yangi
yangi
Keyingi StringTokenizer
InputStream
pozitsiya
bu*
Navbat
pop
Chegaralarni yangilash
yangi
yangi
yangi
Kanallar
oilasi
qo'shish
iterator
elementlari
Sinf
o'qish*
yangi
o'qing
olib tashlash
Takrorlovchi &
API turlari va nomi
& Kitobxonlar
oilasi
dublikat
ajratish
yangisini olib tashlang
-
bor*, bor*
mumkin, olish*
o'qish*
yangi
oer
-
bo'sh
yangi
qayta o'rnatish
so'rov
Oldinga
indeks
qayta o'rnatish
yozish
olib tashlash
Ro'yxatga olish
bor*
,
-
-
DFSOutputStream, blokirovka qilish jarayonining to'liqligini tekshirish
uchun NameNode so'rovini davom ettiradi (1669-qator). Oxirgi blok
buzilganda, NameNode uni diskka kirita olmaydi, lekin uning o'rniga false
qaytaradi . Bu DFSOutputStream-da dasturiy ta'minotni osib qo'yishiga olib
keladigan innite tsikliga (1668-1689 qator) olib keladi . DScope bu holatni
kesadi, chunki sikl yo‘llari 2-jadvaldagi Java API-larini chaqirmaydi. Aslida,
sikl yo‘li faqat maxsus dastur funksiyasini, ya’ni complete() ni chaqiradi.
DScope protseduralararo tahlilni qo'shgandan keyin ushbu xatoni aniqlay
olishi kerak, ammo bu ish doirasidan tashqarida.
2-jadval: 60 ta tez-tez ishlatiladigan Java sinflari va interfeyslarida pastadir
va bog'langan yangilanish bilan bog'liq API'lar. "*": API to'plami shunga
o'xshash operatsiyalarni bajaradi; va "-": tegishli turdagi APIlarni o'z ichiga
olmaydi.
API yoki "teskari indeks" API chaqiriladi; 2) "qayta tiklash indeksi"
API va "yangilash chegaralari" API'lari chaqirilmaydi; va 3) chiqish
shartlarida “check bounds” API’lari chaqiriladi. E'tibor bering, DScope
"oldinga ko'rsatkich" API va "teskari indeks" API'lari tsikl yo'llarida
chaqirilgan holatlarni kesib bo'lmaydi, chunki tsikl qadamining har doim
ijobiy yoki salbiy bo'lishini kafolatlab bo'lmaydi.
Ve toifalaridagi API'lar tsikl indeksini yoki chegaralarini o'zgartirishi
shart emas. DScope noto'g'ri musbat filtrlashni amalga oshirganda, ushbu
API argumentlarini ham hisobga olish kerak. Masalan, ByteBuffer nisbiy
yoki mutlaq atributga ega bo'lgan ortiqcha yuklash usullarini o'z ichiga
oladi. ByteBuffer.get () nisbiy usul, ByteBuffer.get(int) esa mutlaq usul. Nisbiy
usulni chaqirish tsikl indeksini (ya'ni, ByteBuffer.position) o'zgartirishi mumkin ,
mutlaq usullarni chaqirish esa mumkin emas.
To'g'ri kesishga erishish uchun DScope rst barcha keng tarqalgan Java
API-lariga o'zgartirish-musbat, o'zgartirish salbiy yoki o'zgartirish-mumkin
atributlari bilan izoh beradi. Ijobiy APIlar tsikl indeksini (yoki chegaralarini)
o'zgartirishi mumkin. Salbiy API ikkalasini ham o'zgartira olmaydi.
Loop total() funksiyasida joylashadi , STEP_LENGTH esa sinf ishga
tushirgichida belgilangan statik o‘zgaruvchidir. DScope sinfni ishga
tushiruvchidan STEP_LENGTH qiymatini olish uchun ma'lumotlar tahlilini
amalga oshiradi va keyin bosqichning ijobiy ekanligini tekshiradi, chunki tsikl
indeksi yuqori chegaraga ega.
Yana bir misol InputStream sinfidir. Input Stream.read(byte[], int, int) ni nol
o'lchamli bayt massivi yoki uchinchi parametr sifatida 0 bilan chaqirish tsikl
indeksini o'zgartira olmaydi.
Mumkin bo'lgan API'lar pastadir indeksini (yoki chegaralarini) o'zgartirishi mumkin.

Download 0.68 Mb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   44




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling