Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnishevent
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
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
varnishevent
Commits
d16c8b3f
Commit
d16c8b3f
authored
Apr 21, 2015
by
Geoff Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
consistently name the element "record" in the sources (not "line" or
"logline")
parent
d0b3925e
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
170 additions
and
170 deletions
+170
-170
data.c
src/data.c
+32
-32
format.c
src/format.c
+21
-21
format.h
src/format.h
+3
-3
monitor.c
src/monitor.c
+1
-1
regress.sh
src/test/regress.sh
+1
-1
test_data.c
src/test/test_data.c
+29
-29
test_format.c
src/test/test_format.c
+51
-51
test_writer.c
src/test/test_writer.c
+4
-4
varnishevent.c
src/varnishevent.c
+13
-13
varnishevent.h
src/varnishevent.h
+13
-13
writer.c
src/writer.c
+2
-2
No files found.
src/data.c
View file @
d16c8b3f
...
...
@@ -55,33 +55,33 @@
static
const
char
*
statename
[
3
]
=
{
"EMPTY"
,
"OCCUPIED"
};
static
pthread_mutex_t
freetx_lock
=
PTHREAD_MUTEX_INITIALIZER
;
static
pthread_mutex_t
free
line
_lock
=
PTHREAD_MUTEX_INITIALIZER
;
static
pthread_mutex_t
free
rec
_lock
=
PTHREAD_MUTEX_INITIALIZER
;
static
pthread_mutex_t
freechunk_lock
=
PTHREAD_MUTEX_INITIALIZER
;
static
char
*
bufptr
;
static
txhead_t
freetxhead
;
static
linehead_t
freeline
head
;
static
rechead_t
freerec
head
;
static
chunkhead_t
freechunkhead
;
static
void
data_Cleanup
(
void
)
{
free
(
txn
);
free
(
line
s
);
free
(
record
s
);
free
(
chunks
);
free
(
bufptr
);
AZ
(
pthread_mutex_destroy
(
&
freetx_lock
));
AZ
(
pthread_mutex_destroy
(
&
free
line
_lock
));
AZ
(
pthread_mutex_destroy
(
&
free
rec
_lock
));
AZ
(
pthread_mutex_destroy
(
&
freechunk_lock
));
}
void
DATA_Clear_Tx
(
tx_t
*
const
tx
,
txhead_t
*
const
freetx
,
line
head_t
*
const
freerec
,
chunkhead_t
*
const
freechunk
,
rec
head_t
*
const
freerec
,
chunkhead_t
*
const
freechunk
,
unsigned
*
restrict
const
nfree_tx
,
unsigned
*
restrict
const
nfree_rec
,
unsigned
*
restrict
const
nfree_chunk
)
{
logline
_t
*
rec
;
rec
_t
*
rec
;
chunk_t
*
chunk
;
unsigned
nchunk
=
0
,
nrec
=
0
;
...
...
@@ -93,8 +93,8 @@ DATA_Clear_Tx(tx_t * const tx, txhead_t * const freetx,
tx
->
type
=
VSL_t_unknown
;
tx
->
t
=
0
.;
while
((
rec
=
VSTAILQ_FIRST
(
&
tx
->
line
s
))
!=
NULL
)
{
CHECK_OBJ
(
rec
,
LOGLINE
_MAGIC
);
while
((
rec
=
VSTAILQ_FIRST
(
&
tx
->
rec
s
))
!=
NULL
)
{
CHECK_OBJ
(
rec
,
RECORD
_MAGIC
);
rec
->
occupied
=
0
;
rec
->
tag
=
SLT__Bogus
;
rec
->
len
=
0
;
...
...
@@ -107,11 +107,11 @@ DATA_Clear_Tx(tx_t * const tx, txhead_t * const freetx,
nchunk
++
;
}
assert
(
VSTAILQ_EMPTY
(
&
rec
->
chunks
));
VSTAILQ_REMOVE_HEAD
(
&
tx
->
lines
,
line
list
);
VSTAILQ_REMOVE_HEAD
(
&
tx
->
recs
,
rec
list
);
VSTAILQ_INSERT_HEAD
(
freerec
,
rec
,
freelist
);
nrec
++
;
}
assert
(
VSTAILQ_EMPTY
(
&
tx
->
line
s
));
assert
(
VSTAILQ_EMPTY
(
&
tx
->
rec
s
));
VSTAILQ_INSERT_HEAD
(
freetx
,
tx
,
freelist
);
*
nfree_tx
+=
1
;
*
nfree_rec
+=
nrec
;
...
...
@@ -122,10 +122,10 @@ DATA_Clear_Tx(tx_t * const tx, txhead_t * const freetx,
int
DATA_Init
(
void
)
{
int
bufidx
=
0
,
chunks_per_rec
,
line
s_per_tx
=
FMT_Estimate_RecsPerTx
();
int
bufidx
=
0
,
chunks_per_rec
,
rec
s_per_tx
=
FMT_Estimate_RecsPerTx
();
LOG_Log
(
LOG_DEBUG
,
"Estimated %d records per transaction"
,
line
s_per_tx
);
nrecords
=
config
.
max_data
*
line
s_per_tx
;
LOG_Log
(
LOG_DEBUG
,
"Estimated %d records per transaction"
,
rec
s_per_tx
);
nrecords
=
config
.
max_data
*
rec
s_per_tx
;
AN
(
config
.
chunk_size
);
chunks_per_rec
=
(
config
.
max_reclen
+
config
.
chunk_size
-
1
)
/
config
.
chunk_size
;
...
...
@@ -154,21 +154,21 @@ DATA_Init(void)
assert
(
bufidx
==
nchunks
);
LOG_Log
(
LOG_DEBUG
,
"Allocating table for %d records (%d bytes)"
,
nrecords
,
nrecords
*
sizeof
(
logline
_t
));
lines
=
(
logline_t
*
)
calloc
(
nrecords
,
sizeof
(
logline
_t
));
if
(
line
s
==
NULL
)
{
nrecords
*
sizeof
(
rec
_t
));
records
=
(
rec_t
*
)
calloc
(
nrecords
,
sizeof
(
rec
_t
));
if
(
record
s
==
NULL
)
{
free
(
bufptr
);
free
(
chunks
);
return
errno
;
}
VSTAILQ_INIT
(
&
free
line
head
);
VSTAILQ_INIT
(
&
free
rec
head
);
for
(
int
i
=
0
;
i
<
nrecords
;
i
++
)
{
lines
[
i
].
magic
=
LOGLINE
_MAGIC
;
line
s
[
i
].
occupied
=
0
;
line
s
[
i
].
tag
=
SLT__Bogus
;
line
s
[
i
].
len
=
0
;
VSTAILQ_INIT
(
&
line
s
[
i
].
chunks
);
VSTAILQ_INSERT_TAIL
(
&
free
linehead
,
&
line
s
[
i
],
freelist
);
records
[
i
].
magic
=
RECORD
_MAGIC
;
record
s
[
i
].
occupied
=
0
;
record
s
[
i
].
tag
=
SLT__Bogus
;
record
s
[
i
].
len
=
0
;
VSTAILQ_INIT
(
&
record
s
[
i
].
chunks
);
VSTAILQ_INSERT_TAIL
(
&
free
rechead
,
&
record
s
[
i
],
freelist
);
}
LOG_Log
(
LOG_DEBUG
,
"Allocating table for %d transactions (%d bytes)"
,
...
...
@@ -177,7 +177,7 @@ DATA_Init(void)
if
(
txn
==
NULL
)
{
free
(
bufptr
);
free
(
chunks
);
free
(
line
s
);
free
(
record
s
);
return
errno
;
}
VSTAILQ_INIT
(
&
freetxhead
);
...
...
@@ -188,13 +188,13 @@ DATA_Init(void)
txn
[
i
].
pvxid
=
-
1
;
txn
[
i
].
type
=
VSL_t_unknown
;
txn
[
i
].
t
=
0
.;
VSTAILQ_INIT
(
&
txn
[
i
].
line
s
);
VSTAILQ_INIT
(
&
txn
[
i
].
rec
s
);
VSTAILQ_INSERT_TAIL
(
&
freetxhead
,
&
txn
[
i
],
freelist
);
}
tx_occ
=
rec_occ
=
chunk_occ
=
tx_occ_hi
=
rec_occ_hi
=
chunk_occ_hi
=
0
;
global_nfree_tx
=
config
.
max_data
;
global_nfree_
line
=
nrecords
;
global_nfree_
rec
=
nrecords
;
global_nfree_chunk
=
nchunks
;
atexit
(
data_Cleanup
);
...
...
@@ -220,7 +220,7 @@ DATA_Take_Free##type(struct type##head_s *dst) \
}
DATA_Take_Free
(
tx
)
DATA_Take_Free
(
line
)
DATA_Take_Free
(
rec
)
DATA_Take_Free
(
chunk
)
/*
...
...
@@ -238,7 +238,7 @@ DATA_Return_Free##type(struct type##head_s *returned, unsigned nreturned) \
}
DATA_Return_Free
(
tx
)
DATA_Return_Free
(
line
)
DATA_Return_Free
(
rec
)
DATA_Return_Free
(
chunk
)
void
...
...
@@ -253,7 +253,7 @@ DATA_Dump(void)
for
(
int
i
=
0
;
i
<
config
.
max_data
;
i
++
)
{
tx_t
*
tx
;
logline
_t
*
rec
;
rec
_t
*
rec
;
if
(
txn
[
i
].
magic
!=
TX_MAGIC
)
{
LOG_Log
(
LOG_ERR
,
...
...
@@ -273,13 +273,13 @@ DATA_Dump(void)
i
,
tx
->
vxid
,
tx
->
pvxid
,
statename
[
tx
->
occupied
],
C
(
tx
->
type
)
?
'c'
:
B
(
tx
->
type
)
?
'b'
:
'-'
);
VSTAILQ_FOREACH
(
rec
,
&
tx
->
lines
,
line
list
)
{
VSTAILQ_FOREACH
(
rec
,
&
tx
->
recs
,
rec
list
)
{
if
(
rec
==
NULL
)
continue
;
if
(
rec
->
magic
!=
LOGLINE
_MAGIC
)
{
if
(
rec
->
magic
!=
RECORD
_MAGIC
)
{
LOG_Log
(
LOG_ERR
,
"Invalid record at tx %d, magic = 0x%08x, expected 0x%08x"
,
i
,
rec
->
magic
,
LOGLINE
_MAGIC
);
i
,
rec
->
magic
,
RECORD
_MAGIC
);
continue
;
}
VSB_printf
(
data
,
"%s "
,
VSL_tags
[
rec
->
tag
]);
...
...
src/format.c
View file @
d16c8b3f
...
...
@@ -77,9 +77,9 @@ static unsigned includes, include_rx;
static
char
**
incl_arg
=
NULL
;
char
*
get_payload
(
const
logline
_t
*
rec
)
get_payload
(
const
rec
_t
*
rec
)
{
CHECK_OBJ_NOTNULL
(
rec
,
LOGLINE
_MAGIC
);
CHECK_OBJ_NOTNULL
(
rec
,
RECORD
_MAGIC
);
assert
(
OCCUPIED
(
rec
));
if
(
!
rec
->
len
)
...
...
@@ -110,14 +110,14 @@ get_payload(const logline_t *rec)
/*
* Return the *last* record in tx that matches the tag
*/
logline
_t
*
rec
_t
*
get_tag
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
)
{
logline
_t
*
rec
,
*
tagrec
=
NULL
;
rec
_t
*
rec
,
*
tagrec
=
NULL
;
CHECK_OBJ_NOTNULL
(
tx
,
TX_MAGIC
);
VSTAILQ_FOREACH
(
rec
,
&
tx
->
lines
,
line
list
)
{
CHECK_OBJ_NOTNULL
(
rec
,
LOGLINE
_MAGIC
);
VSTAILQ_FOREACH
(
rec
,
&
tx
->
recs
,
rec
list
)
{
CHECK_OBJ_NOTNULL
(
rec
,
RECORD
_MAGIC
);
assert
(
OCCUPIED
(
rec
));
if
(
rec
->
tag
==
tag
)
tagrec
=
rec
;
...
...
@@ -132,14 +132,14 @@ get_tag(const tx_t *tx, enum VSL_tag_e tag)
char
*
get_hdr
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
,
const
char
*
hdr
)
{
logline
_t
*
rec
;
rec
_t
*
rec
;
char
*
hdr_payload
=
NULL
;
CHECK_OBJ_NOTNULL
(
tx
,
TX_MAGIC
);
VSTAILQ_FOREACH
(
rec
,
&
tx
->
lines
,
line
list
)
{
VSTAILQ_FOREACH
(
rec
,
&
tx
->
recs
,
rec
list
)
{
char
*
c
;
CHECK_OBJ_NOTNULL
(
rec
,
LOGLINE
_MAGIC
);
CHECK_OBJ_NOTNULL
(
rec
,
RECORD
_MAGIC
);
assert
(
OCCUPIED
(
rec
));
if
(
rec
->
tag
!=
tag
)
continue
;
...
...
@@ -185,7 +185,7 @@ get_fld(char *str, int n, size_t *len)
}
char
*
get_rec_fld
(
const
logline
_t
*
rec
,
int
n
,
size_t
*
len
)
get_rec_fld
(
const
rec
_t
*
rec
,
int
n
,
size_t
*
len
)
{
return
get_fld
(
get_payload
(
rec
),
n
,
len
);
}
...
...
@@ -194,7 +194,7 @@ static inline void
format_slt
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
,
char
*
hdr
,
int
fld
,
char
**
s
,
size_t
*
len
)
{
logline
_t
*
rec
;
rec
_t
*
rec
;
if
(
hdr
==
NULL
)
{
rec
=
get_tag
(
tx
,
tag
);
...
...
@@ -221,7 +221,7 @@ format_slt(const tx_t *tx, enum VSL_tag_e tag, char *hdr, int fld, char **s,
static
inline
void
format_b
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
,
char
**
s
,
size_t
*
len
)
{
logline
_t
*
rec
=
get_tag
(
tx
,
tag
);
rec
_t
*
rec
=
get_tag
(
tx
,
tag
);
if
(
rec
!=
NULL
)
*
s
=
get_rec_fld
(
rec
,
4
,
len
);
}
...
...
@@ -292,7 +292,7 @@ format_H_backend(const tx_t *tx, const arg_t *args, char **s, size_t *len)
static
inline
void
format_h
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
,
int
fld_nr
,
char
**
s
,
size_t
*
len
)
{
logline
_t
*
rec
=
get_tag
(
tx
,
tag
);
rec
_t
*
rec
=
get_tag
(
tx
,
tag
);
if
(
rec
!=
NULL
)
*
s
=
get_rec_fld
(
rec
,
fld_nr
,
len
);
}
...
...
@@ -317,7 +317,7 @@ format_IO_client(const tx_t *tx, int req_fld, int pipe_fld, char **s,
{
int
field
;
logline
_t
*
rec
=
get_tag
(
tx
,
SLT_ReqAcct
);
rec
_t
*
rec
=
get_tag
(
tx
,
SLT_ReqAcct
);
if
(
rec
!=
NULL
)
field
=
req_fld
;
else
{
...
...
@@ -331,7 +331,7 @@ format_IO_client(const tx_t *tx, int req_fld, int pipe_fld, char **s,
static
inline
void
format_IO_backend
(
const
tx_t
*
tx
,
int
field
,
char
**
s
,
size_t
*
len
)
{
logline
_t
*
rec
=
get_tag
(
tx
,
SLT_BereqAcct
);
rec
_t
*
rec
=
get_tag
(
tx
,
SLT_BereqAcct
);
if
(
rec
!=
NULL
)
*
s
=
get_rec_fld
(
rec
,
field
,
len
);
}
...
...
@@ -382,7 +382,7 @@ static inline void
format_q
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
,
char
**
s
,
size_t
*
len
)
{
char
*
qs
=
NULL
;
logline
_t
*
rec
=
get_tag
(
tx
,
tag
);
rec
_t
*
rec
=
get_tag
(
tx
,
tag
);
if
(
rec
==
NULL
)
return
;
char
*
p
=
get_payload
(
rec
);
...
...
@@ -416,7 +416,7 @@ format_r(const tx_t *tx, enum VSL_tag_e mtag, enum VSL_tag_e htag,
char
*
str
;
VSB_clear
(
scratch
);
logline
_t
*
rec
=
get_tag
(
tx
,
mtag
);
rec
_t
*
rec
=
get_tag
(
tx
,
mtag
);
if
(
rec
!=
NULL
)
VSB_cpy
(
scratch
,
get_payload
(
rec
));
else
...
...
@@ -538,7 +538,7 @@ format_U(const tx_t *tx, enum VSL_tag_e tag, char **s, size_t *len)
{
char
*
qs
=
NULL
;
logline
_t
*
rec
=
get_tag
(
tx
,
tag
);
rec
_t
*
rec
=
get_tag
(
tx
,
tag
);
if
(
rec
==
NULL
)
return
;
*
s
=
get_payload
(
rec
);
...
...
@@ -669,11 +669,11 @@ format_Xttfb_backend(const tx_t *tx, const arg_t *args, char **s, size_t *len)
void
format_VCL_disp
(
const
tx_t
*
tx
,
const
arg_t
*
args
,
char
**
s
,
size_t
*
len
)
{
logline
_t
*
rec
;
rec
_t
*
rec
;
*
s
=
dash
;
VSTAILQ_FOREACH
(
rec
,
&
tx
->
lines
,
line
list
)
{
CHECK_OBJ_NOTNULL
(
rec
,
LOGLINE
_MAGIC
);
VSTAILQ_FOREACH
(
rec
,
&
tx
->
recs
,
rec
list
)
{
CHECK_OBJ_NOTNULL
(
rec
,
RECORD
_MAGIC
);
if
(
rec
->
tag
!=
SLT_VCL_call
&&
rec
->
tag
!=
SLT_VCL_return
)
continue
;
char
*
data
=
get_payload
(
rec
);
...
...
src/format.h
View file @
d16c8b3f
...
...
@@ -40,11 +40,11 @@ typedef struct arg_t {
typedef
void
formatter_f
(
const
tx_t
*
tx
,
const
arg_t
*
args
,
char
**
s
,
size_t
*
len
);
char
*
get_payload
(
const
logline
_t
*
rec
);
logline
_t
*
get_tag
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
);
char
*
get_payload
(
const
rec
_t
*
rec
);
rec
_t
*
get_tag
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
);
char
*
get_hdr
(
const
tx_t
*
tx
,
enum
VSL_tag_e
tag
,
const
char
*
hdr
);
char
*
get_fld
(
char
*
str
,
int
n
,
size_t
*
len
);
char
*
get_rec_fld
(
const
logline
_t
*
rec
,
int
n
,
size_t
*
len
);
char
*
get_rec_fld
(
const
rec
_t
*
rec
,
int
n
,
size_t
*
len
);
formatter_f
format_b_client
;
formatter_f
format_b_backend
;
...
...
src/monitor.c
View file @
d16c8b3f
...
...
@@ -52,7 +52,7 @@ log_output(void)
"global_free_chunk=%u"
,
config
.
max_data
,
nrecords
,
nchunks
,
tx_occ
,
rec_occ
,
chunk_occ
,
tx_occ_hi
,
rec_occ_hi
,
chunk_occ_hi
,
global_nfree_tx
,
global_nfree_
line
,
global_nfree_chunk
);
global_nfree_
rec
,
global_nfree_chunk
);
RDR_Stats
();
...
...
src/test/regress.sh
View file @
d16c8b3f
...
...
@@ -23,7 +23,7 @@ fi
# predictable from one run to the next.
CKSUM
=
$(
sed
-e
's/\(initializing\) \(.*\)/\1/'
$LOG
| egrep
-v
'Writer: returned|Reader: took|^DEBUG: Allocating'
|
cksum
)
if
[
"
$CKSUM
"
!=
'
1056349365 69263269
'
]
;
then
if
[
"
$CKSUM
"
!=
'
3182678025 71888971
'
]
;
then
echo
"ERROR: Regression test varnishevent log incorrect cksum:
$CKSUM
"
exit
1
fi
...
...
src/test/test_data.c
View file @
d16c8b3f
...
...
@@ -38,7 +38,7 @@
int
tests_run
=
0
;
static
txhead_t
local_freetx
=
VSTAILQ_HEAD_INITIALIZER
(
local_freetx
);
static
linehead_t
local_freeline
=
VSTAILQ_HEAD_INITIALIZER
(
local_freeline
);
static
rechead_t
local_freerec
=
VSTAILQ_HEAD_INITIALIZER
(
local_freerec
);
static
chunkhead_t
local_freechunk
=
VSTAILQ_HEAD_INITIALIZER
(
local_freechunk
);
/* So that we don't have to link monitor.o, and hence varnishevent.o */
...
...
@@ -74,22 +74,22 @@ static char
MASSERT
(
txn
[
i
].
pvxid
==
-
1
);
MASSERT
(
txn
[
i
].
type
==
VSL_t_unknown
);
MAZ
(
txn
[
i
].
t
);
MASSERT
(
VSTAILQ_EMPTY
(
&
txn
[
i
].
line
s
));
MASSERT
(
VSTAILQ_EMPTY
(
&
txn
[
i
].
rec
s
));
if
(
VSTAILQ_NEXT
(
&
txn
[
i
],
freelist
)
!=
NULL
)
tx_free
++
;
}
MASSERT
(
global_nfree_tx
==
config
.
max_data
);
for
(
int
i
=
0
;
i
<
nrecords
;
i
++
)
{
MCHECK_OBJ
(
&
lines
[
i
],
LOGLINE
_MAGIC
);
MASSERT
(
!
OCCUPIED
(
&
line
s
[
i
]));
MASSERT
(
line
s
[
i
].
tag
==
SLT__Bogus
);
MASSERT
(
line
s
[
i
].
len
==
0
);
MASSERT
(
VSTAILQ_EMPTY
(
&
line
s
[
i
].
chunks
));
if
(
VSTAILQ_NEXT
(
&
line
s
[
i
],
freelist
)
!=
NULL
)
MCHECK_OBJ
(
&
records
[
i
],
RECORD
_MAGIC
);
MASSERT
(
!
OCCUPIED
(
&
record
s
[
i
]));
MASSERT
(
record
s
[
i
].
tag
==
SLT__Bogus
);
MASSERT
(
record
s
[
i
].
len
==
0
);
MASSERT
(
VSTAILQ_EMPTY
(
&
record
s
[
i
].
chunks
));
if
(
VSTAILQ_NEXT
(
&
record
s
[
i
],
freelist
)
!=
NULL
)
rec_free
++
;
}
MASSERT
(
global_nfree_
line
==
nrecords
);
MASSERT
(
global_nfree_
rec
==
nrecords
);
for
(
int
i
=
0
;
i
<
nchunks
;
i
++
)
{
MCHECK_OBJ
(
&
chunks
[
i
],
CHUNK_MAGIC
);
...
...
@@ -133,17 +133,17 @@ static const char
*
test_data_take_rec
(
void
)
{
unsigned
nfree
,
cfree
=
0
;
logline
_t
*
rec
;
rec
_t
*
rec
;
printf
(
"... testing record freelist take
\n
"
);
nfree
=
DATA_Take_Free
line
(
&
local_freeline
);
nfree
=
DATA_Take_Free
rec
(
&
local_freerec
);
MAZ
(
global_nfree_
line
);
MAZ
(
global_nfree_
rec
);
MASSERT
(
nfree
==
nrecords
);
MASSERT
(
!
VSTAILQ_EMPTY
(
&
local_free
line
));
VSTAILQ_FOREACH
(
rec
,
&
local_free
line
,
freelist
)
{
MCHECK_OBJ_NOTNULL
(
rec
,
LOGLINE
_MAGIC
);
MASSERT
(
!
VSTAILQ_EMPTY
(
&
local_free
rec
));
VSTAILQ_FOREACH
(
rec
,
&
local_free
rec
,
freelist
)
{
MCHECK_OBJ_NOTNULL
(
rec
,
RECORD
_MAGIC
);
cfree
++
;
}
MASSERT
(
nfree
==
cfree
);
...
...
@@ -191,10 +191,10 @@ static const char
{
printf
(
"... testing record freelist return
\n
"
);
DATA_Return_Free
line
(
&
local_freeline
,
nrecords
);
DATA_Return_Free
rec
(
&
local_freerec
,
nrecords
);
MASSERT
(
VSTAILQ_EMPTY
(
&
local_free
line
));
MASSERT
(
global_nfree_
line
==
nrecords
);
MASSERT
(
VSTAILQ_EMPTY
(
&
local_free
rec
));
MASSERT
(
global_nfree_
rec
==
nrecords
);
return
NULL
;
}
...
...
@@ -262,7 +262,7 @@ static const char
#define NRECS 10
#define CHUNKS_PER_REC 3
tx_t
tx
;
logline
_t
r
[
NRECS
],
*
rec
;
rec
_t
r
[
NRECS
],
*
rec
;
chunk_t
c
[
NRECS
*
CHUNKS_PER_REC
],
*
chunk
;
int
n
=
0
;
unsigned
nfree_tx
=
4711
,
nfree_recs
=
815
,
nfree_chunks
=
1147
;
...
...
@@ -270,14 +270,14 @@ static const char
printf
(
"... testing transaction clear
\n
"
);
VSTAILQ_INIT
(
&
local_freetx
);
VSTAILQ_INIT
(
&
local_free
line
);
VSTAILQ_INIT
(
&
local_free
rec
);
VSTAILQ_INIT
(
&
local_freechunk
);
tx
.
magic
=
TX_MAGIC
;
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INIT
(
&
tx
.
rec
s
);
for
(
int
i
=
0
;
i
<
NRECS
;
i
++
)
{
VSTAILQ_INSERT_TAIL
(
&
tx
.
lines
,
&
r
[
i
],
line
list
);
r
[
i
].
magic
=
LOGLINE
_MAGIC
;
VSTAILQ_INSERT_TAIL
(
&
tx
.
recs
,
&
r
[
i
],
rec
list
);
r
[
i
].
magic
=
RECORD
_MAGIC
;
VSTAILQ_INIT
(
&
r
[
i
].
chunks
);
for
(
int
j
=
0
;
j
<
CHUNKS_PER_REC
;
j
++
)
{
chunk
=
&
c
[
i
*
CHUNKS_PER_REC
+
j
];
...
...
@@ -287,7 +287,7 @@ static const char
}
}
DATA_Clear_Tx
(
&
tx
,
&
local_freetx
,
&
local_free
line
,
&
local_freechunk
,
DATA_Clear_Tx
(
&
tx
,
&
local_freetx
,
&
local_free
rec
,
&
local_freechunk
,
&
nfree_tx
,
&
nfree_recs
,
&
nfree_chunks
);
MASSERT
(
nfree_tx
==
4712
);
...
...
@@ -300,19 +300,19 @@ static const char
MASSERT
(
tx
.
pvxid
==
-
1
);
MASSERT
(
tx
.
type
==
VSL_t_unknown
);
MAZ
(
tx
.
t
);
MASSERT
(
VSTAILQ_EMPTY
(
&
tx
.
line
s
));
MASSERT
(
VSTAILQ_EMPTY
(
&
tx
.
rec
s
));
MASSERT
(
!
VSTAILQ_EMPTY
(
&
local_freetx
));
MASSERT
(
VSTAILQ_FIRST
(
&
local_freetx
)
==
&
tx
);
MAZ
(
VSTAILQ_NEXT
(
&
tx
,
freelist
));
MASSERT
(
!
VSTAILQ_EMPTY
(
&
local_free
line
));
VSTAILQ_FOREACH
(
rec
,
&
local_free
line
,
freelist
)
{
MCHECK_OBJ_NOTNULL
(
rec
,
LOGLINE
_MAGIC
);
MASSERT
(
!
VSTAILQ_EMPTY
(
&
local_free
rec
));
VSTAILQ_FOREACH
(
rec
,
&
local_free
rec
,
freelist
)
{
MCHECK_OBJ_NOTNULL
(
rec
,
RECORD
_MAGIC
);
MASSERT
(
!
OCCUPIED
(
rec
));
MASSERT
(
rec
->
tag
==
SLT__Bogus
);
MAZ
(
rec
->
len
);
MASSERT
(
VSTAILQ_EMPTY
(
&
tx
.
line
s
));
MASSERT
(
VSTAILQ_EMPTY
(
&
tx
.
rec
s
));
n
++
;
}
MASSERT
(
n
==
NRECS
);
...
...
src/test/test_format.c
View file @
d16c8b3f
...
...
@@ -44,10 +44,10 @@
int
tests_run
=
0
;
static
void
add_rec_chunk
(
tx_t
*
tx
,
logline
_t
*
rec
,
chunk_t
*
chunk
)
add_rec_chunk
(
tx_t
*
tx
,
rec
_t
*
rec
,
chunk_t
*
chunk
)
{
VSTAILQ_INSERT_TAIL
(
&
tx
->
lines
,
rec
,
line
list
);
rec
->
magic
=
LOGLINE
_MAGIC
;
VSTAILQ_INSERT_TAIL
(
&
tx
->
recs
,
rec
,
rec
list
);
rec
->
magic
=
RECORD
_MAGIC
;
rec
->
occupied
=
1
;
VSTAILQ_INIT
(
&
rec
->
chunks
);
VSTAILQ_INSERT_TAIL
(
&
rec
->
chunks
,
chunk
,
chunklist
);
...
...
@@ -56,17 +56,17 @@ add_rec_chunk(tx_t *tx, logline_t *rec, chunk_t *chunk)
}
static
void
init_tx_rec_chunk_arg
(
tx_t
*
tx
,
logline
_t
*
rec
,
chunk_t
*
chunk
,
arg_t
*
args
)
init_tx_rec_chunk_arg
(
tx_t
*
tx
,
rec
_t
*
rec
,
chunk_t
*
chunk
,
arg_t
*
args
)
{
tx
->
magic
=
TX_MAGIC
;
VSTAILQ_INIT
(
&
tx
->
line
s
);
VSTAILQ_INIT
(
&
tx
->
rec
s
);
add_rec_chunk
(
tx
,
rec
,
chunk
);
args
->
name
=
NULL
;
args
->
tag
=
SLT__Bogus
;
}
static
void
set_record_data
(
logline
_t
*
rec
,
chunk_t
*
chunk
,
const
char
*
data
,
set_record_data
(
rec
_t
*
rec
,
chunk_t
*
chunk
,
const
char
*
data
,
enum
VSL_tag_e
tag
)
{
rec
->
len
=
strlen
(
data
)
+
1
;
...
...
@@ -77,7 +77,7 @@ set_record_data(logline_t *rec, chunk_t *chunk, const char *data,
}
static
void
add_record_data
(
tx_t
*
tx
,
logline
_t
*
rec
,
chunk_t
*
chunk
,
const
char
*
data
,
add_record_data
(
tx_t
*
tx
,
rec
_t
*
rec
,
chunk_t
*
chunk
,
const
char
*
data
,
enum
VSL_tag_e
tag
)
{
add_rec_chunk
(
tx
,
rec
,
chunk
);
...
...
@@ -103,14 +103,14 @@ static const char
static
const
char
*
test_format_get_payload
(
void
)
{
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
char
*
p
;
printf
(
"... testing get_payload()
\n
"
);
memset
(
&
rec
,
0
,
sizeof
(
logline
_t
));
rec
.
magic
=
LOGLINE
_MAGIC
;
memset
(
&
rec
,
0
,
sizeof
(
rec
_t
));
rec
.
magic
=
RECORD
_MAGIC
;
rec
.
occupied
=
1
;
VSTAILQ_INIT
(
&
rec
.
chunks
);
memset
(
&
chunk
,
0
,
sizeof
(
chunk_t
));
...
...
@@ -173,18 +173,18 @@ static const char
*
test_format_get_tag
(
void
)
{
tx_t
tx
;
logline
_t
recs
[
NRECORDS
],
*
rec
;
rec
_t
recs
[
NRECORDS
],
*
rec
;
printf
(
"... testing get_tag()
\n
"
);
tx
.
magic
=
TX_MAGIC
;
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INIT
(
&
tx
.
rec
s
);
for
(
int
i
=
0
;
i
<
NRECORDS
;
i
++
)
{
memset
(
&
recs
[
i
],
0
,
sizeof
(
logline
_t
));
recs
[
i
].
magic
=
LOGLINE
_MAGIC
;
memset
(
&
recs
[
i
],
0
,
sizeof
(
rec
_t
));
recs
[
i
].
magic
=
RECORD
_MAGIC
;
recs
[
i
].
tag
=
SLT_ReqHeader
;
recs
[
i
].
occupied
=
1
;
VSTAILQ_INSERT_TAIL
(
&
tx
.
lines
,
&
recs
[
i
],
line
list
);
VSTAILQ_INSERT_TAIL
(
&
tx
.
recs
,
&
recs
[
i
],
rec
list
);
}
recs
[
NRECORDS
/
2
].
tag
=
SLT_RespHeader
;
recs
[
NRECORDS
-
1
].
tag
=
SLT_RespHeader
;
...
...
@@ -198,7 +198,7 @@ static const char
MAZ
(
rec
);
/* Empty line list */
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INIT
(
&
tx
.
rec
s
);
rec
=
get_tag
(
&
tx
,
SLT_ReqHeader
);
MAZ
(
rec
);
...
...
@@ -209,21 +209,21 @@ static const char
*
test_format_get_hdr
(
void
)
{
tx_t
tx
;
logline
_t
recs
[
NRECORDS
];
rec
_t
recs
[
NRECORDS
];
chunk_t
c
[
NRECORDS
];
char
*
hdr
;
printf
(
"... testing get_hdr()
\n
"
);
tx
.
magic
=
TX_MAGIC
;
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INIT
(
&
tx
.
rec
s
);
for
(
int
i
=
0
;
i
<
NRECORDS
;
i
++
)
{
memset
(
&
recs
[
i
],
0
,
sizeof
(
logline
_t
));
recs
[
i
].
magic
=
LOGLINE
_MAGIC
;
memset
(
&
recs
[
i
],
0
,
sizeof
(
rec
_t
));
recs
[
i
].
magic
=
RECORD
_MAGIC
;
recs
[
i
].
tag
=
SLT_ReqHeader
;
recs
[
i
].
len
=
strlen
(
"Bar: baz"
);
recs
[
i
].
occupied
=
1
;
VSTAILQ_INSERT_TAIL
(
&
tx
.
lines
,
&
recs
[
i
],
line
list
);
VSTAILQ_INSERT_TAIL
(
&
tx
.
recs
,
&
recs
[
i
],
rec
list
);
VSTAILQ_INIT
(
&
recs
[
i
].
chunks
);
memset
(
&
c
[
i
],
0
,
sizeof
(
chunk_t
));
c
[
i
].
magic
=
CHUNK_MAGIC
;
...
...
@@ -259,7 +259,7 @@ static const char
MAZ
(
hdr
);
/* Empty line list */
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INIT
(
&
tx
.
rec
s
);
hdr
=
get_hdr
(
&
tx
,
SLT_ReqHeader
,
"Foo"
);
MAZ
(
hdr
);
...
...
@@ -312,17 +312,17 @@ static const char
static
const
char
*
test_format_get_rec_fld
(
void
)
{
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
char
*
fld
;
size_t
len
;
printf
(
"... testing get_rec_fld()
\n
"
);
memset
(
&
rec
,
0
,
sizeof
(
logline
_t
));
memset
(
&
rec
,
0
,
sizeof
(
rec
_t
));
memset
(
&
chunk
,
0
,
sizeof
(
chunk_t
));
rec
.
magic
=
LOGLINE
_MAGIC
;
rec
.
magic
=
RECORD
_MAGIC
;
VSTAILQ_INIT
(
&
rec
.
chunks
);
rec
.
occupied
=
1
;
chunk
.
magic
=
CHUNK_MAGIC
;
...
...
@@ -372,7 +372,7 @@ static const char
*
test_format_H
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -402,7 +402,7 @@ static const char
*
test_format_b
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -431,7 +431,7 @@ static const char
*
test_format_D
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -461,7 +461,7 @@ static const char
*
test_format_h
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -491,7 +491,7 @@ static const char
*
test_format_I
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -525,7 +525,7 @@ static const char
*
test_format_m
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -554,7 +554,7 @@ static const char
*
test_format_O
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -587,7 +587,7 @@ static const char
*
test_format_q
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -629,7 +629,7 @@ static const char
*
test_format_r
(
void
)
{
tx_t
tx
;
logline
_t
rec_method
,
rec_host
,
rec_url
,
rec_proto
;
rec
_t
rec_method
,
rec_host
,
rec_url
,
rec_proto
;
chunk_t
chunk_method
,
chunk_host
,
chunk_url
,
chunk_proto
;
arg_t
args
;
char
*
str
;
...
...
@@ -758,7 +758,7 @@ static const char
*
test_format_s
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -787,7 +787,7 @@ static const char
*
test_format_t
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
=
NULL
,
strftime_s
[
BUFSIZ
],
fmt
[]
=
"[%d/%b/%Y:%T %z]"
;
...
...
@@ -818,7 +818,7 @@ static const char
*
test_format_T
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -846,7 +846,7 @@ static const char
*
test_format_U
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -884,7 +884,7 @@ static const char
*
test_format_u
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -950,7 +950,7 @@ static const char
*
test_format_Xi
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
,
hdr
[]
=
"Foo"
;
...
...
@@ -979,7 +979,7 @@ static const char
*
test_format_Xo
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
,
hdr
[]
=
"Baz"
;
...
...
@@ -1008,7 +1008,7 @@ static const char
*
test_format_Xt
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
=
NULL
,
strftime_s
[
BUFSIZ
];
...
...
@@ -1064,7 +1064,7 @@ static const char
*
test_format_Xttfb
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
;
...
...
@@ -1094,7 +1094,7 @@ static const char
*
test_format_VCL_disp
(
void
)
{
tx_t
tx
;
logline
_t
*
recs
[
NRECORDS
];
rec
_t
*
recs
[
NRECORDS
];
chunk_t
*
c
[
NRECORDS
];
arg_t
args
;
char
*
str
,
hitmiss
[]
=
"m"
,
handling
[]
=
"n"
;
...
...
@@ -1103,9 +1103,9 @@ static const char
printf
(
"... testing format_VCL_disp()
\n
"
);
tx
.
magic
=
TX_MAGIC
;
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INIT
(
&
tx
.
rec
s
);
for
(
int
i
=
0
;
i
<
NRECORDS
;
i
++
)
{
recs
[
i
]
=
(
logline_t
*
)
calloc
(
1
,
sizeof
(
logline
_t
));
recs
[
i
]
=
(
rec_t
*
)
calloc
(
1
,
sizeof
(
rec
_t
));
MAN
(
recs
[
i
]);
c
[
i
]
=
(
chunk_t
*
)
calloc
(
1
,
sizeof
(
chunk_t
));
MAN
(
c
[
i
]);
...
...
@@ -1216,7 +1216,7 @@ static const char
*
test_format_VCL_Log
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
,
hdr
[]
=
"foo"
;
...
...
@@ -1254,7 +1254,7 @@ static const char
*
test_format_SLT
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
arg_t
args
;
char
*
str
,
*
substr
;
...
...
@@ -1391,7 +1391,7 @@ static const char
char
err
[
BUFSIZ
],
**
i_args
,
*
i_arg
,
strftime_s
[
BUFSIZ
];
int
status
,
recs_per_tx
;
tx_t
tx
;
logline
_t
*
recs
[
NRECS
];
rec
_t
*
recs
[
NRECS
];
chunk_t
*
c
[
NRECS
];
struct
vsb
*
os
;
struct
tm
*
tm
;
...
...
@@ -1410,9 +1410,9 @@ static const char
tx
.
occupied
=
1
;
tx
.
vxid
=
4711
;
tx
.
pvxid
=
1147
;
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INIT
(
&
tx
.
rec
s
);
for
(
int
i
=
0
;
i
<
NRECS
;
i
++
)
{
recs
[
i
]
=
(
logline_t
*
)
calloc
(
1
,
sizeof
(
logline
_t
));
recs
[
i
]
=
(
rec_t
*
)
calloc
(
1
,
sizeof
(
rec
_t
));
MAN
(
recs
[
i
]);
c
[
i
]
=
(
chunk_t
*
)
calloc
(
1
,
sizeof
(
chunk_t
));
MAN
(
c
[
i
]);
...
...
src/test/test_writer.c
View file @
d16c8b3f
...
...
@@ -52,7 +52,7 @@ static char
*
test_timeout
(
void
)
{
tx_t
tx
;
logline
_t
rec
;
rec
_t
rec
;
chunk_t
chunk
;
printf
(
"... testing write timeouts
\n
"
);
...
...
@@ -74,9 +74,9 @@ static char
/* XXX: common helper functions with test_format */
tx
.
magic
=
TX_MAGIC
;
VSTAILQ_INIT
(
&
tx
.
line
s
);
VSTAILQ_INSERT_TAIL
(
&
tx
.
lines
,
&
rec
,
line
list
);
rec
.
magic
=
LOGLINE
_MAGIC
;
VSTAILQ_INIT
(
&
tx
.
rec
s
);
VSTAILQ_INSERT_TAIL
(
&
tx
.
recs
,
&
rec
,
rec
list
);
rec
.
magic
=
RECORD
_MAGIC
;
VSTAILQ_INIT
(
&
rec
.
chunks
);
VSTAILQ_INSERT_TAIL
(
&
rec
.
chunks
,
&
chunk
,
chunklist
);
chunk
.
magic
=
CHUNK_MAGIC
;
...
...
src/varnishevent.c
View file @
d16c8b3f
...
...
@@ -117,7 +117,7 @@ static chunkhead_t rdr_chunk_freelist
=
VSTAILQ_HEAD_INITIALIZER
(
rdr_chunk_freelist
);
static
unsigned
rdr_chunk_free
=
0
;
static
line
head_t
rdr_rec_freelist
=
VSTAILQ_HEAD_INITIALIZER
(
rdr_rec_freelist
);
static
rec
head_t
rdr_rec_freelist
=
VSTAILQ_HEAD_INITIALIZER
(
rdr_rec_freelist
);
static
unsigned
rdr_rec_free
=
0
;
static
txhead_t
rdr_tx_freelist
=
VSTAILQ_HEAD_INITIALIZER
(
rdr_tx_freelist
);
...
...
@@ -177,14 +177,14 @@ static inline chunk_t
return
(
chunk
);
}
static
inline
logline
_t
static
inline
rec
_t
*
take_rec
(
void
)
{
logline
_t
*
rec
;
rec
_t
*
rec
;
if
(
VSTAILQ_EMPTY
(
&
rdr_rec_freelist
))
{
signal_spscq_ready
();
rdr_rec_free
=
DATA_Take_Free
line
(
&
rdr_rec_freelist
);
rdr_rec_free
=
DATA_Take_Free
rec
(
&
rdr_rec_freelist
);
if
(
VSTAILQ_EMPTY
(
&
rdr_rec_freelist
))
{
rec_exhausted
=
1
;
return
NULL
;
...
...
@@ -227,7 +227,7 @@ static inline void
take_free
(
void
)
{
rdr_tx_free
+=
DATA_Take_Freetx
(
&
rdr_tx_freelist
);
rdr_rec_free
+=
DATA_Take_Free
line
(
&
rdr_rec_freelist
);
rdr_rec_free
+=
DATA_Take_Free
rec
(
&
rdr_rec_freelist
);
rdr_chunk_free
+=
DATA_Take_Freechunk
(
&
rdr_chunk_freelist
);
}
...
...
@@ -270,7 +270,7 @@ event(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
}
CHECK_OBJ_NOTNULL
(
tx
,
TX_MAGIC
);
assert
(
!
OCCUPIED
(
tx
));
assert
(
VSTAILQ_EMPTY
(
&
tx
->
line
s
));
assert
(
VSTAILQ_EMPTY
(
&
tx
->
rec
s
));
tx
->
type
=
t
->
type
;
tx
->
vxid
=
t
->
vxid
;
tx
->
pvxid
=
t
->
vxid_parent
;
...
...
@@ -279,7 +279,7 @@ event(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
while
((
status
=
VSL_Next
(
t
->
c
))
>
0
)
{
int
len
,
n
,
nchunk
;
logline
_t
*
rec
;
rec
_t
*
rec
;
chunk_t
*
chunk
;
const
char
*
p
;
...
...
@@ -288,9 +288,9 @@ event(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
len
=
VSL_LEN
(
t
->
c
->
rec
.
ptr
);
if
(
debug
)
LOG_Log
(
LOG_DEBUG
,
"
Line: [%u %s %.*s]"
,
VSL_ID
(
t
->
c
->
rec
.
ptr
)
,
VSL_
tags
[
VSL_TAG
(
t
->
c
->
rec
.
ptr
)],
len
,
VSL_CDATA
(
t
->
c
->
rec
.
ptr
));
LOG_Log
(
LOG_DEBUG
,
"
Record: [%u %s %.*s]"
,
VSL_
ID
(
t
->
c
->
rec
.
ptr
),
VSL_tags
[
VSL_TAG
(
t
->
c
->
rec
.
ptr
)]
,
len
,
VSL_CDATA
(
t
->
c
->
rec
.
ptr
));
rec
=
take_rec
();
if
(
rec
==
NULL
)
{
...
...
@@ -301,7 +301,7 @@ event(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
VSL_CDATA
(
t
->
c
->
rec
.
ptr
));
continue
;
}
CHECK_OBJ_NOTNULL
(
rec
,
LOGLINE
_MAGIC
);
CHECK_OBJ_NOTNULL
(
rec
,
RECORD
_MAGIC
);
assert
(
!
OCCUPIED
(
rec
));
assert
(
VSTAILQ_EMPTY
(
&
rec
->
chunks
));
...
...
@@ -343,7 +343,7 @@ event(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
total_chunks
++
;
}
rec
->
occupied
=
1
;
VSTAILQ_INSERT_TAIL
(
&
tx
->
lines
,
rec
,
line
list
);
VSTAILQ_INSERT_TAIL
(
&
tx
->
recs
,
rec
,
rec
list
);
nrec
++
;
}
...
...
@@ -763,7 +763,7 @@ main(int argc, char *argv[])
rdr_tx_free
=
DATA_Take_Freetx
(
&
rdr_tx_freelist
);
assert
(
!
VSTAILQ_EMPTY
(
&
rdr_tx_freelist
));
assert
(
rdr_tx_free
==
config
.
max_data
);
rdr_rec_free
=
DATA_Take_Free
line
(
&
rdr_rec_freelist
);
rdr_rec_free
=
DATA_Take_Free
rec
(
&
rdr_rec_freelist
);
assert
(
!
VSTAILQ_EMPTY
(
&
rdr_rec_freelist
));
rdr_chunk_free
=
DATA_Take_Freechunk
(
&
rdr_chunk_freelist
);
assert
(
!
VSTAILQ_EMPTY
(
&
rdr_chunk_freelist
));
...
...
src/varnishevent.h
View file @
d16c8b3f
...
...
@@ -85,28 +85,28 @@ typedef VSTAILQ_HEAD(chunkhead_s, chunk_t) chunkhead_t;
chunk_t
*
chunks
;
unsigned
nchunks
;
typedef
struct
logline
_t
{
typedef
struct
rec
_t
{
unsigned
magic
;
#define
LOGLINE
_MAGIC 0xf427a374
#define
RECORD
_MAGIC 0xf427a374
unsigned
len
;
chunkhead_t
chunks
;
VSTAILQ_ENTRY
(
logline
_t
)
freelist
;
VSTAILQ_ENTRY
(
logline_t
)
line
list
;
VSTAILQ_ENTRY
(
rec
_t
)
freelist
;
VSTAILQ_ENTRY
(
rec_t
)
rec
list
;
enum
VSL_tag_e
tag
;
unsigned
int
occupied
:
1
;
}
logline
_t
;
}
rec
_t
;
logline_t
*
line
s
;
rec_t
*
record
s
;
unsigned
nrecords
;
typedef
VSTAILQ_HEAD
(
linehead_s
,
logline_t
)
line
head_t
;
typedef
VSTAILQ_HEAD
(
rechead_s
,
rec_t
)
rec
head_t
;
typedef
struct
tx_t
{
unsigned
magic
;
#define TX_MAGIC 0xff463e42
int32_t
vxid
;
int32_t
pvxid
;
linehead_t
line
s
;
rechead_t
rec
s
;
VSTAILQ_ENTRY
(
tx_t
)
freelist
;
VSTAILQ_ENTRY
(
tx_t
)
spscq
;
double
t
;
...
...
@@ -121,7 +121,7 @@ typedef VSTAILQ_HEAD(txhead_s, tx_t) txhead_t;
#define OCCUPIED(p) ((p)->occupied == 1)
unsigned
tx_occ
,
rec_occ
,
chunk_occ
,
tx_occ_hi
,
rec_occ_hi
,
chunk_occ_hi
,
global_nfree_tx
,
global_nfree_
line
,
global_nfree_chunk
;
global_nfree_tx
,
global_nfree_
rec
,
global_nfree_chunk
;
/* Writer (consumer) waits for this condition when the SPSC queue is empty.
Reader (producer) signals the condition after enqueue. */
...
...
@@ -208,15 +208,15 @@ int LOG_Open(const char *progname);
/* data.c */
int
DATA_Init
(
void
);
void
DATA_Clear_Tx
(
tx_t
*
const
tx
,
txhead_t
*
const
freetx
,
line
head_t
*
const
freerec
,
chunkhead_t
*
const
freechunk
,
rec
head_t
*
const
freerec
,
chunkhead_t
*
const
freechunk
,
unsigned
*
restrict
const
nfree_tx
,
unsigned
*
restrict
const
nfree_rec
,
unsigned
*
restrict
const
nfree_chunk
);
unsigned
DATA_Take_Freetx
(
struct
txhead_s
*
dst
);
unsigned
DATA_Take_Free
line
(
struct
line
head_s
*
dst
);
unsigned
DATA_Take_Free
rec
(
struct
rec
head_s
*
dst
);
unsigned
DATA_Take_Freechunk
(
struct
chunkhead_s
*
dst
);
void
DATA_Return_Freetx
(
struct
txhead_s
*
returned
,
unsigned
nreturned
);
void
DATA_Return_Free
line
(
struct
line
head_s
*
returned
,
unsigned
nreturned
);
void
DATA_Return_Free
rec
(
struct
rec
head_s
*
returned
,
unsigned
nreturned
);
void
DATA_Return_Freechunk
(
struct
chunkhead_s
*
returned
,
unsigned
nreturned
);
void
DATA_Dump
(
void
);
...
...
@@ -241,7 +241,7 @@ void SPSCQ_Shutdown(void);
typedef
enum
{
/* Transaction read */
STATS_DONE
,
/*
Log line
written */
/*
Transaction
written */
STATS_WRITTEN
,
}
stats_update_t
;
...
...
src/writer.c
View file @
d16c8b3f
...
...
@@ -68,7 +68,7 @@ static const char* statename[WRT_STATE_E_LIMIT] = {
/* Single writer thread, consumer for the SPSC queue. */
static
pthread_t
writer
;
line
head_t
wrt_freerecs
;
rec
head_t
wrt_freerecs
;
chunkhead_t
wrt_freechunks
;
static
unsigned
wrt_nfree_tx
,
wrt_nfree_recs
,
wrt_nfree_chunks
;
...
...
@@ -147,7 +147,7 @@ wrt_return_freelist(void)
assert
(
VSTAILQ_EMPTY
(
&
wrt_freetx
));
}
if
(
wrt_nfree_recs
>
0
)
{
DATA_Return_Free
line
(
&
wrt_freerecs
,
wrt_nfree_recs
);
DATA_Return_Free
rec
(
&
wrt_freerecs
,
wrt_nfree_recs
);
LOG_Log
(
LOG_DEBUG
,
"Writer: returned %u records to free list"
,
wrt_nfree_recs
);
wrt_nfree_recs
=
0
;
...
...
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