|
Release Notes
COUGAAR 12.0
|
Jump down to:
Introduction
This file contains the release notes for Cougaar 12.0.
Please see our Cougaar FAQ
(online version) for a high-level
introduction to the Cougaar agent architecture, system requirements, 3rd party software,
and pointers to additional documentation.
Please also visit our
Cougaar Website for the latest
news, documentation, and Cougaar builds.
License
Cougaar is available the Cougaar Open Source
License (COSL). See License.txt or
cougaar.org/license.html.
Requirements
- Java 2 SDK, version 1.4.2 or version 5.0: Cougaar I/O is very closely tied to
the specific java implementation, so usually depends on a particular
release of the jdk. We have not observed any compatibility problems
across service releases (e.g. "_01" versus "_03"). Other 1.4 versions,
while not supported, are likely to be possible with a small amount of
effort. Two releases are available for Cougaar 12.0. One for Java 1.4.2 and one for Java 5.0.
Future Cougaar releases will require Java 5.0.
- Third-party libraries: Detailed requirements and jarfile versions are discussed in
sys/index.html. When a package
allows redistribution, we have included it in the
sys subdirectory as part of the cougaar-support.zip package.
- No OS requirement: Cougaar developers use a variety of operating
systems, including Linux, Windows and Mac OSX. There are no particular
known compatibility issues across platforms.
- No special hardware requirement: Cougaar can be used on hardware ranging
from very small(See the CougaarME project) through large machines.
SMP and HyperThreading are fully supported.
Overview of this Release
Please see our website (http://cougaar.org/errata/) for updated information on problems/workarounds
that were detected/posted after this Cougaar version was released.
The errata directory is organized by cougaar release number. For
example, the errata page for Cougaar 11.0 is http://cougaar.org/errata/cougaar1100/errata.html.
Build 12.0 is a major release. The primary changes were JDK1.5
support (see above though), and a new concept called coordination artifacts.
- There is a new CoordinationArtifacts concept. See The Frame Online Manual.
- RFE 3923: Changed PlanningDomain, some fields, to protected access
so it can be easily extended. IE, just over-ride loadLPs, specify this
domain as "planning", and specify org.cougaar.core.load.planning=false
in all nodes. Then you can change the set of LPs running in the PlanningDomain.
- bug 3906 and bug 3934Fixed a timing issue related to creating new communities dynamically. Corrected issues regarding multiple attributes for community entities.
- bug 3909 Added accessors for planning and servicediscovery factories
- bug
3930 Added a component to exit on any logged error for testing
purposes (DieOnErrorComponent)
- bug 3933 bug 3922 and bug 3931Updated the Java IO patch to work with Java 5.0
- bug 3937 Updated the CommunityService to be compliant with DirContext interface
- bug 3820 Resolved validation issues with XSL files
- bug
3846 Corrected syncronization issues regarding access to Workflow
tasks
- bug
3936 Split SimpleRelay into separate source & target
implementations.
-
- Bootstrap.jar is now optionally executable. It also allows simpler
addition of jars to org.cougaar.jar.path. See the Javadoc.
- For other bug fixes, see the Cougaar bugs web site.
Build 11.4 is a minor release, including
performance optimizations, and multiple bug fixes. Key changes include
a new "cougaar" run script, a new "pizza" sample application /
regression test / tutorial, a runtime Component Model Viewer to see
what components are running where, ServiceDiscovery support for OWL,
and an HTTP Message Transport Protocol.
- Created new "bin/cougaar[.bat]" scripts that replace the older
"bin/*Node*" scripts:
Node, Node.bat, XMLNode, XSLNode, XSLNode.bat
For example, if "MyNode.xml" contains only node "MyNode", then
instead of the old usage:
$COUGAAR_INSTALL_PATH/bin/Node MyNode.xml MyNode
now use:
$COUGAAR_INSTALL_PATH/bin/cougaar MyNode.xml
The new scripts are similar to ACME and the removed XSLNode, which
read the Java system properties from the XML file, for example:
<node name='MyNode'>
<vm_parameter>-Dx=y</vm_parameter>
..
These "-D"s can be specified in a separate "system" XML file and
run using:
$COUGAAR_INSTALL_PATH/bin/cougaar --system mySystem.xml MyNode.xml
INI files are supported for this release, but are scheduled for
removal in the 12.0 release (
bug 3881
)
For more details, run:
$COUGAAR_INSTALL_PATH/bin/cougaar --help
or see
bug 3447
.
- Added a new "pizza" application suite. These applications are
good examples of how to use relays, communities, service discovery, etc.
The pizza applications also replace "minitestconfig" as the standard
regression application. See the "pizza" module's documentation for
details.
- Added a runtime component model viewer, to see which components
are loaded and which services they have advertised/obtained. This
includes a "/components" servlet that generates XML views (
bug 1113
).
- Blackboard now complains about possible performance hits (like use
of DynamicUnaryPredicates). To quiet these, set the -D
org.cougaar.blackboard.pedantic=false
- Code cleanup to remove deprecated method calls and fix many
PMD style warnings.
- Lots of javadoc cleanup, including a major rewrite of the
class-level javadoc in core (
bug 3736
) and message transport (
bug 3738
).
- The LoggingService now prepends the agent name to all log messages.
For example, in agent "X", the code:
loggingService.info("test");
will be logged as:
12:34:56,789 INFO - MyPlugin - X: test
This can be disabled with:
-Dorg.cougaar.core.logging.addAgentPrefix=false
(
bug 3829
).
- Added AssetDataParamPlugin, allowing creation of Entity objects
solely from XML parameters. This is used in the "pizza" applications
and is planned to be used in a future cleanup of the tutorial
exercises.
- Converted ServiceDiscovery from DAML to OWL (
bug 3753
).
- Added an HTTP message transport link protocol (contributed by
CSI) that uses Servlets and URLConnections instead of RMI. To
support this new link protocol, a new generic "RPC" link protocol
base class was created. The RMI and Corba link protocol have
been refactored to use the new base class.
- A servlet path that lacks a "/$" prefix is now handled by
by the node-agent instead of redirecting to a random local agent's
servlet (
bug 3843
).
- If a component defines a "setServiceBroker(ServiceBroker sb)"
method, the component model will find it through reflection and
call it (
bug 3562
). This is intended to phase out the existing
"setBindingSite(BindingSite bs)" API. The core has been modified to
use the new API (
bug 3724
).
- Added new "-Dorg.cougaar.jar.path" system property to change the
Bootstrapper jar finder path, which was previously hard-coded to look
for jars in "-Dorg.cougaar.class.path" and in the
"-Dorg.cougaar.install.path"'s "lib/" and "sys/" directories.
The new system property makes it easier to create a shared read-only
Cougaar install with per-user read/write overlays (
bug 3717
).
- Added a simple component parameter parser for parameters of the
form name=value. See org.cougaar.util.Arguments (
bug 3830
).
- Several community service enhancements:
- The community service can now get a non-local Agent's
parent communities (
bug 3669
).
- Community servlet can now show any community in society,
not just local.
- Community requests now support timeouts
- Refactored DemoControlService to avoid MTS multicast and provide
better progress feedback (
bug 3720
)
- Copied ACME log4j SocketAppender for EventService logging from
the ACME
socketappender.jar to the standard util module,
which simplifies the use of ACME. The util version also includes
an enhancement to use STDOUT/STDERR log4j categories instead of
the "root" category, which simplifies log4j filtering (
bug 3899
)
- Fixed WP RMI-based bootstrap where two nodes on the same host
specify "-Dorg.cougaar.name.server=SomeAgent@localhost:8800" to
correctly use the specified agent.
- Modified ComponentInitializerService to add an
"includesDefaultComponents()" method, to distinguish between XML
template-based configurations (which include default components,
bug 2522)
verses old INI/DB configurations (
bug 3828
)
- Dropped unused and obsolete code:
- uiframework module was obsolete, and has been dropped from
standard distributions.
- Dropped the GLMDebug in favor of LoggingService.
- Dropped obsolete XMLPrototypeProvider, LDMXMLPlugin, XMLAssetCreator
- Dropped obsolete AE configuration.
- Dropped unused HysteresisSubscription and SortedSubscription.
- Dropped unused servicediscovery servlets.
- Deprecated Freeze plugins in favor of FreezeServlet.
- Dropped agent and long deprecated MetricsSnapshot
- Some SD refactor / cleanup to allow other SD implementations,
data directories
- Various metrics improvements
- Reimplemented MessageStatusService for efficiency
- Fixed a bug in agent XML templates, which were creating duplicate
component descriptions that filtered out at runtime, but binders
were duplicated (bug 3862).
- Do getPrimary on MessageAddresses before doing .equals to avoid
comparing attributes.
- Tutorials' TakeVacationServlet is now part of the exercises.
- Persistence SequenceNumbers now public for extensions of
persistence
- Refactored Asset serialization (
bug 3693
)
- Assets now use getPrimaryClass and isAssignableFrom to ensure
correct .equals and PG locating (
bug 3810
)
- Note that < and > symbols in plugin arguments may be
mis-interpreted by XSLNode unless escaped
- Reduced use of cached hashcodes (
bug 3705
)
Build 11.2.2 is a minor release, including performance
optimizations, and multiple bug fixes. It represents the final state
of the B11_2 branch and the prototype for the Ultralog program.
- Added new agent suicide service, to allow Cougaar to kill off a
node or agent that is dying or dead (in particular, if a plugin throws an
exception, or if the JVM is about to run out of memory).
See org.cougaar.core.node.SuicideServiceComponent (
bug 3691
).
- Added new WP bootstrap mechanism to replace old RMI registry
implementation. The new "discovery" mechanism supports HTTP, RMI,
multicast, and config-file-based bootstrap of nameserver addresses.
Once servers have been found and "ping"ed, the bootstrap process
is stopped, and restarted if the servers become unresponsive. The
new bootstrap passes the full WP record instead of just the "-RMI"
address (
bug 3756,
).
- Added Node-level incarnation service for coordinated agent
incarnation tracking between Agents, WP, and MTS. The MTS also
detects duplicate agents and selects the newest agent version (
bug 3756,
bug 3727
).
- Fixed several bugs related to the ThreadService silently catching
OutOfMemoryErrors, which were caused by excessively large thread
client "toString()"s. The ThreadService was modified to log
exceptions, and the CommunityCache detailed toString was moved to a
new toXML method (
bug 3804,
bug 3805, bug 3811, bug 3812, bug 3813, bug 3814).
- The RescindLP is much more aggressive in removing orphaned
objects. Whenever a Task is added or changed or a PlanElement is added or
removed, the links among Tasks and PEs are checked to ensure they
are "consistent" -- ensuring references point to Objects that exist on
the blackboard, for example.
- Added new "/consistency" servlet
(org.cougaar.planning.servlet.ConsistencyCheckServlet) to show
inconsistent tasks, which uses the same methods as the RescindLP.
- Implemented ThreadService pooled thread continuation, to reduce
thread context switching overhead (bug 3629).
- Remove old -D flags for MTS aspects, protocols, and link
selection (bug 3240)
- Clean up initializing AssetInitializer service,
particularly when not using a database (bug 3699).
- Allow per-agent XML file (bug 3632)
- Added system properties to change the default agent and node
template files. The default behavior is:
-Dorg.cougaar.society.xsl.param.defaultAgent=SimpleAgent.xsl
-Dorg.cougaar.society.xsl.param.defaultNode=NodeAgent.xsl
- Use an empty "DefaultAgent.xml" if the XML parser can't find
an agent's configuration in the node or per-agent XML files.
This is primarily used for rehydrating an agent on a remote
node (bug 3713).
- Allow host addresses to change at runtime (bug 3575)
- Do not publish Compositions.
- AspectValue subclass fields are now final.
- Added org.cougaar.util.ToStringMemo to help in caching toStrings
(bug 3692)
- Bug 3695: Added version of
RelationshipSchedule.getMatchingRelationships that takes a single
time.
- Bug 3667: Added system properties to WP SelectManager to allow
favoring a local WP
- Added org.cougaar.util.TimeSpans for factories, canonical
implementations
- Turned off Blackboard pedantic mode by default (bug 3674)
- Bug 3680: Preserve backpointers in Tasks and Expansions.
- Bug 3685: OplanReaderPlugin's MyStages serializable.
- Bug 3678: Aggregations made to match bug
3663's API change
- Bug 3688: Ensure myAgentAddr is initialized in OrgDataPlugin
- Bug 3696: Fix Subscriber support for multiple watchers
- Remove DataGathererServlet from MiniTest
- Bug 3722: Avoid publishAdd'ing a Task with a null verb
- Bug 3725: The node-level servlet server now advertises a
RootServletService, to avoid confusion by service listeners
- YPServer drops unused database connections. Default to 10
minutes. Set via -Dorg.cougaar.yp.UnusedDBConnectionInterval
- Moved TrafficMatrix and AgentFlowAspect out of core.
- Bug 3757: Do not make local changes when an incoming Task is past its
commitment date (logged at INFO).
- Bug 3760: The /agentQuiescentState servlet now shows which
quiescence clients are blocking quiescence. Also logged at
detail.
- Added org.cougaar.core.persist.RehydrateTest for printing the
contents of a blackboard persistence snapshot. Bug 3381.
- Dropped org.cougaar.mts.std.MulticastMessageAddress
- Bug 3798: Added Agent incarnation # to Agent Lifecycle
events.
- Added StateDumpService in org.cougaar.core.node, for use when an
agent is about to suicide, to do a post-mortem. Implementation is in
mts/org.cougaar.mts.std.StateDumpServiceComponent
- Added MTS DetectBigMessageAspect
- ClusterOPlan.updateOPlanTimes made accessible from
subclasses.
- Turn down some RescindLP WARNs
- Bug 3635: name YP databases with a system time, allowing 2 agents
with the same name on the same host to avoid dying due to YP database
name
- Bug 3698 fixed in service discovery
- Various changes and additions to the metrics service.
- Various small changes to support minimal agent configurations (no
Blackboard?)
- Avoid calling postRehydration on inActive objects in
PersistenceServiceComponent (bug 3588)
- Optimize Blackboard handling of MessageAddresses with attributes
(bug 3796)
Build 11.2 is a minor release, including a backwards-compatible
core refactor, performance optimizations, and multiple bug fixes.
-
Applied updated & simplified BSD-derived
copyright notice.
-
Converted minitestconfig and tutorials to run completely from XML.
Running of MiniNode does not require the database. All "*.INI" files
have been removed as they are no longer supported.
-
Refactored core to support node and agent templates, moving most
formerly hard-coded components to new XSL style sheets. For
example, a developer can modify the "configs/common/NodeAgent.xsl"
to replace the MTS, disable the blackboard, etc. See the Cougaar
Developers' Guide version 11.2 for details.
-
New XML Node startup scripts (bin/XSLNode) to use -D system
properties ("<vm_parameter>") specified in XML files.
For most developers, this simplifies configuration management,
since per-node system properties can be maintained in the same
XML file as the node and agent configurations.
-
The RescindLP now does many sanity checks on the addition and
removal of objects. In particular, it enforces that Tasks are added
before PlanElements that handle them, and child tasks after the
PlanElements. Typically the result is that many tasks without a parent
task (because an infrastructure rescind is in progress) are
removed. System properties permit disabling this behavior.
-
Multiple fixes to minimize persistence overhead. Disabled
persistence now has nearly zero overhead, since the agents no
longer do trivial "P" persists or hold onto change tuples.
When persistence is enabled, redundant tuples are now consolidated
between persists, allowing early GC; for example, an object
publishAdded and publishRemoved between persist cycles can now be
GC'ed before the next persist.
-
Drop explicit GC before persistence. This means persistence
may temporarily store removed objects, but the new design is more
efficient if a node contains many agents.
-
New component model load order of "initialize()", "load()", and
"start()": now all components are initialized before any are loaded,
etc. In particular, all plugins are now loaded before any are
started, where start schedules the "setupSubscriptions()". This
should be transparent to most developers.
-
Many fewer native threads created directly - more use of the Cougaar
ThreadService (bug 3542). For example, JVM thread dumps will no
longer show per-agent "RQ" message handler threads.
-
Alarms now use the ThreadService for scheduling.
-
Multiple enhancements in initializers to reduce String consing,
LoggingService instances, and other memory enhancements. In particular,
community file is only parsed once per Node.
-
Do not propogate add/change of Allocations of Tasks that are not
on the blackboard (have just been rescinded).
-
Added a SimpleRelayExample to core/relay package.
-
Support running plugins in a mode where only a single transaction may
be open at one time (default is off: that is, fully parallel plugin
operation). See cougaar bug 3664.
-
org.cougaar.planning.plugin.PluginSanityBinder is an optional new
binder for use with plugins. When inserted, it will complain whenever
a bound object (e.g. plugin) publish adds/changes a task which did not
originate in the agent. As an added extra bonus, this is a moderately
good example of a simple but functional Binder.
-
There is a service alternative to ConfigFinder in the form of
ConfigurationService. The service is provided by
org.cougaar.core.node.ConfigurationServiceComponent
which is loaded by default only in XML configurations.
See cougaar bug (RFE) 2569.
-
Multiple planning object tweaks: synchronize access to key members,
avoid serializing un-necessary members, and add debug logging on acess
to other members.
-
ActiveSubscriptionObject actions may now be delayed from immediate
(upon object publish) to LogicProvider time. This is more correct,
but breaks a fair amount of old code. In particular, new code should
avoid expecting that objects change immediately at publish time - the
most common problems are dependence on Task.getPlanElement() and
immediate updates to Assets RoleSchedules after allocation or
reassignment. See ActiveSubscriptionObject for more information.
This new option defaults to the old behavior, but will probably switch
to the more correct semantics in a future release. When enabled,
turns on extensive debugging code which notes problematic usage. (see
cougaar bug 3663)
-
GLSExpanderPlugin supports a -D argument which forces a
persistence after the GLS task has been propogated. See the source for
that plugin.
-
Added new method to PluginHelper which plugins should use when
removing a task from its workflow, to recalculate the aggregated
Allocation Result if necessary.
-
Further work for propogating Allocation Result changes up to a
task that was Expanded. In particular support a change to
undefined. See bug 3462.
-
New OperationalSuperior concept.
-
Restore prototype cache on rehydration.
-
Improve algorithm efficiency for detecting Node-level queiscence.
-
New optional core servlet, QuiescenceStateServlet, which shows the
quiescence status of individual Nodes and the agents within those
nodes.
-
Added components to restrict the number of threads per node or
per agent.
-
Added multiple utilities.
-
Added new generic BlackboardAlert object for indicating a problem
on the local blackboard for higher-level application resolution.
-
MessageTransportClient API change: added getIncarnationNumber, to
avoid WP lookup for the incarnation numbers of local agents.
-
Added DestinationLink validity support.
-
Added MTS OldIncarnationAspect to ignore messages from an old
instance of an agent that has restarted elsewhere.
-
Added more regression tests.
-
Multiple fixes to avoid locking agent when persistence is
slow.
-
Reduce usage of deprecated blocking WP calls.
-
Modified API for PluginAlarm to take an absolute time instead of
a delay, allowing for consistent usage between base classes.
-
Moved Ping society and configuration from core to new ping module.
-
Shortened Node quiescence announcement delay to 20 seconds, and
added -D argument to configure this value.
-
Suppress some YP errors that may be transient while component
re-tries.
-
Updated Vishnu server 3rd party jar to include a performance
improvement.
-
Support community service access control.
-
Added new -D argument to suppress reconciliation
(org.cougaar.core.node.SkipReconciliation).
-
Added trivial single-node MTS implementation. See
"configs/common/NodeAgent.xsl" for details.
-
Require reasonable AspectScorePoints in ScoringFunctions.
-
Multi-threading fixes to GLM's ClusterOPlan fix to ensure start &
end times are consistent.
-
Suppress resending the self Organization if only LocalPG changes
have happened (as in OPlanWatcherLP).
-
Javadoc cleanup.
Build 11.0 is a major release, including multiple new
pieces of functionality.
- Updated Jena to version 2.0 and Xerces to 2.6.0:
- The new Jena jar required an update to icu4j.jar, and the addition
of antlr.jar, jakarta-oro-2.0.5, and rdf-api-2001-01-19
- The updated Xerces changed names to xercesImpl and xml-apis.jar
(split implementation from APIs).
- Servicediscovery code was changed to support the new
Jena. Additionally, we use the built-in Jena file-caching. We still
list the cached files in proxyTable.txt, but this is not just
documentation. We no longer use custom caching. Additionally,
Time.daml was added to the set of cached files.
- Jena2 now uses log4j. To turn down Jena WARNings, in particular
from the RDFDefaultErrorHandler, specify the log4j property
"log4j.category.com.hp.hpl.jena=ERROR".
- GLS tasks may no longer be rescinded. For each Oplan stage, the
GLSInitServlet now sends a new GLS task with the additional oplan
stage - leaving the old tasks behind. It is generally bad usage to
modify a task in place to have entirely different meaning. In this
case, it appeared to cause confusion about the meaning of the
allocation results. See bug 3407.
- The MTS implementation has been factored into a separate
module and project. In CougaarForge, it is now the "std" module of
the "mts" project. Cougaar builds package it as "mtsstd.jar".
The major effect of this refactoring is that most of the classes
previously in org.cougaar.core.mts are now in org.cougaar.mts.std
(e.g. those which implement the MTS interface have changed
packages, while those which define the interface have not.
See ReleaseNotes/11.0/mts-refactor.txt for
details. Also see the perl script ReleaseNotes/11.0/mts-refactor.pl
which will do most of the substitutions requires to port 10.0 code to
11.0. As a side effect of the refactoring, there is a new
service available at the node level SocketFactoryService which allows
clients to find an appropriate SocketFactory without needing to
know about the MTS implementation which may be supporting it.
-
Lanes have been added to the Thread Services. This allows finer
tuned control over thread policies (max. running, queue ordering,
etc). The service APIs have some new methods in support of
this. Old methods continue to work and simply use the default
lane. For more details see Thread Lanes.
- Minimal MTS and Thread Services have been defined. For more
details see Minimal
Services
- Multiple changes to Service Discovery. These make specifying
matchmaker scoring functions much easier, and provide better support for
dynamic provider availability changing. AvailabilityChangeMessages can
come in, causing the SD plugins to work to ensure they have contracts
covering the required intervals.
- Refactored the DeletionPlugin to make it a generic BBoard object
deletion API. See org.cougaar.core.plugin.deletion package.
- Added a new GLM Plugin:
org.cougaar.mlm.plugin.organization.ReportChainDetectorPlugin to notice when a Superior/Subordinate hierarchy is complete.
- The uiframework no longer requires the non-open source
datagrabber module for compilation. Actual usage of some pieces will
likely still require that software.
- Reworked quiescence detection mechanism to avoid logic
problems. Quiescence detection is now more sensitive. (Bug 3359)
- Task.getPreferredValue now returns Double.NaN instead of -1.0 when
the value is undefined (cbug 2919).
- The base unix shell scripts have been greatly simplified.
setarguments and setlibpath are gone, fully replaced by the boost
script (now used by the rest of the scripts). Node now fully
subsumes the functionality of the now deleted XMLNode and PNode scripts.
- The initialization services now create ComponentDescription
parameters as unmodifiable List objects, rather than as (mutable)
Vectors. This means that plugins and other components with a
setParameter method will get called with a List rather than a Vector
(which is, after all, also instanceof List). This closes a security hole
(cougaar bug 3263) and drops one more use of Vector. Note that legacy
plugins (extending PluginAdapter) continue to see a Vector if they
call getParameters() -- while the returned value is mutable, the
security exploit cannot be used in this case.
- Most DOS scripts now support directories with a space (" ") in the
name. This does _not_ currently include the DB load
scripts. Additionally, the bash / csh scripts are not covered.
- Changed default agent start time in the scripts to be 12:05am on
8/10/05
- Multiple other minor bugs fixed (3323, 3423, 3424, 3438, 3448, 3420,
3431, 3221, 3223, 3224, 3181, 3440, 3403, 3427...)
- Dropped very old files from various modules.
- Various caching, interning, & other modifications to reduce memory usage.
- Refactored & cleaned up the tutorials, dropping the old
"faststart" tutorials, which were broken.
- Various toolkit module enhancements to reduce memory usage.
- Do not use the Verb object constructor - it is now protected. (bug
2661).
- Multiple changes to clean up code, remove unused variables, sort
imports, etc.
Build 10.4.6 is a minor release, including minor improvements
in a number of services and multiple bug fixes. It also adds support for
distributed hierarchical yellow pages, and service discovery through those.
- Bug 3315: Fix up specification of agentStartTime. Now uses the full hours,
minutes, seconds of system GMT time for the specified day. Allows
specification of the hours and minutes, and an offset for more
accuracy. See the bug report for details.
- Added support for service discovery using distributed YPServers. The
default behaviour is unchanged, i.e. a single YPServer. For the distributed
case, each agent belongs to a YPCommunity which is served by a YPServer. The
YP communities are organized along the same lines as the command hierarchy.
Service discovery uses the community service to traverse the hierarchy of
YPServers to find the providers which most closely match the client's
specification.
- Modified GLS task generation. A separate GLS task is created for each
oplan stage. Each task has the set of oplan stages which were valid at the
time it was created
- RFE 3162: ServiceDiscovery ClientPlugin forces a persist after FindProviders
is complete - killing an agent before that point when using
ServiceDiscovery is not supported.
- Bug 3324: Suppress RDF startup warnings from ServiceDiscovery
- Bug 3313: Fix problem of MTS holding messages forever
- Bug 3330: Ensure first metric on queue is processed.
- Bug 3331: In MTS, only drop due to timeout on receiver if enabled
by a -D flag.
- Bug 3340: In MTS Gossip stuff, move WP calls out of a
synchronize.
- Bug 3343: Fix a QuO gui synchronization issue.
- Bug 3345: Various Gossip scalability improvements.
- Bug 3346: Filter metrics Gossip to send only credible info.
- Bug 3348: Drop log level for DeliveryVerification and RogueThread
to WARN after 100 seconds.
- Bug 3351: Expose the Contract API to allow using servlets instead
of pop-up windows.
- Bug 3357: Run QoS schedulables in serial instead of parallel.
- Bug 3358: Add a synchronization in QuO jar.
- Bugs 3316, 3317, 3318: WP performance improvements
- Bug 3341: Fix a WP replication forwarding bug.
- Fix AdaptivityEngine servlet to be able to change OpMode
settings
- Implement Serializable in a ServiceDiscovery object.
- SDRegistrationPlugin, matchmaker plugin: small changes to support
proper quiescence.
- Bug 3332: UniversalAllocatorPlugin now restores its sink asset
from the blackboard on rehydration.
- Bug 3334: GenericTablePlugin avoids publishChanging PlanElement if
the ReportedAR.isEqual(EstimatedAR) already.
- Bug 3337: Fix .equals method for TwoPointScoringFunction.
- Bug 3333: ReceiveNotificationLP: Suppress un-necessary
publishChange of PlanElements if ReceivedAR is already .isEqual the
ReportedAR.
Bug 3352: Fix ExpansionImpl to properly re-wire the workflow of
subtasks, avoiding later illegal publishRemove warnings.
- Tweak local Juddi jar to support closing DB connections.
- Community caches are now per-Node (bug 3354)
- Bug 3094: Fully account for possible GCing of objects during both
full and incremental persistence.
Older Change details are available in CIP/doc/CHANGES.
Additional Documentation
For additional details, please review the following documentation:
- Cougaar FAQ
- Cougaar WIKI.
- Cougaar Developers' Guide, v11.4 (December 2004), available on
the Cougaar website (see http://cougaar.org/docman/?group_id=17)
- Cougaar Architecture Document, v11.4 (dated December 2004), also available
on the Cougaar website
- Release Notes for other modules such as:
- Several ChangeLog files (e.g., core/src/ChangeLog)
- Various manual-type documentation files under doc/OnlineManual
- Notes from previous releases at doc/ReleaseNotes.
- Per-module javadocs available in module/doc/api/index.html if the cougaar-api.zip
archive has been installed (see Core Javadoc in particular)
- Parameters.html
which is a catalog of System Properties (-D flags) used. The file is generated
on the basis of @property javadoc tags in the source code. Note that
often this is split in per-module Parameters files. Start with core.
- Pizza sample
application serves as a good learning tool.
- Try the Cougaar Tutorials.
Known bugs and bugs resolved/closed since Cougaar release 10.2
The Cougaar bug tracker (Bugzilla, the Mozilla bug system) is online available
at Cougaar website -> Bug Lists.
The lists are results of Bugzilla queries (run on May 1, 15, 29, ..., resp.).
Organization of a Release
When you download a Cougaar release, there are several logical
pieces. For details, see Contents.
Installing Cougaar
To (download and) install Cougaar, see the Install Instructions.
For instructions on installing and using CSMART, see the CSMART installation document.
You are now ready to run. Try the tutorials (see the slides
on cougaar.org). Alternately, try running the Pizza Party
application. For details, see the Pizza Readme.
Test Harness Example Implementations
We only maintain society configurations that we are currently using for testing
purposes and for Cougaar demonstrations. These society configurations
are usually available in subdirectories under "configs" in the release. To execute
these Cougaar societies, these nodes can be executed on a single computer
or distributed across multiple computers.
The primary example society for testing an installation, and core
changes, is the
Pizza Party application, available in the
"pizza" module. Use this for testing your installation. See the Pizza Readme.
Another society, minitestconfig
will work "out of the box", but uses many deprecated classes and
patterns. Plugin and component developers are encouraged to use
pizza as their initial starting point, but minitestconfig may
also be useful. For details on MiniTest, see Minitestconfig Readme.
An alternate test society is the "ping" society. See for starting
instructions, the simple Ping README.
Delivering Software Products
All Plugin software must use the Java system parameter
"org.cougaar.install.path" as the basis for all searches, data
files, etc. For writing output, use "org.cougaar.workspace". For example, if your product is "tops," your classes will be in:
"$COUGAAR_INSTALL_PATH\lib\tops.jar"
and your java code could find your data files with:
- String path = System.getProperty("org.cougaar.install.path") +
-
File.separatorChar + "tops" +
-
File.separatorChar + "myData.dat";
Future Releases
There will be further releases as we address system enhancements and
deficiencies. Watch the news items on Cougaarforge, listen for announcements
on the Cougaar Developers mailing list, and look for the
downloads at http://cougaar.org/frs/?group_id=17.
Additionally, the CougaarSE Wiki has information on planned future releases.
Questions and Submission of Bug Reports
For questions or issues, please watch the mailing lists and
browse the mailing list archives.
Also carefully read the latest Cougaar Developers Guide (CDG),
the Cougaar Architecture Document (CAD) (see http://cougaar.org/docman/?group_id=17),
and all release notes.
If those sources do not address your question or problem,
bug and system-enhancement reports
can be submitted through the Cougaar
website.
In addition, we encourage you to email infrastructure questions and initiate community discussions
through our mailing
list.