Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
trackrdrd
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
trackrdrd
Commits
a9544743
Commit
a9544743
authored
Sep 19, 2014
by
Geoff Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trackrdrd: add DATA_Reset(), prevents spurious re-use of dataentry fields
parent
656b322f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
5 deletions
+40
-5
data.c
trackrdrd/src/data.c
+15
-0
test_worker.c
trackrdrd/src/test/test_worker.c
+23
-4
trackrdrd.h
trackrdrd/src/trackrdrd.h
+1
-0
worker.c
trackrdrd/src/worker.c
+1
-1
No files found.
trackrdrd/src/data.c
View file @
a9544743
...
...
@@ -98,6 +98,21 @@ DATA_Init(void)
return
(
0
);
}
void
DATA_Reset
(
dataentry
*
entry
)
{
CHECK_OBJ_NOTNULL
(
entry
,
DATA_MAGIC
);
entry
->
state
=
DATA_EMPTY
;
entry
->
end
=
0
;
*
entry
->
data
=
'\0'
;
entry
->
keylen
=
0
;
*
entry
->
key
=
'\0'
;
entry
->
hasdata
=
false
;
entry
->
incomplete
=
false
;
entry
->
xid
=
0
;
entry
->
tid
=
0
;
}
/*
* take all free entries from the datatable for lockless
* allocation
...
...
trackrdrd/src/test/test_worker.c
View file @
a9544743
...
...
@@ -96,9 +96,10 @@ static char
printf
(
"... testing worker initialization
\n
"
);
config
.
maxopen_scale
=
10
;
config
.
maxdone
=
1024
;
config
.
maxdata
=
1024
;
config
.
maxopen_scale
=
DEF_MAXOPEN_SCALE
;
config
.
maxdone
=
DEF_MAXDONE
;
config
.
maxdata
=
DEF_MAXDATA
;
config
.
maxkeylen
=
DEF_MAXKEYLEN
;
config
.
nworkers
=
NWORKERS
;
strcpy
(
config
.
mq_config_file
,
MQ_CONFIG
);
...
...
@@ -145,7 +146,7 @@ static const char
sprintf
(
errmsg
,
"%d of %d worker threads running"
,
wrk_running
,
NWORKERS
);
mu_assert
(
errmsg
,
wrk_running
==
NWORKERS
);
for
(
int
i
=
0
;
i
<
1024
;
i
++
)
{
for
(
int
i
=
0
;
i
<
(
1
<<
DEF_MAXOPEN_SCALE
)
;
i
++
)
{
entry
=
&
dtbl
.
entry
[
i
];
CHECK_OBJ_NOTNULL
(
entry
,
DATA_MAGIC
);
entry
->
xid
=
xid
;
...
...
@@ -161,6 +162,24 @@ static const char
AZ
(
mqf
.
global_shutdown
());
LOG_Close
();
/*
* Verify DATA_Reset() by checking that all data entry fields are in
* empty states after worker threads are shut down.
*/
for
(
int
i
=
0
;
i
<
(
1
<<
DEF_MAXOPEN_SCALE
);
i
++
)
{
entry
=
&
dtbl
.
entry
[
i
];
CHECK_OBJ_NOTNULL
(
entry
,
DATA_MAGIC
);
MASSERT
(
entry
->
state
==
DATA_EMPTY
);
MAZ
(
entry
->
end
);
MAZ
(
*
entry
->
data
);
MAZ
(
entry
->
keylen
);
MAZ
(
*
entry
->
key
);
MASSERT
(
entry
->
hasdata
==
false
);
MASSERT
(
entry
->
incomplete
==
false
);
MAZ
(
entry
->
xid
);
MAZ
(
entry
->
tid
);
}
return
NULL
;
}
...
...
trackrdrd/src/trackrdrd.h
View file @
a9544743
...
...
@@ -192,6 +192,7 @@ typedef struct datatable_s datatable;
datatable
dtbl
;
int
DATA_Init
(
void
);
void
DATA_Reset
(
dataentry
*
entry
);
void
DATA_Take_Freelist
(
struct
freehead_s
*
dst
);
void
DATA_Return_Freelist
(
struct
freehead_s
*
returned
,
unsigned
nreturned
);
void
DATA_Dump1
(
dataentry
*
entry
,
int
i
);
...
...
trackrdrd/src/worker.c
View file @
a9544743
...
...
@@ -182,7 +182,7 @@ wrk_send(void **mq_worker, dataentry *entry, worker_data_t *wrk)
LOG_Log
(
LOG_DEBUG
,
"Worker %d: Successfully sent data [%.*s]"
,
wrk
->
id
,
entry
->
end
,
entry
->
data
);
}
entry
->
state
=
DATA_EMPTY
;
DATA_Reset
(
entry
)
;
VSTAILQ_INSERT_TAIL
(
&
wrk
->
wrk_freelist
,
entry
,
freelist
);
wrk
->
wrk_nfree
++
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment