[ 
https://issues.apache.org/jira/browse/GEODE-7394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16965084#comment-16965084
 ] 

Darrel Schneider commented on GEODE-7394:
-----------------------------------------

I don't think this statement is true: "Without a PdxSerializer the command 
essentially serves no purpose nor has any effect".
Pdx serialization can be used without a PdxSerializer. Domain classes can 
implement the PdxSerializable interface.
Also, even if you are using a PdxSerializer, you may not need to have it on 
your server. If you set --read-serialized=true on the server then it should 
never need to use the PdxSerializer on the server even though it is used on the 
client.
In the above use cases you may still want to set --read-serialized or 
--ignore-unread-fields or the pdx disk store and the configure pdx command 
allows you to do that.

The ReflectionBasedAutoSerializer is the easiest way to use pdx provided by 
geode. My understanding is that one of the Spring projects has its own 
PdxSerializer that works better with Spring than the 
ReflectionBasedAutoSerializer. I know we have had requests before for the 
default to be ReflectionBasedAutoSerializer with the .* REGEX. But I think one 
of the current problems we have with that is that if you have a 
ReflectionBasedAutoSerializer whose regex matches that class name then that 
serialization takes precedence over other forms of serialization. So you could 
have a JDK class that has its own special serialization code suddenly ignored 
by geode serialization and instead it would be serialized by PDX. That could 
cause performance issues, correctness issues, and compatibility issues.
Maybe we could enhance the PdxSerializer to have two stages in the 
serialization precedence. The first state would ask it early if it wants to 
serialize a class before all other serialization frameworks. If that request is 
turned down it would then check the other ways of doing serialization like it 
currently does. But a new stage at the end could be added after we have not 
found any way to serialize an object. That would be to ask the PdxSerializer to 
attempt serialization as a last ditch attempt. Maybe this "last ditch attempt" 
could just be hardcoded into our serialization precedence with no need for the 
user to even configure a PdxSerializer. We could just try all the current ways 
we have and if none of them work ask our built in ReflectionBasedAutoSerializer 
with a REGEX of .* to give it a try.

> Gfsh `configure pdx` command is non-intuitive and currently has a bad user 
> experience
> -------------------------------------------------------------------------------------
>
>                 Key: GEODE-7394
>                 URL: https://issues.apache.org/jira/browse/GEODE-7394
>             Project: Geode
>          Issue Type: Bug
>          Components: serialization
>            Reporter: John Blum
>            Priority: Major
>
> The _Gfsh_ {{configure pdx}} command does *not* register a {{PdxSerializer}} 
> (e.g. {{ReflectionBasedAutoSerializer}}, or otherwise) unless the 
> {{--auto-serializable-classes}} option is explicitly specified.  Without a 
> {{PdxSerializer}} the command essentially serves no purpose nor has any 
> effect.  Effectively, the command is useless.
> For example, doing something like `gfsh> configure pdx 
> --read-serialized=false` or `gfsh> configure pdx --ignore-unread-fields` by 
> itself is *pointless* since ultimately there would be no `PdxSerializer` 
> registered in this case.
> _Gfsh_ should minimally register a `PdxSerializer` anytime the `configure 
> pdx` command is used regardless of the options provided, especially if it 
> returns successfully without incident.  For instance, it could register the 
> `ReflectionBaseAutoSerializer` with the REGEX {{.*}} (de/serializing all 
> types, regardless of whether that is optimal or not).
> Alternatively, if we decide not to register the 
> {{ReflectionBasedAutoSerialier}} with a generic REGEX (e.g. {{.*}}), then we 
> should _fail-fast_ and the command should report that 
> {{--[portable-]-auto-serializable-classes}} is required!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to