2013年12月5日 星期四

關於 Libvirt Event Registration for Java Binding 的碎碎念


使用Opensource 讓人又愛又恨的就是遇到bug和問題,通常到最後只有三種路:
  1. 回報社群等人修好  (但是通常會等到天荒地老~~~老闆請你來是做啥的!)
  2. 翻Mail list看以前有沒有人解決過,或有什麼建議  (Hello~~有"沒有人"遇過或修過~~)
  3. 看source code 然後自己下去patch (我也想當沒有人,但是往往能力不足...Orz..)

話說 Libvirt 雖然有提供Event Registration 的機制和 Java Binding 的Library,但是兩的湊在一起就是不work啊!!

一跑下去就遇到以下錯誤:

libvir: Remote Driver error : adding cb to list
exception caught:org.libvirt.LibvirtException: adding cb to list
level:VIR_ERR_ERROR
code:VIR_ERR_RPC
domain:VIR_FROM_REMOTE
hasConn:false
hasDom:false
hasNet:false
message:adding cb to list
str1:%s
str2:adding cb to list
str3:null
int1:-1
int2:-1


一路Trace source code 往下,到了JNA那一層就斷了...囧rz...只好上網看看有沒有人遇到這個問題。

首先看到的就是Redhat 的bug report:
再來 OpenStack 目前也有遇到這個問題:

然後看到有人說要使用Event Registration 前,要先初始化 (不過舉的是C和Python的範例)

Make sure you have registered in the libvirt event loop (or set up your own) before registering for events


最後從Libvirt 的mail 爬出一連串的討論:


Ps. 2013 版的那個Patch 有在Github上找到,但是試了一下還是有問題....


所以其實這是一篇碎碎念文,因為結論是目前Java Binding 無法支援這個功能,除非自己跳下去把它改好.....


張貼留言