You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by iw...@apache.org on 2015/12/02 06:20:16 UTC

incubator-hawq git commit: HAWQ-202. fix bug for metadata cache lock logic

Repository: incubator-hawq
Updated Branches:
  refs/heads/master aa268c59e -> 315deab12


HAWQ-202. fix bug for metadata cache lock logic


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/315deab1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/315deab1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/315deab1

Branch: refs/heads/master
Commit: 315deab12831d957378bbf346ab3b1449ee66848
Parents: aa268c5
Author: ivan <iw...@pivotal.io>
Authored: Wed Dec 2 11:35:10 2015 +0800
Committer: ivan <iw...@pivotal.io>
Committed: Wed Dec 2 12:41:10 2015 +0800

----------------------------------------------------------------------
 src/backend/cdb/cdbmetadatacache.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/315deab1/src/backend/cdb/cdbmetadatacache.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/cdbmetadatacache.c b/src/backend/cdb/cdbmetadatacache.c
index 72be266..dbf1a65 100644
--- a/src/backend/cdb/cdbmetadatacache.c
+++ b/src/backend/cdb/cdbmetadatacache.c
@@ -598,7 +598,7 @@ BlockLocation *GetHdfsFileBlockLocations(const HdfsFileInfo *file_info, uint64_t
     MetadataCacheEntry *cache_entry = NULL;
     BlockLocation *locations = NULL;
 
-    LWLockAcquire(MetadataCacheLock, LW_EXCLUSIVE);
+    LWLockAcquire(MetadataCacheLock, LW_SHARED);
 
     cache_entry = MetadataCacheExists(file_info);
     if (!cache_entry)
@@ -638,6 +638,9 @@ BlockLocation *GetHdfsFileBlockLocations(const HdfsFileInfo *file_info, uint64_t
             if (cache_entry->block_num <= 1)
             {
                 // only one file, re-fetch 
+                LWLockRelease(MetadataCacheLock); 
+        
+                LWLockAcquire(MetadataCacheLock, LW_EXCLUSIVE);
                 RemoveHdfsFileBlockLocations(file_info);
                 LWLockRelease(MetadataCacheLock);