Trinitycore: [3.3.5][6.x] LFG issues

Created on 10 Mar 2015  路  56Comments  路  Source: TrinityCore/TrinityCore

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Branch-3.3.5a Sub-Instances

Most helpful comment

I opened a PR for the re-queue issue

All 56 comments

@Frytiks : as asked quite a few times, post the lfg log set to "debug" level, anything else is useless

  • [x] remove queue cd on kick. ada4e431ae77cf56e6f5e4441b494dd25d6b3fb9
  • [x] [17:21:40] One or more dungeons was not valid. abcad7c
  • [x] completing one LFG instance must remove all LFG cooldowns. 24fbbee4b9af7b5226772378dd83b78c103d969d
  • [x] "lfg queue" command doesn't work from worldserver console
  • [x] Leave LFG group if player is out of dungeon and is only a player in group. e743f4a479ce7ddd3f13d51ca1c19a591c803fc0
  • [x] enter a lfg dungeon, 1 leaves on the 1st minutes, queue inside the dungeon: can't re-queue to continue, you must be allowed to search for new members for same instance.
    you get: You can not queue for random dungeons while on random dungeon cooldown. on the 1st minutes, but it's incorrect for queue for more members.
  • [x] apply https://github.com/TrinityCore/TrinityCore/commit/1e71aba2ee656a8407dec63a69d0879e16a070e2 to "lfg queue debug"
  • [x] verify that https://github.com/TrinityCore/TrinityCore/commit/1e71aba2ee656a8407dec63a69d0879e16a070e2 works with group guids
  • [x] [LFG][Dungeon Finder] Positions in group (interface) https://github.com/TrinityCore/TrinityCore/issues/16244 dd54c8012321
  • [x] on retail when you queue into LFG and you are teleported to one already existing instance you are teleported to any random member of the group. d2841d6b6
  • [x] enter a lfg dungeon, 1 leaves, try to kick another, 1 agrees, 1 denies: vote doesn't end but waits till it expires f0f0de01fad0bc7bdfda215ec1a0f5b58d4a0ebf

nvm, last player missing solved.

  • [x] before lfg queue debug used to show details of people on queue, now no.
  • [x] sugestion change
[19:04:22] (1|2|3|4): Compatibles (Not enough players)
into
[19:04:22] (1 dps/tank|2 dps/heal|3 heal|4 dps): Compatibles (Not enough players)
  • [x] complete one instance, remove most of members on party from it queue again, close client with X, queue with another member it will show the offline members has available on queue.
    On wow 3 if someone disconnects it was removed from queue (remove whole party from queue when a party member disconnects).

what does it mean in logs2015-04-11_00:04:29 Guids: (2256303413312619923|2256303413312620559) Too much players (6)

As you don't log the logger name you don't figure where that comes from but still sound pretty clear to me. That message appears in debug mode while trying to match 2 groups, but total player count of both groups exceeds 5

I'm getting all day messages for some players queqing normally, but some are still in queue forever > 1 hour in queue and not matched group ... Here is debug log https://onedrive.live.com/redir?resid=41FEF50A040FE1C4!490&authkey=!AODZ7-OoPwUXeFg&ithint=file%2czip

@jackpoz Without Double Side group on server, queue works normally, there is problem when u have mixed groups, it's not joining correctly

is that "Double Side group" a feature enabled through worldserver.conf ?

i have never enabled it, but:

#
#    AllowTwoSide.Interaction.Group
#        Description: Allow group joining between factions.
#        Default:     0 - (Disabled)
#                     1 - (Enabled)

AllowTwoSide.Interaction.Group = 0

Ye i think that @ccrs !

  • [x] Join lfg with a group.Now have the members close wow(not logout,press X on the game window..like a dc) the group will remain in queue..even if the members are offline.

If a player joins lfg queue,then alt+f4 the game,he remains in queue,but on next join from other player/group it gets removed..so this is ok more or less...

Now..can we atleast port this kind of behaviour to groups also?As in if a member of a queued group is offline,remove the whole group from queue.This bug breaks lfg queue system very fast.

