Sunday, September 13, 2026

CDO 4.36: Safer Transactions, Faster Persistence, Stronger Foundations

EMF makes it remarkably easy to define structured models and work with them as Java object graphs. But what happens when those models become too important — or too large — to live only in memory or in local files? What if several users need to work on them concurrently, changes need to be transactional, history must be preserved, or different versions of a model need to evolve in parallel?

This is where CDO comes in.

CDO turns EMF models into shared, transactional, versioned data. Applications continue to work with familiar EObjects, while CDO provides repository persistence, transactions, change notifications, versioning, branching, merging, and scalable client/server access underneath.

With CDO 4.36, much of the work happened below the surface. Transactions have become safer and more flexible, large database commits can be considerably more efficient, PostgreSQL support has been thoroughly requalified, and the underlying Net4j communication layer received a substantial robustness and security overhaul.

But there is also a new API that is immediately visible to application developers.

Nested Transaction Scopes

Sometimes a larger operation consists of smaller operations that should succeed or fail independently, without immediately committing anything to the repository.

CDO 4.36 introduces nested transaction scopes for exactly this purpose:





Scopes can be nested arbitrarily. Committing an inner scope accepts its changes into the surrounding scope, but does not commit them to the repository. The enclosing scope can still roll everything back.

And because scopes implement AutoCloseable, leaving a scope without committing it automatically rolls back its changes. This makes them a natural fit for Java's try-with-resources pattern.

For existing APIs that expect a CDOTransaction, a scope can also provide a nested transaction facade. This makes it possible to introduce scoped behavior without having to redesign existing application code around a completely new abstraction.

Safer Transactions and Merges

The same release contains extensive work on transaction and merge correctness.

A failed merge or revert operation no longer risks leaving a transaction only partially modified. CDO now plans and validates these operations before applying them, and restores the previous transaction state if applying the result fails.

Merge handling for multi-valued model features has also become considerably more sophisticated. This is especially relevant when multiple users or branches modify the same collections in different ways. CDO can now reason more accurately about the actual changes rather than relying primarily on list positions.

For an application developer, the important result is simple: complex concurrent model changes can be combined more reliably, and unsuccessful operations leave the transaction in a well-defined state.

Faster Large Database Commits

A second major focus of CDO 4.36 is database performance.

Historically, even when CDO already knew about a complete large commit, many database operations were still executed individually. CDO can now group homogeneous work across a commit and send it to JDBC in much larger batches.

This benefits many large model changes: initial imports, large collections, append-heavy workloads, and transactions modifying many objects at once.

In one PostgreSQL benchmark with 100,000 list entries, two streams of 100,000 individual database operations were reduced to approximately 100 JDBC batch executions each. The measured initial commit time dropped from roughly 20 seconds to around 14–16 seconds.

CDO 4.36 goes further for repositories using branches. Many common large changes can now be persisted without first reading and rewriting the complete existing collection.

For example, if ten elements are appended to a list containing 1,000 elements, CDO can often write just those ten new elements. The same principle is also used for several other common update patterns.

In a synthetic H2 benchmark involving 100 such lists, 1,000 logical appends previously resulted in about 101,000 rows being processed. The optimized path wrote only the 1,000 actual additions. Commit time in that benchmark dropped from approximately 1.30 seconds to 0.10 seconds.

These numbers are workload-specific benchmarks, not a promise that every CDO application suddenly becomes ten times faster. But they illustrate an important architectural improvement: many large model changes now result in database work that is much closer to the size of the actual change.

PostgreSQL, Requalified

CDO's PostgreSQL support received another less visible but important investment.

The complete PostgreSQL database test suite was run against PostgreSQL 18.6 and pgJDBC 42.7.13. Along the way, a number of accumulated compatibility, database lifecycle, schema handling, data binding, and SQL portability issues were found and corrected.

The final qualification covered 5,318 tests, including normal, auditing and branching repositories, different transport configurations, and native models. The corresponding H2 test suite remained green as well.

For users considering CDO for a new server-side application, PostgreSQL therefore remains a thoroughly tested database choice.

A More Robust Communication Layer

CDO applications normally communicate through Net4j, and CDO 4.36 includes a concentrated round of work on this foundation as well.

The changes cover security, WebSocket validation, timeout handling, connector race conditions, resource leaks, channel management, and shutdown behavior. One particularly important security improvement restricts Java object deserialization when the sending peer has not yet been established as trusted.

Most applications should never notice these mechanisms directly — which is exactly the point. A communication framework is at its best when failure handling, cleanup, concurrency and security remain invisible to application code.

Digging Deeper

Existing CDO users who want the implementation details can find them in the corresponding GitHub issues:

The complete list of changes is available in the CDO 4.36 release notes.

CDO 4.36 does not try to reinvent what CDO is. Instead, it strengthens the properties that become increasingly important as an EMF application grows from a model editor into a collaborative, data-intensive system: safe transactions, efficient persistence, reliable concurrency, and robust communication.

If you already use CDO, this release should make demanding workloads safer and faster. If you use EMF but have never tried CDO, 4.36 may be a good reason to take another look: your application can keep working with the model objects it already knows, while CDO takes care of much of the difficult infrastructure required to turn those objects into shared, persistent, versioned data.

