Data loss and or Latency

General support and discussion of Eggdrop bots.
Post Reply
g
ghostscript
Voice
Posts: 13
Joined: Wed Feb 08, 2006 4:08 pm
Location: unknown
Contact:

Data loss and or Latency

Post by ghostscript »

Hello, we are running Eggdrop 1.6.17 and IRCd Hybrid 6. We have two bots total. One bot picks up binds in the channel, then starts a query between the user that initiated the bind and the second bot. The second bot, who is now in a PRIVMSG with the user, responds to user input and outputs a text response. We seem to be having an issue with severe latency and, in some cases, data loss. Previously, we had postulated that the issue was rooted in the eggdrop.conf. However, after the change multiple settings had little to no effect, we turned to examining the server module. Is it possible that any of the settings in that file are causing the issue, or that they are conflicting with other settings in other files. This issue seems to arise if we either have 2 users continually requests responses from the bot (not flooding, but high volume) or more than 5 users with about 4-5 requests each. This occurs regardless of the length or complexity of the bot's response, but happens more quickly with more complex (15 line) responses. Please let us know if you have any suggestions, or if you require more information. All help is greatly appreciated.
User avatar
YooHoo
Owner
Posts: 939
Joined: Thu Feb 13, 2003 10:07 pm
Location: Redwood Coast

Post by YooHoo »

:!: Use putserv when you need some thing to happen instantaneously. Like a kick, or a ban.

:!: Use puthelp when messaging people, or channels.

There are three commands with which you can send commands to the IRC server. These commands are [putserv], [puthelp] and [putquick]. All of these commands do exactly the same thing, but they use different queues. The [putquick] command uses the fastest queue and is used if you want something to be sent to the server immediantly. The [putserv] command uses the normal queue for server messages and is also the command to use when you are sending something to the server that doesn't need to be rushed. The [puthelp] command uses the slowest queues and is used to send things like messages and notices to other people, because that usually has a lower priority. The syntax a [putquick], [putserv] or [puthelp] command is [putserv <text> [options]]. The <text> is the command and parameters you want to send to the IRC server. If you want to send a message to someone or a channel, the syntax would be ["PRIVMSG <nickname/channel> :<message>"] or if you want to send a notice the syntax would be ["NOTICE <nickname/channel> :<message>"], where <nickname/channel> is the nickname or channel to which you want to send the message and <message> is the message that you want to send. For example [puthelp "PRIVMSG foo :Hi there."] would send the message "Hi there." to the nickname "foo". The [options] are the parameters for the command. At the moment there is only one parameter and that's -next. This will push your command to the front of the queue that the command uses and thereby sending it faster.
g
ghostscript
Voice
Posts: 13
Joined: Wed Feb 08, 2006 4:08 pm
Location: unknown
Contact:

Thank you ... but

Post by ghostscript »

While I understand the logic of your post, I do not think that is the issue. Below is a sample of one of the bots I mentioned. As you can see it uses putquicks - we have also tried those other variations you suggested with no change. We believe the issue resides within some settings within the server module included with eggdrop pre-compile. As you can tell from the bot - it's simplistic, but by no means a beginners bot. We are about 98% sure its a setting we need to adjust pre-compile in the server module - we just need help figuring out what settings we need to adjust. =) By all means please provide more feedback and/or additional ideas

Code: Select all

bind pub - !takethis pub_takethis
proc pub_takethis {nick mask hand channel args} {
   set args_list [split $args "."]
   set tnick [lindex $args_list 0]
   set tcase [lindex $args_list 1]
   set tchannel [lindex $args_list 2]

   putquick "PRIVMSG #bot_city :$tchannel"
   putquick "PRIVMSG $tchannel :!take"
   putquick "PRIVMSG #bot_city :!taken $tcase.$tchannel"
   putquick "PRIVMSG $tnick :Hello there! My name is AgentBot. Give me a few moments to open and read over the case notes. Do you have a specific question you would like to ask?"
}

