View Issue Details

IDProjectCategoryView StatusLast Update
0029195Open CASCADEOCCT:Application Frameworkpublic2020-12-02 17:11
ReporterabvAssigned Toabv 
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Target Version7.5.0Fixed in Version7.5.0 
Summary0029195: OCAF - ensure thread safety for different documents
DescriptionFor OCAF to be usable in multithreaded server applications where the same server process should handle multiple documents, we need to ensure that OCAF is thread safe, starting from scenarios where each thread is processing its own document.

Currently known possible sources of non-safety are:

- CDF_Session singleton and application stored in it -- they are called by some functions to get some defaults (search for "CurrentApplication")

- Version of the document being read is recorded during retrieval in the global variable - see BinMDataStd::DocumentVersion(). This can be moved to RElocation table, see 0029014
Steps To Reproducebugs caf bug29195_1
TagsNo tags attached.
Test case numberbugs caf bug29195_1

Attached Files

  • tests29195.7z (1,604,239 bytes)

Relationships

related to 0026491 closedabv Open CASCADE Incorrect OCAF format management 
related to 0029014 closedbugmaster Community Managing Binary Format Versions Is Not Possible for Own TDF_Attributes 
parent of 0031785 closedbugmaster Open CASCADE [REGRESSION] Application Framework - application crashes on reading XBF document in background thread 
related to 0031769 closedbugmaster Open CASCADE Application Framework - regression : can not initialize two kinds of application in one thread 

Activities

szy

2017-11-23 16:49

manager   ~0072449

Could you explain your idea when "the same server process should handle multiple documents" in more details. It is not clear connection of of CDF_Session with multiple documents processing. Current architecture supposes only one Session at the top. 1 Session => 1 Application => 1 Document. For sure you can open new document (it will be added to the internal List) and switch to it. Session just can provide list of opened (in session) documents. May be you mean problem of this list processing?

abv

2017-12-02 20:25

manager   ~0072669

Imagine a server that runs multiple threads within one process, handling different requests from clients. In the current state of OCAF, if each thread will try to load its own OCAF document, they will conflict due to OCAF architecture assuming single document per process.

git

2018-08-07 10:31

administrator   ~0078448

Branch CR29195 has been created by szy.

SHA-1: 1e96c8eb30dc630673ae71551bed95a8115d1562


Detailed log of new commits:

Author: szy
Date: Tue Aug 7 10:29:22 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // OCAF persistence architecture modification to satisfy multythreading criteria.

git

2018-08-07 17:59

administrator   ~0078475

Branch CR29195 has been updated by szy.

SHA-1: 393fcd3be5ae1520a5da9c24818ee71f892f1115


Detailed log of new commits:

Author: szy
Date: Tue Aug 7 17:57:54 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // adding test cases.

szy

2018-08-07 18:04

manager  

tests29195.7z (1,604,239 bytes)

git

2018-08-08 17:25

administrator   ~0078500

Branch CR29195_1 has been created by szy.

SHA-1: b62c03e90b4904bb0d3be78a501e0af31e8777d2


Detailed log of new commits:

Author: szy
Date: Wed Aug 8 17:24:06 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // OCAF persistence architecture modification to satisfy multi-threading criteria.

git

2018-08-08 18:31

administrator   ~0078507

Branch CR29195_1 has been updated by szy.

SHA-1: 81f58e63798bf0883e43092209ca71d49a0c54ff


Detailed log of new commits:

Author: szy
Date: Wed Aug 8 18:30:07 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Correction of warnings on MacOS.

git

2018-08-14 16:55

administrator   ~0078605

Branch CR29195_2 has been created by szy.

SHA-1: 87e8be2e152255aafd330981738160e52ac12f6a


Detailed log of new commits:

Author: szy
Date: Wed Aug 8 17:24:06 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Fix of compilation errors.
    
    0029195: OCAF - ensure thread safety for different documents.
    
    // Correction of warnings on MacOS.
    
    0029195: OCAF - ensure thread safety for different documents.
    
    // OCAF persistence architecture modification to satisfy multi-threading criteria.

