backport patches from upstream
This commit is contained in:
parent
bde96f2dfa
commit
8c67ea6437
@ -0,0 +1,22 @@
|
||||
From b4a312b6361b7035f161383e3a51c7821958511a Mon Sep 17 00:00:00 2001
|
||||
From: alakatos <alakatos@redhat.com>
|
||||
Date: Thu, 22 Jul 2021 11:19:16 +0200
|
||||
Subject: [PATCH] Close file descriptor when freshStartTail is turned on
|
||||
|
||||
|
||||
---
|
||||
plugins/imfile/imfile.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/plugins/imfile/imfile.c b/plugins/imfile/imfile.c
|
||||
index db161cc491..ddbd286bb4 100644
|
||||
--- a/plugins/imfile/imfile.c
|
||||
+++ b/plugins/imfile/imfile.c
|
||||
@@ -1544,6 +1544,7 @@ openFileWithoutStateFile(act_obj_t *const act)
|
||||
const int fd = open(act->name, O_RDONLY | O_CLOEXEC);
|
||||
if(fd >= 0) {
|
||||
act->pStrm->iCurrOffs = lseek64(fd, 0, SEEK_END);
|
||||
+ close(fd);
|
||||
if(act->pStrm->iCurrOffs < 0) {
|
||||
act->pStrm->iCurrOffs = 0;
|
||||
LogError(errno, RS_RET_ERR, "imfile: could not query current "
|
||||
78
backport-OMMONGODB-Fixes.patch
Normal file
78
backport-OMMONGODB-Fixes.patch
Normal file
@ -0,0 +1,78 @@
|
||||
From cf0a6386d33e1311a6f37a887872949d95f1cc16 Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Guillemot <kevin.guillemot@advens.fr>
|
||||
Date: Wed, 30 Jun 2021 17:39:13 +0200
|
||||
Subject: [PATCH] OMMONGODB :: Fixes
|
||||
- Fix Segmentation fault when server is down
|
||||
- Add server connexion check while resuming
|
||||
trust merge open source commit:cf0a6386d33e1311a6f37a887872949d95f1cc16
|
||||
|
||||
---
|
||||
plugins/ommongodb/ommongodb.c | 23 ++++++++++++++++++++---
|
||||
1 file changed, 20 insertions(+), 3 deletions(-)
|
||||
diff --git a/plugins/ommongodb/ommongodb.c b/plugins/ommongodb/ommongodb.c
|
||||
index fc3153afd..a8b6ac96f 100644
|
||||
--- a/plugins/ommongodb/ommongodb.c
|
||||
+++ b/plugins/ommongodb/ommongodb.c
|
||||
@@ -136,10 +136,12 @@ static void closeMongoDB(instanceData *pData)
|
||||
if(pData->client != NULL) {
|
||||
if (pData->collection != NULL) {
|
||||
mongoc_collection_destroy (pData->collection);
|
||||
+ pData->collection = NULL;
|
||||
}
|
||||
-
|
||||
mongoc_client_destroy (pData->client);
|
||||
+ pData->client = NULL;
|
||||
mongoc_cleanup ();
|
||||
+ DBGPRINTF("ommongodb: Mongodb connexion closed.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,6 +191,7 @@ reportMongoError(instanceData *pData)
|
||||
/* The following function is responsible for initializing a
|
||||
* MongoDB connection.
|
||||
* Initially added 2004-10-28 mmeckelein
|
||||
+ * Improved to check if server is available (ping) @kguillemot 2021-06-30
|
||||
*/
|
||||
static rsRetVal initMongoDB(instanceData *pData, int bSilent)
|
||||
{
|
||||
@@ -208,7 +211,7 @@ static rsRetVal initMongoDB(instanceData *pData, int bSilent)
|
||||
dbgprintf("ommongodb: mongo-c-driver was not built with SSL options, ssl directives will not be used.");
|
||||
#endif
|
||||
}
|
||||
- if(pData->client == NULL) {
|
||||
+ if(!pData->client) {
|
||||
if(!bSilent) {
|
||||
reportMongoError(pData);
|
||||
dbgprintf("ommongodb: can not initialize MongoDB handle");
|
||||
@@ -217,6 +220,20 @@ static rsRetVal initMongoDB(instanceData *pData, int bSilent)
|
||||
}
|
||||
pData->collection = mongoc_client_get_collection (pData->client, pData->db, pData->collection_name);
|
||||
|
||||
+ // Try to contact server
|
||||
+ bson_t *command, reply;
|
||||
+ bson_error_t error;
|
||||
+ command = BCON_NEW ("ping", BCON_INT32 (1));
|
||||
+ unsigned char retval = mongoc_client_command_simple(pData->client, pData->db, command, NULL, &reply, &error);
|
||||
+ bson_destroy(&reply);
|
||||
+ bson_destroy(command);
|
||||
+ if( !retval ) {
|
||||
+ DBGPRINTF("ommongodb: ping server error (%u): %s \n", error.code, error.message);
|
||||
+ closeMongoDB(pData);
|
||||
+ reportMongoError(pData);
|
||||
+ ABORT_FINALIZE(RS_RET_SUSPENDED);
|
||||
+ }
|
||||
+
|
||||
finalize_it:
|
||||
RETiRet;
|
||||
}
|
||||
@@ -551,7 +568,7 @@ CODESTARTdoAction
|
||||
} else if (is_allowed_error_code(pData, pData->error.code)) {
|
||||
dbgprintf("ommongodb: insert error: allowing error code\n");
|
||||
} else {
|
||||
- dbgprintf("ommongodb: insert error\n");
|
||||
+ dbgprintf("ommongodb: insert error %u : %s \n", pData->error.code, pData->error.message);
|
||||
reportMongoError(pData);
|
||||
/* close on insert error to permit resume */
|
||||
closeMongoDB(pData);
|
||||
--
|
||||
2.23.0
|
||||
@ -0,0 +1,30 @@
|
||||
From d93c5e9d4830197a36830ba285bc5179312cbfc3 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Mon, 9 Aug 2021 12:38:06 +0200
|
||||
Subject: [PATCH] imfile bugfix: hash char invalidly added in readmode != 0
|
||||
|
||||
If imfile is ingesting log files with readMode set to 2 or 1, the resulting
|
||||
messages all have a '#' character at the end. This patch corrects the behaviour.
|
||||
|
||||
Note: if some external script "supported" the bug of extra hash character at
|
||||
the end of line, it may be necessary to update them.
|
||||
|
||||
closes https://github.com/rsyslog/rsyslog/issues/4491
|
||||
|
||||
---
|
||||
runtime/stream.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/runtime/stream.c b/runtime/stream.c
|
||||
index abe4ffb4bd..23cde86a07 100644
|
||||
--- a/runtime/stream.c
|
||||
+++ b/runtime/stream.c
|
||||
@@ -888,7 +888,7 @@ strmReadLine(strm_t *const pThis, cstr_t **ppCStr, uint8_t mode, sbool bEscapeLF
|
||||
{
|
||||
uchar c;
|
||||
uchar finished;
|
||||
- const int escapeLFString_len = (escapeLFString == NULL) ? 3 : strlen((char*) escapeLFString);
|
||||
+ const int escapeLFString_len = (escapeLFString == NULL) ? 4 : strlen((char*) escapeLFString);
|
||||
DEFiRet;
|
||||
|
||||
assert(pThis != NULL);
|
||||
39
backport-imjournal-flush-buffer-before-fsync.patch
Normal file
39
backport-imjournal-flush-buffer-before-fsync.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From 6a1faa065a60c080915f1abdcfa82bc39b88d895 Mon Sep 17 00:00:00 2001
|
||||
From: Gerd Rausch <gerd.rausch@oracle.com>
|
||||
Date: Thu, 15 Apr 2021 11:16:29 -0700
|
||||
Subject: [PATCH] imjournal: flush buffer before fsync
|
||||
Flush the FILE* buffer before rename & fsync in order
|
||||
to not end up syncing an empty file.
|
||||
Also, close WorkDir on fsync in order to prevent
|
||||
file descriptor leakage.
|
||||
Signed-off-by: Gerd Rausch <gerd.rausch@oracle.com>
|
||||
Signed-off-by: Venu Busireddy <venu.busireddy@oracle.com>
|
||||
trust merge open source commit:6a1faa065a60c080915f1abdcfa82bc39b88d895
|
||||
|
||||
---
|
||||
plugins/imjournal/imjournal.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c
|
||||
index 35c3f8f9b..62a5ab206 100644
|
||||
--- a/plugins/imjournal/imjournal.c
|
||||
+++ b/plugins/imjournal/imjournal.c
|
||||
@@ -562,6 +562,8 @@ persistJournalState(void)
|
||||
ABORT_FINALIZE(RS_RET_IO_ERROR);
|
||||
}
|
||||
|
||||
+ fflush(sf);
|
||||
+
|
||||
/* change the name of the file to the configured one */
|
||||
if (rename(tmp_sf, cs.stateFile) < 0) {
|
||||
LogError(errno, iRet, "imjournal: rename() failed for new path: '%s'", cs.stateFile);
|
||||
@@ -583,6 +585,8 @@ persistJournalState(void)
|
||||
LogError(errno, RS_RET_IO_ERROR, "imjournal: fsync on '%s' failed", glbl.GetWorkDir());
|
||||
ABORT_FINALIZE(RS_RET_IO_ERROR);
|
||||
}
|
||||
+
|
||||
+ closedir(wd);
|
||||
}
|
||||
|
||||
DBGPRINTF("Persisted journal to '%s'\n", cs.stateFile);
|
||||
--
|
||||
2.23.0
|
||||
@ -0,0 +1,36 @@
|
||||
From 9121c4ea5aeaac9b1ee7bd8c308c8fde95bc39b4 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Wed, 4 Aug 2021 08:03:46 +0200
|
||||
Subject: [PATCH] imptcp bugfix: keep alive interval was incorrectly set
|
||||
|
||||
The interval was accidentally set to keep alive interval. This has been
|
||||
corrected.
|
||||
|
||||
closes https://github.com/rsyslog/rsyslog/issues/4609
|
||||
4
|
||||
---
|
||||
plugins/imptcp/imptcp.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/plugins/imptcp/imptcp.c b/plugins/imptcp/imptcp.c
|
||||
index e89971dbe8..cdd29d4fd5 100644
|
||||
--- a/plugins/imptcp/imptcp.c
|
||||
+++ b/plugins/imptcp/imptcp.c
|
||||
@@ -1721,7 +1721,7 @@ static rsRetVal addInstance(void __attribute__((unused)) *pVal, uchar *const pNe
|
||||
inst->pBindRuleset = NULL;
|
||||
inst->bSuppOctetFram = cs.bSuppOctetFram;
|
||||
inst->bKeepAlive = cs.bKeepAlive;
|
||||
- inst->iKeepAliveIntvl = cs.iKeepAliveTime;
|
||||
+ inst->iKeepAliveIntvl = cs.iKeepAliveIntvl;
|
||||
inst->iKeepAliveProbes = cs.iKeepAliveProbes;
|
||||
inst->iKeepAliveTime = cs.iKeepAliveTime;
|
||||
inst->bEmitMsgOnClose = cs.bEmitMsgOnClose;
|
||||
@@ -1750,7 +1750,7 @@ addListner(modConfData_t __attribute__((unused)) *modConf, instanceConf_t *inst)
|
||||
pSrv->bSuppOctetFram = inst->bSuppOctetFram;
|
||||
pSrv->bSPFramingFix = inst->bSPFramingFix;
|
||||
pSrv->bKeepAlive = inst->bKeepAlive;
|
||||
- pSrv->iKeepAliveIntvl = inst->iKeepAliveTime;
|
||||
+ pSrv->iKeepAliveIntvl = inst->iKeepAliveIntvl;
|
||||
pSrv->iKeepAliveProbes = inst->iKeepAliveProbes;
|
||||
pSrv->iKeepAliveTime = inst->iKeepAliveTime;
|
||||
pSrv->bEmitMsgOnClose = inst->bEmitMsgOnClose;
|
||||
@ -0,0 +1,28 @@
|
||||
From 389484010fd95d611873e80bdbca898d9671170a Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Fri, 29 Jan 2021 09:25:09 +0100
|
||||
Subject: [PATCH] lookup table bugfix: data race on lookup table reload
|
||||
A data race could happen when a lookup table was reloaded. We found
|
||||
this while moving to newer version of TSAN, but have no matching
|
||||
report from practice. However, there is a potential for this to cause
|
||||
a segfault under "bad circumstances".
|
||||
trust merge open source commit:389484010fd95d611873e80bdbca898d9671170a
|
||||
|
||||
---
|
||||
grammar/rainerscript.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
|
||||
index 2e358353e..c86985962 100644
|
||||
--- a/grammar/rainerscript.c
|
||||
+++ b/grammar/rainerscript.c
|
||||
@@ -2377,6 +2377,8 @@ doFunct_Lookup(struct cnffunc *__restrict__ const func,
|
||||
return;
|
||||
}
|
||||
cnfexprEval(func->expr[1], &srcVal, usrptr, pWti);
|
||||
+ pthread_rwlock_rdlock(&((lookup_ref_t*)func->funcdata)->rwlock);
|
||||
+ pthread_rwlock_unlock(&((lookup_ref_t*)func->funcdata)->rwlock);
|
||||
lookup_table = ((lookup_ref_t*)func->funcdata)->self;
|
||||
if (lookup_table != NULL) {
|
||||
lookup_key_type = lookup_table->key_type;
|
||||
--
|
||||
2.23.0
|
||||
@ -0,0 +1,36 @@
|
||||
From 4529fa02b674f689d1cbc6925663824ea6882a15 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Mon, 15 Feb 2021 09:05:05 +0100
|
||||
Subject: [PATCH] omfwd bugfix: segfault or error if port not given
|
||||
If omfwd is configured via RainerScript config format and the "port"
|
||||
parameter is not given, a segfault will most likely happen on
|
||||
connection establishment for TCP connections. For UDP, this is
|
||||
usually not the case.
|
||||
Alternatively, in any case, errors may happen.
|
||||
Note that the segfault will usually happen right on restart so this
|
||||
was easy to detect.
|
||||
We did not receive reports from practice. Instead, we found the bug
|
||||
while conducting other work.
|
||||
trust merge open source commit:4529fa02b674f689d1cbc6925663824ea6882a15
|
||||
|
||||
---
|
||||
tools/omfwd.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
diff --git a/tools/omfwd.c b/tools/omfwd.c
|
||||
index 1304f43f3..5a210444e 100644
|
||||
--- a/tools/omfwd.c
|
||||
+++ b/tools/omfwd.c
|
||||
@@ -1336,6 +1336,11 @@ CODESTARTnewActInst
|
||||
}
|
||||
}
|
||||
|
||||
+ /* check if no port is set. If so, we use the IANA-assigned port of 514 */
|
||||
+ if(pData->port == NULL) {
|
||||
+ CHKmalloc(pData->port = strdup("514"));
|
||||
+ }
|
||||
+
|
||||
if(complevel != -1) {
|
||||
pData->compressionLevel = complevel;
|
||||
if(pData->compressionMode == COMPRESS_NEVER) {
|
||||
--
|
||||
2.23.0
|
||||
@ -0,0 +1,41 @@
|
||||
From ad08ed2634fa8be1d07312966803fd156038578d Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Thu, 8 Jul 2021 14:30:50 +0200
|
||||
Subject: [PATCH] openssl network driver bugfix: small memory leak
|
||||
Fixes a static, non-growing memory leak which existed when parameter
|
||||
"GnutTLSPriorityString" was used. This was primarily a cosmetic issue,
|
||||
but caused some grief during development in regard to memory leak
|
||||
detectors.
|
||||
Note: yes, this is for openssl -- the parameter name is history ;-)
|
||||
trust merge open source commit:ad08ed2634fa8be1d07312966803fd156038578d
|
||||
|
||||
---
|
||||
runtime/nsd_ossl.c | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
diff --git a/runtime/nsd_ossl.c b/runtime/nsd_ossl.c
|
||||
index d6188db23..8fff75338 100644
|
||||
--- a/runtime/nsd_ossl.c
|
||||
+++ b/runtime/nsd_ossl.c
|
||||
@@ -1785,11 +1785,8 @@ finalize_it:
|
||||
}
|
||||
|
||||
|
||||
-/* Empty wrapper for GNUTLS helper function
|
||||
- * TODO: implement a similar capability
|
||||
- */
|
||||
static rsRetVal
|
||||
-SetGnutlsPriorityString(__attribute__((unused)) nsd_t *pNsd, __attribute__((unused)) uchar *gnutlsPriorityString)
|
||||
+SetGnutlsPriorityString(nsd_t *const pNsd, uchar *const gnutlsPriorityString)
|
||||
{
|
||||
DEFiRet;
|
||||
nsd_ossl_t* pThis = (nsd_ossl_t*) pNsd;
|
||||
@@ -1869,6 +1866,7 @@ SetGnutlsPriorityString(__attribute__((unused)) nsd_t *pNsd, __attribute__((unus
|
||||
pThis->gnutlsPriorityString);
|
||||
osslLastSSLErrorMsg(0, NULL, LOG_ERR, "SetGnutlsPriorityString");
|
||||
}
|
||||
+ SSL_CONF_CTX_free(cctx);
|
||||
}
|
||||
#else
|
||||
dbgprintf("gnutlsPriorityString: set to '%s'\n", gnutlsPriorityString);
|
||||
--
|
||||
2.23.0
|
||||
@ -0,0 +1,38 @@
|
||||
From c6cdf972e5cf1691a6dadb50ce0402257271bc78 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Thu, 1 Jul 2021 14:24:50 +0200
|
||||
Subject: [PATCH] tcp subsystem: fix cosmetic memory leak on shutdown
|
||||
Memory for config parameter was not free'd on rsyslog shutdown. This had
|
||||
no real consequence, but caused memleak alerts during development.
|
||||
trust merge open source commit:c6cdf972e5cf1691a6dadb50ce0402257271bc78
|
||||
|
||||
---
|
||||
plugins/imtcp/imtcp.c | 1 +
|
||||
tools/omfwd.c | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
diff --git a/plugins/imtcp/imtcp.c b/plugins/imtcp/imtcp.c
|
||||
index f1478dc15..63d4a0d51 100644
|
||||
--- a/plugins/imtcp/imtcp.c
|
||||
+++ b/plugins/imtcp/imtcp.c
|
||||
@@ -707,6 +707,7 @@ BEGINfreeCnf
|
||||
CODESTARTfreeCnf
|
||||
free(pModConf->pszStrmDrvrName);
|
||||
free(pModConf->pszStrmDrvrAuthMode);
|
||||
+ free(pModConf->gnutlsPriorityString);
|
||||
free(pModConf->pszStrmDrvrPermitExpiredCerts);
|
||||
if(pModConf->permittedPeers != NULL) {
|
||||
cnfarrayContentDestruct(pModConf->permittedPeers);
|
||||
diff --git a/tools/omfwd.c b/tools/omfwd.c
|
||||
index 5a210444e..1131268d4 100644
|
||||
--- a/tools/omfwd.c
|
||||
+++ b/tools/omfwd.c
|
||||
@@ -405,6 +405,7 @@ CODESTARTfreeInstance
|
||||
free(pData->pszStrmDrvr);
|
||||
free(pData->pszStrmDrvrAuthMode);
|
||||
free(pData->pszStrmDrvrPermitExpiredCerts);
|
||||
+ free(pData->gnutlsPriorityString);
|
||||
free(pData->port);
|
||||
free(pData->networkNamespace);
|
||||
free(pData->target);
|
||||
--
|
||||
2.23.0
|
||||
@ -0,0 +1,58 @@
|
||||
From 3d23c7ac8aea5e1ac0118978d457aa7819531879 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Wed, 7 Jul 2021 13:16:28 +0200
|
||||
Subject: [PATCH] tcpsrv bugfix: abort if no listener could be started
|
||||
Modules (like imtcp and imdiag) which use tcpsrv could abort or
|
||||
otherwise malfunction if no listener for a specific input could
|
||||
be started.
|
||||
Found during implementing a new feature, no report from practice.
|
||||
But could very well happen.
|
||||
trust merge open source commit:3d23c7ac8aea5e1ac0118978d457aa7819531879
|
||||
|
||||
---
|
||||
plugins/imdiag/imdiag.c | 1 +
|
||||
plugins/imtcp/imtcp.c | 1 +
|
||||
runtime/tcpsrv.c | 5 +++++
|
||||
3 files changed, 7 insertions(+)
|
||||
diff --git a/plugins/imdiag/imdiag.c b/plugins/imdiag/imdiag.c
|
||||
index 3e27ee4d3..f5662e894 100644
|
||||
--- a/plugins/imdiag/imdiag.c
|
||||
+++ b/plugins/imdiag/imdiag.c
|
||||
@@ -126,6 +126,7 @@ static rsRetVal
|
||||
doOpenLstnSocks(tcpsrv_t *pSrv)
|
||||
{
|
||||
ISOBJ_TYPE_assert(pSrv, tcpsrv);
|
||||
+ dbgprintf("in imdiag doOpenLstnSocks\n");
|
||||
return tcpsrv.create_tcp_socket(pSrv);
|
||||
}
|
||||
|
||||
diff --git a/plugins/imtcp/imtcp.c b/plugins/imtcp/imtcp.c
|
||||
index 63d4a0d51..858f70f1f 100644
|
||||
--- a/plugins/imtcp/imtcp.c
|
||||
+++ b/plugins/imtcp/imtcp.c
|
||||
@@ -229,6 +229,7 @@ static rsRetVal
|
||||
doOpenLstnSocks(tcpsrv_t *pSrv)
|
||||
{
|
||||
ISOBJ_TYPE_assert(pSrv, tcpsrv);
|
||||
+ dbgprintf("in imtcp doOpenLstnSocks\n");
|
||||
return tcpsrv.create_tcp_socket(pSrv);
|
||||
}
|
||||
|
||||
diff --git a/runtime/tcpsrv.c b/runtime/tcpsrv.c
|
||||
index baa8892d8..2b6bea252 100644
|
||||
--- a/runtime/tcpsrv.c
|
||||
+++ b/runtime/tcpsrv.c
|
||||
@@ -926,6 +926,11 @@ Run(tcpsrv_t *pThis)
|
||||
|
||||
ISOBJ_TYPE_assert(pThis, tcpsrv);
|
||||
|
||||
+ if(pThis->iLstnCurr == 0) {
|
||||
+ dbgprintf("tcpsrv: no listeneres at all (probably init error), terminating\n");
|
||||
+ RETiRet; /* somewhat "dirty" exit to avoid issue with cancel handler */
|
||||
+ }
|
||||
+
|
||||
/* check if we need to start the worker pool. Once it is running, all is
|
||||
* well. Shutdown is done on modExit.
|
||||
*/
|
||||
--
|
||||
2.23.0
|
||||
@ -0,0 +1,35 @@
|
||||
From b160813f8296397fb971e4aef9faf7f903a3bb7f Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Tue, 27 Apr 2021 08:27:34 +0200
|
||||
Subject: [PATCH] tcpsrv bugfix: potential sluggishnes and hang on shutdown
|
||||
tcpsrv is used by multiple other modules (imtcp, imdiag, imgssapi, and,
|
||||
in theory, also others - even ones we do not know about). However, the
|
||||
internal synchornization did not properly take multiple tcpsrv users
|
||||
in consideration.
|
||||
As such, a single user could hang under some circumstances. This was
|
||||
caused by improperly awaking all users from a pthread condition wait.
|
||||
That in turn could lead to some sluggish behaviour and, in rare cases,
|
||||
a hang at shutdown.
|
||||
Note: it was highly unlikely to experience real problems with the
|
||||
officially provided modules.
|
||||
This patch corrects the situation.
|
||||
trust merge open source commit:b160813f8296397fb971e4aef9faf7f903a3bb7f
|
||||
|
||||
---
|
||||
runtime/tcpsrv.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
diff --git a/runtime/tcpsrv.c b/runtime/tcpsrv.c
|
||||
index 2f16677b0..baa8892d8 100644
|
||||
--- a/runtime/tcpsrv.c
|
||||
+++ b/runtime/tcpsrv.c
|
||||
@@ -711,7 +711,7 @@ wrkr(void *const myself)
|
||||
pthread_mutex_lock(&wrkrMut);
|
||||
me->pSrv = NULL; /* indicate we are free again */
|
||||
--wrkrRunning;
|
||||
- pthread_cond_signal(&wrkrIdle);
|
||||
+ pthread_cond_broadcast(&wrkrIdle);
|
||||
}
|
||||
me->enabled = 0; /* indicate we are no longer available */
|
||||
pthread_mutex_unlock(&wrkrMut);
|
||||
--
|
||||
2.23.0
|
||||
25
backport-testbench-simplify-test-ID-generation-a-bit.patch
Normal file
25
backport-testbench-simplify-test-ID-generation-a-bit.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 19e80e9e5c8d5cfee8a455a59d076c9ad60844e6 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Gerhards <rgerhards@adiscon.com>
|
||||
Date: Tue, 1 Sep 2020 14:33:41 +0200
|
||||
Subject: [PATCH] testbench: simplify test ID generation a bit
|
||||
|
||||
---
|
||||
tests/diag.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/diag.sh b/tests/diag.sh
|
||||
index bc0e408ce..481be9890 100755
|
||||
--- a/tests/diag.sh
|
||||
+++ b/tests/diag.sh
|
||||
@@ -2491,7 +2491,7 @@ case $1 in
|
||||
echo "hint: was init accidentally called twice?"
|
||||
exit 2
|
||||
fi
|
||||
- export RSYSLOG_DYNNAME="rstb_$(./test_id $(basename $0))$(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 4 | head -n 1)"
|
||||
+ export RSYSLOG_DYNNAME="rstb_$(./test_id $(basename $0))$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head --bytes 4)"
|
||||
export RSYSLOG_OUT_LOG="${RSYSLOG_DYNNAME}.out.log"
|
||||
export RSYSLOG2_OUT_LOG="${RSYSLOG_DYNNAME}_2.out.log"
|
||||
export RSYSLOG_PIDBASE="${RSYSLOG_DYNNAME}:" # also used by instance 2!
|
||||
--
|
||||
2.23.0
|
||||
|
||||
17
rsyslog.spec
17
rsyslog.spec
@ -4,7 +4,7 @@
|
||||
|
||||
Name: rsyslog
|
||||
Version: 8.2006.0
|
||||
Release: 6
|
||||
Release: 7
|
||||
Summary: The rocket-fast system for log processing
|
||||
License: (GPLv3+ and ASL 2.0)
|
||||
URL: http://www.rsyslog.com/
|
||||
@ -34,6 +34,18 @@ Patch6012: backport-Do-not-create-empty-objects-when-accessing-non-exist.pa
|
||||
Patch6013: backport-gnutls-Added-handshake-error-handling-into-doRetry-h.patch
|
||||
Patch6014: backport-msg-segfault-in-jsonPathFindNext-when-root-is-not-an.patch
|
||||
Patch6015: backport-msg-memory-leak-in-msgAddJSON-if-jsonPathFindParent-.patch
|
||||
Patch6016: backport-testbench-simplify-test-ID-generation-a-bit.patch
|
||||
Patch6017: backport-lookup-table-bugfix-data-race-on-lookup-table-reload.patch
|
||||
Patch6018: backport-omfwd-bugfix-segfault-or-error-if-port-not-given.patch
|
||||
Patch6019: backport-imjournal-flush-buffer-before-fsync.patch
|
||||
Patch6020: backport-OMMONGODB-Fixes.patch
|
||||
Patch6021: backport-openssl-network-driver-bugfix-small-memory-leak.patch
|
||||
Patch6022: backport-tcpsrv-bugfix-abort-if-no-listener-could-be-started.patch
|
||||
Patch6023: backport-tcpsrv-bugfix-potential-sluggishnes-and-hang-on-shut.patch
|
||||
Patch6024: backport-tcp-subsystem-fix-cosmetic-memory-leak-on-shutdown.patch
|
||||
Patch6025: backport-imptcp-bugfix-keep-alive-interval-was-incorrectly-set.patch
|
||||
Patch6026: backport-imfile-bugfix-hash-char-invalidly-added-in-readmode-0.patch
|
||||
Patch6027: backport-Close-file-descriptor-when-freshStartTail-is-turned-on.patch
|
||||
|
||||
Patch9000: rsyslog-8.24.0-ensure-parent-dir-exists-when-writting-log-file.patch
|
||||
Patch9001: bugfix-rsyslog-7.4.7-imjournal-add-monotonic-timestamp.patch
|
||||
@ -379,6 +391,9 @@ systemctl daemon-reload >/dev/null 2>&1
|
||||
%{_mandir}/man1/rscryutil.1.gz
|
||||
|
||||
%changelog
|
||||
* Thu Sep 16 2021 wuchaochao <wuchaochao4@huawei.com> - 8.2006.0-7
|
||||
- backport patches from upstream
|
||||
|
||||
* Mon May 10 2021 shixuantong <shixuantong@huawei.com> - 8.2006.0-6
|
||||
- Type:NA
|
||||
- ID:NA
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user