Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc)  » [CDO][0.8.0] Update
[CDO][0.8.0] Update [message #96361] Sun, 09 September 2007 03:20 Go to next message
Simon Mc Duff is currently offline Simon Mc DuffFriend
Messages: 596
Registered: July 2009
Senior Member
Hi Eike,

Here some update about our work.

We are putting CDO/NEt4J 0.8.0 in Prod September 23.

At some point, I will only integrated only bugs fixes in our systems to
stabilize it and not integrating new problems.

Each time we synchronize our code with the repository, we need to change few
things to make it more stable... and more efficient.

I think a few of these could be useful for the community and some not. Let
me know if something interest you.

-Session.provideCOID
return id immediately.. just slow down the system and takes too much
memory for nothing.

-CDOViewImpl + CDORevisionResolverImpl
Replace HashMap by JCSMap for cache. Didn`t find any elegant way to provide
capability to the framework to put a Factory to create the cache....So I
just replaced them manually.

- SubClass CDOSessionImpl to provide functionnality like

SyncRevisionRequest, SyncRevisionIndication - Not only CDO is used to
access the database. The consequence is we do not have all the event.
Actions :
- Take the CDOID + version of every object in the CDOView
- Send them to the server...
- Server compare the version received from the client with the one in
the database.
- return CDORevisionIMpl of objects that have different version.
- Client retrieved object and fire InvalidateEvent the Session... the
session does the same things for all views.
- Only the Session (even if we request the sync through the CDOView)
that asked for the synchronisation will receive events. Other sessions
connected to the server will not receive them.

-Query (OCL language) through JPA interface
QueryRequest (Really basic)
QueryIndication (Really basic)

- Added IStoreIndex to query our database through JPA.

- Added a JPA layer in front of CDO with basic implementation.(for now)

-Channel use SynchronousWorkSerializer instead of QueueWorkerWorkSerializer
We still have some hanging.. but not sure what is the cause yet .... Before
removing Session.provideCOID we had a lot of Out of memory.. and our server
wasn`t stable. Some time we didn`t have any trace.... was just freezing.
Lately we switch to SynchronousWorkSerializer to see if will happen again...
I will let you know if it is still the problem.


With these changes and with the last version of CDODynamicFetchRuleAnalyzer
(I will send it to you soon) I can go up to 12000 objects / sec.

I think we improved a lot the throughput in the last weeks.. we were around
at 1000-1200 objects/sec 2 weeks ago...

The framework is well define .. so it is easy to optimize part of it.

See you!!

Simon
Re: [CDO][0.8.0] Update [message #96379 is a reply to message #96361] Mon, 10 September 2007 08:23 Go to previous message
Eclipse UserFriend
Originally posted by: stepper.sympedia.de

Hi Simon,

Comments inline...


Simon McDuff schrieb:
> Hi Eike,
>
> Here some update about our work.
>
> We are putting CDO/NEt4J 0.8.0 in Prod September 23.
>
> At some point, I will only integrated only bugs fixes in our systems to
> stabilize it and not integrating new problems.
>
> Each time we synchronize our code with the repository, we need to change few
> things to make it more stable... and more efficient.
>
> I think a few of these could be useful for the community and some not. Let
> me know if something interest you.
>
Yes, of course I'm interested in them ;-)
We should be able to integrate all good features and fixes into the code
base so that you don't have to maintain the changes locally.

> -Session.provideCOID
> return id immediately.. just slow down the system and takes too much
> memory for nothing.
>
I'd be more than happy if that effort would be for nothing (and could
thus be removed), but you know that you have a somewhat limited view of
things here because you are "only" using CDO native objects. With CDO
native objects you can't handle models that have not been generated for
CDO which includes the Ecore model itself or UML2. For these (legacy)
models it is unfortunately necessary to spend this effort. I've told you
that I can make it optional/configurable on a CDOSession base. But I
currently don't see a short way to completely remove this feature.
Maybe, when I have more time, I can investigate the use of dynamic
proxies at the client side to circumvent the pre-transmission of
concrete object types for list elements.
Added https://bugs.eclipse.org/bugs/show_bug.cgi?id=202768 so that we
don't forget aout it.

> -CDOViewImpl + CDORevisionResolverImpl
> Replace HashMap by JCSMap for cache. Didn`t find any elegant way to provide
> capability to the framework to put a Factory to create the cache....So I
> just replaced them manually.
>
If you open a feature request and attach your changes I can see if/how I
can make it configurable.
Please paste in URLs for any 3rd party code that I have to download.

> - SubClass CDOSessionImpl to provide functionnality like
>
> SyncRevisionRequest, SyncRevisionIndication - Not only CDO is used to
> access the database. The consequence is we do not have all the event.
> Actions :
> - Take the CDOID + version of every object in the CDOView
> - Send them to the server...
> - Server compare the version received from the client with the one in
> the database.
> - return CDORevisionIMpl of objects that have different version.
> - Client retrieved object and fire InvalidateEvent the Session... the
> session does the same things for all views.
> - Only the Session (even if we request the sync through the CDOView)
> that asked for the synchronisation will receive events. Other sessions
> connected to the server will not receive them.
>
Sounds good. I had something similar in mind to provide sort of
disconnected sessions.
Maybe I can add this feature (connect to repository, load graphs,
disconnect, work in disconnected session, reconnect and synchronize).
Please add a feature request and attach your changes/additions.

> -Query (OCL language) through JPA interface
> QueryRequest (Really basic)
> QueryIndication (Really basic)
>
> - Added IStoreIndex to query our database through JPA.
>
> - Added a JPA layer in front of CDO with basic implementation.(for now)
>
Even if it's basic at the moment we could make an optional separate
plugin out of it.
Please feel free to open a feature request and attach your initial
contribution.

> -Channel use SynchronousWorkSerializer instead of QueueWorkerWorkSerializer
> We still have some hanging.. but not sure what is the cause yet .... Before
> removing Session.provideCOID we had a lot of Out of memory.. and our server
> wasn`t stable. Some time we didn`t have any trace.... was just freezing.
> Lately we switch to SynchronousWorkSerializer to see if will happen again...
> I will let you know if it is still the problem.
>
SynchronousWorkSerializer isn't that ideal because in this particular
case it uses the thread of the TCPSelector.
Please reanimate https://bugs.eclipse.org/bugs/show_bug.cgi?id=201366 if
you have still problems.

> With these changes and with the last version of CDODynamicFetchRuleAnalyzer
> (I will send it to you soon) I can go up to 12000 objects / sec.
>
Have already integrated your recent changes.
The numbers you give are really impressive!
Good work and thank you ;-)


