This is an automated email from the ASF dual-hosted git repository.

kishorvpatil pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/storm.git


The following commit(s) were added to refs/heads/master by this push:
     new 141b5cc  STORM-3545 don't update unused blobs (#3174)
141b5cc is described below

commit 141b5cccd3463266e80d6d64033b0117116cc895
Author: agresch <[email protected]>
AuthorDate: Thu Jan 2 14:42:42 2020 -0600

    STORM-3545 don't update unused blobs (#3174)
---
 .../org/apache/storm/localizer/AsyncLocalizer.java | 34 ++++++++++++----------
 .../apache/storm/localizer/AsyncLocalizerTest.java |  3 ++
 2 files changed, 22 insertions(+), 15 deletions(-)

diff --git 
a/storm-server/src/main/java/org/apache/storm/localizer/AsyncLocalizer.java 
b/storm-server/src/main/java/org/apache/storm/localizer/AsyncLocalizer.java
index fdd130b..48ad7e8 100644
--- a/storm-server/src/main/java/org/apache/storm/localizer/AsyncLocalizer.java
+++ b/storm-server/src/main/java/org/apache/storm/localizer/AsyncLocalizer.java
@@ -262,22 +262,26 @@ public class AsyncLocalizer implements AutoCloseable {
                     while (!done) {
                         try {
                             synchronized (blob) {
-                                long localVersion = blob.getLocalVersion();
-                                long remoteVersion = 
blob.getRemoteVersion(blobStore);
-                                if (localVersion != remoteVersion || 
!blob.isFullyDownloaded()) {
-                                    if (blob.isFullyDownloaded()) {
-                                        //Avoid case of different blob version
-                                        // when blob is not downloaded (first 
time download)
-                                        numBlobUpdateVersionChanged.mark();
-                                    }
-                                    Timer.Context t = 
singleBlobLocalizationDuration.time();
-                                    try {
-                                        long newVersion = 
blob.fetchUnzipToTemp(blobStore);
-                                        
blob.informReferencesAndCommitNewVersion(newVersion);
-                                        t.stop();
-                                    } finally {
-                                        blob.cleanupOrphanedData();
+                                if (blob.isUsed()) {
+                                    long localVersion = blob.getLocalVersion();
+                                    long remoteVersion = 
blob.getRemoteVersion(blobStore);
+                                    if (localVersion != remoteVersion || 
!blob.isFullyDownloaded()) {
+                                        if (blob.isFullyDownloaded()) {
+                                            //Avoid case of different blob 
version
+                                            // when blob is not downloaded 
(first time download)
+                                            numBlobUpdateVersionChanged.mark();
+                                        }
+                                        Timer.Context t = 
singleBlobLocalizationDuration.time();
+                                        try {
+                                            long newVersion = 
blob.fetchUnzipToTemp(blobStore);
+                                            
blob.informReferencesAndCommitNewVersion(newVersion);
+                                            t.stop();
+                                        } finally {
+                                            blob.cleanupOrphanedData();
+                                        }
                                     }
+                                } else {
+                                    LOG.debug("Skipping update of unused blob 
{}", blob);
                                 }
                             }
                             done = true;
diff --git 
a/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java 
b/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java
index d3c1d74..f97c868 100644
--- 
a/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java
+++ 
b/storm-server/src/test/java/org/apache/storm/localizer/AsyncLocalizerTest.java
@@ -126,18 +126,21 @@ public class AsyncLocalizerTest {
             when(jarBlob.getLocalVersion()).thenReturn(-1L);
             when(jarBlob.getRemoteVersion(any())).thenReturn(100L);
             when(jarBlob.fetchUnzipToTemp(any())).thenReturn(100L);
+            when(jarBlob.isUsed()).thenReturn(true);
 
             LocallyCachedTopologyBlob codeBlob = 
mock(LocallyCachedTopologyBlob.class);
             doReturn(codeBlob).when(victim).getTopoCode(topoId, 
localAssignment.get_owner());
             when(codeBlob.getLocalVersion()).thenReturn(-1L);
             when(codeBlob.getRemoteVersion(any())).thenReturn(200L);
             when(codeBlob.fetchUnzipToTemp(any())).thenReturn(200L);
+            when(codeBlob.isUsed()).thenReturn(true);
 
             LocallyCachedTopologyBlob confBlob = 
mock(LocallyCachedTopologyBlob.class);
             doReturn(confBlob).when(victim).getTopoConf(topoId, 
localAssignment.get_owner());
             when(confBlob.getLocalVersion()).thenReturn(-1L);
             when(confBlob.getRemoteVersion(any())).thenReturn(300L);
             when(confBlob.fetchUnzipToTemp(any())).thenReturn(300L);
+            when(confBlob.isUsed()).thenReturn(true);
 
             
when(mockedReflectionUtils.newInstanceImpl(ClientBlobStore.class)).thenReturn(blobStore);
 

Reply via email to