Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-6334

WicketObjects#sizeof() and #cloneObject() should not use IObjectCheckers

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 7.6.0
    • Fix Version/s: 8.0.0-M5
    • Component/s: wicket
    • Labels:
      None

      Description

      Report at users@ : http://markmail.org/message/mq5zs2veaj4q4psg

      Wicket should detach the Session before calculating its size as it does for Component and IDetachable.

        Issue Links

          Activity

          Hide
          mgrigorov Martin Grigorov added a comment -

          For components/detachables we detach a clone of the original.
          We create a clone to keep the original still attached.
          And we detach the clone to calculate its "shrink" size, i.e. the size it will take in the disk when being stored with the page.

          This will not solve the issue discussed at http://markmail.org/message/mq5zs2veaj4q4psg though. Because we use the serialize/deserialize logic to create the clone. So any application that uses org.apache.wicket.core.util.objects.checker.NotDetachedModelChecker and/or org.apache.wicket.core.util.objects.checker.SessionChecker will log an error when creating the clone.

          The only good solution that I see is to use the IObjectCheckers only when serializing Pages.
          I.e. if a Session object is serialized alone then do not use the checkers.
          I'm not sure whether this is possible. I will have to dig in the serialization related logic.

          Show
          mgrigorov Martin Grigorov added a comment - For components/detachables we detach a clone of the original. We create a clone to keep the original still attached. And we detach the clone to calculate its "shrink" size, i.e. the size it will take in the disk when being stored with the page. This will not solve the issue discussed at http://markmail.org/message/mq5zs2veaj4q4psg though. Because we use the serialize/deserialize logic to create the clone. So any application that uses org.apache.wicket.core.util.objects.checker.NotDetachedModelChecker and/or org.apache.wicket.core.util.objects.checker.SessionChecker will log an error when creating the clone. The only good solution that I see is to use the IObjectCheckers only when serializing Pages. I.e. if a Session object is serialized alone then do not use the checkers. I'm not sure whether this is possible. I will have to dig in the serialization related logic.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 8b6fcd869ceb96f7b4ea003d3d5665a1626390ad in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=8b6fcd8 ]

          WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions

          CheckingObjectOutputStream now use the IObjectChecker's only when a IManageablePage is being serialized. Anything else won't be checked.

          Show
          jira-bot ASF subversion and git services added a comment - Commit 8b6fcd869ceb96f7b4ea003d3d5665a1626390ad in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=8b6fcd8 ] WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions CheckingObjectOutputStream now use the IObjectChecker's only when a IManageablePage is being serialized. Anything else won't be checked.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit a843096e61060742f395f4a591a286650db892c9 in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=a843096 ]

          WICKET-6334 WicketObjects#sizeof() should detach Sessions

          Optimize imports

          Show
          jira-bot ASF subversion and git services added a comment - Commit a843096e61060742f395f4a591a286650db892c9 in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=a843096 ] WICKET-6334 WicketObjects#sizeof() should detach Sessions Optimize imports
          Hide
          svenmeier Sven Meier added a comment -

          I did not dig very deep into this issue yet, but the attached simple example has a forbidden usage of models:

              private IModel<String> model;
          
              public synchronized IModel<String> getLDM() {
                  if (model == null) {
                      model = new LoadableDetachableModel<String>() {
                          @Override
                          protected String load() {
                              return "Hello World!";
                          }
                      };
                  }
                  return model;
              }
          
          • a Session is not single-threaded, a LoadableDetachableModel is not thread-safe, thus this usage is a recipe for desaster
          • note the anonymous inner class holds a reference to the containing Session, this is forbidden too
          • using a model in a session is dubious at the first place: each component calling #getLDM() will get its own copy of the model serialized along with itself, so why pretend it will be shared? It won't be,

          I'd suggest that first we get a valid use case from the reporting user, then we can discuss which measures we want to take or whether we have a problem at all.

          Show
          svenmeier Sven Meier added a comment - I did not dig very deep into this issue yet, but the attached simple example has a forbidden usage of models: private IModel< String > model; public synchronized IModel< String > getLDM() { if (model == null ) { model = new LoadableDetachableModel< String >() { @Override protected String load() { return "Hello World!" ; } }; } return model; } a Session is not single-threaded, a LoadableDetachableModel is not thread-safe, thus this usage is a recipe for desaster note the anonymous inner class holds a reference to the containing Session, this is forbidden too using a model in a session is dubious at the first place: each component calling #getLDM() will get its own copy of the model serialized along with itself, so why pretend it will be shared? It won't be, I'd suggest that first we get a valid use case from the reporting user, then we can discuss which measures we want to take or whether we have a problem at all.
          Hide
          ihorps Ihor Parashynets added a comment - - edited

          Hello Mr.Meier

          To answer your concerns:

          a Session is not single-threaded, a LoadableDetachableModel is not thread-safe, thus this usage is a recipe for desaster

          yes, but it doesn't prevent of such usage. If the application relays that session and the model itself provide proper handling of concurrency I'd it's the usage problem rather that excuses for the framework. This was just simplification usecase to get the idea.

          note the anonymous inner class holds a reference to the containing Session, this is forbidden too

          you can replace it by the following code:

          public class MySession extends WebSession {
          
              private IModel<String> model = new MyLoadableDetachableModel();
          ...
          }
          

          using a model in a session is dubious at the first place: each component calling #getLDM() will get its own copy of the model serialized along with itself, so why pretend it will be shared? It won't be

          take a use-case where session serialization doesn't matter (no bookmarkable pages are used, sticky session, etc)... and event if it would be - there might be an implementation where LDM is properly "de-serialiazed" (session scope level).
          And I'm just curious why is it forbidden to have a model within Session if it's properly handled?

          The issue is not about how to use session and models within Wicket but rather why this error appears in the log if model is being detached properly at the end?

          Thank you.

          Show
          ihorps Ihor Parashynets added a comment - - edited Hello Mr.Meier To answer your concerns: a Session is not single-threaded, a LoadableDetachableModel is not thread-safe, thus this usage is a recipe for desaster yes, but it doesn't prevent of such usage. If the application relays that session and the model itself provide proper handling of concurrency I'd it's the usage problem rather that excuses for the framework. This was just simplification usecase to get the idea. note the anonymous inner class holds a reference to the containing Session, this is forbidden too you can replace it by the following code: public class MySession extends WebSession { private IModel< String > model = new MyLoadableDetachableModel(); ... } using a model in a session is dubious at the first place: each component calling #getLDM() will get its own copy of the model serialized along with itself, so why pretend it will be shared? It won't be take a use-case where session serialization doesn't matter (no bookmarkable pages are used, sticky session, etc)... and event if it would be - there might be an implementation where LDM is properly "de-serialiazed" (session scope level). And I'm just curious why is it forbidden to have a model within Session if it's properly handled? The issue is not about how to use session and models within Wicket but rather why this error appears in the log if model is being detached properly at the end? Thank you.
          Hide
          svenmeier Sven Meier added a comment -

          > the model itself provide proper handling of concurrency

          LoadableDetachableModel doesn't handle concurrency properly, it isn't meant to be used concurrently (as all other models). Please check its #getObject() implementation.

          > And I'm just curious why is it forbidden to have a model within Session if it's properly handled?
          I applaud your curiousity: models are for components, they are single threaded (as are components) and thus have nothing to do within a Session.

          > The issue is not about how to use session and models within Wicket but rather
          > why this error appears in the log if model is being detached properly at the end?

          As long as you haven't provided a valid use case, I can't make a statement on why the error appears in the log.

          Show
          svenmeier Sven Meier added a comment - > the model itself provide proper handling of concurrency LoadableDetachableModel doesn't handle concurrency properly, it isn't meant to be used concurrently (as all other models). Please check its #getObject() implementation. > And I'm just curious why is it forbidden to have a model within Session if it's properly handled? I applaud your curiousity: models are for components, they are single threaded (as are components) and thus have nothing to do within a Session. > The issue is not about how to use session and models within Wicket but rather > why this error appears in the log if model is being detached properly at the end? As long as you haven't provided a valid use case, I can't make a statement on why the error appears in the log.
          Hide
          ihorps Ihor Parashynets added a comment -

          I applaud your curiousity: models are for components, they are single threaded (as are components) and thus have nothing to do within a Session.

          Thank you for your applauding by the way...
          I understood that this model is being shared between different threads and so on so forth. My point was that if LDM is in "read only mode" - would it harm the current use case? I mean a use case when LDM model reads some immutable info.

          And again the overall issue - I can see that WicketObjects#sizeof(final Serializable object), which is used for defining Wicket session size, is actually expecting that there might be objects which are implementing IDetachable

          else if (object instanceof IDetachable)
          		{
          			// clone to not detach the original IDetachable (WICKET-5013, 5014)
          			IDetachable clone = (IDetachable) cloneObject(object);
          			clone.detach();
          
          			target = clone;
          		}
          

          in parallel with NotDetachedModelChecker, which does the check on this session serialization stack:

          	@Override
          	public Result doCheck(Object obj)
          	{
          		Result result = Result.SUCCESS;
          
          		if (obj instanceof LoadableDetachableModel<?>)
          		{
          			LoadableDetachableModel<?> model = (LoadableDetachableModel<?>) obj;
          			if (model.isAttached())
          			{
          				result = new Result(Result.Status.FAILURE, "Not detached model found!");
          			}
          		}
          
          		return result;
          	}
          

          verifies this non-detached state and issues a failure, which is a little bit misleading... because even if there are some issues with concurrency, bad design, whatever... with this error message in the log, it says that there is not-detached model in the session, which is not true actually.

          If you think that this is not valid use-case and Mr. Martin Grigorov doesn't have additional reasons to fix the "issue" - I give up here.

          Thank you for your responses...

          Show
          ihorps Ihor Parashynets added a comment - I applaud your curiousity: models are for components, they are single threaded (as are components) and thus have nothing to do within a Session. Thank you for your applauding by the way... I understood that this model is being shared between different threads and so on so forth. My point was that if LDM is in "read only mode" - would it harm the current use case? I mean a use case when LDM model reads some immutable info. And again the overall issue - I can see that WicketObjects#sizeof(final Serializable object) , which is used for defining Wicket session size, is actually expecting that there might be objects which are implementing IDetachable else if (object instanceof IDetachable) { // clone to not detach the original IDetachable (WICKET-5013, 5014) IDetachable clone = (IDetachable) cloneObject(object); clone.detach(); target = clone; } in parallel with NotDetachedModelChecker , which does the check on this session serialization stack: @Override public Result doCheck( Object obj) { Result result = Result.SUCCESS; if (obj instanceof LoadableDetachableModel<?>) { LoadableDetachableModel<?> model = (LoadableDetachableModel<?>) obj; if (model.isAttached()) { result = new Result(Result.Status.FAILURE, "Not detached model found!" ); } } return result; } verifies this non-detached state and issues a failure, which is a little bit misleading... because even if there are some issues with concurrency, bad design, whatever... with this error message in the log, it says that there is not-detached model in the session, which is not true actually. If you think that this is not valid use-case and Mr. Martin Grigorov doesn't have additional reasons to fix the "issue" - I give up here. Thank you for your responses...
          Hide
          mgrigorov Martin Grigorov added a comment -

          Sven has a good point that using LDM in Session is not thread-safe!

          I think my proposed change is good because of the following reasons:
          1) if the application uses org.apache.wicket.core.util.objects.checker.SessionChecker (I believe it is a very good thing to do!) then Session#getSizeInBytes() will always log an error.
          With the change in 8.x the checkers will only be used when the root object is an instance of a Page and for all its fields and grand-fields. If a Session object is the root then the checkers are skipped
          2) the second problem with #getSizeInBytes() was that it was calculating the size of attached Session, because Session was no IDetachable for some reason until now.
          We started detaching the components and IDetachables with WICKET-4867 4 years ago to calculate their size as they would be when storing on the disk.
          The Session should not be stored on the disk but still I think #getSizeInBytes() should show the numbers after the end of the request cycle.

          Ihor Parashynets I see a workaround for 7.x - use "new NotDetachedModelChecker(Collections.singletonList(MySessionLDM.class))". This way NotDetachedModelChecker won't check this special session model at all.

          Show
          mgrigorov Martin Grigorov added a comment - Sven has a good point that using LDM in Session is not thread-safe! I think my proposed change is good because of the following reasons: 1) if the application uses org.apache.wicket.core.util.objects.checker.SessionChecker (I believe it is a very good thing to do!) then Session#getSizeInBytes() will always log an error. With the change in 8.x the checkers will only be used when the root object is an instance of a Page and for all its fields and grand-fields. If a Session object is the root then the checkers are skipped 2) the second problem with #getSizeInBytes() was that it was calculating the size of attached Session, because Session was no IDetachable for some reason until now. We started detaching the components and IDetachables with WICKET-4867 4 years ago to calculate their size as they would be when storing on the disk. The Session should not be stored on the disk but still I think #getSizeInBytes() should show the numbers after the end of the request cycle. Ihor Parashynets I see a workaround for 7.x - use "new NotDetachedModelChecker(Collections.singletonList(MySessionLDM.class))". This way NotDetachedModelChecker won't check this special session model at all.
          Hide
          ihorps Ihor Parashynets added a comment -

          hello Martin Grigorov

          Thank you for your replay and workaround!
          I fully agree about LDM and its thread safety - no further discussion needed.

          I think you described it very precisely - this is what I was trying to ask as a help/clarification at http://markmail.org/message/mq5zs2veaj4q4psg

          The Session should not be stored on the disk but still I think #getSizeInBytes() should show the numbers after the end of the request cycle.

          Martin Grigorov and I have one more question - If I may... If we need to keep some information on the session scope level, which is "kind" of Model (meaning should be chached/evaluated/detached once per request call) approach - what is the best technique to do such? As I understood Sven Maier keeping Model/s in a "session is dubious at first place..." but from another hand reading https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=76385 i can put into the session any object and do clean-up on Session#detach() method.

          Thank you.

          Show
          ihorps Ihor Parashynets added a comment - hello Martin Grigorov Thank you for your replay and workaround! I fully agree about LDM and its thread safety - no further discussion needed. I think you described it very precisely - this is what I was trying to ask as a help/clarification at http://markmail.org/message/mq5zs2veaj4q4psg The Session should not be stored on the disk but still I think #getSizeInBytes() should show the numbers after the end of the request cycle. Martin Grigorov and I have one more question - If I may... If we need to keep some information on the session scope level, which is "kind" of Model (meaning should be chached/evaluated/detached once per request call) approach - what is the best technique to do such? As I understood Sven Maier keeping Model /s in a " session is dubious at first place ..." but from another hand reading https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=76385 i can put into the session any object and do clean-up on Session#detach() method. Thank you.
          Hide
          mgrigorov Martin Grigorov added a comment - - edited

          If we need to keep some information on the session scope level, which is "kind" of Model (meaning should be chached/evaluated/detached once per request call) approach

          For this I would suggest to use RequestCycle's metadata. It will be loaded once per request and is reachable from all components. And there is no need to actually detach it because it will be GC-ed anyway.

          Show
          mgrigorov Martin Grigorov added a comment - - edited If we need to keep some information on the session scope level, which is "kind" of Model (meaning should be chached/evaluated/detached once per request call) approach For this I would suggest to use RequestCycle's metadata. It will be loaded once per request and is reachable from all components. And there is no need to actually detach it because it will be GC-ed anyway.
          Hide
          svenmeier Sven Meier added a comment -

          I don't think the proposed change is adequate:

          >With the change ... the checkers will only be used when the root object is an instance of a Page

          With NotDetachedModelChecker installed in the CheckingObjectOutputStream, devutils' InspectorPage still fails when calculating the size of the page.
          WicketObjects#sizeof() is broken, because it detaches the object after creating the clone with serialization.

          IMHO it would be better if WicketObjects#cloneObject() did no checking at all: WicketObjects#sizeof() could create a clone, detach it and then calculate the real size, checking all objects with SerializingObjectSizeOfStrategy.

          Show
          svenmeier Sven Meier added a comment - I don't think the proposed change is adequate: >With the change ... the checkers will only be used when the root object is an instance of a Page With NotDetachedModelChecker installed in the CheckingObjectOutputStream, devutils' InspectorPage still fails when calculating the size of the page. WicketObjects#sizeof() is broken, because it detaches the object after creating the clone with serialization. IMHO it would be better if WicketObjects#cloneObject() did no checking at all: WicketObjects#sizeof() could create a clone, detach it and then calculate the real size, checking all objects with SerializingObjectSizeOfStrategy.
          Hide
          ihorps Ihor Parashynets added a comment -

          Got it...
          but about the following use-case: I need to keep information about, let's say, current currency selection, which is loaded from some persistence layer (LDM approach due to fetching additional information like translation, shortcut description, etc) and this information is kept on user's session scope? Currency selection in its turn can be used for UI rendering or for some converters and still has to be preserved as long as session is valid.

          Show
          ihorps Ihor Parashynets added a comment - Got it... but about the following use-case: I need to keep information about, let's say, current currency selection, which is loaded from some persistence layer (LDM approach due to fetching additional information like translation, shortcut description, etc) and this information is kept on user's session scope? Currency selection in its turn can be used for UI rendering or for some converters and still has to be preserved as long as session is valid.
          Hide
          mgrigorov Martin Grigorov added a comment -

          WicketObjects#sizeof() is broken, because it detaches the object after creating the clone with serialization.

          The reason is WICKET-5013 & WICKET-5014.

          IMHO it would be better if WicketObjects#cloneObject() did no checking at all: WicketObjects#sizeof() could create a clone, detach it and then calculate the real size, checking all objects with SerializingObjectSizeOfStrategy.

          How do you see this implemented ? Using a custom JavaSerializer without installed checkers is the only way I see but then apps which use custom ISerializer, e.g. KryoSerializer or FastSerializer, won't work.

          Show
          mgrigorov Martin Grigorov added a comment - WicketObjects#sizeof() is broken, because it detaches the object after creating the clone with serialization. The reason is WICKET-5013 & WICKET-5014 . IMHO it would be better if WicketObjects#cloneObject() did no checking at all: WicketObjects#sizeof() could create a clone, detach it and then calculate the real size, checking all objects with SerializingObjectSizeOfStrategy. How do you see this implemented ? Using a custom JavaSerializer without installed checkers is the only way I see but then apps which use custom ISerializer, e.g. KryoSerializer or FastSerializer, won't work.
          Hide
          mgrigorov Martin Grigorov added a comment -

          Ihor Parashynets Keep the currency id in the Session, setter/getter should be synchronized. The extra data should be loaded for each request - LDM or RequestCycle's metadata.

          Show
          mgrigorov Martin Grigorov added a comment - Ihor Parashynets Keep the currency id in the Session, setter/getter should be synchronized. The extra data should be loaded for each request - LDM or RequestCycle's metadata.
          Hide
          ihorps Ihor Parashynets added a comment -
          Show
          ihorps Ihor Parashynets added a comment - Martin Grigorov thx!
          Hide
          svenmeier Sven Meier added a comment -

          > Martin Grigorov apps which use custom ISerializer, e.g. KryoSerializer or FastSerializer won't work

          these won't work either way, since they don't use CheckingObjectOutputStream with or without your change.

          > Using a custom JavaSerializer without installed checkers is the only way I see

          Me too, but an undetached detachable model with a reference to a non-serializable object will fail with JavaSerializer anyway, regardless of any objectCheckers.

          Show
          svenmeier Sven Meier added a comment - > Martin Grigorov apps which use custom ISerializer, e.g. KryoSerializer or FastSerializer won't work these won't work either way, since they don't use CheckingObjectOutputStream with or without your change. > Using a custom JavaSerializer without installed checkers is the only way I see Me too, but an undetached detachable model with a reference to a non-serializable object will fail with JavaSerializer anyway, regardless of any objectCheckers.
          Hide
          mgrigorov Martin Grigorov added a comment -

          these won't work either way, since they don't use CheckingObjectOutputStream with or without your change.

          Ignore the checkers. An application that uses Kryo won't be able to use #sizeOf() at all with JavaSerializer.
          We can check whether the current serializer is assignable to JavaSerializer and if it is then use a new one without checkers. If it is not JavaSerializer then just use it.

          Me too, but an undetached detachable model with a reference to a non-serializable object will fail with JavaSerializer anyway, regardless of any objectCheckers.

          True! In this case the application will have to call #detach() before calling #sizeOf() ...

          Show
          mgrigorov Martin Grigorov added a comment - these won't work either way, since they don't use CheckingObjectOutputStream with or without your change. Ignore the checkers. An application that uses Kryo won't be able to use #sizeOf() at all with JavaSerializer. We can check whether the current serializer is assignable to JavaSerializer and if it is then use a new one without checkers. If it is not JavaSerializer then just use it. Me too, but an undetached detachable model with a reference to a non-serializable object will fail with JavaSerializer anyway, regardless of any objectCheckers. True! In this case the application will have to call #detach() before calling #sizeOf() ...
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 6e438b1c551c0a2368ad51d3d4ef29fdd21c3756 in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=6e438b1 ]

          Revert "WICKET-6334 WicketObjects#sizeof() should detach Sessions"

          This reverts commit a843096e61060742f395f4a591a286650db892c9.

          Show
          jira-bot ASF subversion and git services added a comment - Commit 6e438b1c551c0a2368ad51d3d4ef29fdd21c3756 in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=6e438b1 ] Revert " WICKET-6334 WicketObjects#sizeof() should detach Sessions" This reverts commit a843096e61060742f395f4a591a286650db892c9.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 266c90037d689f47bf45722532536716dc9f5b06 in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=266c900 ]

          Revert "WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions"

          This reverts commit 8b6fcd869ceb96f7b4ea003d3d5665a1626390ad.

          Show
          jira-bot ASF subversion and git services added a comment - Commit 266c90037d689f47bf45722532536716dc9f5b06 in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=266c900 ] Revert "WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions" This reverts commit 8b6fcd869ceb96f7b4ea003d3d5665a1626390ad.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 0b29a9a57613d2d3dd47d0944449f0637b7400ee in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=0b29a9a ]

          WICKET-6334 Fix a typo in class name

          Improve error message by printing the passed object

          Show
          jira-bot ASF subversion and git services added a comment - Commit 0b29a9a57613d2d3dd47d0944449f0637b7400ee in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=0b29a9a ] WICKET-6334 Fix a typo in class name Improve error message by printing the passed object
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 56b19109fae08a64090f9cf3e5980a4dd82af67b in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=56b1910 ]

          WICKET-6334 Use a fresh instance of JavaSerializer without custom IObjectCheckers (only SerializationChecker) to clone or calculate the size of an object

          Show
          jira-bot ASF subversion and git services added a comment - Commit 56b19109fae08a64090f9cf3e5980a4dd82af67b in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=56b1910 ] WICKET-6334 Use a fresh instance of JavaSerializer without custom IObjectCheckers (only SerializationChecker) to clone or calculate the size of an object
          Hide
          mgrigorov Martin Grigorov added a comment -

          Reverted the old change and now use a new instance of JavaSerializer for cloning objects and calculating sizes.

          Show
          mgrigorov Martin Grigorov added a comment - Reverted the old change and now use a new instance of JavaSerializer for cloning objects and calculating sizes.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit e248168384ef3be71a6cd0b597422dea5a4b9a44 in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=e248168 ]

          Revert "WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions"

          This reverts commit 8b6fcd869ceb96f7b4ea003d3d5665a1626390ad.

          Show
          jira-bot ASF subversion and git services added a comment - Commit e248168384ef3be71a6cd0b597422dea5a4b9a44 in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=e248168 ] Revert "WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions" This reverts commit 8b6fcd869ceb96f7b4ea003d3d5665a1626390ad.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit a08c112b364ac32a4b07f4bc85cacf92a1d6b34e in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=a08c112 ]

          WICKET-6334 Fix a typo in class name

          Improve error message by printing the passed object

          Show
          jira-bot ASF subversion and git services added a comment - Commit a08c112b364ac32a4b07f4bc85cacf92a1d6b34e in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=a08c112 ] WICKET-6334 Fix a typo in class name Improve error message by printing the passed object
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 30f9b993f8293766faa1523a6d96b16f54cebf8d in wicket's branch refs/heads/master from Martin Grigorov
          [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=30f9b99 ]

          WICKET-6334 Use a fresh instance of JavaSerializer without custom IObjectCheckers (only SerializationChecker) to clone or calculate the size of an object

          Show
          jira-bot ASF subversion and git services added a comment - Commit 30f9b993f8293766faa1523a6d96b16f54cebf8d in wicket's branch refs/heads/master from Martin Grigorov [ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=30f9b99 ] WICKET-6334 Use a fresh instance of JavaSerializer without custom IObjectCheckers (only SerializationChecker) to clone or calculate the size of an object

            People

            • Assignee:
              mgrigorov Martin Grigorov
              Reporter:
              mgrigorov Martin Grigorov
            • Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development