Cheers
/Eike
Re: [CDO][0.8.0] Update [message #609680 is a reply to message #96361] Mon, 10 September 2007 08:23 Go to previous message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Simon,

Comments inline...


Simon McDuff schrieb:
> Hi Eike,
>
> Here some update about our work.
>
> We are putting CDO/NEt4J 0.8.0 in Prod September 23.
>
> At some point, I will only integrated only bugs fixes in our systems to
> stabilize it and not integrating new problems.
>
> Each time we synchronize our code with the repository, we need to change few
> things to make it more stable... and more efficient.
>
> I think a few of these could be useful for the community and some not. Let
> me know if something interest you.
>
Yes, of course I'm interested in them ;-)
We should be able to integrate all good features and fixes into the code
base so that you don't have to maintain the changes locally.

> -Session.provideCOID
> return id immediately.. just slow down the system and takes too much
> memory for nothing.
>
I'd be more than happy if that effort would be for nothing (and could
thus be removed), but you know that you have a somewhat limited view of
things here because you are "only" using CDO native objects. With CDO
native objects you can't handle models that have not been generated for
CDO which includes the Ecore model itself or UML2. For these (legacy)
models it is unfortunately necessary to spend this effort. I've told you
that I can make it optional/configurable on a CDOSession base. But I
currently don't see a short way to completely remove this feature.
Maybe, when I have more time, I can investigate the use of dynamic
proxies at the client side to circumvent the pre-transmission of
concrete object types for list elements.
Added https://bugs.eclipse.org/bugs/show_bug.cgi?id=202768 so that we
don't forget aout it.

> -CDOViewImpl + CDORevisionResolverImpl
> Replace HashMap by JCSMap for cache. Didn`t find any elegant way to provide
> capability to the framework to put a Factory to create the cache....So I
> just replaced them manually.
>
If you open a feature request and attach your changes I can see if/how I
can make it configurable.
Please paste in URLs for any 3rd party code that I have to download.

> - SubClass CDOSessionImpl to provide functionnality like
>
> SyncRevisionRequest, SyncRevisionIndication - Not only CDO is used to
> access the database. The consequence is we do not have all the event.
> Actions :
> - Take the CDOID + version of every object in the CDOView
> - Send them to the server...
> - Server compare the version received from the client with the one in
> the database.
> - return CDORevisionIMpl of objects that have different version.
> - Client retrieved object and fire InvalidateEvent the Session... the
> session does the same things for all views.
> - Only the Session (even if we request the sync through the CDOView)
> that asked for the synchronisation will receive events. Other sessions
> connected to the server will not receive them.
>
Sounds good. I had something similar in mind to provide sort of
disconnected sessions.
Maybe I can add this feature (connect to repository, load graphs,
disconnect, work in disconnected session, reconnect and synchronize).
Please add a feature request and attach your changes/additions.

> -Query (OCL language) through JPA interface
> QueryRequest (Really basic)
> QueryIndication (Really basic)
>
> - Added IStoreIndex to query our database through JPA.
>
> - Added a JPA layer in front of CDO with basic implementation.(for now)
>
Even if it's basic at the moment we could make an optional separate
plugin out of it.
Please feel free to open a feature request and attach your initial
contribution.

> -Channel use SynchronousWorkSerializer instead of QueueWorkerWorkSerializer
> We still have some hanging.. but not sure what is the cause yet .... Before
> removing Session.provideCOID we had a lot of Out of memory.. and our server
> wasn`t stable. Some time we didn`t have any trace.... was just freezing.
> Lately we switch to SynchronousWorkSerializer to see if will happen again...
> I will let you know if it is still the problem.
>
SynchronousWorkSerializer isn't that ideal because in this particular
case it uses the thread of the TCPSelector.
Please reanimate https://bugs.eclipse.org/bugs/show_bug.cgi?id=201366 if
you have still problems.

> With these changes and with the last version of CDODynamicFetchRuleAnalyzer
> (I will send it to you soon) I can go up to 12000 objects / sec.
>
Have already integrated your recent changes.
The numbers you give are really impressive!
Good work and thank you ;-)


Cheers
/Eike


Previous Topic:[CDO][0.8.0] Update
Next Topic:[CDO][0.8.0] Streaming
Goto Forum:
  


Current Time: Thu Apr 25 05:09:42 GMT 2024

Powered by FUDForum. Page generated in 0.03605 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top