git

2018-08-14 18:04

administrator   ~0078609

Branch CR29195_2 has been updated by szy.

SHA-1: 81670ad301d2494e7d4715549c8962e0125277df


Detailed log of new commits:

Author: szy
Date: Tue Aug 14 18:01:55 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Fix compilation errors on MacOS.

git

2018-08-15 12:18

administrator   ~0078622

Branch CR29195_3 has been created by szy.

SHA-1: b721073ca43feaa9450d023fa53120dacfdaf4bc


Detailed log of new commits:

Author: szy
Date: Wed Aug 15 12:16:33 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Fixing warnings on Linux.

git

2018-08-15 17:55

administrator   ~0078635

Branch CR29195_3 has been updated by szy.

SHA-1: aec50c02c87b4ef82f0d36dffc25a1558aebf638


Detailed log of new commits:

Author: szy
Date: Wed Aug 15 17:53:01 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Fixing CSharp and Java Samples (Removing obsolete method from CDF_Application).

git

2018-08-17 17:38

administrator   ~0078668

Branch CR29195_4 has been created by szy.

SHA-1: ad8352dcc5d1d972687e8a593618bd93ea3328b0


Detailed log of new commits:

Author: szy
Date: Fri Aug 17 17:36:07 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Fixing TObj testing bugs.

git

2018-08-20 18:51

administrator   ~0078697

Branch CR29195_5 has been created by szy.

SHA-1: 506de23937dda85c4eed53a37a7b267952df9efb


No new revisions were added by this update.

git

2018-08-21 10:39

administrator   ~0078701

Branch CR29195_6 has been created by szy.

SHA-1: 9f1a4f137529cff46784f6154c6da9994483815b


Detailed log of new commits:

Author: szy
Date: Tue Aug 21 10:37:13 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Adding lost fix to TObjDRAW.cxx

git

2018-08-22 11:29

administrator   ~0078714

Branch CR29195_7 has been created by szy.

SHA-1: 2a1bde0ed340d8b392c5b5ed63026596b4fba2ad


Detailed log of new commits:

Author: szy
Date: Wed Aug 8 17:24:06 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // OCAF persistence architecture modification to satisfy multi-threading criteria.

git

2018-09-07 18:45

administrator   ~0079036

Branch CR29195_8 has been created by szy.

SHA-1: 3f244e6c954374e19d364ab9df3300e3e44dc876


Detailed log of new commits:

Author: szy
Date: Wed Aug 8 17:24:06 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // OCAF persistence architecture modification to satisfy multi-threading criteria.

git

2018-10-19 17:36

administrator   ~0080146

Branch CR29195_9 has been created by szy.

SHA-1: 734676f8676b4ba7f3a8aa5926362e6240c36a25


Detailed log of new commits:

Author: szy
Date: Fri Oct 19 17:34:39 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Rebase on CR30169

Author: szy
Date: Tue Oct 9 17:30:10 2018 +0300

    0030169: Application Framework - Document format version management improvement.
    
    // Combined to one.

git

2018-11-08 16:31

administrator   ~0080970

Branch CR29195_10 has been created by szy.

SHA-1: 777bdc64ff31aa188bd4cbd4b6784e99d6fbbb3e


Detailed log of new commits:

Author: szy
Date: Thu Nov 8 16:28:56 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // fixing Linux bugs

Author: szy
Date: Fri Oct 19 17:34:39 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // Rebase on CR30169

git

2018-12-25 14:34

administrator   ~0081619

Branch CR29195_11 has been created by szy.

SHA-1: 613278b343149d93848ac4c4de0a222be7dec8fb


Detailed log of new commits:

Author: szy
Date: Tue Dec 25 14:30:40 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // OCAF persistence architecture modification to satisfy multi-threading criteria.

git

2018-12-26 16:29

