Not signed in (Sign In)
    • CommentAuthoryiNXs
    • CommentTimeOct 18th 2009
     
    Hi!

    I've searched everywhere in the settings, helpfiles, wiki and the forum, but I can't find very much about this functionality. I desperately need to turn it off, but it doesn't seem possible by settings. I've even been going through the code hoping it was a simple matter of erasing a certain line somewhere, but haven't been able to safely isolate that part yet (but I am that desperate).

    The reason I don't want it is because besides being completely unnecessary for me anyway (I regularly do full or category scans), it also interferes with other addons I use. I use the addon LilSparky's workshop for example, but also Quickauctions2. Whenever I open Sparky's workshop, it checks if Auctioneer has fresh data, and buffers the prices of all my craftables, which can take up to a minute. So whenever I sell something, check something, or anything else on auctioneer, there will be fresh data forcing that addon to recache again. It get's worse when I mass cancel/sell with quickauctions, because long after that addon is done, auctioneer is still processing each individual query. If I open any profession window and processing is still busy, it forces sparky's addon to constantly restart recaching each process, slowing my machine to a near standstill, sometimes resulting disconnects, but always in a very long wait with an unresponsive game.

    Long story short. Is there any way to turn it off? and if not, could this please be implemented in a future version? I like auctioneer a lot, but lately I've been needing to turning it off more and more just because of this. I hope there's a nicer solution to this.

    Cheers!
    •  
      CommentAuthorMattBnr
    • CommentTimeOct 18th 2009
     
    ill let a dev post here on how the scanning works and why it is needed. also in a future release the processing has been dramatically increased so that might help some also. also perhaps its the way lil sparky and quickauctions are handling the auctions that is causing the problems and not auctioneer explicitly. just a thought.
    •  
      CommentAuthordinesh
    • CommentTimeOct 18th 2009
     
    I'm pretty sure there is an option to disable scanning via the browse tab, but I am not in game to check.
    • CommentAuthorApaseall
    • CommentTimeOct 18th 2009
     
    Loaded QuickAuctions2 to take a peek at it. During QA2s processing I do see the auc-adv scan bar at the top right flash up briefly.
    Not experiencing any slow downs or freezes.
    I also use lilsparkys workshop and have not experienced lengthy delays with that either.

    What is your latency like, are you at a busy AH, how long do your getall scans take?
    Just wondering if I happen to not notice the time problems due to a reasonable connection/latency experience.
    • CommentAuthoryiNXs
    • CommentTimeOct 18th 2009
     
    Thanks for the quick responses!

    @Matt:
    Are you sure it's a necessary function? as long a as regular manually invoked scanning is done, it shouldn't add much extra and operate just like the classic auctioneer, scanning wise. About the other 2 addons, they work fine if I use them together with Auctionator f.e. It's the automatically invoked scanning by auctioneer that interferes with their operation, I can't see any way how they could fix that on their side: any addon requesting an AH search will invoke auctioneer to incrementally scan, there's doesn't seem a way around it.

    @Apaseall:
    I should add it has been getting worse lately and it wasn't very bad in the beginning too. This seems to have 3 reasons. The first is because the amount of concurrent auctions. I have are around 600 now, this influences it because QA searches a lot more items per run because of that, so a lot more per-item incremental scans. The second being the age of the database, because of heavy competition I'm forced to run QA scans often. The AA db seems to get fragmented quicky doing those scans and get's slower and slower, deleting the DB helps a bit, but it's a very temporary patch that works shorter and shorter. The last one is the amount of craftables available (for sparky). You won't notice much with professions where you've just got a basic set. When you've got +400 recipes sparky's caching takes quite while, and this is also influenced by the 2nd point, but even with a fast db, having a good set of craftables and having auctioneer+profession window open will cause slows. I have inscription with nearly every recipe f.e.

    There is another thing I've noticed with point 2, but that's besides this. After having invoked a lot of those individual searches, the db seems to get corrupted. When I go to the appraiser the cache view often shows that I have many auctions going for an item, while in fact it's just 2. A refresh fixes this, but this does seem to happen when many incremental scans have been done, never after a manual full scan. This is also a reason for me to not want those incremental scans. It solves all of this and I can't see any downsides for regular full-scanners like me.

    @Dinesh: I can't find any button to disable incremental scanning on the browse tab, just checked again. Is it perhaps a modifier key combo I can push?
    •  
      CommentAuthordinesh
    • CommentTimeOct 19th 2009
     
    i looked earlier and couldn't find it. maybe it was removed at some point. or maybe i am just having some brain issues, heh.
    • CommentAuthoryiNXs
    • CommentTimeNov 23rd 2009
     
    Ok, so I've just accepted the problem for a while as the option doesn't exist, and I assumed from the responses there aren't any plans on adding it (though may I stress the need for it again!). For me it was slowly getting to a point that I either had to drop auctioneer, or dig in the code again and fix it. I do like the appraiser though and I have quite a few macros that use the lowest buyout functions from AA, so I chose the last option.

    So, for those like me (and I know there quite a few) that want to get rid of that automatic scanning function that interferes with just about every other AH addon in existence, often causing incredible slows and sometimes disconnects, I've made a fix. The cause of the problem is that Auctioneer replaces an internal wow function with it's own, so any addon that thinks it's calling the internal warcraft auction interface is actually forced to use auctioneer, which in it's turn does a lot of processing. This functionality is a cool trick to help (just help) auctioneers database to stay up to date, but is completely useless if you run regular scans yourself. I fixed (removed) it by doing the following:

    - Open the CoreScan.lua file in a decent text editor
    - Rename the QueryAuctionItems function to something else, like QueryAuctionItemsAucAdv
    - Rename all references to that function in the same way (make sure you don't rename any references that are preceded with private.Hook.)
    - Remove the hook to the wow-internal QueryAuctionItems function (this line: private.Hook.QueryAuctionItems = QueryAuctionItems)
    - Replace all references to the function private.Hook.QueryAuctionItems with the original QueryAuctionItems (so remove the "private.Hook." part)

    Now what I did falls in the "hack" category, so even though after having tested it for a few days and only seeing everything running smoother and faster then ever before, beware that there might be a bug or two I didn't come across myself.

    I hope you guys from Auctioneer make a real option to turn it off someday. Auctioneer is a great addon, but there is often the need to use other specialized addons besides it, like QuickAuctions f.e. Personally I also use Auctionator for it's great mass-buying and easy canceling functionality (hint :)). The thing is, in my testing experience it is only Auctioneer that is unable to work together with other AH addons, not the other way around, so perhaps a "safe mode" option that prevents the hijacking of warcraft internal functions would be a nice idea.
    •  
      CommentAuthordinesh
    • CommentTimeNov 23rd 2009 edited
     
    You can definitely add a JIRA for it if you'd like.

    I don't have any problem with users hacking their own code, but please do realize that we won't be able to support it once you do.

    For the moment at least, we have purposefully chosen not to implement mass cancellation options.
  1.  
    The MarketWatcher addon gets around this:


    function MarketWatcher.QueryServer(name, minLevel, maxLevel, invTypeIndex, classIndex, subclassIndex, page, isUsable, qualityIndex, getAll)
    if ( AucAdvanced ) then
    AucAdvanced.Scan.Private.Hook.QueryAuctionItems(name or "", minLevel, maxLevel, invTypeIndex or 0, classIndex or 0, subclassIndex or 0,
    page or 0, isUsable or 0, qualityIndex or 0, getAll);
    else
    QueryAuctionItems(name or "", minLevel, maxLevel, invTypeIndex or 0, classIndex or 0, subclassIndex or 0, page or 0, isUsable or 0, qua
    lityIndex or 0, getAll);
    end
    end


    I think LSW could be easily modified to not update pricing on each item scan, in LilSparkysWorkshop/pricingSupport/auctioneer_support.lua :

    function lib.Processor(callbackType)
    if (callbackType == "scanstats") then
    --comment this line out LSW:FlushPriceData()
    end
    end
    • CommentAuthorApaseall
    • CommentTimeNov 24th 2009
     
    Can someone spell out for me what is being discussed in this thread as I am uncertain?

    I think the question being asked is if a part of auc-adv can be toggled off via a tickbox in auc-adv configuration.
    The part is question is performing scans which are slowing down both auc-adv and other auction house addons.
    I think the purpose of the part in question is to use fresh values for prices for items.
    To do that a scan of the auction house is performed.
    If someone has just performed a getall scan the item prices will be fresh and therefor subsequent scans are not required.
    In other words, if you are a casual user of auc-adv then the item price values need to be made current (fresh) and the part of auc-adv in question is required.
    If on the other hand you are a heavy user of auc-adv your item price values will be fresh and the part of auc-adv in question is redundant.

    If my understanding above is correct then I think a fresheness test (how stale item price values are) seems in order.
    Some form of test to see how long ago the last scan was performed.
    Probably with an option in auc-adv configuration to allow the user to set how much time they will allow after a scan before fresh item price values are considered old.
    Possible that option is not required if the premise that fresh item price values turn stale after the interval allowed by blizz for getall scans viz. anything older than 15mins is considered stale.

    Is my understanding correct ?
    • CommentAuthorAnrDaemon
    • CommentTimeNov 24th 2009
     
    To my understanding, you are correct.
    However, i'm as ... erm... moderate AH user, appreciate the on-the-fly snapshot update.
    It allow me to cleanup search results from items already disappeared from AH.
    • CommentAuthorApaseall
    • CommentTimeNov 24th 2009
     
    Glad I have the gist of the subject, thanks AnrDaemon.
    I understand that different users have different requirements.
    Hence my suggestion of allowing the user the option via configuration menu of how they would like auc-adv to work for them.
  2.  
    Posted By: ApaseallCan someone spell out for me what is being discussed in this thread as I am uncertain?


    From my understanding, Auctioneer intercepts the Blizzard QueryAuctionItems() function so that it can do processing on each manual scan from the default Browse tab. If another addon calls this function repeatedly, it results in Auctioneer doing a lot of processing. This would probably be an issue if another addon is quickly calling this function several hundred times in order to scan, say, each individual glyph just before posting each one.
    • CommentAuthoryiNXs
    • CommentTimeNov 24th 2009
     
    Hence my suggestion of allowing the user the option via configuration menu of how they would like auc-adv to work for them.


    This is exactly what I had in mind, some sort of "safe mode" / "disable incremental scans" option.

    I'll try to put this request in Jira as Dinesh suggested.

    **This next part is meant for developers, to prevent confusion**

    There is a reason why I think it might be safer to make Auctioneer be able to turn it of instead of the other addons (besides it being easier and safer and more logical to fix it at the source, instead of all the other addons, f.e. that's going to be update hell in 3.3). The problem seems to extends beyond AH addons, I've found one example:

    This is going to sound strange, though for experienced programmers, there's probably nothing that's beyond believable.

    I've recently noticed there is also an interference between Auctioneer and Bossnotes(!). Only after Auctioneer did a lot of incremental scans (talking about +300, caused by QA2) and entering an instance with the Bossnotes addon installed, this addon will generate very long freezes whenever you mousehover, or target an elite mob in that instance, making it unplayable until a /rl is performed. I've singled it out to these 2 addons: Bossnotes & Auctioneer (QA2 and bossnotes alone had no issues). I don't know which one is the cause of the problem, and it doesn't matter because my previous mentioned "hack" seems to solve this too. I'm assuming, because both use a big database it has something to do with memory usuage (perhaps fragmentation or something, just a wild guess). With low AH usage, the freezes are so short they're hardly noticeable, but with heavy usage they become a problem.

    I found and isolated this conflict, but I'm thinking there could be more addons with a similar conflict. Having this safe-mode option could very well solve more then already mentioned.
    • CommentAuthorAnrDaemon
    • CommentTimeNov 24th 2009
     
    Boom. This in fact the issue i've faced several times.
    I'm in instnce, initiating pull... and my whole screen froze and server disconnecting me in a minute.
  3.  
    Ask the QA2 author insert the following code into his main lua:

    if AucAdvanced then return end

    Problem solved.
    • CommentAuthorApaseall
    • CommentTimeNov 24th 2009 edited
     
    Actually rather than asking all other addon authors to modify their addons to account for something auc-adv has done surely the simplest answer is to make a change in auc-adv.
    Having an addon (auc-adv) that forces all other addons touching that area to check to see if that addon (auc-adv) is present seems unexceptably bad practice.

    Having an addon (auc-adv) that causes other addons to crash wow is unforgivable.

    (just my thoughts)

    --edit--
    Surely the fix is something simple along the lines of:

    auc-adv function that replaces blizz function()
    if safe mode
    do blizz thing
    else
    do auc-adv thing
    •  
      CommentAuthorMattBnr
    • CommentTimeNov 24th 2009
     
    Posted By: ApaseallActually rather than asking all other addon authors to modify their addons to account for something auc-adv has done surely the simplest answer is to make a change in auc-adv.


    why easier for one addon to change a code then another? its the same thing. either we change or they change.



    Posted By: ApaseallHaving an addon (auc-adv) that causes other addons to crash wow is unforgivable.


    then i would think the addon causing the crash should change which isn't auctioneer. its the other one. we cant be expected to comply with every addon out there as there are thousands of addons out in this game. gotta be a little give and take here.
    •  
      CommentAuthordinesh
    • CommentTimeNov 24th 2009 edited
     
    to clarify:

    * the incremental scanning is a feature of Auctioneer Advanced. In fact, it was the first feature. it pre-dates implementation of any scanning functionality. it is from a time when norgs was considering having auctioneer (advanced) not even have any scanning, and just having prices update dynamically based on searches. (mostly because that is how he used the AH primarily)

    * i am 95% certain that we used to have an option to turn off dynamic updates, but i have no idea when it disppeared.

    * even if you have just done a getall scan, there is still a value in having dynamic updates on to update the snapshot as things are purchased and listed (by you and by others).

    I am in agreement that we should add the ability to turn off dynamic updating within Auctioneer, rather than force other applications to insert targeted defensive code that checks to see if we are installed before doing whatever it is they want to do.

    aside: i have never used bossnotes2, so i have no idea what the conflict is. however, i wouldn't put all my eggs into having this change solve that problem - i sorta doubt that it will, unless BN2 has queryauctionimage hooked somehow, which i rather doubt. possibly it's related to the name resolution queue, which will get massively delayed if you've done a getall scan within the 5-10 minutes previous.

    aside 2: no, it is not as easy as "if safemode". we will have to carefully inspect the entry points into our core scanning code and devise an option. having said that, it should be straightforward, if not easy.
    • CommentAuthorApaseall
    • CommentTimeNov 24th 2009
     
    From what I read above I think this:
    We are talking about the function QueryAuctionItems defined in CoreScan.lua.
    The QueryAuctionItems function exists as a blizz api but the use of:
    private.Hook.QueryAuctionItems = QueryAuctionItems
    means that instead of using the blizz api all calls are made to the auc-adv QueryAuctionItems function instead?

    Any calls wanting the blizz api QueryAuctionItems have to be made via private.Hook.QueryAuctionItems and all calls to QueryAuctionItems use the auc-adv function instead?

    Is there a specific reason why auc-adv called their function the same name as the blizz api?
    Appart from providing a similar functionality/task?
    Surely by doing so any addon that calls QueryAuctionItems will be using the auc-adv function instead of the blizz api (assuming the hook is global and no scoped to auc-adv)?
    Was that intended?

    What I was thinking was something like:
    function QueryAuctionItems(name, minLevel, maxLevel, invTypeIndex, classIndex, subclassIndex, page, isUsable, qualityIndex, GetAll, ...)
    if toggleforsafemode
    then return identical data to blizz api (private.Hook.QueryAuctionItems?)
    else
    do nice auc-adv stuff
    end

    I think that would mean that you can call blizz directly with private.Hook.QueryAuctionItems, or indirectly with QueryAuctionItems if safe mode has been toggled in auc-adv configuration.
    So only one point of code change, all other existing code could remain the same?

    I may not have understood quite how this hook stuff works so I may be barking up the wrong tree as I have not got as far as hooking with my dabbles with lua. :)
    •  
      CommentAuthordinesh
    • CommentTimeNov 24th 2009 edited
     
    Yes, it is intentional. Hooking functions is pretty standard in addon development. basically, you hook a function when you want to modify the default functionality somehow. in our case, when someone performs a default browse pane search, we want to hook the function call so that we can do some additional stuff (read: "scan" the auctions returned and add them to our snapshot image, update statistics, etc.).

    http://www.wowwiki.com/Hooking_functions may be helpful.
    • CommentAuthorApaseall
    • CommentTimeNov 24th 2009
     
    Thanks dinesh going for a read now :)
    • CommentAuthorAnrDaemon
    • CommentTimeNov 24th 2009
     
    I think, in this isolated case (QA2 vs. AA) QA2 must give up and stick to best coding practice.
    Hammering API with endless calls of one slow function (any data access function considered slow, unless you accessing cached data storage, that speed up retrieval for a price of actuality) is a bad ju-ju.
    • CommentAuthoranoxia
    • CommentTimeNov 24th 2009
     
    Posted By: AnrDaemonI think, in this isolated case (QA2 vs. AA) QA2 must give up and stick to best coding practice.
    Hammering API with endless calls of one slow function (any data access function considered slow, unless you accessing cached data storage, that speed up retrieval for a price of actuality) is a bad ju-ju.


    AH query functions aren't "data access" functions though. They don't retrieve anything. But Auctioneer responds to a query by firing off lots of calls GetAuctionItemInfo, which IS a "data access" function. The query primes the data that it can return.
    • CommentAuthorAnrDaemon
    • CommentTimeNov 24th 2009
     
    To my understanding, AA mimick Blizzard behavior, while adding necessary own stuff.
    Then, what's the real issue?
    • CommentAuthoranoxia
    • CommentTimeNov 25th 2009
     
    Posted By: AnrDaemonTo my understanding, AA mimick Blizzard behavior, while adding necessary own stuff.
    Then, what's the real issue?


    Seems there are two issues. One is that Auctioneer responds to queries by doing a lot of data processing in the background. A way to minimize that is to reduce the number of scanprocessors you use (e.g. by enabling only a single stats module).
    The other is that some addons respond to updates to auctioneer's snapshot by doing a lot of background processing themselves. Skillet does this, for instance. If those addons want to restrict themselves to getall scans, they could hook QueryAuctionItems themselves so that they will know what sort of update will follow. Or Auctioneer could tell the addons this when it sends out its updates (maybe it does this already).
    • CommentAuthorlilsparky
    • CommentTimeDec 10th 2009
     
    i'm late to the party here, but i'll chime in with how lsw is impacted (and how it's impacting other things).

    the way lsw works currently, any update to the cache fires off a recomputation of prices. i don't have individual times for each item, instead i simply have a "cache is dirty" flag that is set when new data is available (after the cache has been updated by auc-adv). this means the next update to the tradeskill frame with want to redraw the lsw values which in turn will cause a full recompute cycle (and caching of those newly computed values). depending on the pricing module, this might be a long process for little actual gain -- particularly if there are a number of scans being performed in sequence.

    what would seem to make the most sense would be a throttle system for auc-adv's triggering of the "new items in cache" callback. something like waiting 5 seconds after the last scan before firing off the callback -- if a new scan comes in during that time, then reset the timer. this would hopefully only fire off a single lsw recompute and only with the most up-to-date values.
    •  
      CommentAuthorNechckn
    • CommentTimeDec 10th 2009
     
    Folks,

    The associated Jira is http://jira.norganna.org/browse/ADV-505 .

    Feel free to vote for it.

    Happy Sales,

    Nikk :shades:
    • CommentAuthorApaseall
    • CommentTimeDec 14th 2009
     
    Voted for.
    I like the suggestion of a throttle system to reduce the number of updates other addons etc when multiple scans are done in a short period of time.
    •  
      CommentAuthorbrykrys
    • CommentTimeDec 14th 2009
     
    The Processor message most module use to flush their price and tooltip caches is "scanstats". I don't see any practical way we could throttle or delay this message.
    It broadcasts stats about the scan that just finished, so each scan needs to broadcast a message (i.e. you can't consolidate several scans into one message).

    We do have one module, Appraiser, that catches the "scanstats" message and initiates a 1-frame delay before updating its display - this is because it is unsafe to call most API functions (GetMarketPrice, GetAlgorithmValue, QueryImage) from inside the "scanstats" message itself.
    • CommentAuthorApaseall
    • CommentTimeDec 16th 2009
     
    Here are a couple of thoughts that popped into my head, just sharing them.

    Prehaps a wrapper ?
    Say function A is what is used atm. Each scan broadcasts a message after the scan is complete. Works fine for single scans i.e. scans with long pauses between repeats. Causes issues that initiated this discussion.

    Say function B is made. This would appear to function exactly like function A if scans are made with pauses above a certain time x.
    Function A called when single scans are made, function B called when multiple scans are made ie batch post ?

    Function B calls function A but with a passed parameter to stop function A from broadcasting itself. Therefore function A contains all the good code and no duplication.
    Function B only broadcasts if time > x or at end of batch post queue.
    • CommentAuthorProwell
    • CommentTimeJan 23rd 2010
     
    I will pipe in on this finally. The old Auctioneer did not really turn off partial updates either. However, since it didn't use a coroutine, many people never realized this. The old auctioneer intercepted the same routine that Auc-Advanced does now.

    We have several devs looking at the scan routine to improve its efficiency. I will agree that auc-advanced shouldn't cause other addons trouble just by looking at/using the same data they are requesting.


    If we update our AH snapshot and statistics, another addon can see this if they are tied into our addon. It can choose what to do at that point. We are adding some more information to our scan complete event so our own pieces and external addons can make more appropriate choices on what to do. However, it will be up to those addons to make the proper choices. If they choose to review everything every time a change is made, that really isn't our addons problem. Perhaps that addon needs an option to only refresh from Auc-Advanced every X minutes or so?
    • CommentAuthorVladdy
    • CommentTimeJan 23rd 2010
     
    Great discussion. I always wondered why LSW would keep updating itself every second as I was doing search ui bottomscans.
World of Warcraft™ and Blizzard Entertainment™ are trademarks or registered trademarks of Blizzard Entertainment, Inc. in the U.S. and/or other countries.