Ohara: [Question] Delete Workspace 會面臨幾個比較難處理的狀況

Created on 29 Jun 2020  ·  8Comments  ·  Source: oharastream/ohara

Delete Workspace 會面臨幾個比較難搞的狀況:

  1. 刪除過程中使用者重新整理頁面,導致刪除流程沒有走完
  2. 在某一個刪除步驟卡關,retry 也無法解決

與俊孝討論後,提出幾個建議:

  1. 刪除未結束前,重新整理畫面會跳出警示
  2. 重整畫面後,檢查是否有 Workspace 的刪除任務尚未結束,如果有的話,提示使用者繼續刪除
  3. 某個步驟 retry 達三次,則允許跳過該步驟。例如刪除 broker 失敗,並且 retry 三次後仍失敗,出現 SKIP 按鈕讓使用者決定放棄該步驟,讓 broker 變成孤兒,避免走不到最後一步 delete workspace。

inspired by https://github.com/oharastream/ohara/pull/5315#issuecomment-650858154

question

All 8 comments

某個步驟 retry 達三次,則允許跳過該步驟。例如刪除 broker 失敗,並且 retry 三次後仍失敗,出現 SKIP 按鈕讓使用者決定放棄該步驟,讓 broker 變成孤兒,避免走不到最後一步 delete workspace。

不確定我們是否需要做的這麼完整,因為當刪除的動作觸發後就已經是不可復原的狀態了;任何的刪除失敗應該讓使用者知道錯誤的訊息(或者我們可以在錯誤的訊息中提示使用者可以怎麼做?)、提供RETRY的功能應該就足夠了,SKIP的功能會延伸:

  1. 需要更多的訊息告知使用者目前SKIP會產生孤兒與無法預期的狀況 (如後續的刪除也失敗等等)
  2. 使用者更容易"無腦"一直按下去,不會理解可能產生的後遺症
  3. 再次建立workspace可能會與這些孤兒產生名稱衝突等問題

再次建立workspace可能會與這些孤兒產生名稱衝突等問題

這確實是一個問題,會讓無腦(使用預設名稱)建立 Workspace 失敗

不確定我們是否需要做的這麼完整,因為當刪除的動作觸發後就已經是不可復原的狀態了;任何的刪除失敗應該讓使用者知道錯誤的訊息(或者我們可以在錯誤的訊息中提示使用者可以怎麼做?)、提供RETRY的功能應該就足夠了

如果一直 RETRY 失敗會讓 UI 卡在 Delete Workspace 的畫面,使用者無法做其他的事,只能 Refresh 了。如果不要 SKIP 的話,或許在 RETRY 失敗達到某個次數,允許使用者離開目前的畫面,可以去查看 Event Log,進一步排除 RETRY 失敗的原因,再重新進行刪除。

Delele workspace 愈單純愈好, 我心中的方案有二:

  1. Graceful delete: 正常刪除流程(包含 retry).
  2. Force delete: 當 Graceful delete 流程失敗後, 即進入 Force delete. (這部份後端可能需要 support 前端)

但仍不排除連 force delete 都失敗的情境,
不過這部份我想己經超過 "Delele workspace" 須要負責的範圍.
要用其他方式來克服, 在此我們可以略過, 只要能讓使用者回到主畫面即可.

刪除未結束前,重新整理畫面會跳出警示
重整畫面後,檢查是否有 Workspace 的刪除任務尚未結束,如果有的話,提示使用者繼續刪除

+1

某個步驟 retry 達三次,則允許跳過該步驟。例如刪除 broker 失敗,並且 retry 三次後仍失敗,出現 SKIP 按鈕讓使用者決定放棄該步驟,讓 broker 變成孤兒,避免走不到最後一步 delete workspace。

What if we just let the users resolve the issue manually? I'd assume if a given workspace cannot be deleted by UI, it's not a problem that could be handled by UI along, thus it'd be better to just hand over this to the users and let them resolve this by using APIs?

+1 to @vitojeng,在0.11.0就只要"能"刪除workspace就好,孤兒的問題(包含force delete)我們之後再處理

不過一個重點是就算發生了無法預期的事情,也需要讓其他workspace能正常運作,換言之,前端要有辦法去判斷workspace現在是否為"正常"

簡單來說

  1. 刪除workspace成功 -> 好棒棒
  2. 刪除workspace失敗 -> retry and 紀錄錯誤,之後別再顯示這個有問題的workspace

其實也不用讓使用者去retry了,因為UI內部的retry都無效,此時讓使用者retry已經沒啥意義了

in conclusion:

  1. Prevent users from refreshing the browser directly before the long-term task ends
  2. Users can leave long-term tasks that cannot be completed
  3. Highlight unusable workspaces
  4. Remind users to continue unfinished tasks
  5. Stop the development of the following functions: Suspend, Resume
Was this page helpful?
0 / 5 - 0 ratings