View Issue Details

IDProjectCategoryView StatusLast Update
0033351Open CASCADEOCCT:Data Exchangepublic2024-03-28 13:26
Reporterdpasukhi Assigned Tovglukhik  
PrioritynormalSeveritymajor 
Status verifiedResolutionfixed 
Product Version7.7.0 
Target Version7.7.3 
Summary0033351: Data Exchange, Step - Improvement for thread safety of the STEP translator
DescriptionThe major problem is occt\src\StepData\StepData_GlobalFactors.hxx
It is a singleton. We need to make it as a field of session(StepData_StepModel)

Additinally
All methods and functions that work with StepData_GlobalFactors must have access to the StepData_StepModel
This can be done via optional parameter functions (theTP-reading, theFP-writing, theModel, or a value directly from Standard_Real)
Or add/use a field in a class of the same type.

The reason for this is thread-safety.
StepData_GlobalFactors are static fields - containers (singletons)
Fix for objects unique to one session - will allow to read step in different threads different files.

The next step in this ticket is to isolate all static variables.
Isolation is using Standard_mutex ::Lock ::Unlock
+ Change the type of static controllers to bool
Steps To ReproduceNot possible
TagsNo tags attached.
Test case number

Relationships

parent of 0033564 verifieddpasukhi Open CASCADE Data Exchange, STEP - Making default unit parameter 
related to 0033643 newika Open CASCADE Data Exchange, Step Import - Multithread loading model issue 
related to 0033657 newdpasukhi Open CASCADE Data Exchange, Step Import - Data race during parsing stage 

Activities

dpasukhi

2023-03-30 21:19

administrator   ~0113343

Last edited: 2023-03-30 21:22

static*[ \n\r]*(Handle\([^\n\)]+\))+[ \n\r]*[a-z,0-9_]+[ \n\r]*\;
static*[ \n\r]*[a-z,0-9_]+[ \n\r]*[a-z,0-9_]+[ \n\r]*\;

Regex to find static variables

git

2023-04-05 00:33

administrator   ~0113361

Branch CR33351 has been created by ichesnokova.

SHA-1: f8c9407c98cc5daeecba86bfeba8de57c27216d2


Detailed log of new commits:

Author: ichesnok
Date: Tue Mar 28 13:29:44 2023 +0100

    0033351: Data Exchange, Step - Improvement for thread safety of the STEP translator
    
    The StepData_GlobalFactors field added to StepData_StepModel.

git

2023-08-21 11:14

administrator   ~0113992

Branch CR33351 has been updated forcibly by ichesnokova.

SHA-1: 4e636cd14d5efad4349ee1e161c51d72587de8a0

git

2023-08-21 12:21

administrator   ~0113994

Branch CR33351 has been updated forcibly by ichesnokova.

SHA-1: a897d0d5285c6125a67643dc8f1e5360eaed2641

git

2023-08-22 15:49

administrator   ~0114009

Branch CR33351 has been updated forcibly by ichesnokova.

SHA-1: 6038b3408a3cb90f7c3ed8bc31d2194af22ce8d6

git

2023-09-06 11:20

administrator   ~0114078

Branch CR33351 has been updated forcibly by ichesnokova.

SHA-1: 0926ad946308e62a0128bd4e74ba96003d9f4dee

ichesnokova

2023-09-06 14:01

developer   ~0114079

Dear dpasukhi,
please review branch CR33351
Tests: http://jenkins-test-10.nnov.opencascade.com/view/CR33351-master-ichesnok/

dpasukhi

2023-09-06 15:47

administrator   ~0114081

Need to update Kinematics

ichesnokova

2023-09-07 10:13

developer   ~0114084

Dear dpasukhi,
please review branch CR33351
Tests: http://jenkins-test-10.nnov.opencascade.com/view/CR33351-master-ichesnok/view/COMPARE/

dpasukhi

2023-09-07 10:43

administrator   ~0114085

Dear bugmaster, please integrate
PROD:CR33351
OCCT:CR33351

git

2023-09-07 11:00

administrator   ~0114087

Branch CR33351 has been updated forcibly by ichesnokova.

SHA-1: 7d2b52ab2eea67032848dde6e45babb72d0460cd

vglukhik

2023-09-11 12:23

administrator   ~0114123

