SMPPRejectErrorCode

SMPPRejectErrorCode SearchSearch
Author Message
Mathew Mathachan
Frequent Contributor
Username: Mathewm

Post Number: 70
Registered: 04-2011
Posted on Thursday, October 01, 2015 - 10:11 am:   

Hi,

We had a situation today. The SMSC was rejecting messages to a particular GSM number with 0x14. NowSMs was retrying this message (count was greater than 3K). Meanwhile more than 10K messages got queued up in NowSMS. During the time, we also noticed that HTTP submissions to NowSMS were rejected with "Underlying connection was closed" (HTTP Submissions are done over https).

Once we noticed this, we updated the SMSGW.INI with SMPPRejectErroCode=14 and immediately queues got cleared and the NowSMS started accepting HTTP requests.

Is there a reason as to why the HTTP submissions were not accepted when there was this issue at the SMSC end?

Appreciate your support

Mathew
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 5463
Registered: 08-2008
Posted on Thursday, October 01, 2015 - 01:38 pm:   

Hi Mathew,

The only reason I could see why the HTTP submissions would fail is if one of the following SMSGW.INI parameters is present:

OutboundQueueLimit
UserOutboundQueueLimit

These parameters tell the system to reject messages if there is a queue backlog that exceeds the limit defined in the setting.

If neither of those settings is present, then we need to dig deeper.

On the subject of error 0x14 (ESME_RMSGQFUL), this error code is frequently used to indicate that the SMSC has too many messages pending for the specific recipient, so try again later. Different versions of NowSMS handle this differently...what version are you running?

--
Des
NowSMS Support
Mathew Mathachan
Frequent Contributor
Username: Mathewm

Post Number: 71
Registered: 04-2011
Posted on Tuesday, October 06, 2015 - 11:21 am:   

Des,

We rechecked and observe that both the setting were not present in the INI file.

The version of NowSMS is v2014.06.30

As we are not able to recreate it here, what do you suggest we need to look out if it ever happens again

Mathew
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 5468
Registered: 08-2008
Posted on Tuesday, October 06, 2015 - 10:52 pm:   

Hi Mathew,

Can you update NowSMS to the 2015.06.24 version?

There was some new handling of the ESME_RMSGQFUL error added in 2014 versions. But we found that under some conditions, this could trigger a memory leak which could cause NowSMS to run out of memory.

My gut says that is what you encountered.

As a temporary fix, add RMSGQFULByNumber=No under the [SMSGW] header of SMSGW.INI

This will bypass the logic that triggers the memory leak.

--
Des
NowSMS Support
Mathew Mathachan
Frequent Contributor
Username: Mathewm

Post Number: 72
Registered: 04-2011
Posted on Wednesday, October 07, 2015 - 08:06 am:   

Des,

Thanks for the response. Appreciate little more clarity on the response. Did u mean to say that

'----------------- (1)
[SMSGW]
RMSGQFULByNumber=No

or
'----------------- (2)
[SMSGW]
SMPPRejectErrorCode=14


If (1), what is the difference with (2).

Mathew
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 5469
Registered: 08-2008
Posted on Wednesday, October 07, 2015 - 03:07 pm:   

Hi Mathew,

I recommend only RMSGQFULByNumber=No (but you may have other reasons to use the other setting).

Error 0x14 (ESME_RMSGQFUL) usually indicates that the SMSC has too many messages pending for the specific recipient, so try again later.

2014 versions of NowSMS include special handling for this error.

For many SMPP providers, this error indicates that too many messages are currrently queued for the specified recipient, often bacause the receiving device is off-line. If this error is received, NowSMS will hold other messages for the same recipient in queue and only retry the oldest pending message for that recipient. Once that oldest message is processed, the other messages will be released for processing. (If this setting is disabled by setting RMSGQFULByNumber=No under the [SMSGW] header of SMSGW.INI, NowSMS retries each message separately and the staggered retry pattern can produce unusual delays and/or unusual message order when the device comes back on-line.)

I recommend RMSGQFULByNumber=No in 2014 versions because there is a flaw in that logic that can cause NowSMS to run out of memory. This setting avoids the problem.

ESME_RMSGQFUL (and ESME_RTHROTTLED) are treated as special system errors, and for these errors, NowSMS will exceed max retries. . Instead of expiring after RetryMaxAttempts, additional retries are allowed, up to RetryMaxAge minutes. By default, RetryMaxAge is 1440 minutes (or 24 hours).

You can use the RetryMaxAge parameter to lower the number of retry attempts on these messages.

If you use SMPPRejectErrorCode=14 , NowSMS will fail the message after one attempt where this error is received. If this is acceptable for your configuration, then this setting is OK to use. Most people would prefer the messages to be held and retried.

--
Des
NowSMS Support
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 5470
Registered: 08-2008
Posted on Wednesday, October 07, 2015 - 03:07 pm:   

Hi Mathew,

I recommend only RMSGQFULByNumber=No (but you may have other reasons to use the other setting).

Error 0x14 (ESME_RMSGQFUL) usually indicates that the SMSC has too many messages pending for the specific recipient, so try again later.

2014 versions of NowSMS include special handling for this error.

For many SMPP providers, this error indicates that too many messages are currrently queued for the specified recipient, often bacause the receiving device is off-line. If this error is received, NowSMS will hold other messages for the same recipient in queue and only retry the oldest pending message for that recipient. Once that oldest message is processed, the other messages will be released for processing. (If this setting is disabled by setting RMSGQFULByNumber=No under the [SMSGW] header of SMSGW.INI, NowSMS retries each message separately and the staggered retry pattern can produce unusual delays and/or unusual message order when the device comes back on-line.)

I recommend RMSGQFULByNumber=No in 2014 versions because there is a flaw in that logic that can cause NowSMS to run out of memory. This setting avoids the problem.

ESME_RMSGQFUL (and ESME_RTHROTTLED) are treated as special system errors, and for these errors, NowSMS will exceed max retries. . Instead of expiring after RetryMaxAttempts, additional retries are allowed, up to RetryMaxAge minutes. By default, RetryMaxAge is 1440 minutes (or 24 hours).

You can use the RetryMaxAge parameter to lower the number of retry attempts on these messages.

If you use SMPPRejectErrorCode=14 , NowSMS will fail the message after one attempt where this error is received. If this is acceptable for your configuration, then this setting is OK to use. Most people would prefer the messages to be held and retried.

--
Des
NowSMS Support
Mathew Mathachan
Frequent Contributor
Username: Mathewm

Post Number: 73
Registered: 04-2011
Posted on Thursday, October 08, 2015 - 09:53 am:   

Thank you Des for the detailed response and giving an explanation on how this situation is handled in the system.

Mathew