exporting the same field (path) multiple times results
in duplicate column names, which are rejected by sqlite
or DBD::xyz.
This change introduces a "colname" field for providing
an alternative column name to prevent colliding names.
Change-Id: I904862651c1a24c4cdc6c643da6f9156e15ffbc6
(cherry picked from commit 134aeff964)
This reverts commit df98b0a7c3.
This is not needed anymore, now that we use a function to fetch the
correct version for the application.
Change-Id: Ie56ba6dc01b6a75f9ac21382879891727881ccc1
(cherry picked from commit a82fb8c948)
The variable from the main space gets declared too late when we want to
initialize the variable in the module. Instead switch to use a function
that gets called on demand, which will have the available value at that
time. This removes the need to declare $VERSION in a BEGIN section, as
that is error-prone and easy to forget for new code.
Change-Id: I613698169dddd6d7ccf52b16a0ee9994e84b3543
(cherry picked from commit 2aeedad442)
This should make it easier to see the application version in contrast to
the system modules version. We initialize this at build time from the
package version, and fallback to the module version if the application
has no usable version.
Change-Id: I4b4e1a926aea517b2b3b46261794e187af0c9865
(cherry picked from commit b90ca3f3ac)
the implementation used queries based on "OR",
causing a perfromance problem as the query time
depends on the cardinality of the accounting.cdr
table.
Change-Id: I1dbb23cf8802179b89c44718915ca090a2b17b5e
(cherry picked from commit 04e8fb04e1)
CDR export jobs such as ama exporter or cdr-exporter must never execute
on both active/passive node. because the output folder resides on a
glusterfs filesystem, this will cause merged or duplicate files, and
calls charged twice to customers subsequentially.
for .ama, the 2-phase commit steps for exporting CDRs were separated
already:
(a) rename .tmp file to final output file name
(b) commit db transaction:
- cdrexportstatus of all cdrs of that file
- file sequence number increment
The implemented 2PC flow will prevent (a) properly, if (b) fails.
This is now leveraged (by escalating the UPSERT not changing anything) to
abandon a whole file, if a single CDR shows an exportstatus other than
"unexported". Such CDRs indicate there is a race condition with another
exporter (which was quicker here).
the same thechnique also has to be added to cdr-exporter, which
unfortunately has no 2PC flow impl yet.
Change-Id: Ice40fa79d2b263018ee7825e314d63c9abe888ce
(cherry picked from commit e0d143ec3b)
if the number of exisiting subscribers (used as caller/callee
in created cdrs) is low, there is a higher risk that it can
fail to randomize one.
Change-Id: Id8f37f259e07f1b50251008a207a3e6122a628ea
(cherry picked from commit 71d805440a)
This reduces the complexity of the algorithm, at the expense of more
code, which makes it faster:
Rate old new
old 57803/s -- -23%
new 74906/s 30% --
Change-Id: Ic230cddceb269e4c452f3713e75be16569908458
(cherry picked from commit 520e67ed67)