administrator   ~0081632

Branch CR29195_11 has been updated by szy.

SHA-1: 6afafece3a8fa129dd5c81187e35a81832fc64b9


Detailed log of new commits:

Author: szy
Date: Wed Dec 26 16:26:01 2018 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    //Turn off debug (log) information.

git

2020-08-26 10:13

administrator   ~0093636

Branch CR29195_12 has been created by mpv.

SHA-1: fce1dedac3f86591faba24a3e2aa3439edda1215


Detailed log of new commits:

Author: mpv
Date: Wed Aug 26 10:15:22 2020 +0300

    0029195: OCAF - ensure thread safety for different documents.
    
    // OCAF persistence architecture modification to satisfy multi-threading criteria.

git

2020-08-26 15:56

administrator   ~0093644

Branch CR29195_12 has been updated by mpv.

SHA-1: 89cbefafb089aea5a6cbfccaedeed82d7860ca34


Detailed log of new commits:

Author: mpv
Date: Wed Aug 26 15:59:35 2020 +0300

    # Compilation problems fix.

git

2020-08-26 21:19

administrator   ~0093655

Branch CR29195_12 has been updated by mpv.

SHA-1: c0eb6440a4aa340082bf21b37a33d51210f4bd26


Detailed log of new commits:

Author: mpv
Date: Wed Aug 26 21:22:23 2020 +0300

    # Fixed problem found in unit-test: if progress bar does not defined, binary file can not be retrieved

git

2020-08-27 14:41

administrator   ~0093668

Branch CR29195_12 has been updated by mpv.

SHA-1: c722e382c1d67df28dec726d82fe6b016c8bcc65


Detailed log of new commits:

Author: mpv
Date: Thu Aug 27 14:44:18 2020 +0300

    // Fix the test-case, make parallel threads execution more stable

git

2020-08-28 12:49

administrator   ~0093685

Branch CR29195_12 has been updated by mpv.

SHA-1: 1dd588edbb8a6fbac61083638818f2fd6be6046e


Detailed log of new commits:

Author: mpv
Date: Fri Aug 28 12:52:09 2020 +0300

    # Fix the test problem if number of cores is not 4

git

2020-08-28 14:52

administrator   ~0093696

Branch CR29195_12 has been updated by mpv.

SHA-1: ead2b14cdd55fabcf7ec665b3c6faa63f744adbb


Detailed log of new commits:

Author: mpv
Date: Fri Aug 28 14:55:00 2020 +0300

    # Fixed the problem of output files in the test: they can not be written to the same directory as input files.

git

2020-08-31 10:43

administrator   ~0093753

Branch CR29195_12 has been updated by mpv.

SHA-1: 9244c09e4bcf8a6c128e853207c972095554dac3


Detailed log of new commits:

Author: mpv
Date: Mon Aug 31 10:45:40 2020 +0300

    # Fixed the problem when the application was created second time in one thread. In this case resulting pointer was corrupted because handle was created in AddToSession

mpv

2020-08-31 17:05

developer   ~0093770

Fixed in the branch CR29195_12: merged with the current version modifications after the long delay, adapted test-cases. Please, review.

http://occt-tests/CR29195_12-master-MPV-OCCT/Windows-64-VC14/diff_summary.html
http://occt-tests/CR29195_12-master-MPV-Products/Windows-64-VC14/diff_summary.html
http://occt-tests/CR29195_12-master-MPV-OCCT/Debian80-64/diff_summary.html
http://occt-tests/CR29195_12-master-MPV-Products/Debian80-64/diff_summary.html

vro

2020-09-09 09:32

developer   ~0094278

Reviewed! Tested a set of documents in multithreaded mode (Create/Open, Set/Get data, Save...) - it works fine even for 1000 threads.

bugmaster

2020-09-09 19:41

administrator   ~0094319

Last edited: 2020-09-09 19:42

1. Please define after reviewing what should be integrated:

