Are there any recommendations for Event Rule name and/or description length?


THE INFORMATION IN THIS ARTICLE APPLIES TO:

  • EFT, v7.0 and later

SYMPTOM

In an EFT HA environment with a considerable amount of Event Rules, if the Event Rule name and description are long enough, it can exceed the MSMQ limitation of 64K. This can cause the EFT node to hang and eventually restart when trying to make a modification (such as when attempting to change the priority of an event rule).

Are there any specific recommendations for event rule name and/or description length to avoid issue?

WORKAROUND

The administration interface sends to EFT the following data structures in one message for each event rule:

event_rule structure:

sizes:

boost::uuids::uuid id;

36 bytes

std::wstring rule_name;

strlen x 2 bytes

std::wstring rule_description;

strlen x 2 bytes

bool enabled;

 1 byte

 

The message size is: (37 + (strlen(rule_name) + strlen(rule_description) * 2)) * rules_count In the formula above, we suppose that "strlen(rule_name)" and "strlen(rule_description)" are the average from all event rule names and descriptions.

Additionally, the message is compressed before sending. MSMQ requires the message size to be less than 64k. It's a known MSMQ limitation.

MORE INFORMATION

Globalscape recommends that you leave the description field blank (no text) and make the Event Rule name no longer than 20 characters. If you follow our recommendation, you should be able to create, edit, and use about 4000 Event Rules without problems.

Rule parameters\Rules count:

100

200

300

400

500

600

700

800

(40 rule name, 160 description)

31152

60672

90208

-

-

-

-

-

(40 rule name, 140 description)

28416

55456

82432

-

-

-

-

-

(40 rule name, 120 description)

25840

50336

74768

-

-

-

-

-

(40 rule name, 100 description)

23232

45200

66992

-

-

-

-

-

(40 rule name, 80 description)

20528

40000

59072

78320

-

-

-

-

(40 rule name, 60 description)

17904

34816

51360

67968

-

-

-

-

(40 rule name, 40 description)

15152

29392

43456

57360

71408

-

-

-

(20 rule name, 40 description)

12400

24032

35568

46864

58112

69456

-

-

(40 rule name, 0 description)

9456

18208

27534

35504

43856

52368

60752

69264

(20 rule name, 0 description)

8256

12544

18448

24272

30112

35952

41696

47440

Taking into account the table above and that the Event Rule names aren't random in real life (they are compressed five-fold) we can suggest the formula:

(37 + (strlen(rule_name) + strlen(rule_description) / 3)) * rules_count < 64K

e.g. If you want 1000 event rules, then:

(37 + (strlen(rule_name) + strlen(rule_description) / 3)) * 1000 < 64000

<=>

(37 + (strlen(rule_name) + strlen(rule_description) / 3)) < 64

<=>

(strlen(rule_name) + strlen(rule_description) / 3) < 27

<=>

strlen(rule_name) + strlen(rule_description) < 81