Hey Tom, You've correctly discovered this. This was an intentional by-design artifact of my belief that versioning and data movement should be sort of co-located on the same machine. So if you do client side data movement (which most people do), then the versioning should happen alongside of it, and thus any metadata extraction present there should be available during versioning for use in e.g., Metadata based versioning.
The rub comes in the issue where the metadata is generated on the server side and you expect versioning to be available to the system. One way of getting around this is taking a look at the way that the FinalFileLocationExtractor [1] grabs the latest version of the CoreMetKeys.FILE_LOCATION property and then makes it available for e.g., versioning. See discussion too in OODT-72 [2] for some rationale behind my sentiments there. Happy to discuss! Cheers, Chris [1] http://s.apache.org/bvd [2] https://issues.apache.org/jira/browse/OODT-72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Chris Mattmann, Ph.D. Chief Architect Instrument Software and Science Data Systems Section (398) NASA Jet Propulsion Laboratory Pasadena, CA 91109 USA Office: 168-519, Mailstop: 168-5th floor Email: [email protected] WWW: http://sunset.usc.edu/~mattmann/ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Adjunct Associate Professor, Computer Science Department University of Southern California, Los Angeles, CA 90089 USA ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -----Original Message----- From: Thomas Bennett <[email protected]> Reply-To: "[email protected]" <[email protected]> Date: Tuesday, May 27, 2014 3:53 AM To: OODT <[email protected]> Subject: Metadata based versioning >Hey, > > >When calling *XmlRpcFileManager.ingestProduct()*, I noticed that the >variable *"m"* (Metadata m = new Metadata()) is never updated with server >side met extraction. > >This means that metadata based versioning cannot work unless the metadata >used is client side metadata. > >For example: > >I use CoreMetExtractor on the server side to extract FileLocation and >Filename. > >Howeve when *addMetadata(p,m)* is called it does the following steps: > > 1. does the server based met extraction (in my case CoreMetExtraction) > 2. updates the catalog > 3. returns true. > >Since it only returns true, the updates that have been made to the >internal >version of m passed into the method are lost. > >Versioning happens after this step and I use Filename as part of my >versioner, which ends up getting set to 'null'. > >Any reason why sever side met extraction should not be used for product >versioning? >Any reason why should addMetadata should not return the updated m? > >Cheers, >Tom
