CRISTAL Kernel Changelog Legend of subsystems: WF - Workflow, SCR - Scripting, GRAPH - Graph API, COLL - Collections API, PROP - Properties, DB - Persistency, MOD - Module, LDAP - LDAP Lookup, INST - Deployment, BOOT - Bootloader, BLD - Build environment SYS - System, TEST - Testing, GUI - CRISTAL Administrator Interface (before extraction to separate module) Release 2.4 ----------- - WF: Vertex ID, Edge ID, width and height values were defined as bytes, limiting them to 127. It's now an integer. - WF: Keep a History object in the Workflow to avoid recreating it on repeated executions. - SYS: Synchronize on the hardCache, as it occasionally causes exceptions. - SYS: Authentication plugin for Console - BLD: Build server is now called 'dev'. Repositories are now CCCS wide. - WF: Domain workflow CompositeActivity must be called 'domain'. ReplaceDomainWorkflow predef step now forces this. - LDAP: Escape DNs with hex codes instead - more compatible - COLL: getCollection proxy API method. - SYS: Prompt for connect file for all kernel launches - LDAP: Escape DNs in Path, so special characters can be used in Path components. - WF: Check SchemaType for outcome requirement in Job instead of SchemaVersion - DB: Make sure validator exists if outcome is null before script execution - BOOT: Agent and Item schemas were out of line with the new module versions of NewItem and NewAgent classes, and the mapfile. - WF: Collect stale job IDs when refreshing joblist. Remove them after to avoid concurrent mod, as we don't want to preload all the values. - TEST: Static schema loading. - MOD: Force order of imports to make sure that roles and agents are imported before items, so init push jobs will function. - MOD: Add Role management support to module, instead of just creating one if it's not already there. Supports 'jobList' attribute to enable job pushing. - DB: Added getSchema() method to Outcome to load schema xml. Removed unused 'getSchemaURI' method. - MOD: Fixed bug in module dependency shuffling - DB: Cleanup old schemas. - BOOT: Use XMLDiff to compare module resources during boot - MOD: Support empty Aggregations - MOD: Insert 'Module' property during import, indicating the module that Item came from - TEST: Memory-only cluster storage for testing. - TEST: Unit tests for bundled schema validation and marshalled object validation - SYS: Remove NonStrongRefCache, as it didn't add anything to Map - TEST: Script testing and resulting fixes to the script API Release 2.3.3 (19/02/2013) ------------- - MOD: Properly order module importing and loading by depencency. Detect circular dependencies. - SCR: Fold script console environment into Script. Add support for 'textFiles/consoleScript.lang.txt' console function declarations in kernel and modules. Use that context for ScriptConsole network consoles and new ShellConsole client process. - SYS: Add mCurrentUser property for logged in client processes. - SYS: Resource changes: getAllTextResources finds all matching in kernel and modules, getAllBaseURLs returns all modules and kernel, findTextResource searches kernel first - no overriding - SCR: Global catch in Script extended to all Throwables. - SYS: Removed isServer boolean - implied by AbstractMain.runningAsWrapper - MOD: Move server startup script execution to the end of the item registration - WF: Write Import outcomes directly to storage. Add optional timestamp override to Import. If missing, defaults to now. - WF: Added ViewName field to Event. - WF: Cleanup outcome storing code. Throw an exception if SchemaType filled in and outcome is empty. - SYS: Resources weren't being explicity read as UTF-8, which caused problems on certain platforms. - DB: Fix unsynchronized gap between check and retrieve of memcache object. - SYS: Signal stopping to the wrapper manager - LDAP: LDAP search by property. Returns EntityPaths - MOD: Fix crash when module ResourceURL is invalid - BLD: Repository changed to Nexus. - SYS: Correct ORB properties for hostname and port IOR config - DB: Added optional WeakCache to hold fewer ClusterStorage objects in memory. Enabled with Storage.useWeakCache property. - BOOT: Use XMLUnit XML Diff to compare system resources, for compatibility with XMLDBs that may not return lexigraphically identical documents - SYS: Do Schema parsing in the Schema object rather than the Validator - DB: List of current cluster types for use by storage implementations - BOOT: Write console port to server item even if it's been automatically generated. - MOD: Validate module XML against schema before unmarshalling. - SYS: CastorXMLUtility is no longer static, and cannot have new mappings added to it by domain code. - DB: Deprecate old overly generic ClusterStorage query methods. - BLD: Add reference to pom for Jenkins CI server. Official host is now 'cristal.cccs.uwe.ac.uk'. - WF: Suppress exception logging when wf split script is a literal. Release 2.3.2 (28/08/2012) ------------- - SYS: Replace deprecated XML serialisation with DOM LS - WF: Predefined steps audit: added more collection management steps - MOD: Introduce Module.debug property for setting an editing workflow on module resources to tweak them in place. - WF: 'Breakpoint' property in activity. Execution will not proceed to the next activity on DONE or COMPLETE if set to true, only on PROCEED - WF: Autostart remove. Default behaviour is now autostart for composite activities, not for elementary ones. - WF: SUSPEND transition can accept an outcome defined by 'Errors' kernel schema, which is an XML marshalled ErrorInfo. - MOD: Create Module item in /desc/modules for each module registered in the server. - SYS: CastorXMLUtility is now a singleton (mMarshaller) in the gateway for kernel mapfiles. Modules may create their own instance for domain applications, but should not interfere with the kernel maps. - MOD: Module serialize with Castor. Removed XML parsing. - SYS: Fixed persistency of GTimeStamp - GRAPH: Removed persistency of VertexOutlineCreator. Containing class should set this during instantiation and unmarshalling. - GUI: Refactored kernel GUI into separate module: cristal-gui. - MOD: Modules and server entity creation now support aggregations, collection properties and class identifiers - COLL: Merged module imports and server predefined step entity creation together - GUI: Alternate placement of aggregation labels to be more readable. - MOD: Support workflows on module resources to allow development. Possibly add 'debug' flag to enable this in the future. - MOD: Move module imports into bootstrap thread. They were previously being done concurrently. - SCR: Mozilla JS library switched to internal JRE one. Removed ref to internal mozilla undef. javax.script should now return null for undef. - LDAP: Compatible with latest JLDAP library (v4.3) - BLD: Build moved from ant to Maven. Artifact 'cristal-kernel' in group 'cristal'. - SCR: Allow multiple declared outputs from scripts. Improve chaining of parameters between scripts. - DB: Cache RemoteMaps if they are not related to a transaction - GUI: Outcome field help panel hiding works. Additional robustness of outcome form. - SYS: SoftCache - Fix NPE when key doesn't exist - WF: Removed redundant fields from Event: AgentCentre and Type - PROP: Imply 'Name' property on instantiation if not explicitly declared - SCR: More efficient DOM handling, getField() utility method for script Release 2.3.1 (26/04/2012) ------------- - SYS: History objects fetched from an EntityProxy now have no locker, instead of the entity proxy object as previously. This is so it can be cached by the storage manager. If a transaction enabled History object is required, it should be instantiated directly. - SCR: Migrate from BSF to javax.script. Switch to JVM Rhino JS engine. This has changed the script system significantly. No more bsf.lookupBean (may add dummy for compatibility). Output parameters are also handled differently now. Build 1 - SYS: Fix NPE in SoftCache when key doesn't exist - WF: Imply 'Name' property on instantiation if not explicity declared - DB: More efficient DOM handling, getField() utility method for scripts - COLL: Added DependencyDescription. - COLL: addMember methods return new CollectionMember - SYS: Removed redundant fields from Event: AgentCentre and Type Release 2.3 (23/11/2011) ----------- Build 3 - Module support - MOD: Cristal now supports multiple domain libraries concurrently - CRISTAL modules. Each declares its components in a module.xml in the root of its jar which can add config, resources, items and agents. Also scripts on startup/shutdown. Build 2 - Java 1.6 Compliance Build 1 - First GIT commit - SYS: Cleaned up some proxy methods. getContents() now calls storage directly. - SYS: Removed Orbacus. Use JDK ORB instead. Use JDK idlj compiler instead of Orbacus one. Remove all Orbacus tools. Release 2.2 ----------- Build 3 - Last CERN - GUI: Local object creating script now opens new desc when done. - LDAP: Optimised Path setting by String. - DB: Renamed 'delete' method in storage to 'remove' for compatibility with javascript engine - WF: Fixed overwriting cached actdef properties, corrupting for future wfs Build 2 - SYS: Reduced interdependency between kernel singletons. Less back-calls to the gateway. - GUI: Fixed bad subscription breaking collection pane refresh. - GUI: Fixed NullPointerException trying to open items from tree collection. - WF: Implemented version numbers for wfdef references - DB: Separated LocalObjectLoader from Resource. Implemented cache for unmarshalled activity defs. - WF: Cut down number of calls to 'PushJobsToAgent'. This was slowing instantiation. - WF: Further cleaning. Simplified instantiation. - GUI: Close all and close other tabs in the File menu - SYS: New agent proxy util method - getItemByPath - GUI: Stop cell edit when new row added Build 1 - DB: Removed schema validator caching - GUI: New icon set. Reorganised all image resources. - INST: Updated installer to NSIS 2.06 - GUI: Fixed bug with read-only tables not being read only. - GUI: Add and remove vertex properties - GUI: Attributes are included in the first grabFocus() search - GUI: Dimensions no longer create an empty first row when they are created, if their minOccurs is 0. - SYS: Item and Agent factories have been replaced with a single item created on boot. It is registered with the name of the server so it is now possible for a centre to be shared between more than one server process. - GUI: Cleaned up menus - GUI: Unified Wf and Coll property pane into a single Vertex one - WF: Removed a lot of Aglium specific stuff - commonInterface, timeOut, Prefill - WF: Removed errors on no child in compostite activity and XOR script existence checking (too heavy) - GUI: Elementary activity outcome handler - based on property pane. - GUI: Cut down calls to check for Admin role. GUI will have to be restarted for admin role change to take effect. - GUI: Better read-only support in vertex property panel. New panel for act defs - finds child act def item. - GRAPH: clicking outside a vertex selects the containing graphable vertex, if present. Used for editing props of composite activity def etc. - SYS: Entity Exception throwing clarified - LDAP: Role management API simplified. Roles can now have no agents. - LDAP: Reorganised the LDAP package into various managers, simplified API. Most calls now go through the Path objects. No LDAP library objects should leave the lookup package now. - COLL: ClassCastException on Dependency.removeMember(id) fixed - BOOT: Bootloader creates script, activity definition and schema items at boot time. Old resource schema loading disabled. - SYS: Console ports are automatically assigned if none is specified. Chosen port is logged. GUI Client Console menu option is aware of the choice. - SYS: Console access: Default policy is to only allow connection from localhost. - GUI: List Of Values in outcome form - only supports enumerations for now. - SCR: Added support for tag in script xml to include other scripts - GUI: Removed 'auto-refresh execution pane' option - set to always reload - SYS: Changed SoftCache implementation to use ReferenceQueue to manage reaped objects. Should be more efficient. - LDAP: Changed LDAP property storage to attribute instead on child entry. Lots faster and appears in alias for query. - SYS: Moved all API objects out of AbstractMain into the Gateway. AbstractMain is no longer required to initialise a kernel process. - SYS: Moved Gateway to process package. Moved LDAP init to process.Bootstrap - will be entry point for basic item creation Release 2.1.1 ----------------------- Build 22 - GUI: Multiple table row select when read only Build 21 - GUI: Aggregation history browsing - GUI: Image field editing Build 20 - GUI: save/load execution xml Build 19 - GUI: implemented Array editing Build 18 - DB: Add 'queryToXML' to return the results as an XML string instead of a native result set. - WF: Disabled EventList in wf. Removed OutcomeDataHelper and all timeout and prefill code. Build 17 - GUI: Added image display of Base64Binary schema datatype Build 16 - WF: Removed state and transition translation tables - not used - GUI: Added activity state hacking for administrators in workflow pane Build 15 - WF: Optimised CompositeActivityDef unmarshalling, it was loading child activity defs multiple times. Should speed up item registration, especially for large workflows. Also cut down on slot loading child actdef. Build 14 - SYS: Fixed proxy subscription attempt before connection to proxy server established Build 13 - GUI: SwingWorker style tree building, should stop the exceptions and empty space problems - GUI: Data records and dimensions that aren't immediately visible are deferred until they are selected - GUI: Console supports loading scripts from a file (with %s replacement with input text) - GUI: Workflow pane returns to last viewed graph on refresh/update. Property Panel resets on model change. - GUI: Outcome viewer empty fields are left empty in read-only mode. Build 12 - GUI: Fixed crash of properties pane when user is not administrator - GUI: Fixed crash in viewpoint pane if no 'last' view is present for outcome type - GUI: Outcome form can cope with empty elements in tables (provided datatype is supplied) Build 11 - SYS: Strings without translation are logged in the file 'untranslated.txt' - GUI: Removed translation calls for outcome form element names - GUI: Fixed strange tree behaviour (large white gaps, incomplete labels) caused by wrongly sized labels - GUI: Extended about box to include copyright notices and license links for third party components Build 10 - GUI: Changed LoginBox key listener for compatibility with java 1.4 - LDAP: Fixed read-ahead bug causing hang when invalid entry received - GUI: DomainPath edit section of property pane rewritten. Supports changing - GUI: New Collection pane supports multiple collections per item. Dependency view not yet implemented Build 9 - GUI: Fixed tree refresh - DB: Added Schema validation Build 8 - WF: Fixed Join proceeding when a previous Composite was still active - WF: Fixed Composite activity calculateAllJobs for Item.queryLifecycle filter=false - LDAP: LDAPLookup uses a query batch size to speed up loading of the tree. It will only load 100 nodes at a time. - UC: Usercode process suspends on all Throwables instead of just Exceptions. This catches OutOfMemoryErrors. - SYS: Added version resources Release 2.1 ----------- - WF: New workflow straight edge styles - DB: Storage clusters were not being queried in the order specified in the config. Fixed. - GUI: Combined Outcome and Viewpoint Panes as single History/Outcome/Event pane - DB: Fixed LDAP retrieval of properties - SYS: Partially implemented Entity Proxy reaping - SYS: Fixed proxy connection hang - SYS: Fixed proxy disconnection exception - GUI: Changed admin property updating to use marshalling - DB: Made persistent objects java.io.Serializable to allow simple binary cluster storage - WF: Multi-threaded job pushing - WF: SKIP transition clears reservation, as it could have been set by RESERVE - GUI: Copy/Paste graph layouts (only supported in Java 1.4+) - WF: Fixed loop/join backlink detection - SYS: Client notification of domain path changes - WF: Fixed bug where repeating activities were never ignorable - DB: Dependency collection was not marshalled properly - SYS: Implemented soft reference cache to let unused cached objects get reaped by the VM when memory is tight. Used for caching: - Entities in memory on the server - Entity Proxies - C2KLocalObjects in ClusterStorage memory cache - SchemaValidators - SYS: Server entity Reaper is no longer needed under soft caching. - SYS: Split kernel/domain resources. Domain specific jars can now be kept in the domain jar or at a URL. - SYS: Proxy subscriptions hold observers by WeakReference, to not lock them in memory. - SYS: Various EntityProxy utils - LDAP: Change IOR encoding to hostname to allow IP change - WF: Fixed addition of composite activities into instance workflow from composition Release 2.0 ----------- - Initial Release