The current method of updating a resource is incredibly error-prone from an implementation standpoint. It requires changes in 3-4 places just to support updating a new field. I was just thinking about how to simplify this last night, and I really want to fix this as part of the API improvements.
For the time being, I have fixed the issue in the helix-provisioning branch. It required a change to ResourceAccessor#setResource. ---------------------------------------- > Date: Mon, 24 Feb 2014 09:07:18 -0800 > Subject: Updating config in 0.7.0 > From: [email protected] > To: [email protected] > > Hi, > > I am trying to update the provisioner configuration. > > public void setNumContainers(String appName, String serviceName, int > numContainers) { > ResourceId resourceId = ResourceId.from(serviceName); > > ResourceAccessor resourceAccessor = > _connection.createResourceAccessor(ClusterId.from(appName)); > Resource resource = resourceAccessor.readResource(resourceId); > LOG.info("Current provisioner config:"+ > resource.getProvisionerConfig()); > > ResourceConfig.Delta delta = new ResourceConfig.Delta(resourceId); > YarnProvisionerConfig config = new YarnProvisionerConfig(resourceId); > config.setNumContainers(numContainers); > delta.setProvisionerConfig(config); > ResourceConfig updatedResourceConfig = > resourceAccessor.updateResource(resourceId, delta); > LOG.info("Update provisioner config:"+ > updatedResourceConfig.getProvisionerConfig()); > > } > > Am i doing something wrong. This code is in helix-provisioning branch. > > thanks, > Kishore G
