blob: b8ce9a5dfa9333c3b20644e08c26ad890bc4cf2c [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="de">
<head>
<!-- Generated by javadoc (17) -->
<title>LocallyCachedBlob (Storm 2.6.2 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.storm.localizer, class: LocallyCachedBlob">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/LocallyCachedBlob.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.storm.localizer</a></div>
<h1 title="Class LocallyCachedBlob" class="title">Class LocallyCachedBlob</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.apache.storm.localizer.LocallyCachedBlob</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="LocalizedResource.html" title="class in org.apache.storm.localizer">LocalizedResource</a></code>, <code><a href="LocallyCachedTopologyBlob.html" title="class in org.apache.storm.localizer">LocallyCachedTopologyBlob</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">LocallyCachedBlob</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Represents a blob that is cached locally on disk by the supervisor.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected long</code></div>
<div class="col-second even-row-color"><code><a href="#localUpdateTime" class="member-name-link">localUpdateTime</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>static final long</code></div>
<div class="col-second odd-row-color"><code><a href="#NOT_DOWNLOADED_VERSION" class="member-name-link">NOT_DOWNLOADED_VERSION</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected </code></div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String,org.apache.storm.metric.StormMetricsRegistry)" class="member-name-link">LocallyCachedBlob</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;blobDescription,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;blobKey,
<a href="../metric/StormMetricsRegistry.html" title="class in org.apache.storm.metric">StormMetricsRegistry</a>&nbsp;metricsRegistry)</code></div>
<div class="col-last even-row-color">
<div class="block">Create a new LocallyCachedBlob.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addReference(org.apache.storm.localizer.PortAndAssignment,org.apache.storm.localizer.BlobChangingCallback)" class="member-name-link">addReference</a><wbr>(<a href="PortAndAssignment.html" title="interface in org.apache.storm.localizer">PortAndAssignment</a>&nbsp;pna,
<a href="BlobChangingCallback.html" title="interface in org.apache.storm.localizer">BlobChangingCallback</a>&nbsp;cb)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Mark that a given port and assignment are using this.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#cleanupOrphanedData()" class="member-name-link">cleanupOrphanedData</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Clean up any temporary files.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>protected abstract void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#commitNewVersion(long)" class="member-name-link">commitNewVersion</a><wbr>(long&nbsp;version)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Commit the new version and make it available for the end user.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#completelyRemove()" class="member-name-link">completelyRemove</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Completely remove anything that is cached locally for this blob and all tracking files also stored for it.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.storm.localizer.LocallyCachedBlob.DownloadMeta</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#fetch(org.apache.storm.blobstore.ClientBlobStore,java.lang.String,org.apache.storm.localizer.IOFunction,org.apache.storm.localizer.IOFunction)" class="member-name-link">fetch</a><wbr>(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;store,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key,
<a href="IOFunction.html" title="interface in org.apache.storm.localizer">IOFunction</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Path.html" title="class or interface in java.nio.file" class="external-link">Path</a>&gt;&nbsp;pathSupplier,
<a href="IOFunction.html" title="interface in org.apache.storm.localizer">IOFunction</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&gt;&nbsp;outStreamSupplier)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Helper function to download blob from blob store.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract long</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#fetchUnzipToTemp(org.apache.storm.blobstore.ClientBlobStore)" class="member-name-link">fetchUnzipToTemp</a><wbr>(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;store)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Download the latest version to a temp location.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="PortAndAssignment.html" title="interface in org.apache.storm.localizer">PortAndAssignment</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDependencies()" class="member-name-link">getDependencies</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getKey()" class="member-name-link">getKey</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get the key for this blob.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLastUsed()" class="member-name-link">getLastUsed</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get the last time that this used for LRU calculations.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract long</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getLocalVersion()" class="member-name-link">getLocalVersion</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Get the version of the blob cached locally.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract long</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getRemoteVersion(org.apache.storm.blobstore.ClientBlobStore)" class="member-name-link">getRemoteVersion</a><wbr>(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;store)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Get the version of the blob in the blob store.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract long</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getSizeOnDisk()" class="member-name-link">getSizeOnDisk</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Get the amount of disk space that is used by this blob.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static long</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getSizeOnDisk(java.nio.file.Path)" class="member-name-link">getSizeOnDisk</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Path.html" title="class or interface in java.nio.file" class="external-link">Path</a>&nbsp;p)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Get the size of p in bytes.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#informReferencesAndCommitNewVersion(long)" class="member-name-link">informReferencesAndCommitNewVersion</a><wbr>(long&nbsp;newVersion)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Inform all of the callbacks that a change is going to happen and then wait for them to all get back that it is OK to make that
change.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#isFullyDownloaded()" class="member-name-link">isFullyDownloaded</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isUsed()" class="member-name-link">isUsed</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Return true if this blob is actively being used, else false (meaning it can be deleted, but might not be).</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#removeReference(org.apache.storm.localizer.PortAndAssignment)" class="member-name-link">removeReference</a><wbr>(<a href="PortAndAssignment.html" title="interface in org.apache.storm.localizer">PortAndAssignment</a>&nbsp;pna)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Removes a reservation for this blob from a given slot and assignemnt.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#touch()" class="member-name-link">touch</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Updates the last updated time.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#update(org.apache.storm.blobstore.ClientBlobStore,long)" class="member-name-link">update</a><wbr>(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;blobStore,
long&nbsp;remoteBlobstoreUpdateTime)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks and downloads a blob locally as necessary.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="NOT_DOWNLOADED_VERSION">
<h3>NOT_DOWNLOADED_VERSION</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">NOT_DOWNLOADED_VERSION</span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.apache.storm.localizer.LocallyCachedBlob.NOT_DOWNLOADED_VERSION">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="localUpdateTime">
<h3>localUpdateTime</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">localUpdateTime</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String,org.apache.storm.metric.StormMetricsRegistry)">
<h3>LocallyCachedBlob</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name">LocallyCachedBlob</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;blobDescription,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;blobKey,
<a href="../metric/StormMetricsRegistry.html" title="class in org.apache.storm.metric">StormMetricsRegistry</a>&nbsp;metricsRegistry)</span></div>
<div class="block">Create a new LocallyCachedBlob.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>blobDescription</code> - a description of the blob this represents. Typically it should at least be the blob key, but ideally also
include if it is an archive or not, what user or topology it is for, or if it is a storm.jar etc.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="fetch(org.apache.storm.blobstore.ClientBlobStore,java.lang.String,org.apache.storm.localizer.IOFunction,org.apache.storm.localizer.IOFunction)">
<h3>fetch</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">org.apache.storm.localizer.LocallyCachedBlob.DownloadMeta</span>&nbsp;<span class="element-name">fetch</span><wbr><span class="parameters">(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;store,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key,
<a href="IOFunction.html" title="interface in org.apache.storm.localizer">IOFunction</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Long.html" title="class or interface in java.lang" class="external-link">Long</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Path.html" title="class or interface in java.nio.file" class="external-link">Path</a>&gt;&nbsp;pathSupplier,
<a href="IOFunction.html" title="interface in org.apache.storm.localizer">IOFunction</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link">OutputStream</a>&gt;&nbsp;outStreamSupplier)</span>
throws <span class="exceptions"><a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a>,
<a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Helper function to download blob from blob store.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>store</code> - Blob store to fetch blobs from</dd>
<dd><code>key</code> - Key to retrieve blobs</dd>
<dd><code>pathSupplier</code> - A function that supplies the download destination of a blob. It guarantees the validity
of path or throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link"><code>IOException</code></a></dd>
<dd><code>outStreamSupplier</code> - A function that supplies the <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/OutputStream.html" title="class or interface in java.io" class="external-link"><code>OutputStream</code></a> object</dd>
<dt>Returns:</dt>
<dd>The metadata of the download session, including blob's version and download destination</dd>
<dt>Throws:</dt>
<dd><code><a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a></code> - Thrown if key to retrieve blob is invalid</dd>
<dd><code><a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a></code> - Thrown if the retrieval is not under security authorization</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - Thrown if any IO error occurs</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getLocalVersion()">
<h3>getLocalVersion</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getLocalVersion</span>()</div>
<div class="block">Get the version of the blob cached locally. If the version is unknown or it has not been downloaded NOT_DOWNLOADED_VERSION should be
returned. PRECONDITION: this can only be called with a lock on this instance held.</div>
</section>
</li>
<li>
<section class="detail" id="getRemoteVersion(org.apache.storm.blobstore.ClientBlobStore)">
<h3>getRemoteVersion</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getRemoteVersion</span><wbr><span class="parameters">(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;store)</span>
throws <span class="exceptions"><a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a>,
<a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a></span></div>
<div class="block">Get the version of the blob in the blob store. PRECONDITION: this can only be called with a lock on this instance held.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a></code></dd>
<dd><code><a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="fetchUnzipToTemp(org.apache.storm.blobstore.ClientBlobStore)">
<h3>fetchUnzipToTemp</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">fetchUnzipToTemp</span><wbr><span class="parameters">(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;store)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>,
<a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a>,
<a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a></span></div>
<div class="block">Download the latest version to a temp location. This may also include unzipping some or all of the data to a temp location.
PRECONDITION: this can only be called with a lock on this instance held.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>store</code> - the store to us to download the data.</dd>
<dt>Returns:</dt>
<dd>the version that was downloaded.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
<dd><code><a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a></code></dd>
<dd><code><a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="commitNewVersion(long)">
<h3>commitNewVersion</h3>
<div class="member-signature"><span class="modifiers">protected abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">commitNewVersion</span><wbr><span class="parameters">(long&nbsp;version)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Commit the new version and make it available for the end user.
PRECONDITION: uncompressToTempLocationIfNeeded will have been called.
PRECONDITION: this can only be called with a lock on this instance held.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>version</code> - the version of the blob to commit.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="cleanupOrphanedData()">
<h3>cleanupOrphanedData</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">cleanupOrphanedData</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Clean up any temporary files. This will be called after updating a blob, either successfully or if an error has occured.
The goal is to find any files that may be left over and remove them so space is not leaked.
PRECONDITION: this can only be called with a lock on this instance held.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="completelyRemove()">
<h3>completelyRemove</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">completelyRemove</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Completely remove anything that is cached locally for this blob and all tracking files also stored for it.
This will be called after the blob was determined to no longer be needed in the cache.
PRECONDITION: this can only be called with a lock on this instance held.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getSizeOnDisk()">
<h3>getSizeOnDisk</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getSizeOnDisk</span>()</div>
<div class="block">Get the amount of disk space that is used by this blob. If the blob is uncompressed it should be the sum of the space used by all
of the uncompressed files. In general this will not be called with any locks held so it is a good idea to cache it and updated it
when committing a new version.</div>
</section>
</li>
<li>
<section class="detail" id="getSizeOnDisk(java.nio.file.Path)">
<h3>getSizeOnDisk</h3>
<div class="member-signature"><span class="modifiers">protected static</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getSizeOnDisk</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Path.html" title="class or interface in java.nio.file" class="external-link">Path</a>&nbsp;p)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Get the size of p in bytes.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>p</code> - the path to read.</dd>
<dt>Returns:</dt>
<dd>the size of p in bytes.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="touch()">
<h3>touch</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">touch</span>()</div>
<div class="block">Updates the last updated time. This should be called when references are added or removed.</div>
</section>
</li>
<li>
<section class="detail" id="getLastUsed()">
<h3>getLastUsed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getLastUsed</span>()</div>
<div class="block">Get the last time that this used for LRU calculations.</div>
</section>
</li>
<li>
<section class="detail" id="isUsed()">
<h3>isUsed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isUsed</span>()</div>
<div class="block">Return true if this blob is actively being used, else false (meaning it can be deleted, but might not be).</div>
</section>
</li>
<li>
<section class="detail" id="addReference(org.apache.storm.localizer.PortAndAssignment,org.apache.storm.localizer.BlobChangingCallback)">
<h3>addReference</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addReference</span><wbr><span class="parameters">(<a href="PortAndAssignment.html" title="interface in org.apache.storm.localizer">PortAndAssignment</a>&nbsp;pna,
<a href="BlobChangingCallback.html" title="interface in org.apache.storm.localizer">BlobChangingCallback</a>&nbsp;cb)</span></div>
<div class="block">Mark that a given port and assignment are using this.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>pna</code> - the slot and assignment that are using this blob.</dd>
<dd><code>cb</code> - an optional callback indicating that they want to know/synchronize when a blob is updated.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="removeReference(org.apache.storm.localizer.PortAndAssignment)">
<h3>removeReference</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">removeReference</span><wbr><span class="parameters">(<a href="PortAndAssignment.html" title="interface in org.apache.storm.localizer">PortAndAssignment</a>&nbsp;pna)</span></div>
<div class="block">Removes a reservation for this blob from a given slot and assignemnt.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>pna</code> - the slot + assignment that no longer needs this blob.</dd>
<dt>Returns:</dt>
<dd>false if a reference was failed to be removed</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="informReferencesAndCommitNewVersion(long)">
<h3>informReferencesAndCommitNewVersion</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">informReferencesAndCommitNewVersion</span><wbr><span class="parameters">(long&nbsp;newVersion)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Inform all of the callbacks that a change is going to happen and then wait for them to all get back that it is OK to make that
change. Commit the new version once all callbacks are ready. Finally inform all callbacks that the commit is complete.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getKey()">
<h3>getKey</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getKey</span>()</div>
<div class="block">Get the key for this blob.</div>
</section>
</li>
<li>
<section class="detail" id="getDependencies()">
<h3>getDependencies</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collection.html" title="class or interface in java.util" class="external-link">Collection</a>&lt;<a href="PortAndAssignment.html" title="interface in org.apache.storm.localizer">PortAndAssignment</a>&gt;</span>&nbsp;<span class="element-name">getDependencies</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isFullyDownloaded()">
<h3>isFullyDownloaded</h3>
<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isFullyDownloaded</span>()</div>
</section>
</li>
<li>
<section class="detail" id="update(org.apache.storm.blobstore.ClientBlobStore,long)">
<h3>update</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">update</span><wbr><span class="parameters">(<a href="../blobstore/ClientBlobStore.html" title="class in org.apache.storm.blobstore">ClientBlobStore</a>&nbsp;blobStore,
long&nbsp;remoteBlobstoreUpdateTime)</span>
throws <span class="exceptions"><a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a>,
<a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Checks and downloads a blob locally as necessary.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>blobStore</code> - the client blobstore</dd>
<dd><code>remoteBlobstoreUpdateTime</code> - last update time of remote blobstore</dd>
<dt>Throws:</dt>
<dd><code><a href="../generated/KeyNotFoundException.html" title="class in org.apache.storm.generated">KeyNotFoundException</a></code> - if the remote blob is missing</dd>
<dd><code><a href="../generated/AuthorizationException.html" title="class in org.apache.storm.generated">AuthorizationException</a></code> - if authorization is failed</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - on errors</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2023 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>