2016-11-11 28 views
1

有什麼方法可以停止在Cassandra(3.7)中構建實體化視圖?停止Cassandra實體化視圖構建

背景:我創建了兩個物化視圖一個(充分披露 - 我可能會試圖刪除它們構建完成之前)和這些觀點似乎是永久地......任何企圖製造另一個視圖C似乎掛在同一張桌子上。使用nodetool

nodetool.viewbuildstatus <keyspace>.<view> 

顯示STARTED和UNKNOWN爲的組合,並開始對C視圖。使用定製列表:

select * from system.views_builds_in_progress 

所有觀點都列出來,但世代號last_token在過去24小時沒有改變(generation_number的意義其實是在爲null 一個)。

回答

2

它沒有記錄,但nodetool stop實際上採取任何壓縮類型,不僅僅是列出的(視圖構建是其中之一)。因此,你可以簡單地說:

nodetool stop VIEW_BUILD 

或者你也可以直接與org.apache.cassandra.db:type=CompactionManager MBean的stopCompaction操作打JMX。

所有這一切真的要做的是爲視圖生成器設置一個標誌,以停止其下一個循環。如果它拋出未捕獲的異常或其他東西,所以它不再做任何事情(值得檢查系統/輸出日誌),停止也不會做任何事情。在那種情況下,它並沒有真正傷害任何東西,所以可以忽略它並重試。最壞的情況下重新啓動節點。

+0

啊,這就是我一直在尋找的命令。謝謝!似乎構建視圖拋出一個異常'突變xxx太大,最大大小爲16.000MiB' - 它睡了五分鐘,只能再次出錯(不完全明顯,爲什麼拋出異常)。將標記爲已解決,雖然我的情況可能是唯一的,因爲該命令並未實際停止構建 - 它在此錯誤循環中繼續* ad naseam *(僅刪除視圖停止它) – copeg

+0

您有寬分區或大數據在基礎表中?可以嘗試增加'cassandra.yaml'中的提交日誌段和批量日誌限制(https://support.datastax.com/hc/en-us/articles/207267063-Mutation-of-x-bytes-is-too-large-對於最maxiumum尺寸-的-Y-)。可能想在視圖定義中仔細檢查你的select語句。 –

+0

看起來視圖中的select語句導致了這個問題 - 我怎麼樣,我仍然不知道,但做了一些修改後(例如刪除了不必要的列而不是使用'select *')構建的視圖沒有問題。再次感謝你的幫助! – copeg