%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\label{sec:gotchas}Upgrading from the 7.6 series to the 7.8 series of HTCondor}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\index{upgrading!items to be aware of}
While upgrading from the 7.6 series of HTCondor to the 7.8 series will bring many
new features and improvements introduced in the 7.7 series of HTCondor, it will
also introduce changes that administrators of sites running from an older
HTCondor version should be aware of when planning an upgrade.  Here is a list of
items that administrators should be aware of.

\begin{itemize}

\item In the grid universe, the Amazon grid-type is gone and has been replaced
	with the EC2 grid-type.  Also, support for grid-type gt4 (Web Services
	GRAM) has been removed.

\item Default job submit options related to file transfers have changed. 
Across all platforms, defaults are now
\begin{verbatim}
  should_transfer_files = IF_NEEDED
  when_to_transfer_output = ON_EXIT
\end{verbatim}
See section~\ref{sec:file-transfer-if-when} for details.

\item  On Linux and Mac OS, common utility code is now contained in a set of
shared libraries. In the Linux native packages, most of these libraries
are placed under \File{/usr/lib[64]/condor} and the RUNPATH attribute is set in
the binaries to search there for them.
In the tarball packages, these libraries are placed under \File{lib} and
\File{lib/condor}, and the RUNPATH attribute is set in the binaries to search
for them under the relative paths \File{../lib} and \File{../lib/condor}.
This means that if you move or copy an HTCondor binary from a tarball
package to a different location, you must do one of the following:
\begin{itemize}
	\item Move or copy the corresponding \File{lib/} directory with it, or
  \item Make a symlink in the new location pointing back to the original \File{lib/}
  directory, or
  \item Set environment variable \Env{LD\_LIBRARY\_PATH} to point to the original \File{lib/} and \File{lib/condor/}
  directories
\end{itemize}
One of the new shared libraries, \File{libcondor\_utils\_7\_8\_0}, has no \File{.so}
versioning. Instead, the HTCondor version is included in the library name.
This means that an HTCondor binary must always be matched with the
\File{libcondor\_utils} library from the same HTCondor release.


\item  The \Condor{hdfs} service is no longer included within the HTCondor
	release.  Instead, the HTCondor + HDFS integration previously bundled with
	version 7.6 is available in version 7.8 as a \Term{Contribution Module}.
	Contribution Modules are optional packages that add functionality to
	HTCondor, but are provided and maintained outside of the core code base.  See
	the HTCondor Wiki at
	\URL{https://condor-wiki.cs.wisc.edu/index.cgi/wiki?p=ContribModules}.

\item Previous to version 7.8, by default the \Condor{master} would restart any
	individual daemon under its control if it notices that the file
	modification time of the binary for that daemon has changed.  Now the
	\Condor{master} will only monitor the file modification time of the
	\Condor{master} binary itself.  See section~\ref{sec:Pool-Upgrade}.  Also,
	see \MacroNI{MASTER\_NEW\_BINARY\_RESTART} on
	page~\pageref{param:MasterNewBinaryRestart}.

\item In DAGMan, if you have a PRE and a POST script on a node, the default now
	is that the POST script is run even if the PRE script failed.   This change
	could impact unaware workflows such that POST scripts might erroneously
	report the node as succeeded. You can get the old behavior by setting
	\MacroNI{DAGMAN\_ALWAYS\_RUN\_POST} to False.  In addition, you can no
	longer directly submit a rescue DAG file with \Condor{submit\_dag} unless
	\MacroNI{DAGMAN\_WRITE\_PARTIAL\_RESCUE} is set to False (not normally
	recommended).  See section~\ref{sec:DAGMan}.

\item The \MacroNI{KILL} expression cannot be used to grant more time to a job
	than offered by \Macro{MachineMaxVacateTime}. In HTCondor v7.8 and above, it
	is anticipated that most sites will simply use a default value of False for
	\MacroNI{KILL} and set \MacroNI{MachineMaxVacateTime} to control how long
	to wait.  See page~\pageref{param:MachineMaxVacateTime} for more
	information.


\end{itemize}

