]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
[EDF29150] : avoid access to the fs for counter
authorAnthony Geay <anthony.geay@edf.fr>
Sun, 14 Jan 2024 17:45:37 +0000 (18:45 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Sun, 14 Jan 2024 17:45:37 +0000 (18:45 +0100)
src/Container/SALOME_PyNode.py

index eea690050b5de7461d8723e2c0e0388596285954..e9904d8f89cdbc9075ed6c41ccbf4cf73b26a774 100644 (file)
@@ -127,6 +127,8 @@ SALOME_BIG_OBJ_ON_DISK_THRES_VAR = "SALOME_BIG_OBJ_ON_DISK_THRES"
 # default is 50 MB
 SALOME_BIG_OBJ_ON_DISK_THRES_DFT = 50000000
 
+DicoForProxyFile = { }
+
 from ctypes import c_int
 TypeCounter = c_int
 
@@ -168,17 +170,35 @@ def DumpInFile(obj,fname):
     f.write( obj )
 
 def IncrRefInFile(fname):
+  if fname in DicoForProxyFile:
+    DicoForProxyFile[fname] += 1
+  else:
+    DicoForProxyFile[fname] = 2
   pass
-  """with open(fname,"rb") as f:
+
+def IncrRefInFileOld(fname):
+  with open(fname,"rb") as f:
     cntb = f.read( GetSizeOfTCnt() )
   cnt = TypeCounter.from_buffer_copy( cntb ).value
   with open(fname,"rb+") as f:
     #import KernelServices ; KernelServices.EntryForDebuggerBreakPoint()
-    f.write( bytes( TypeCounter(cnt+1) ) )"""
+    f.write( bytes( TypeCounter(cnt+1) ) )
 
 def DecrRefInFile(fname):
+  if fname not in DicoForProxyFile:
+    cnt = 1
+  else:
+    cnt = DicoForProxyFile[fname]
+    DicoForProxyFile[fname] -= 1
+    if cnt == 1:
+      del DicoForProxyFile[fname]
+  if cnt == 1:
+    if os.path.exists(fname):
+      os.unlink( fname )
   pass
-  """import os
+
+def DecrRefInFileOld(fname):
+  import os
   with open(fname,"rb") as f:
     cntb = f.read( GetSizeOfTCnt() )
   cnt = TypeCounter.from_buffer_copy( cntb ).value
@@ -188,7 +208,7 @@ def DecrRefInFile(fname):
     os.unlink( fname )
   else:
     with open(fname,"rb+") as f:
-        f.write( bytes( TypeCounter(cnt-1) ) )"""
+        f.write( bytes( TypeCounter(cnt-1) ) )
 
 def GetBigObjectOnDiskThreshold():
   import os