<html>
  <!--
   ***************************************************************
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   ***************************************************************
   -->
<head>
  <title>Apache Distributed UIMA Cluster Computing (DUCC) 2.2.0 Release Notes</title>
</head>
<body>
<h1>Apache UIMA-DUCC (Unstructured Information Management Architecture - Distributed UIMA Cluster Computing ) v.2.2.0 Release Notes</h1>

<h2>Contents</h2>
<p>
<a href="#what.is.uima-ducc">1. What is UIMA-DUCC?</a><br/>
<a href="#major.changes">2. Major Changes in this Release</a><br/>
<a href="#migration">3. Migration from a Prior Release</a><br/>  
<a href="#migration">4. Limitations</a><br/></p>  
   
<h2><a name="what.is.uima-ducc">1. What is UIMA-DUCC?</a></h2>
<p>
  			DUCC stands for Distributed UIMA Cluster Computing. DUCC is a cluster management system providing tooling,
management, and scheduling facilities to automate the scale-out of applications written to the UIMA framework.
Core UIMA provides a generalized framework for applications that process unstructured information such as human
language, but does not provide a scale-out mechanism. UIMA-AS provides a scale-out mechanism to distribute UIMA
pipelines over a cluster of computing resources, but does not provide job or cluster management of the resources.
DUCC defines a formal job model that closely maps to a standard UIMA pipeline. Around this job model DUCC
provides cluster management services to automate the scale-out of UIMA pipelines over computing clusters.
</p>
      
<h2><a name="major.changes">2. Major Changes in this Release</a></h2>
<p>
Apache UIMA DUCC 2.2.0 is a major release containing new features and bug fixes. What's new:<br>

<ul>

<li>Ships with the latest UIMA-AS v2.9.0 and UIMA SDK 2.9.0</li>
<li>Ships with ActiveMQ v5.14.0 </li>
<li>Added support for static failover and capability to move the head node</li>
<li>Fixed DUCC OR "warm" restart issues</li>  
<li>Fixed DUCC startup script to fail if the DB doesn't start</li>
<li>Fixed DUCC shutdown sequence bug which prevented agents from stopping if Broker was shutdown first</li>
<li>Fixed Rogue process detector to detect and cleanup orphan services</li>
<li>Deprecated ducc.agent.node.metrics.sys.gid.max and replaced with ducc.agent.rogue.process.sys.uid.max</li>
<li>Enhanced DUCC Job Driver (JD) to provide individual work item performance breakdowns</li>
<li>Modified DUCC to restrict broker use to ducc user only</li>
<li>On process launch failure, agent supplies a reason for failure for display in ducc mon</li>
<li>Added duplicate daemon detector to prevent starting duplicate DUCC daemon</li>
<li>Many DUCC Database improvements </li>
<li>Many DUCC webpage improvements </li>

</ul>

<br><br>

For a complete list of issues fixed and up-to-date information on UIMA-DUCC issues, see our issue tracker: 
<a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20UIMA%20AND%20fixVersion%20%3D%20%222.2.0-Ducc%22%20">https://issues.apache.org/jira/issues/?jql=project%20%3D%20UIMA%20AND%20fixVersion%20%3D%20%222.2.0-Ducc%22%20</a>
</p> 
      
<h2><a name="migration">3. Migration from a Prior Release</a></h2>
An existing DUCC installation can be updated in place by using the <strong>ducc_update</strong>
script which can be copied from the 
<a href="http://uima.apache.org/downloads.cgi#Latest Official Releases">UIMA Downloads page</a>
or extracted from the binary distribution.
Additional steps are required to convert existing history and state files for database access.
Details are in the INSTALL document and the DuccBook.
<p>
</p>
<h2><a name="limitations">4. Limitations</a></h2>
On some systems cgroups swap accounting is not enabled and duccmon will show N/A for swap. To 
confirm, please check memory.stat file in <cgroups base dir>/ducc/ folder. If swap accounting is 
enabled there should be "swap" property defined. If it's missing, you need to add a kernel parameter 
swapaccount=1. Details of how to do this can be found <a href="http://unix.stackexchange.com/questions/147158/how-to-enable-swap-accounting-for-memory-cgroup-in-archlinux">here</a>.


</body>
</html>