OCCT branch: NUMBER | NOTHING
Products branch: NUMBER | NOTHING

We already discussed it a lot of time

2. Please tomorrow rebase OCCT branch CR29195_12 to branch WEEK-37 because conflicts

git

2020-09-10 09:08

administrator   ~0094345

Branch CR29195_12 has been updated forcibly by mpv.

SHA-1: 7a98721106e0977ceb667caf12ef6d22f9b724d9

mpv

2020-09-10 09:12

developer   ~0094346

OCCT branch CR29195_12 is rebased to branch WEEK-37
Products branch: NOTHING

git

2020-09-11 14:50

administrator   ~0094457

Branch CR29195_12 has been updated by mpv.

SHA-1: 7b7b0e0f74e3791c9e62b028072d4ac37001a3b1


Detailed log of new commits:

Author: mpv
Date: Fri Sep 11 14:53:37 2020 +0300

    # fix of warnings on VC12

bugmaster

2020-09-13 11:05

administrator   ~0094545

Combination -
OCCT branch : IR-2020-09-11
master SHA - d1b25684e9402d995dafec22fb98f83957d5fb76
a206de37fbfa0bf71bd534ae47192bbec23b8522
Products branch : IR-2020-09-11 SHA - a7e55a291cf6642cb4af945a999deeeb5f91272a
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 17333.360000000142 / 17325.800000000123 [+0.04%]
Products
Total CPU difference: 12056.720000000096 / 12079.64000000011 [-0.19%]
Windows-64-VC14:
OCCT
Total CPU difference: 18817.921875 / 18792.46875 [+0.14%]
Products
Total CPU difference: 13294.09375 / 13274.75 [+0.15%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2020-09-13 11:44

administrator   ~0094567

Branch CR29195_12 has been deleted by inv.

SHA-1: 7b7b0e0f74e3791c9e62b028072d4ac37001a3b1

git

2020-09-13 11:48

administrator   ~0094637

Branch CR29195_11 has been deleted by inv.

SHA-1: 6afafece3a8fa129dd5c81187e35a81832fc64b9

git

2020-09-13 11:48

administrator   ~0094638

Branch CR29195_10 has been deleted by inv.

SHA-1: 777bdc64ff31aa188bd4cbd4b6784e99d6fbbb3e

git

2020-09-13 11:48

administrator   ~0094639

Branch CR29195_9 has been deleted by inv.

SHA-1: 734676f8676b4ba7f3a8aa5926362e6240c36a25

git

2020-09-13 11:48

administrator   ~0094640

Branch CR29195_8 has been deleted by inv.

SHA-1: 3f244e6c954374e19d364ab9df3300e3e44dc876

git

2020-09-13 11:48

administrator   ~0094641

Branch CR29195_7 has been deleted by inv.

SHA-1: 2a1bde0ed340d8b392c5b5ed63026596b4fba2ad

git

2020-09-13 11:48

administrator   ~0094642

Branch CR29195_6 has been deleted by inv.

SHA-1: 9f1a4f137529cff46784f6154c6da9994483815b

git

2020-09-13 11:48

administrator   ~0094643

Branch CR29195_5 has been deleted by inv.

SHA-1: 506de23937dda85c4eed53a37a7b267952df9efb

git

2020-09-13 11:48

administrator   ~0094644

Branch CR29195_4 has been deleted by inv.

SHA-1: ad8352dcc5d1d972687e8a593618bd93ea3328b0

git

2020-09-13 11:48

administrator   ~0094645

Branch CR29195_3 has been deleted by inv.

SHA-1: aec50c02c87b4ef82f0d36dffc25a1558aebf638

git

2020-09-13 11:48

administrator   ~0094646

Branch CR29195_2 has been deleted by inv.

SHA-1: 81670ad301d2494e7d4715549c8962e0125277df

git

2020-09-13 11:48

administrator   ~0094647

Branch CR29195_1 has been deleted by inv.

SHA-1: 81f58e63798bf0883e43092209ca71d49a0c54ff

git

2020-09-13 11:48

administrator   ~0094648

Branch CR29195 has been deleted by inv.

SHA-1: 393fcd3be5ae1520a5da9c24818ee71f892f1115

Related Changesets

occt: master d9d03f10

2020-08-26 07:15:22

abv


Committer: abv Details Diff
0029195: OCAF - ensure thread safety for different documents.

OCAF persistence architecture modification to satisfy multi-threading criteria.
Affected Issues
0029195
mod - src/BinLDrivers/BinLDrivers_DocumentRetrievalDriver.cxx Diff File
rm - src/CDF/CDF.cxx Diff File
rm - src/CDF/CDF.hxx Diff File
mod - src/CDF/CDF_Application.cxx Diff File
mod - src/CDF/CDF_Application.hxx Diff File
mod - src/CDF/CDF_Directory.cxx Diff File
mod - src/CDF/CDF_DirectoryIterator.cxx Diff File
mod - src/CDF/CDF_MetaDataDriver.cxx Diff File
mod - src/CDF/CDF_Session.cxx Diff File
mod - src/CDF/CDF_Session.hxx Diff File
mod - src/CDF/CDF_Store.cxx Diff File
mod - src/CDF/CDF_Store.hxx Diff File
mod - src/CDF/CDF_StoreList.cxx Diff File
mod - src/CDF/FILES Diff File
mod - src/CDM/CDM_Application.cxx Diff File
mod - src/CDM/CDM_Application.hxx Diff File
rm - src/CDM/CDM_DataMapIteratorOfPresentationDirectory.hxx Diff File
mod - src/CDM/CDM_Document.cxx Diff File
mod - src/CDM/CDM_Document.hxx Diff File
mod - src/CDM/CDM_MetaData.cxx Diff File
mod - src/CDM/CDM_MetaData.hxx Diff File
mod - src/CDM/CDM_MetaDataLookUpTable.hxx Diff File
mod - src/CDM/FILES Diff File
mod - src/PCDM/PCDM_ReadWriter.cxx Diff File
mod - src/PCDM/PCDM_ReadWriter_1.cxx Diff File
mod - src/PCDM/PCDM_StorageDriver.cxx Diff File
mod - src/QABugs/QABugs_18.cxx Diff File
mod - src/QABugs/QABugs_20.cxx Diff File
mod - src/TDocStd/TDocStd.cxx Diff File
mod - src/TDocStd/TDocStd_Application.cxx Diff File
mod - src/TDocStd/TDocStd_Application.hxx Diff File
mod - src/TKQADraw/EXTERNLIB Diff File
mod - src/TObj/TObj_Application.cxx Diff File
mod - src/TObjDRAW/TObjDRAW.cxx Diff File
mod - src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.hxx Diff File
add - tests/bugs/caf/bug29195_1 Diff File
mod - tools/DFBrowser/DFBrowser_Window.cxx Diff File
mod - tools/DFBrowserPane/DFBrowserPane_TDocStdOwner.cxx Diff File

Issue History

Date Modified Username Field Change
2017-10-09 12:14 abv New Issue
2017-10-09 12:14 abv Assigned To => mpv
2017-10-09 12:14 abv Relationship added related to 0026491
2017-10-09 12:14 abv Relationship added related to 0029014
2017-10-11 16:19 mpv Assigned To mpv => szy
2017-11-23 16:06 szy Status new => assigned
2017-11-23 16:49 szy Note Added: 0072449
2017-11-23 16:49 szy Assigned To szy => abv
2017-11-23 16:49 szy Status assigned => feedback
2017-12-02 20:25 abv Note Added: 0072669
2017-12-02 20:25 abv Assigned To abv => szy
2018-08-07 10:31 git Note Added: 0078448
2018-08-07 17:59 git Note Added: 0078475
2018-08-07 18:04 szy File Added: tests29195.7z
2018-08-08 17:25 git Note Added: 0078500
2018-08-08 18:31 git Note Added: 0078507
2018-08-14 16:55 git Note Added: 0078605
2018-08-14 18:04 git Note Added: 0078609
2018-08-15 12:18 git Note Added: 0078622
2018-08-15 17:55 git Note Added: 0078635
2018-08-17 17:38 git Note Added: 0078668
2018-08-20 18:51 git Note Added: 0078697
2018-08-21 10:39 git Note Added: 0078701
2018-08-22 11:29 git Note Added: 0078714
2018-09-07 18:45 git Note Added: 0079036
2018-10-19 17:36 git Note Added: 0080146
2018-11-08 16:31 git Note Added: 0080970
2018-12-25 14:34 git Note Added: 0081619
2018-12-26 16:29 git Note Added: 0081632
2019-07-10 09:01 abv Target Version 7.4.0 => 7.5.0
2019-09-27 12:10 szy Resolution open => suspended
2020-08-26 10:13 git Note Added: 0093636
2020-08-26 15:56 git Note Added: 0093644
2020-08-26 21:19 git Note Added: 0093655
2020-08-27 14:41 git Note Added: 0093668
2020-08-28 12:49 git Note Added: 0093685
2020-08-28 14:52 git Note Added: 0093696
2020-08-31 10:43 git Note Added: 0093753
2020-08-31 17:05 mpv Note Added: 0093770
2020-08-31 17:05 mpv Assigned To szy => vro
2020-08-31 17:05 mpv Status feedback => resolved
2020-08-31 17:05 mpv Steps to Reproduce Updated
2020-09-09 09:32 vro Note Added: 0094278
2020-09-09 09:32 vro Assigned To vro => bugmaster
2020-09-09 09:32 vro Status resolved => reviewed
2020-09-09 19:41 bugmaster Note Added: 0094319
2020-09-09 19:41 bugmaster Assigned To bugmaster => mpv
2020-09-09 19:41 bugmaster Status reviewed => assigned
2020-09-09 19:41 bugmaster Note Edited: 0094319
2020-09-09 19:42 bugmaster Note Edited: 0094319
2020-09-10 09:08 git Note Added: 0094345
2020-09-10 09:12 mpv Note Added: 0094346
2020-09-10 09:12 mpv Status assigned => resolved
2020-09-10 09:12 mpv Assigned To mpv => bugmaster
2020-09-10 09:12 mpv Status resolved => reviewed
2020-09-11 14:50 git Note Added: 0094457
2020-09-13 11:05 bugmaster Note Added: 0094545
2020-09-13 11:05 bugmaster Status reviewed => tested
2020-09-13 11:17 bugmaster Test case number => bugs caf bug29195_1
2020-09-13 11:24 abv Changeset attached => occt master d9d03f10
2020-09-13 11:24 abv Assigned To bugmaster => abv
2020-09-13 11:24 abv Status tested => verified
2020-09-13 11:24 abv Resolution suspended => fixed
2020-09-13 11:44 git Note Added: 0094567
2020-09-13 11:48 git Note Added: 0094637
2020-09-13 11:48 git Note Added: 0094638
2020-09-13 11:48 git Note Added: 0094639
2020-09-13 11:48 git Note Added: 0094640
2020-09-13 11:48 git Note Added: 0094641
2020-09-13 11:48 git Note Added: 0094642
2020-09-13 11:48 git Note Added: 0094643
2020-09-13 11:48 git Note Added: 0094644
2020-09-13 11:48 git Note Added: 0094645
2020-09-13 11:48 git Note Added: 0094646
2020-09-13 11:48 git Note Added: 0094647
2020-09-13 11:48 git Note Added: 0094648
2020-09-15 13:44 mpv Relationship added related to 0031769
2020-09-21 22:14 kgv Relationship added parent of 0031785
2020-12-02 16:40 emo Fixed in Version => 7.5.0
2020-12-02 17:11 emo Status verified => closed