Hello all, We are having some issues with using Voyage/Mongo for a customer project that I'd like to get your feedback on.
The customer application is a form based business web application using Seaside with object persistence using Voyage with MongoDB on Pharo 7.0. The application is deployed on a dedicated Linux production server running MongoDB version 4.2. The application is used to manage meeting agendas and minutes. After opening the agenda view of a future meeting, the user can add an item to the agenda by clicking a button. This calls an item editor component which answers when a Save or Cancel button is clicked. The agenda view component itself also has a Save button, which performs a Voyage save of the object aggregate (agenda + items). We've encountered an issue where a user makes changes to an agenda, but does not click the Save button. Instead, the user closes the browser or uses the navigation to go to a different part of the application. When navigating back to the original agenda, the changes made previously (e.g. items added) are still being displayed, even though they were never explicitly saved. It does not matter if we select the agenda aggregate object instance using Voyage or access it in a different way. Changes to the state of the object are retained, even though a Voyage save was never sent to the agenda instance. The cause seems to be that the Voyage repository caches the object instance and thus on select, it returns an object that is in a different state than how it was persisted. This all seems to come down to object transactionality. We have a need to 'cancel' changes made to an object instance. Before working with Pharo/Smalltalk in a non-image based environment, I was used to do this by retrieving the original object from persistence again. This also allowed for a convenient way to detect changes to an object's state, which we are missing at the moment too. We know that moving to GemStone can help us with these issues, but our current planning of customer projects does not allow us to do this within the next 3 months. And we really need to find a way to tackle these issues . Your feedback is greatly appreciated! Kind regards, Jonathan van Alteren Founding Member | Object Guild jvalte...@objectguild.com