Question regarding offline player info and namechanges

This question pertains to the intrinsic, core Sponge mechanisms available to plugin authors, and NOT to any existing plugins and what those plugins may choose to do. Assume that 100% of my server plugins are written by me, and thus I ask for clarification of the mechanisms that I have access to when coding.

Setup Scenario: Longtime player Bob Smith from New Jersey plays on server as DeathMaster9000, then doesn’t login for a few days. Then he decides after 4 years, time for a namechange, and changes it to SooHigh420OhYeah, but doesn’t login to the server yet. After the 30 days or whatever, some guy Marcus from eastern Europe is viewing a ‘recently made available minecraft names’ list and sees DeathMaster9000 has become available, and figures thats THE name he wants to change from BieberFab4Eva, and changes his name.

Now the odds of Marcus finding my server and wanting to join are is about 0.0003%, and I dont really care if he does or doesn’t one far away day in this scenario, because everything will be uuid based and he wont take over the account, etc, etc, that we know. But at this time in the scenario, Bob hasn’t yet returned to the site either.

The Question:
IF, on my site, during this moment in time, someone wants to leave a mail message for Bob or check when he was last on, or do some kind of action that requires converting that name to a UUID to access info from a database or update a uuid-dat file or such - something that requires a uuid lookup on a offline player at this time, several weeks or months after he was last on, after he changed it, after someone else picked up the name, and he still hasn’t logged back on yet with his new name is performed…
THEN Will it only look at MY SERVER entries to find the DeathMaster9000 UUID belonging to Bob - the player from my site, the only UUID that is relevant for my server - or will it make the call to mojang to report back the UUID for Marcus who has never and will likely never be on my site.

If it is a complicated process (IE It checks server cache file first, but since cache only stores a limited number of records, its possible that the cache displaces Bobs information when it comes time, so then the server will check through files stored in x location if its been less than n days or else goes to mojang…) then are there ways to adjust those steps or options??

I can not see any potential value to ME on MY server for looking up a uuid of a playername from my server that will return the ‘realtime data’ instead of my-server-historical data, or vice-versa reporting back that a uuid belongs to “SooHigh420OhYeah” who hasn’t yet logged back into the server because his folks found ‘his stash’ and hes grounded another week yet still, when as far as the server is concerned, that uuid is for the player WE know as DeathMaster9000. When Bob rejoins the server, and his login will now report his name is SoHigh… sure, at THAT moment, we now know and care. After all, he may be gone for several more months, and change his name again to KingUnicornFart without ever having logged back in after realizing SoHigh drew too much attention — so when Bob returns as KingUnicornFart, sure, okay, welcome back Bob, formerly known to us as DeathMaster9000… We dont care what happened while he was gone, the name SoHigh… means nothing to the folks on my server.

So how does Sponge work for addressing offline player name to UUID lookups (and uuid to name lookups as well), pertaining to my scenario; are there ways to specify /limit / force particular lookup mechanisms, how does caching come into the equation with also the concern the main cache file is limited and may overwrite pertanent player info long before an intrinsic expiry or refreshing of it occurs, if that cache is used at all or some other system, etc, etc.

I have tried to glean what i could from conversational threads, but in the end, I cant see the clear enough information that is the way Sponge actually works.

tl;dr: {{Record not found. Too much detail in example scenario to ddress, only long version available }}

I’m fairly certain that the default behavior is to re-lookup the UUID if the player joins after it has been expired, but I’m not sure. Furthermore, it is possible for plugins to implement GameProfileManager (I think that’s the name), so the UUIDs may be potentially fetched differently. You could always just store your own cache to ensure it acts as you expect.