[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] Fw: Java api for domain migration



Sorry , clarification:

Bottom line is that  the Java binding of libvirt should accept 'dname' 
parameter = null as the C  libvirt case does without crashing 

The below stament that 
" If I try to specify  a meaningful 'dname' then  if it is the same name 
as the original host  domain 'name' I will get a message saying :  invalid 
domain pointer in no domain with matching id -1."

is not correct. The migrate works  under Java in this case as in the C 
case i.e the domain is migrated to the destination
host but remains paused there for a long time until resumed there.

If the 'dname' is null then the migration is faster but that works ok only 
 with the libvirt C library. It crashes  with the Java binding .


Zvi Dubitzky 
Virtualization and System Architecture   Email:dubi il ibm com
IBM Haifa Research Laboratory    Phone: +972-4-8296182
Haifa, 31905, ISRAEL 


----- Forwarded by Zvi Dubitzky/Haifa/IBM on 10/05/2009 13:29 -----

Zvi Dubitzky/Haifa/IBM 
10/05/2009 13:14

To
libvir-list redhat com
cc

Subject
Fw: Java api for domain migration





Hi

I think I detected the origin of the libvirt Java binding crash in the 
case of domain migration though I do not know how to fix  it yet .
The fix should be in the src/jni/org_libvirt_Domain.c  / migrate function.

First: It turns out the that the C libvirt interface for migrate  ( 
libvirt 0.6.1. +  kvm-84) has a limitation with specifying the 'dname' 
parameter . It should be NULL  to work ok , meaning the domain is migrated 
from the old host to the new host under the same domain name . If I try to 
specify  a meaningful 'dname' then  if it is the same name as the original 
host  domain 'name' I will get a message saying :  invalid domain pointer 
in no domain with matching id -1.
If I am using  'dname' different than the original host  domain 'name' it 
will complain  that no such domain is found on the target host.
So using NULL for 'dname' is the only one that makes the migrate work

Using 'dname' = NULL with the Java binding causes it though to crash as 
below (see .log file).  Fixing the jni code as below (see added 'if') does 
not
help:


src/jni/org_libvirt_Domain.c
--------------------------------

JNIEXPORT jlong JNICALL Java_org_libvirt_Domain__1migrate
  (JNIEnv *env, jobject obj, jlong VDP, jobject dconn, jlong flags, 
jstring j_dname, jstring j_uri, jlong bandwidth){

        virConnectPtr destVCP;

        const char *dname=NULL;
        const char *uri=NULL;

        //if String="", we pass NULL to the library
        if((*env)->GetStringLength(env, j_dname)>0)
                dname=(*env)->GetStringUTFChars(env, j_dname, NULL);

        //if String="", we pass NULL to the library
        if((*env)->GetStringLength(env, j_uri)>0)
                uri=(*env)->GetStringUTFChars(env, j_uri, NULL);

        //Extract the destination Conn Ptr
        destVCP=(virConnectPtr)(*env)->GetLongField(env, dconn,
                        (*env)->GetFieldID(env, 
(*env)->GetObjectClass(env, dconn), "VCP", "J"));

        jlong retval = (jlong)virDomainMigrate((virDomainPtr)VDP, destVCP, 
flags, dname, uri, bandwidth)
;
        if (dname)
                (*env)->ReleaseStringUTFChars(env, j_dname, dname);

        if (uri)
                (*env)->ReleaseStringUTFChars(env, j_uri, uri);
        return retval;
}





Please your advice on how to solve  the migrate for the Java binding 

thanks

Zvi Dubitzky 
Virtualization and System Architecture   Email:dubi il ibm com
IBM Haifa Research Laboratory    Phone: +972-4-8296182
Haifa, 31905, ISRAEL 


----- Forwarded by Zvi Dubitzky/Haifa/IBM on 10/05/2009 12:59 -----

Zvi Dubitzky/Haifa/IBM 
07/05/2009 13:49

To
libvir-list redhat com
cc

Subject
Java api for libvirt migration





I am trying to do a migrate of VM  with libvirt 0.6.1 and kvm-84 .  I am 
successful in doing it many times  via the C interface .

I can do most of the  basic libvirt activity  via the libvirt JAVA library 
 (libvirt-java-0.2.1). When it comes  to a migrate the JVM fails wit a log 
file
attached below . Can someone help.  My memory consumption in my JAVA test 
code is small.




The  migrate parameters I  am  sending with the  Java are identical to 
those I use in the C case and is:

        destDomain = localDomain.migrate (dcon,          // destination 
host Connect object
                                          VIR_MIGRATE_LIVE, 
                                          null, //const char *dname 
destination domain name 
                                          target_uri, 
//"tcp:9.148.28.13:4444"
                                          0                      //   
unsigned long bandwidth) - do not specify
                                          );

thanks

Zvi Dubitzky 
Virtualization and System Architecture   Email:dubi il ibm com
IBM Haifa Research Laboratory    Phone: +972-4-8296182
Haifa, 31905, ISRAEL 

Attachment: hs_err_pid6742.log
Description: Binary data


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]