在 initiator 處理乙個任務時,任務未完成,但中間資料有誤了(如 crc 失敗),可以通過任務重置來本 connection 上的該任務分配置到乙個新的 connection 中,然後繼續完成乘下的資料,免得整個任務重新執行。任務重置屬於commond recovery,涉及到多 connection。
將乙個 command 重新分配到乙個 connection 上時,target 應該從當前狀態繼續執行該 command。例如,重置 read command 時, target 應當利用 testmanagerequest 中 expdatasn (無資料傳送時置0)值,來啟用 read command 傳送乘下的資料以及 status. expdatasn 表示所有已經傳送成功的資料 pdu 號(讀時為 data-in 中的 datasn, 寫時為 r2t 中的 r2tsn),但不包括 datasn 等於 expdatasn 的 data-in pdu,或 r2tsn 等於 expdatasn 的 r2t。target 可以在重新分配的 connect 上傳送或接收所有乘下的資料,當然,如果 target 無法得到乙個準確的任務狀態時,可以選擇傳送或接收所有的資料。initiator 不允許通過 snack 請求重傳 pdu 號小於
expdatasn 的資料。對於所有型別的 command,乙個重置請求,表明了該任務仍在被 initiator 處理中,如果 target 返回 'function complete' response 時,target 必須正確地完成該任務,如果須要,可以呼叫 data/r2t/status 重傳,但必須要傳輸/重傳 status pdu.
read command 重置過程:
connect-1: read cmd ---------------->
<--------------- data-in(datasn=0)
<--------------- data-in(datasn=1)
crc-error <--------------- data-in(datasn=2)
connect-2: login(mc/s) ---------------->
<--------------- loginresponse
logout ----------------> remove connect-1 for recovery
taskmanagement ----------------> reassign task (expdatasn=2)
<--------------- taskmanagementrsp(complete)
<--------------- data-in(datasn=2)
<--------------- data-in(ststud)
write command 重置過程:
connect-1: write cmd ---------------->
<--------------- r2t(r2tsn=0)
dataout(sn=0) ---------------->
dataout(sn=1) ---------------->
dataout(sn=2) ----------------> crc-error
<--------------- reject
connect-2: login(mc/s) ---------------->
<--------------- loginresponse
logout ----------------> remove connect-1 for recovery
taskmanagement ----------------> reassign task (expdatasn=0)
<--------------- taskmanagementrsp(complete)
<--------------- r2t(r2tsn=0)
dataout(sn=0) ---------------->
dataout(sn=1) ---------------->
dataout(sn=2) ---------------->
dataout(sn=3) ---------------->
dataout(f) ---------------->
<--------------- scsi response
<--------------- data-in(datasn=2)
<--------------- data-in(ststud)
ma系列之 24 任務計畫
0 概念 在未來的某個時間週期或者單次執行一次某任務 1 在未來的某個時間點執行一次某任務 只執行一次 命令 at batch 不需要指定時間點 自動選擇系統空閒時刻執行任務,其餘命令和at使用相似 at使用格式 at 時間 輸入未來要執行的時間 at command 輸入命令 at ctrl d ...
本地提交到yarn Flink入門之提交任務
在開始講本篇內容之前,先回憶一下上篇文章講了什麼,主要講了以下幾點 那麼自然而然的事情,講完了基本組成,就要丟擲乙個主要的問題了,用村上春樹的書名來表達的話就是 當你提交任務後,flink做了什麼?重要的事情說三遍。flink架構主要做的是什麼呢?資源和任務的匹配,即運算元本地化!資源和任務的匹配,...
boost庫在工作(24)任務之四
在軟體開發裡,經常會遇到這樣的情況,比如客戶讓我們開發的軟體要求每隔半小時,就要備份一次資料,以便避免資料丟失。又比如在開發乙個遊戲網路伺服器時,需要不斷檢查客戶端連線上來的資料連線是否還有效,這時也需要使用乙個任務來檢查客戶端的連線是否還有心跳包過來,如果沒有心跳包,就可以把這個連線斷開,釋放相關...