Thanks Konstantin!

Would you mind opening a JIRA about those ?
https://issues.apache.org/jira/browse/GEODE


On Mon, Aug 17, 2015 at 2:51 PM, Ignatyev, Konstantin <[email protected]>
wrote:

> Hi,
>
> I have been looking at Geode-s code and come across major performance
> killer for JSON handling in Geode, namely implementation of
> com.gemstone.gemfire.pdx.internal.PdxInstanceImpl#getObject
>
> as you can see in the snipped below the code creates ObjectMapper every
> time it needs to convert PDX instance into JSON. According to docs and
> examples on Jackson’s site instances of  ObjectMapper should be shared
> globally. Creating it for every transaction is quite expensive in terms of
> CPU and garbage collection.
>
>
> Another thing is date format, in the JSON land it is pretty much settled
> to be ISO 8661
>
> https://weblog.west-wind.com/posts/2014/Jan/06/JavaScript-JSON-Date-Parsing-and-real-Dates
>
> It would  be nice to be able to have Geode’s JSON standard compliant, or
> have this configurable.
>
> public Object getObject() {
>   if (getPdxType().getNoDomainClass()) {
>     //In case of Developer Rest APIs, All PdxInstances converted from Json
> will have a className =__GEMFIRE_JSON.
>     //Following code added to convert Json/PdxInstance into the Java
> object.
>     if(this.getClassName().equals("__GEMFIRE_JSON")){
>
>       //introspect the JSON, does the @type meta-data exist.
>       String className = extractTypeMetaData();
>
>       if(StringUtils.hasText(className)) {
>         try {
>           ObjectMapper mapper = new ObjectMapper();
>           mapper.setDateFormat(new SimpleDateFormat("MM/dd/yyyy"));
>
> mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
>
> mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES,
> true);
>           String JSON = JSONFormatter.toJSON(this);
>           Object classInstance = mapper.readValue(JSON,
> ClassPathLoader.getLatest().forName(className));
>           return classInstance;
>         }catch(Exception e){
>           throw new PdxSerializationException("Could not deserialize as
> java class type could not resolved", e);
>         }
>       }
>     }
>     return this;
>   }
>
> Regards,
>
> Konstantin Ignatyev
>
>
>
>
> ----------------------------------------------------------------------
> This message and any attachments are intended only for the use of the
> addressee and may contain information that is privileged and confidential.
> If the reader of the message is not the intended recipient or an authorized
> representative of the intended recipient, you are hereby notified that any
> dissemination of this communication is strictly prohibited. If you have
> received this communication in error, notify the sender immediately by
> return email and delete the message and any attachments from your system.
>



-- 

William Markito Oliveira
Enterprise Architect
-- For questions about Apache Geode, please write to
*[email protected]
<[email protected]>*

Reply via email to