Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
CastorScript
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
atlas-tdaq-software
CastorScript
Merge requests
!26
Resolve "Make ERS AppName more descriptive"
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Resolve "Make ERS AppName more descriptive"
16-make-ers-appname-more-descriptive
into
master
Overview
10
Commits
30
Pipelines
9
Changes
24
All threads resolved!
Hide all comments
Merged
Jonas Ladefoged Holm
requested to merge
16-make-ers-appname-more-descriptive
into
master
6 years ago
Overview
10
Commits
30
Pipelines
9
Changes
7
All threads resolved!
Hide all comments
Expand
Closes
#16 (closed)
0
0
Merge request reports
Compare
version 1
version 9
96afc8bc
6 years ago
version 8
1b6848cf
6 years ago
version 7
febd3f22
6 years ago
version 6
1b6848cf
6 years ago
version 5
5c3eeeee
6 years ago
version 4
a0bfac77
6 years ago
version 3
2b348b1b
6 years ago
version 2
2b348b1b
6 years ago
version 1
8c4ff089
6 years ago
master (base)
and
version 2
latest version
249d21b9
30 commits,
6 years ago
version 9
96afc8bc
29 commits,
6 years ago
version 8
1b6848cf
21 commits,
6 years ago
version 7
febd3f22
22 commits,
6 years ago
version 6
1b6848cf
21 commits,
6 years ago
version 5
5c3eeeee
20 commits,
6 years ago
version 4
a0bfac77
19 commits,
6 years ago
version 3
2b348b1b
13 commits,
6 years ago
version 2
2b348b1b
17 commits,
6 years ago
version 1
8c4ff089
11 commits,
6 years ago
Show latest version
7 files
+
66
−
224
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
7
Search (e.g. *.vue) (Ctrl+P)
Script/cs/Threads/CheckThread.py
+
14
−
75
Options
#!/bin/env python
##### Thread checking constantly the state of the partition #####
import
os
import
threading
import
logging
from
cs.Tools.utils
import
set_log_level
,
formatter
,
thread_id_str
ing
from
cs.Tools.utils
import
thread_id_string
,
enable_file_logg
ing
class
CheckThread
(
threading
.
Thread
):
def
__init__
(
self
,
conf
,
manager
,
copy
,
delete
,
event
,
main
ERSHandler
):
def
__init__
(
self
,
conf
,
event
,
ERSHandler
):
threading
.
Thread
.
__init__
(
self
,
name
=
"
CheckThread
"
)
import
ers
from
ispy
import
IPCPartition
#pylint: disable=no-name-in-module
self
.
IPCPartition
=
IPCPartition
self
.
conf
=
conf
self
.
event
=
event
self
.
manager
=
manager
self
.
copy
=
copy
self
.
delete
=
delete
##### Main logger #####
#TODO remove mainLogger (only root logger is needed and there is no need to store it locally)
self
.
mainLogger
=
logging
.
getLogger
(
'
main
'
)
self
.
main_ERS_handler
=
mainERSHandler
self
.
ERSHandler
=
ERSHandler
##### Get configuration parameters #####
self
.
CheckTimeout
=
self
.
conf
.
CheckTimeout
self
.
ERSLogLevel
=
self
.
conf
.
ERSLogLevel
self
.
LogDir
=
self
.
conf
.
LogDir
self
.
ERSenabled
=
self
.
conf
.
ERSenabled
self
.
partition
=
self
.
conf
.
partition
self
.
LogLevel
=
self
.
conf
.
LogLevel
self
.
ERSTimeout
=
self
.
conf
.
ERSTimeout
self
.
CheckTimeout
=
conf
.
CheckTimeout
self
.
partition
=
conf
.
partition
self
.
ERSTimeout
=
conf
.
ERSTimeout
##### Define Thread internal variables #####
self
.
exitFlag
=
False
self
.
partition_connected
=
True
##### Set Logger for CheckThread #####
self
.
logFile
=
os
.
path
.
join
(
self
.
LogDir
,
'
CheckLog.out
'
)
# TODO rename all handlers (they are not loggers)
# TODO there is no need to store them in the object (double check) (make them local variables)
self
.
CheckLog
=
logging
.
FileHandler
(
self
.
logFile
,
'
w
'
)
self
.
CheckLog
.
setFormatter
(
formatter
)
##### Set Logger Level #####
set_log_level
(
self
.
LogLevel
,
self
.
CheckLog
)
self
.
logger
=
logging
.
getLogger
(
'
CheckThread
'
)
self
.
logger
.
addHandler
(
self
.
CheckLog
)
##### Add ERS handler #####
if
self
.
ERSenabled
:
try
:
#TODO remove: we don't need another ers handler, just use the central one
self
.
check_ERS_handler
=
ers
.
LoggingHandler
()
set_log_level
(
self
.
ERSLogLevel
,
self
.
check_ERS_handler
)
self
.
logger
.
addHandler
(
self
.
check_ERS_handler
)
except
Exception
,
ex
:
self
.
logger
.
error
(
"
CheckThread could not create ERS, reason is
'
%s
'"
,
str
(
ex
))
self
.
logger
=
enable_file_logging
(
"
CheckThread
"
,
"
CheckLog.out
"
,
conf
.
LogDir
,
conf
.
LogLevel
)
# end def __init__()
def
run
(
self
):
#TODO log thread id to local logger and not mainLogger
self
.
mainLogger
.
info
(
thread_id_string
())
self
.
logger
.
info
(
thread_id_string
())
while
True
:
@@ -83,45 +47,20 @@ class CheckThread(threading.Thread):
self
.
event
.
wait
(
self
.
ERSTimeout
)
self
.
logger
.
warning
(
'
Found partition %s, adding ERS
'
,
self
.
partition
)
self
.
partition_connected
=
True
##### Add ERS handlers to all loggers #####
self
.
change_state_ers
(
True
)
##### Add ERS handler to root logger #####
logging
.
getLogger
().
addHandler
(
self
.
ERSHandler
)
##### Check for the disappearance of partition #####
elif
self
.
partition_connected
and
not
self
.
IPCPartition
(
self
.
partition
).
isValid
():
self
.
logger
.
warning
(
'
Lost connection to partition %s, removing ERS handlers
'
,
self
.
partition
)
self
.
partition_connected
=
False
##### Remove ERS handlers from all loggers #####
self
.
change_state_ers
(
False
)
##### Remove ERS handler from root logger #####
logging
.
getLogger
().
removeHandler
(
self
.
ERSHandler
)
self
.
event
.
wait
(
self
.
CheckTimeout
)
# end while
# end def run()
##### Call add/remove ERS functions from threads #####
def
change_state_ers
(
self
,
create_ers_handler
):
if
create_ers_handler
:
##### Add ERS handler to all loggers #####
#TODO this should be the root logger
self
.
mainLogger
.
addHandler
(
self
.
main_ERS_handler
)
self
.
logger
.
addHandler
(
self
.
check_ERS_handler
)
self
.
copy
.
AddRemoveERS
(
True
)
self
.
manager
.
AddRemoveERS
(
True
)
if
self
.
delete
:
self
.
delete
.
AddRemoveERS
(
True
)
else
:
##### Remove ERS from all loggers #####
#TODO this should be the root logger
self
.
mainLogger
.
removeHandler
(
self
.
main_ERS_handler
)
self
.
logger
.
removeHandler
(
self
.
check_ERS_handler
)
self
.
copy
.
AddRemoveERS
(
False
)
self
.
manager
.
AddRemoveERS
(
False
)
if
self
.
delete
:
self
.
delete
.
AddRemoveERS
(
False
)
# end if,else
# end def change_state_ers()
##### Exit handler #####
def
checkExit
(
self
):
self
.
exitFlag
=
True
Loading