TrinityCore / TrinityCore

TrinityCore Open Source MMO Framework (master = 11.0.2.56819, 3.3.5 = 3.3.5a.12340, cata classic = 4.4.0.56713)
http://www.trinitycore.org
GNU General Public License v2.0
9.56k stars 6.06k forks source link

[3.3.5][6.x] LFG issues #14331

Open jackpoz opened 9 years ago

jackpoz commented 9 years ago

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

jackpoz commented 9 years ago

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

ghost commented 9 years ago

nvm, last player missing solved.

Aokromes commented 9 years ago
[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)
ghost commented 9 years ago

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

xurxogr commented 9 years ago

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

ghost commented 9 years ago

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

ghost commented 9 years ago

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

jackpoz commented 9 years ago

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

ccrs commented 9 years ago

i have never enabled it, but:

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

AllowTwoSide.Interaction.Group = 0
ghost commented 9 years ago

Ye i think that @ccrs !

w1sht0l1v3 commented 9 years ago

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.

ghost commented 9 years ago

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

ghost commented 9 years ago

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 )

ghost commented 9 years ago

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.

Voidx commented 9 years ago

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

ghost commented 9 years ago

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

ghost commented 9 years ago

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

Aokromes commented 9 years ago

You don't know rar you dont?

ghost commented 9 years ago

@Aokromes Like you want, in zip, link: https://mega.nz/#!ylpVzTpa!sQujKqSfCgUz44Q6SK_va1dN5NEPEXakSvaVCitFDAc

Aokromes commented 9 years ago
jackpoz commented 9 years ago

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

jackpoz commented 9 years ago

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)

jackpoz commented 9 years ago

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

ghost commented 9 years ago

Not enough players to test

Voidx commented 8 years ago

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.

Aokromes commented 8 years ago

2256303413312619130 is group. it's perfect valid.

xurxogr commented 8 years ago

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;
 }
Voidx commented 8 years ago

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

Rushor commented 8 years ago

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

ghost commented 8 years ago

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.

jackpoz commented 8 years ago

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 ?

Rushor commented 8 years ago

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

ghost commented 8 years ago

@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 commented 8 years ago

added https://github.com/TrinityCore/TrinityCore/issues/14705 to the list

ghost commented 8 years ago

@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

Rushor commented 8 years ago

queued as a healer and healer missing

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

ghost commented 8 years ago

No. I blocked multiple roles on code.

ghost commented 8 years ago

Guys, pls test this. @Rushor @jackpoz

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

jackpoz commented 8 years ago

No. I blocked multiple roles on code.

I have no idea what custom changes you applied

ghost commented 8 years ago

@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.

ghost commented 8 years ago

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

ghost commented 8 years ago

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

ghost commented 8 years ago

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

Aokromes commented 5 years ago

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:

Aokromes commented 5 years ago

requeue fixed by 7fb5233

sirikfoll commented 5 years ago

@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 ^^

robinsch commented 5 years ago

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)
         {
Shauren commented 5 years ago

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)

Aokromes commented 5 years ago

[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

robinsch commented 5 years ago

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.