And with features such as nested transaction scopes, that infrastructure is becoming easier to use from ordinary Java code as well.

Tuesday, December 9, 2025

Model Evolution Support - Santa Came Early for CDO Users!

As the year draws to a close and the festive season approaches, the CDO team has delivered an early Christmas present to its community: the brand new Model Evolution Support feature! If you’ve ever wished for a smoother, safer way to evolve your EMF models in a CDO repository, your wish has just been granted.

Unwrapping the Gift: What Is Model Evolution Support?

 

Just like a carefully wrapped present under the tree, model evolution has long been a much-anticipated feature for CDO users. In the past, evolving your domain models—adding new features, refactoring classes, or updating enumerations—could be a daunting task, often requiring manual intervention, downtime, or even risky database migrations.

 

With the new Model Evolution Support, CDO introduces a phased, robust, and highly configurable process to handle model changes. This means you can now update your Ecore models and let CDO guide your repository through the necessary steps to keep your data and schema in sync—no more crossing your fingers and hoping for the best!


How Does It Work? A Phased Approach

 

Think of model evolution as a series of steps, much like unwrapping a present layer by layer. CDO’s approach is divided into clear phases: 

  1. Change Detection: CDO first checks for differences between the stored models and your newly registered EPackages. If nothing has changed, the process stops here—no unnecessary work!
  2. Repository Export (Optional): Before making any changes, CDO can export your repository data, providing a safety net in case you need to roll back.
  3. Schema Migration: This is the heart of the process. CDO updates the database schema, adjusts feature IDs, and ensures enums are consistent with your new model.
  4. Store Processing (Optional): Any additional post-processing on the database can be handled here.
  5. Repository Processing (Optional): Final touches and clean-up on the repository itself. 

Each phase is managed by a dedicated handler, and you can customize or extend these handlers to fit your project’s needs. Default implementations are provided for the most critical phases, so you’re ready to go out of the box.

Modes for Every Wish List

Santa knows that not everyone wants the same gift, and CDO’s Model Evolution Support is just as flexible. You can configure the evolution mode to: 

  • Migrate: Automatically evolve your models and database (the default and most magical option).
  • Prevent: Detect changes but stop the process if any are found—perfect for production environments where stability is key.
  • Disabled: Turn off model evolution entirely if you want to manage changes manually.

Peace of Mind: Logging, Recovery, and Transparency

 

No Christmas present is complete without instructions and a warranty! CDO logs every step of the evolution process, stores context and state in dedicated folders, and allows you to resume interrupted evolutions. This transparency means you can always see what’s happening and recover gracefully from any hiccups.

Conclusion: The Gift That Keeps on Giving

With Model Evolution Support, CDO users can look forward to a new year of painless model updates, safer migrations, and more time to focus on building great applications. It’s a feature that truly feels like Santa came early—delivering exactly what the community has been wishing for.


The feature is ready for use in this p2 repository.

More information can be found in the help center.

 

Happy holidays, and happy evolving!

Wednesday, June 11, 2025

CDO: New Release, New Homepage

CDO 4.31 is now available, as usual, together with the Eclipse Simultaneous Release 2025-06.

This CDO release contains no new features because most of my time was absorbed by working on the new build system and the new CDO Homepage:

It was quite a bit of a challenge to make it show dynamic content, particularly on the new, simplified Downloads and Documentation pages, after the Eclipse Foundation finally stopped supporting PHP on their web servers.

The beautiful new banner image and the entire main page text were my first experience with AI assistance 😎

Finally, with a new funding contract in the pocket, I can already promise new CDO features for the next release in 2025-09. Have fun and stay tuned...


Wednesday, September 15, 2021

Friday, October 21, 2016

Fancy Merge Support in CDO

CDO's merge support has recently been enhanced in several ways. Please enjoy this 7:00 minutes screen-cast that I've recorded for you:


If you'd like to learn more about CDO come to the EclipseCon Europe next week where I'll give a session on CDO for Application Programmers. I'd be happy to meet you there!

Tuesday, May 10, 2016

Come to the Eclipse Demo Camp in Berlin

On Thursday, May 12th, 2016 at 1:00 pm the Neon Demo Camp takes place in Berlin:


Of course there will be an interesting line-up of demo sessions and hopefully many other Eclipse users and makers to talk to.

I'll be showing how to install preconfigured Eclipse IDEs and how to quickly customize them to your specific needs with Oomph's Eclipse Installer.

If you happen to be in Berlin and have time, this would be a good opportunity to meet the directors of the Eclipse Foundation, Mike and Ralph,

In any case, please help us to make this a great event by spreading the word to your friends and colleagues in or near Berlin!

Wednesday, October 7, 2015

CDO 4.4.1 Is Available: New User Interface and Documentation

The new CDO Explorer with its new user interface was already released with Mars in June 2015 and I've already blogged about it: Collaborative Modeling with Papyrus and CDO (Reloaded)

Now with CDO 4.4.1 the documentation has been augmented with a beautiful User's Guide and an extensive Operator's Guide.

Please browse the release notes to see what else has changed.

Again, special thanks go to CEA for generously funding the following:
  • Branching and interactive merging
  • Support for offline checkouts
  • Interactive conflict resolution
  • Documentation
Download CDO 4.4.1 and enjoy the best CDO ever!