bind msgm - {*alpha*} *alpha*
proc *alpha* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :alpha"
   after {3000}
}

bind msgm - {*bravo*} *bravo*
proc *bravo* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :Bravo"
   after {3000}
}

bind msgm - {*charlie*} *charlie*
proc *charlie* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :Charlie"
   after {3000}
}

bind msgm - {*delta*} *delta*
proc *delta* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :Delta"
   after {3000}
}

bind msgm - {*echo*} *echo*
proc *echo* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :echo"
   after {3000}
}

bind msgm - {*foxtrot*} *foxtrot*
proc *foxtrot* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :foxtrot"
   after {3000}
}

bind msgm - {*golf*} *golf*
proc *golf* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :golf"
   after {3000}
}

bind msgm - {*hotel*} *hotel*
proc *hotel* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :Hotel"
   after {3000}
}

bind msgm - {*india*} *india*
proc *india* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :india"
   after {3000}
}

bind msgm - {*juliet*} *juliet*
proc *juliet* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :juliet"
   after {3000}
}

bind msgm - {*kilo*} *kilo*
proc *kilo* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :kilo"
   after {3000}
}

bind msgm - {*lima*} *lima*
proc *lima* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :lima"
   after {3000}
}

bind msgm - {*mike*} *mike*
proc *mike* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :mike"
   after {3000}
}

bind msgm - {*november*} *november*
proc *november* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :november"
   after {3000}
}

bind msgm - {*oscar*} *oscar*
proc *oscar* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :oscar"
   after {3000}
}

bind msgm - {*papa*} *papa*
proc *papa* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :papa"
   after {3000}
}

bind msgm - {*quebec*} *quebec*
proc *quebec* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :quebec"
   after {3000}
}

bind msgm - {*romeo*} *romeo*
proc *romeo* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :romeo"
   after {3000}
}

bind msgm - {*sierra*} *sierra*
proc *sierra* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :sierra"
   after {3000}
}

bind msgm - {*tango*} *tango*
proc *tango* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :tango"
   after {3000}
}

bind msgm - {*uniform*} *uniform*
proc *uniform* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :uniform"
   after {3000}
}

bind msgm - {*victor*} *victor*
proc *victor* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :victor"
   after {3000}
}

bind msgm - {*whiskey*} *whiskey*
proc *whiskey* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :whiskey"
   after {3000}
}

bind msgm - {*x-ray*} *x-ray*
proc *x-ray* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :x-ray"
   after {3000}
}

bind msgm - {*yankee*} *yankee*
proc *yankee* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :yankee"
   after {3000}
}

bind msgm - {*zulu*} *zulu*
proc *zulu* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :Zulu"
   after {3000}
}

bind msgm - {*one*} *one*
proc *one* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :too"
   after {3000}
}

bind msgm - {*this*} *this*
proc *this* {nick mask hand text} {
   after {3000}
   putquick "PRIVMSG $nick :here it is"
   after {3000}
}

g
ghostscript
Voice
Posts: 13
Joined: Wed Feb 08, 2006 4:08 pm
Location: unknown
Contact:

Please Read

Post by ghostscript »

In the current version we have no "after 3000" Those delays were intentional and were removed before testing the current problem - it isn't them since they are no longer there, Thanks.
User avatar
YooHoo
Owner
Posts: 939
Joined: Thu Feb 13, 2003 10:07 pm
Location: Redwood Coast

Post by YooHoo »

Maybe you would find it helpful to set your console to +rv, to view the raw data to/from the server, might provide a better clue....?
g
ghostscript
Voice
Posts: 13
Joined: Wed Feb 08, 2006 4:08 pm
Location: unknown
Contact:

Woot

Post by ghostscript »

Alright, I will do that and relay the findings here, will be posted before 12PM PST. Thank you.
Post Reply