<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.1 Release Notes</title>
</head>
<body>
<h1>Apache UIMA-DUCC (Unstructured Information Management Architecture - Distributed UIMA Cluster Computing ) v.2.2.1 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.1 is a maintenance release containing new features and bug fixes. What's new:<br>

<ul>
<li>The userid of a privileged DUCC installation does not have to be "ducc"</li>
<li>ducc-mon login can be used on systems where users do not have password login</li>
<li>The DUCC head-node daemons may be moved to another host without breaking working applications</li>
<li>The deployment descriptor for a UIMA-AS service can be loaded from the classpath</li>  
<li>Interactive applications run correctly with viaducc (fixed lost inputs)</li>
<li>Files created by DUCC jobs inherit the permissions of the launching shell's umask.</li>
<li>DUCC performance breakdown for scaled synchronous pipelines is now correct</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.1-Ducc%22%20">https://issues.apache.org/jira/issues/?jql=project%20%3D%20UIMA%20AND%20fixVersion%20%3D%20%222.2.1-Ducc%22%20</a>

This version of DUCC includes UIMA-SDK v.2.9.0, UIMA-AS v.2.9.0, and ActiveMQ v.5.14.0.
</p> 
      
<h2><a name="migration">3. Migration from a Prior Release</a></h2>

When upgrading from an existing installation the ducc_update script may be used to replace the system files while leaving the site-specific configuration files in place. For more information see <strong>ducc_update</strong> in the Administrative Commands section of 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>.

Due to a bug in uima sdk, the uima AnalysisEngineProcessException cannot be serialized as a Java object. If your
analysis engine throws an exception in process(), the ducc framework will stringify it and wrapt it in
java RuntimeException. If you have a custom error handler plugged in into a job driver you will not be
able to test for AnalysisEngineProcessException in a stack trace with a code like this:

   if ( error instanceof AnalysisEngineProcessException ) ...


</body>
</html>