Combination -
OCCT branch : IR-2023-09-08
master SHA - 28b505b27baa09dfba68242534a89a55960b19ac
38e09ead3f71b0f6ee0ece13e05a6f9009c86eba
Products branch : IR-2023-09-08 SHA - 1e2d5c30eda7a6920c3328a6b96a641049d32057
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:
Ubuntu2004-64:
OCCT
Total CPU difference: 17991.31000000026 / 17826.9900000004 [+0.92%]
Products
Total CPU difference: 11923.35000000001 / 11838.620000000014 [+0.72%]
Windows-64-VC142:
OCCT
Total CPU difference: 20151.84375 / 19845.21875 [+1.55%]
Products
Total CPU difference: 14318.203125 / 14167.5625 [+1.06%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2023-09-11 14:03

administrator   ~0114130

Branch CR33351 has been deleted by mnt.

SHA-1: 7d2b52ab2eea67032848dde6e45babb72d0460cd

Related Changesets

occt: master 28b505b2

2023-03-28 12:29:44

ichesnok


Committer: vglukhik Details Diff
0033351: Data Exchange, Step - Improvement for thread safety of the STEP translator

Local StepData_Factors object usage for each session
Static variables isolated
Affected Issues
0033351
mod - src/GeomToStep/GeomToStep_MakeAxis1Placement.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeAxis1Placement.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeAxis1Placement_gen.pxx Diff File
mod - src/GeomToStep/GeomToStep_MakeAxis2Placement2d.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeAxis2Placement2d.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeAxis2Placement3d.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeAxis2Placement3d.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBoundedCurve.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBoundedCurve.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBoundedSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBoundedSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineCurveWithKnots.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineCurveWithKnots.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineCurveWithKnotsAndRationalBSplineCurve.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineCurveWithKnotsAndRationalBSplineCurve.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineCurveWithKnotsAndRationalBSplineCurve_gen.pxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineCurveWithKnots_gen.pxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineSurfaceWithKnots.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineSurfaceWithKnots.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineSurfaceWithKnotsAndRationalBSplineSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeBSplineSurfaceWithKnotsAndRationalBSplineSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCartesianPoint.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCartesianPoint.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCircle.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCircle.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCircle_gen.pxx Diff File
mod - src/GeomToStep/GeomToStep_MakeConic.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeConic.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeConicalSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeConicalSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCurve.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCurve.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCylindricalSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeCylindricalSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeElementarySurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeElementarySurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeEllipse.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeEllipse.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeEllipse_gen.pxx Diff File
mod - src/GeomToStep/GeomToStep_MakeHyperbola.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeHyperbola.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeLine.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeLine.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeLine_gen.pxx Diff File
mod - src/GeomToStep/GeomToStep_MakeParabola.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeParabola.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakePlane.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakePlane.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakePolyline.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakePolyline.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakePolyline_gen.pxx Diff File
mod - src/GeomToStep/GeomToStep_MakeRectangularTrimmedSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeRectangularTrimmedSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSphericalSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSphericalSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSurfaceOfLinearExtrusion.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSurfaceOfLinearExtrusion.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSurfaceOfRevolution.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSurfaceOfRevolution.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSweptSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeSweptSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeToroidalSurface.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeToroidalSurface.hxx Diff File
mod - src/GeomToStep/GeomToStep_MakeVector.cxx Diff File
mod - src/GeomToStep/GeomToStep_MakeVector.hxx Diff File
mod - src/STEPCAFControl/STEPCAFControl_Controller.cxx Diff File
mod - src/STEPCAFControl/STEPCAFControl_Reader.cxx Diff File
mod - src/STEPCAFControl/STEPCAFControl_Reader.hxx Diff File
mod - src/STEPCAFControl/STEPCAFControl_Writer.cxx Diff File
mod - src/STEPCAFControl/STEPCAFControl_Writer.hxx Diff File
mod - src/STEPConstruct/STEPConstruct_ContextTool.cxx Diff File
mod - src/STEPConstruct/STEPConstruct_ContextTool.hxx Diff File
mod - src/STEPConstruct/STEPConstruct_UnitContext.cxx Diff File
mod - src/STEPConstruct/STEPConstruct_UnitContext.hxx Diff File
mod - src/STEPConstruct/STEPConstruct_ValidationProps.cxx Diff File
mod - src/STEPConstruct/STEPConstruct_ValidationProps.hxx Diff File
mod - src/STEPControl/STEPControl_ActorRead.cxx Diff File
mod - src/STEPControl/STEPControl_ActorRead.hxx Diff File
mod - src/STEPControl/STEPControl_ActorWrite.cxx Diff File
mod - src/STEPControl/STEPControl_ActorWrite.hxx Diff File
mod - src/STEPControl/STEPControl_Controller.cxx Diff File
mod - src/StepData/FILES Diff File
add - src/StepData/StepData_Factors.cxx Diff File
add - src/StepData/StepData_Factors.hxx Diff File
rm - src/StepData/StepData_GlobalFactors.cxx Diff File
rm - src/StepData/StepData_GlobalFactors.hxx Diff File
mod - src/StepData/StepData_StepModel.cxx Diff File
mod - src/StepData/StepData_StepModel.hxx Diff File
mod - src/STEPEdit/STEPEdit.cxx Diff File
mod - src/STEPEdit/STEPEdit_EditContext.cxx Diff File
mod - src/StepSelect/StepSelect_StepType.cxx Diff File
mod - src/STEPSelections/STEPSelections_SelectGSCurves.cxx Diff File
mod - src/STEPSelections/STEPSelections_SelectInstances.cxx Diff File
mod - src/StepToGeom/StepToGeom.cxx Diff File
mod - src/StepToGeom/StepToGeom.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_Builder.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_Builder.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_MakeTransformed.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_MakeTransformed.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateCompositeCurve.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateCompositeCurve.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateCurveBoundedSurface.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateCurveBoundedSurface.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateEdge.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateEdge.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateEdgeLoop.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateEdgeLoop.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateFace.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateFace.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslatePolyLoop.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslatePolyLoop.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateShell.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateShell.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateSolid.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateSolid.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateVertex.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateVertex.hxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateVertexLoop.cxx Diff File
mod - src/StepToTopoDS/StepToTopoDS_TranslateVertexLoop.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_Builder.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_Builder.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeBrepWithVoids.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeBrepWithVoids.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeFacetedBrep.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeFacetedBrep.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeFacetedBrepAndBrepWithVoids.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeFacetedBrepAndBrepWithVoids.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeGeometricCurveSet.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeGeometricCurveSet.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeManifoldSolidBrep.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeManifoldSolidBrep.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeShellBasedSurfaceModel.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeShellBasedSurfaceModel.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepEdge.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepFace.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepFace.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepVertex.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepVertex.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepWire.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_MakeStepWire.hxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_WireframeBuilder.cxx Diff File
mod - src/TopoDSToStep/TopoDSToStep_WireframeBuilder.hxx Diff File
mod - src/XSDRAWSTEP/XSDRAWSTEP.cxx Diff File

occt-products: master 1e2d5c30

2023-09-06 13:54:19

ichesnok

Details Diff
0033351: Data Exchange, Step - Improvement for thread safety of the STEP translator

StepData_Factors usage added
Affected Issues
0033351
mod - diff Diff File
mod - diff Diff File
mod - src/Kinematics/Kinematics_StepWriter.cxx Diff File
mod - src/Kinematics/Kinematics_StepWriter.hxx Diff File

Issue History

Date Modified Username Field Change
2023-03-27 17:55 dpasukhi New Issue
2023-03-27 17:55 dpasukhi Assigned To => ichesnokova
2023-03-28 12:37 dpasukhi Status new => assigned
2023-03-30 21:19 dpasukhi Note Added: 0113343
2023-03-30 21:22 dpasukhi Note Edited: 0113343
2023-04-05 00:33 git Note Added: 0113361
2023-05-14 17:14 dpasukhi Assigned To ichesnokova => dpasukhi
2023-07-31 13:20 dpasukhi Target Version 7.7.2 => 7.7.3
2023-08-21 11:14 git Note Added: 0113992
2023-08-21 12:21 git Note Added: 0113994
2023-08-22 15:49 git Note Added: 0114009
2023-09-04 17:52 dpasukhi Assigned To dpasukhi => ichesnokova
2023-09-06 11:20 git Note Added: 0114078
2023-09-06 14:01 ichesnokova Note Added: 0114079
2023-09-06 14:02 ichesnokova Assigned To ichesnokova => dpasukhi
2023-09-06 14:02 ichesnokova Status assigned => resolved
2023-09-06 15:47 dpasukhi Assigned To dpasukhi => ichesnokova
2023-09-06 15:47 dpasukhi Status resolved => assigned
2023-09-06 15:47 dpasukhi Note Added: 0114081
2023-09-07 10:13 ichesnokova Assigned To ichesnokova => dpasukhi
2023-09-07 10:13 ichesnokova Status assigned => resolved
2023-09-07 10:13 ichesnokova Note Added: 0114084
2023-09-07 10:43 dpasukhi Assigned To dpasukhi => bugmaster
2023-09-07 10:43 dpasukhi Status resolved => reviewed
2023-09-07 10:43 dpasukhi Note Added: 0114085
2023-09-07 10:45 dpasukhi Assigned To bugmaster => dpasukhi
2023-09-07 10:45 dpasukhi Status reviewed => assigned
2023-09-07 11:00 git Note Added: 0114087
2023-09-07 18:41 dpasukhi Status assigned => resolved
2023-09-07 18:41 dpasukhi Steps to Reproduce Updated
2023-09-07 18:42 dpasukhi Assigned To dpasukhi => bugmaster
2023-09-07 18:42 dpasukhi Status resolved => reviewed
2023-09-11 12:23 vglukhik Note Added: 0114123
2023-09-11 12:28 vglukhik Changeset attached => occt master 28b505b2
2023-09-11 12:28 vglukhik Assigned To bugmaster => vglukhik
2023-09-11 12:28 vglukhik Status reviewed => verified
2023-09-11 12:28 vglukhik Resolution open => fixed
2023-09-11 12:28 Changeset attached => occt-products master 1e2d5c30
2023-09-11 14:03 git Note Added: 0114130
2024-01-02 16:59 dpasukhi Relationship added parent of 0033564
2024-03-28 13:26 dpasukhi Relationship added related to 0033643
2024-03-28 13:26 dpasukhi Relationship added related to 0033657