Any news about this. I try what you say and Yes, it's bugging queue. Maybe we can remove groups with 0 players in FindGroups() function ? @jackpoz

On retail offline players don't get removed from the queue. At least, not at 6.x. There's a delay before they're removed after being logged off (just leaving this as a note for @w1sht0l1v3 )

When i restart server queue works good like 2 hours, but after 2 hours it's not queue, all is in log what i posted upside. Like @w1sht0l1v3 say, it causing bug.

as @Frytiks says every 2 o 3 hours lfg freeze.

I can post debug log again, but jackpoz not trust me

@jackpoz Summoning, i have 1GB of LFG.log should i upload it ?

You don't know rar you dont?

  • [x] BTW. on retail when you queue into LFG and you are teleported to one already existing instance you are teleported to any random member of the group.

Luck of the Draw (http://www.wowhead.com/spell=72221) is given to all players in group

@ccrs please state the current behavior and the correct behavior so one doesn't have to wonder about what to fix

  • [ ] not all matches are checked, leading to stuck queue. Notice how (79|2256303413312618500) is missing below

TC> lfg queue debug
Number of Queues: 1
Queued Players: 2 (in group: 4) Groups: 1
Compatible Map size: 6
(18): Compatibles (Not enough players)
(18|2256303413312618500): Incompatible dungeons
(18|79): Compatibles (Not enough players)
(18|79|2256303413312618500): Incompatible dungeons
(2256303413312618500): Compatibles (Not enough players)
(79): Compatibles (Not enough players)

https://github.com/TrinityCore/TrinityCore/commit/b7f9836d223925802115f45ad2c2c7eeb9bb00a4 fixed quite some issues, please check if it improves lfg queue

Not enough players to test

lfg estop work every 30 min aprox.

lfg guid was on some cases incorrect, example:

2015-10-26_03:32:19 [lfg.queue.match.compatibility.check] Guids: (167855|339518|369242|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:19 [lfg.queue.match.compatibility.check] Guids: (136300|167855|369242|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:19 [lfg.queue.match.compatibility.check] Guids: (167855|369242|385616|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:19 [lfg.queue.match.compatibility.check] Guids: (167855|2256303413312622541|2256303413312624458) Group MATCH but can't create proposal!
2015-10-26_03:32:34 [lfg.queue.match.compatibility.check] Guids: (167855|406136|406166|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:34 [lfg.queue.match.compatibility.check] Guids: (167855|319936|406136|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:34 [lfg.queue.match.compatibility.check] Guids: (167855|2256303413312622541|2256303413312624688) Group MATCH but can't create proposal!
2015-10-26_03:32:34 [lfg.queue.match.compatibility.check] Guids: (167855|339518|406136|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:34 [lfg.queue.match.compatibility.check] Guids: (136300|167855|406136|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:34 [lfg.queue.match.compatibility.check] Guids: (167855|385616|406136|2256303413312622541) Group MATCH but can't create proposal!
2015-10-26_03:32:34 [lfg.queue.match.compatibility.check] Guids: (167855|2256303413312622541|2256303413312624458) Group MATCH but can't create proposal!
2015-10-26_03:42:56 [lfg.queue.match.compatibility.check] Guids: (201236|214834|257640|302470|407524) MATCH! Group formed
2015-10-26_03:43:10 [lfg.queue.match.compatibility.check] Guids: (113432|356717|398091|2256303413312618658) MATCH! Group formed
2015-10-26_03:45:38 [lfg.queue.match.compatibility.check] Guids: (52722|118828|335274|401785|411757) MATCH! Group formed
2015-10-26_03:45:53 [lfg.queue.match.compatibility.check] Guids: (1246|99950|2256303413312618714) MATCH! Group formed
2015-10-26_03:46:33 [lfg.queue.match.compatibility.check] Guids: (68554|141187|368117|376511|390970) MATCH! Group formed
2015-10-26_03:47:19 [lfg.queue.match.compatibility.check] Guids: (127536|153661|359642|375721|376511) MATCH! Group formed
2015-10-26_03:47:49 [lfg.queue.match.compatibility.check] Guids: (136300|249895|319936|394920|398914) MATCH! Group formed
2015-10-26_03:48:02 [lfg.queue.match.compatibility.check] Guids: (337859|390970|405595|2256303413312619121) MATCH! Group formed
2015-10-26_03:48:05 [lfg.queue.match.compatibility.check] Guids: (40360|153661|376511|406029|419377) MATCH! Group formed
2015-10-26_03:48:12 [lfg.queue.match.compatibility.check] Guids: (11713|30274|422612|2256303413312619155) MATCH! Group formed
2015-10-26_03:48:51 [lfg.queue.match.compatibility.check] Guids: (108595|368117|376511|385769|390970) MATCH! Group formed
2015-10-26_03:48:58 [lfg.queue.match.compatibility.check] Guids: (43410|238493|407776|2256303413312619155) MATCH! Group formed
2015-10-26_03:48:59 [lfg.queue.match.compatibility.check] Guids: (91049|131192|160044|418472|423055) MATCH! Group formed
2015-10-26_03:49:00 [lfg.queue.match.compatibility.check] Guids: (127536|153661|337859|390937|405595) MATCH! Group formed
2015-10-26_03:49:31 [lfg.queue.match.compatibility.check] Guids: (2256303413312619163) MATCH! Group formed
2015-10-26_03:49:34 [lfg.queue.match.compatibility.check] Guids: (11713|414155|422612|2256303413312619130) MATCH! Group formed

I have guids like 2256303413312619130 but no one player has dat guid.

2256303413312619130 is group. it's perfect valid.

Apply this patch and enable lfg.allqueued DEBUG log. It will give more detailed info.

diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 250f6e0..b5e1ffe 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -1900,8 +1900,16 @@ bool LFGMgr::AllQueued(GuidList const& check)
         return false;

     for (GuidList::const_iterator it = check.begin(); it != check.end(); ++it)
-        if (GetState(*it) != LFG_STATE_QUEUED)
-            return false;
+    {
+        LfgState state = GetState(*it);
+        if (state != LFG_STATE_QUEUED)
+        {
+            if (state != LFG_STATE_PROPOSAL)
+                TC_LOG_DEBUG("lfg.allqueued", "Unexpected state found while trying to form new group. Guid: %s, State: %s", (*it).ToString().c_str(), GetStateString(state).c_str());
+
+            return false;
+        }
+    }
     return true;
 }

http://pastebin.com/N9wNCZUW So much Unexpected state found.

kay i updated this mainticket a bit to get a better overview, corrently i cannot find more issues to it

I have no way to test it for certain, but a few months ago I was playing on a TC 3.3.5 server and one issue that appeared somewhat regularly was seemingly losing your place in the queue. It happened under the following circumstances.

  1. Join queue, wait for tank
  2. Tank joins, wait for everyone to accept
  3. One member (not the tank) misses/doesn't accept the queue.
  4. Tank gets put into the next group in the queue, you are thrown back into the queue and have to wait for a new tank.

I believe it should keep the tank in your group, and try to find a dps or healer as a replacement. If the tank was put into your group, I am pretty sure that meant you were at the top of the list (server had very few tanks queueing). It seems what was happening was you would lose your place in queue after a player misses the queue, regardless if you queued together or not.

Once again, this was a few months ago, and I do not know how I could test this without running numerous instances of the game.

I do not know how I could test this without running numerous instances of the game.

what's the problem with running numerous instances of the game ?

It seems what was happening was you would lose your place in queue after a player misses the queue, regardless if you queued together or not.

if someone does not accept the queue your are thrown back to the last place of the queue. normally everyone should be in the first place of the queue again, that's why you need to wait so long currently

@rushor so you agree that if what I said is true, it is currently not functioning, correct?.

The reason I can't do multiple instances of the game is because I am on holiday and only have my netbook. Once I get back this weekend I will test it out and report back how it appears to be functioning.

@Rushor @jackpoz Check this
http://s26.postimg.org/tm31tzu15/Wo_WScrn_Shot_050216_113514.jpg
on branch 3.3.5

queued as a healer and healer missing

queued as a healer and healer missing

maybe because of https://github.com/TrinityCore/TrinityCore/issues/16241 ?

No. I blocked multiple roles on code.

Guys, pls test this. @Rushor @jackpoz

  • Join dungeon finder with any role for 5 mins
  • Relog
  • Join again and you will see that you queue time is 5 mins

something is wrong with that, dungeon finder data is not being cleared at logout???

No. I blocked multiple roles on code.

I have no idea what custom changes you applied

@jackpoz you tested what i said? No costum changes were made on that test. I just blocked multiple roles before to check if they were the cause, then i removed it. I'm using clean TC core.

@Jackpoz i have clean core and i can confirm that too, also this bug is on every server.

i can even click on "find group" without choosing any roles because it has already my roles saved or something like that, not sure. cant understand why

Well, no news about this? Maybe i will try a fix myself.

I think https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/DungeonFinding/LFGMgr.cpp#L432 something here is the culpit of lfd queue unable to requeue on someone leaves.
I blame https://github.com/TrinityCore/TrinityCore/pull/22321 @Ovahlord :troll:

requeue fixed by 7fb5233

@jackpoz Is there any need for detailed information on the "queue stuck" issue? (I seem to remember you had a patch to get more logs, but couldnt find it)
If it helps, I can try to get those logs.. still can't force it to happen, but here it happens naturally pretty much everyday ^^

Example of "queue stuck" with additional information (this is all for the same dungeonId)

https://imgur.com/a/wv57okA

In every case there is someone queued as "None" role.

I haven't really put that much time into it:

diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index ecfadaed0..0d85895bd 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -820,8 +820,9 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles)
     for (LfgRolesMap::iterator it = groles.begin(); it != groles.end(); ++it)
     {
         uint8 role = it->second & ~PLAYER_ROLE_LEADER;
+        // @robinsch: TODO: Debug why this is happening. For now every player can be a DPS
         if (role == PLAYER_ROLE_NONE)
-            return false;
+            role = PLAYER_ROLE_DAMAGE;

         if (role & PLAYER_ROLE_DAMAGE)
         {

roles are not validated at all for joining solo queue - they come from client and must not be trusted to be always valid (you could modify packet to send no role or something invalid like mage tank)

[17:21:40] One or more dungeons was not valid.
Repo:
queue with 4, a separate member alone, queues as tank.
vote kick tank.
requeue.
find you forgot to change role of one member to be tank, stop queue.
with someone who want to be the tank try to requeue changing role to tank

https://i.imgur.com/MdkNkSJ.jpg

There are also other parts where I added fallbacks from queueing as NONE. I also removed players from selection queue if they outlevel the dungeon. I had players with level 25+ in RFC queue.

Will check the next day if I still experience this issue otherwise I can post a full diff.

I have an issue:
player level is 80 and join random wlk dungeons ,the daily quest reward show is wrong,
xp should hide like common quest.

  • remove queue cd on kick. ada4e43

I opened a PR for the re-queue issue

+1 #24445

roles are not validated at all for joining solo queue - they come from client and must not be trusted to be always valid (you could modify packet to send no role or something invalid like mage tank)

initial validation done by https://git.io/JfNa8

  • [x] enter a lfg dungeon, 1 leaves, try to kick another, 1 agrees, 1 denies: vote doesn't end but waits till it expires f0f0de01fad0bc7bdfda215ec1a0f5b58d4a0ebf
Was this page helpful?
0 / 5 - 0 ratings

Related issues

deadmanevil picture deadmanevil  路  61Comments

Kingswow picture Kingswow  路  55Comments

Carbenium picture Carbenium  路  47Comments

Treeston picture Treeston  路  56Comments

Jildor picture Jildor  路  131Comments