Return-Path: X-Original-To: apmail-cloudstack-dev-archive@www.apache.org Delivered-To: apmail-cloudstack-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1509610D5F for ; Wed, 18 Sep 2013 17:43:33 +0000 (UTC) Received: (qmail 28945 invoked by uid 500); 18 Sep 2013 17:43:29 -0000 Delivered-To: apmail-cloudstack-dev-archive@cloudstack.apache.org Received: (qmail 28900 invoked by uid 500); 18 Sep 2013 17:43:28 -0000 Mailing-List: contact dev-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list dev@cloudstack.apache.org Received: (qmail 28883 invoked by uid 99); 18 Sep 2013 17:43:28 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Sep 2013 17:43:28 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of darren.s.shepherd@gmail.com designates 74.125.82.54 as permitted sender) Received: from [74.125.82.54] (HELO mail-wg0-f54.google.com) (74.125.82.54) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Sep 2013 17:43:19 +0000 Received: by mail-wg0-f54.google.com with SMTP id m15so6690798wgh.21 for ; Wed, 18 Sep 2013 10:42:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=35/TaKTMWwOLo19LuD9bb+JAh8RRspon8VHP7cXga+4=; b=T6oSH6vhWHvUGrX7cewCm+usg/I1Bbny6MCbssNKqoBADXIOmZgCoxMCsxtFX9qcZY Z5P/jIPYIKbchp9o5PuYW3amZ8E82zJjaWwzu23600+ifRXsUfLj4tf6drNgUNoWp1Ra i7Flvayk4GX0nsjfRGV7jYyx2zA+hr3WGbWBBXkdaFWRGq/+boo7D5MeXpVOPrFvzB2Y fR5CvvAG83/qyKb+SCVxZ2ZlpdrETYcRtyqv0BdLijo5P7xxaSP7QVyxfLgXtoZ4impf 7ut7oxaWYZ6Q38sHcR+0OijusR1gLHdtcNX//nOn+8bsmcqXPms5GWUX8oNZ9E413oXB plIA== MIME-Version: 1.0 X-Received: by 10.180.185.77 with SMTP id fa13mr8000015wic.58.1379526179416; Wed, 18 Sep 2013 10:42:59 -0700 (PDT) Received: by 10.216.152.9 with HTTP; Wed, 18 Sep 2013 10:42:59 -0700 (PDT) In-Reply-To: <76c0b406c51bf71a552577dd23c797ad@ufl.edu> References: <76c0b406c51bf71a552577dd23c797ad@ufl.edu> Date: Wed, 18 Sep 2013 10:42:59 -0700 Message-ID: Subject: Re: conflicting dependencies between CloudStack and Whirr From: Darren Shepherd To: "dev@cloudstack.apache.org" Content-Type: multipart/alternative; boundary=001a11c24316e2013704e6abf79c X-Virus-Checked: Checked by ClamAV on apache.org --001a11c24316e2013704e6abf79c Content-Type: text/plain; charset=ISO-8859-1 You know what would be really swell is to just switch to jackson. The gson we use is antiquated. I have no idea what the impact of moving to a modern version would be. Jackson, IMO, is a far better framework that has a lot of momentum. Additionally it allows you to use JAXB annotations so that you don't have to use framework dependent annotation in your code. Plus it does tons and tons of more stuff. I really don't expect isolated classloaders will come anytime soon. That actually relates to things I'm working on right now, but I have a hard time justifying adding the overhead and complexity of isolated classloaders at the moment. If we really, really, really, really, really think isolating classloaders is a good thing, we can talk about it, but it will be a can of worms. Darren On Tue, Sep 17, 2013 at 7:14 PM, Han,Meng wrote: > Dear all, > > I am adding an API to CloudStack which utilizes Whirr to launch various > clusters on CloudStack. Now I am facing a dependency conflicting issue. > > Whirr 0.8.2 requires gson 2.2.2 while CloudStack API requires gson 1.7.1. > If I use gson 1.7.1 for Whirr, the following error will happen: > > com.google.common.util.**concurrent.ExecutionError: java.lang.**NoClassDefFoundError: > com/google/gson/TypeAdapter > > This TypeAdapter class can be found inside gson-2.2.2.jar. However if I > modify CloudStack to use gson 2.2.2 CloudStack will not build successfully > due to the following test error. > > [INFO] Building Apache CloudStack Core 4.1.1 > [INFO] ------------------------------**------------------------------** > ------------ > [INFO] > [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ cloud-core --- > [INFO] Deleting /home/meng/cloudstack/core/**target > [INFO] > [INFO] --- maven-remote-resources-plugin:**1.3:process (default) @ > cloud-core --- > [INFO] > [INFO] --- maven-resources-plugin:2.5:**resources (default-resources) @ > cloud-core --- > [debug] execute contextualize > [INFO] Using 'UTF-8' encoding to copy filtered resources. > [INFO] skip non existing resourceDirectory /home/meng/cloudstack/core/** > src/main/resources > [INFO] Copying 3 resources > [INFO] > [INFO] --- maven-compiler-plugin:2.5.1:**compile (default-compile) @ > cloud-core --- > [INFO] Compiling 156 source files to /home/meng/cloudstack/core/** > target/classes > [INFO] > [INFO] --- maven-resources-plugin:2.5:**testResources > (default-testResources) @ cloud-core --- > [debug] execute contextualize > [INFO] Using 'UTF-8' encoding to copy filtered resources. > [INFO] skip non existing resourceDirectory /home/meng/cloudstack/core/** > src/test/resources > [INFO] Copying 3 resources > [INFO] > [INFO] --- maven-compiler-plugin:2.5.1:**testCompile > (default-testCompile) @ cloud-core --- > [INFO] Compiling 1 source file to /home/meng/cloudstack/core/** > target/test-classes > [INFO] > [INFO] --- maven-surefire-plugin:2.12:**test (default-test) @ cloud-core > --- > [INFO] Surefire report directory: /home/meng/cloudstack/core/** > target/surefire-reports > > ------------------------------**------------------------- > T E S T S > ------------------------------**------------------------- > Running com.cloud.agent.transport.**RequestTest > log4j:WARN No appenders could be found for logger > (com.cloud.agent.transport.**RequestTest). > log4j:WARN Please initialize the log4j system properly. > log4j:WARN See http://logging.apache.org/**log4j/1.2/faq.html#noconfigfor more info. > Tests run: 4, Failures: 1, Errors: 1, Skipped: 0, Time elapsed: 3.054 sec > <<< FAILURE! > > Results : > > Failed tests: testSerDeser(com.cloud.agent.**transport.RequestTest) > > Tests in error: > testLogging(com.cloud.agent.**transport.RequestTest) > > Tests run: 4, Failures: 1, Errors: 1, Skipped: 0 > > > I ran "mvn -P developer clean install -DskipTests" , the CloudStack > building process went through. But when I issued an API --launchCluster to > CloudStack, the following error related to gson popped up on CloudStack > Management Server: > > ERROR [agent.transport.Request] (AgentManager-Handler-2:) Caught problem > with [{"StartupRoutingCommand":{"**cpus":2,"speed":3000,"memory":** > 3844370432,"dom0MinMemory":**384437043,"poolSync":false,"** > vms":{"v-2-VM":{"state":"**Running"},"s-1-VM":{"state":"** > Running"},"r-4-VM":{"state":"**Running"}},"caps":"hvm,** > snapshot","pool":"/root","**hypervisorType":"KVM","** > hostDetails":{"com.cloud.**network.Networks.**RouterPrivateIpStrategy":"** > HostLocal","Host.OS":"CentOS",**"Host.OS.Kernel.Version":"2.6.** > 32-358.el6.x86_64","Host.OS.**Version":"6.4"},"type":"** > Routing","dataCenter":"1","**pod":"1","cluster":"1","guid":** > "a7320748-6346-3c9a-975e-**90ac4ae4a986-**LibvirtComputingResource","** > name":"meng.acis.ufl.edu","id"**:2,"version":"4.1.1","** > publicIpAddress":"10.244.18.**55","publicNetmask":"255.0.0.** > 0","publicMacAddress":"00:23:**ae:94:f7:22","** > privateIpAddress":"10.244.18.**55","privateMacAddress":"00:** > 23:ae:94:f7:22","**privateNetmask":"255.0.0.0","** > storageIpAddress":"10.244.18.**55","storageNetmask":"255.0.0.** > 0","storageMacAddress":"00:23:**ae:94:f7:22","resourceName":"** > LibvirtComputingResource","**gatewayIpAddress":"! > 10.244.18 > .1","contextMap":{},"wait":0}}**,{"StartupStorageCommand":{"** > totalSize":0,"poolInfo":{"**uuid":"9447c0b1-cc3f-439f-** > 85f6-13d35539a9ed","host":"10.**244.18.55","localPath":"/var/** > lib/libvirt/images/","**hostPath":"/var/lib/libvirt/** > images/","poolType":"**Filesystem","capacityBytes":** > 52844687360,"availableBytes":**41535332352},"resourceType":"** > STORAGE_POOL","hostDetails":{}**,"type":"Storage","dataCenter"** > :"1","pod":"1","guid":"**a7320748-6346-3c9a-975e-**90ac4ae4a986-** > LibvirtComputingResource","**name":"meng.acis.ufl.edu","id"** > :2,"version":"4.1.1","**resourceName":"**LibvirtComputingResource","** > contextMap":{},"wait":0}}] > java.lang.ClassCastException: com.google.gson.internal.$**Gson$Types$**GenericArrayTypeImpl > cannot be cast to java.lang.Class > at com.cloud.agent.transport.**ArrayTypeAdaptor.deserialize(** > ArrayTypeAdaptor.java:84) > at com.cloud.agent.transport.**ArrayTypeAdaptor.deserialize(** > ArrayTypeAdaptor.java:37) > at com.google.gson.**TreeTypeAdapter.read(** > TreeTypeAdapter.java:58) > at com.google.gson.Gson.fromJson(**Gson.java:795) > at com.cloud.agent.transport.**Request.getCommands(Request.** > java:235) > at com.cloud.agent.manager.**AgentManagerImpl$AgentHandler.** > processRequest(**AgentManagerImpl.java:1221) > at com.cloud.agent.manager.**AgentManagerImpl$AgentHandler.** > doTask(AgentManagerImpl.java:**1374) > at com.cloud.agent.manager.**ClusteredAgentManagerImpl$** > ClusteredAgentHandler.doTask(**ClusteredAgentManagerImpl.**java:659) > at com.cloud.utils.nio.Task.run(**Task.java:83) > at java.util.concurrent.**ThreadPoolExecutor.runWorker(** > ThreadPoolExecutor.java:1110) > at java.util.concurrent.**ThreadPoolExecutor$Worker.run(** > ThreadPoolExecutor.java:603) > at java.lang.Thread.run(Thread.**java:722) > WARN [utils.nio.Task] (AgentManager-Handler-2:) Caught the following > exception but pushing on > > On the CS Managment console I can see the cluster was started then quickly > died. > Running on provider cloudstack using identity > h3DKHC9AVlhKnUhpyThMuLhC119QfN**QQ8xhyjbf_**rnu5ZL1QeOWdw7aZRGXVO1VApG6q0a > **K-A-tQRQsZFwnOXQ > INFO [whirr.actions.**BootstrapClusterAction] (729061754@qtp-385354117-0:) > Bootstrapping cluster > INFO [whirr.compute.**BootstrapTemplate] (729061754@qtp-385354117-0:) > Configuring template for bootstrap-hadoop-datanode_**hadoop-tasktracker > INFO [whirr.compute.**BootstrapTemplate] (729061754@qtp-385354117-0:) > Configuring template for bootstrap-hadoop-namenode_**hadoop-jobtracker > INFO [whirr.compute.NodeStarter] (pool-4-thread-2:) Starting 1 node(s) > with roles [hadoop-datanode, hadoop-tasktracker] > INFO [whirr.compute.NodeStarter] (pool-4-thread-4:) Starting 1 node(s) > with roles [hadoop-namenode, hadoop-jobtracker] > ... > INFO [whirr.actions.**DestroyClusterAction] (729061754@qtp-385354117-0:) > Cluster hadoop destroyed > > I attached the debuging log to this email. > > The launchCluster API is simple, it calls the LaunchClusterCommand in > Whirr to launch a cluster. > > LaunchClusterResponse response = new LaunchClusterResponse(); > response.setObjectName("**launchCluster"); > LaunchClusterCommand command = null; > try { > command = new LaunchClusterCommand(); > } catch (Exception ex) { > Logger.getLogger(**LaunchClusterCmd.class.**getName()).log(Level.SEVERE, > null, ex); > } > String[] args = new String[2]; > args[0] = "--config"; > args[1] = config; > > try { > command.run(System.in, System.out, System.err, > Arrays.asList(args)); > } catch (Exception ex) { > Logger.getLogger(**LaunchClusterCmd.class.**getName()).log(Level.SEVERE, > null, ex); > } > response.setResponseName(**getCommandName()); > output = "successfully launched the cluster."; > response.setOutPut(output); > response.setAsync(Boolean.**FALSE); > this.setResponseObject(**response); > > Could someone help me out here? What would be a proper gson version for > CloudStack and Whirr to run at the same time? > > Thanks loads. > > Best Regards, > Meng > > > --001a11c24316e2013704e6abf79c--