Bungie-net / api

Resources for the Bungie.net API
Other
1.22k stars 92 forks source link

PGCRs do not return consistent data #1857

Open d2orbc opened 11 months ago

d2orbc commented 11 months ago

Example.

PGCR id 13927542931

When requested at 2023-10-03 18:12:22.914633 (UTC) Reported end time (period + duration seconds): 2023-10-03 18:10:33

Only one entry was returned. Re-request this same PGCR now and you will see three entries.

{"ErrorCode":1,"ErrorStatus":"Success","Message":"Ok","MessageData":{},"Response":{"activityDetails":{"directorActivityHash":3449817631,"instanceId":"13927542931","isPrivate":false,"membershipType":3,"mode":46,"modes":[7,46,18],"referenceId":3449817631},"activityWasStartedFromBeginning":true,"entries":[{"characterId":"2305843009295074739","extended":{"values":{"medalUnknown":{"basic":{"displayValue":"1","value":1}},"precisionKills":{"basic":{"displayValue":"53","value":53}},"weaponKillsAbility":{"basic":{"displayValue":"0","value":0}},"weaponKillsGrenade":{"basic":{"displayValue":"1","value":1}},"weaponKillsMelee":{"basic":{"displayValue":"12","value":12}},"weaponKillsSuper":{"basic":{"displayValue":"10","value":10}}},"weapons":[{"referenceId":2218569744,"values":{"uniqueWeaponKills":{"basic":{"displayValue":"38","value":38}},"uniqueWeaponKillsPrecisionKills":{"basic":{"displayValue":"66%","value":0.6578947368421053}},"uniqueWeaponPrecisionKills":{"basic":{"displayValue":"25","value":25}}}},{"referenceId":2187717691,"values":{"uniqueWeaponKills":{"basic":{"displayValue":"34","value":34}},"uniqueWeaponKillsPrecisionKills":{"basic":{"displayValue":"71%","value":0.7058823529411765}},"uniqueWeaponPrecisionKills":{"basic":{"displayValue":"24","value":24}}}},{"referenceId":2130065553,"values":{"uniqueWeaponKills":{"basic":{"displayValue":"4","value":4}},"uniqueWeaponKillsPrecisionKills":{"basic":{"displayValue":"100%","value":1}},"uniqueWeaponPrecisionKills":{"basic":{"displayValue":"4","value":4}}}}]},"player":{"characterClass":"Titan","characterLevel":50,"classHash":3655393761,"destinyUserInfo":{"applicableMembershipTypes":[3,2],"bungieGlobalDisplayName":"charted_gamer007","bungieGlobalDisplayNameCode":7644,"crossSaveOverride":2,"displayName":"charted_gamer007","iconPath":"/common/destiny2_content/icons/35ad1236cc60b36c160dde8e3fda90aa.jpg","isPublic":true,"membershipId":"4611686018452301053","membershipType":2},"emblemHash":908153541,"genderHash":2204441813,"lightLevel":1828,"raceHash":2803282938},"score":{"basic":{"displayValue":"438,216","value":438216}},"standing":0,"values":{"activityDurationSeconds":{"basic":{"displayValue":"22m 16s","value":1336}},"assists":{"basic":{"displayValue":"75","value":75}},"completed":{"basic":{"displayValue":"Yes","value":1}},"completionReason":{"basic":{"displayValue":"Objective Completed","value":0}},"deaths":{"basic":{"displayValue":"2","value":2}},"efficiency":{"basic":{"displayValue":"93.00","value":93}},"fireteamId":{"basic":{"displayValue":"-2147483648","value":-5694791346349328000}},"kills":{"basic":{"displayValue":"111","value":111}},"killsDeathsAssists":{"basic":{"displayValue":"74.25","value":74.25}},"killsDeathsRatio":{"basic":{"displayValue":"55.50","value":55.5}},"opponentsDefeated":{"basic":{"displayValue":"186","value":186}},"playerCount":{"basic":{"displayValue":"3","value":3}},"score":{"basic":{"displayValue":"438,216","value":438216}},"startSeconds":{"basic":{"displayValue":"0m 0s","value":0}},"teamScore":{"basic":{"displayValue":"283,514","value":283514}},"timePlayedSeconds":{"basic":{"displayValue":"22m 16s","value":1336}}}}],"period":"2023-10-03T17:48:17Z","startingPhaseIndex":0,"teams":[]},"ThrottleSeconds":0}
d2orbc commented 11 months ago

under the conditions of my API consumer, this seems to affect ~44 in 100k (sampled across PGCR range 13927500000-13927600000)

d2orbc commented 11 months ago

Workaround: two checks:

.08% of my corpus has a missing "startingPhaseIndex" field.

Another example. On this one, the second fetch included:

- {"ErrorCode":1,"ErrorStatus":"Success","Message":"Ok","MessageData":{},"Response":{"activityDetails":{"directorActivityHash":88632762,"instanceId":"13927501283","isPrivate":false,"membershipType":0,"mode":2,"modes":[7,2],"referenceId":88632762},"entries":[{"characterId":"2305843009268559243","player":{"characterClass":"Warlock","characterLevel":50,"classHash":2271682572,"destinyUserInfo":{"applicableMembershipTypes":[3,2],"bungieGlobalDisplayName":"made-fc","bungieGlobalDisplayNameCode":1183,"crossSaveOverride":2,"displayName":"made-fc","iconPath":"/common/destiny2_content/icons/24e9133c9cc157853762de5a2c3853aa.jpg","isPublic":true,"membershipId":"4611686018449010608","membershipType":2},"emblemHash":1907674137,"genderHash":2204441813,"lightLevel":1584,"raceHash":3887404748},"score":{"basic":{"displayValue":"0","value":0}},"standing":0,"values":{"activityDurationSeconds":{"basic":{"displayValue":"9m 37s","value":577}},"assists":{"basic":{"displayValue":"0","value":0}},"completed":{"basic":{"displayValue":"Yes","value":1}},"completionReason":{"basic":{"displayValue":"Objective Completed","value":0}},"deaths":{"basic":{"displayValue":"0","value":0}},"efficiency":{"basic":{"displayValue":"80.00","value":80}},"fireteamId":{"basic":{"displayValue":"-2147483648","value":-3420175362064546300}},"kills":{"basic":{"displayValue":"80","value":80}},"killsDeathsAssists":{"basic":{"displayValue":"80.00","value":80}},"killsDeathsRatio":{"basic":{"displayValue":"80.00","value":80}},"opponentsDefeated":{"basic":{"displayValue":"80","value":80}},"playerCount":{"basic":{"displayValue":"1","value":1}},"score":{"basic":{"displayValue":"0","value":0}},"startSeconds":{"basic":{"displayValue":"0m 0s","value":0}},"teamScore":{"basic":{"displayValue":"0","value":0}},"timePlayedSeconds":{"basic":{"displayValue":"9m 37s","value":577}}}}],"period":"2023-10-03T17:54:21Z","teams":[]},"ThrottleSeconds":0}
+ {"ErrorCode":1,"ErrorStatus":"Success","Message":"Ok","MessageData":{},"Response":{"activityDetails":{"directorActivityHash":88632762,"instanceId":"13927501283","isPrivate":false,"membershipType":0,"mode":2,"modes":[7,2],"referenceId":88632762},"activityWasStartedFromBeginning":true,"entries":[{"characterId":"2305843009268559243","extended":{"values":{"precisionKills":{"basic":{"displayValue":"2","value":2}},"weaponKillsAbility":{"basic":{"displayValue":"0","value":0}},"weaponKillsGrenade":{"basic":{"displayValue":"0","value":0}},"weaponKillsMelee":{"basic":{"displayValue":"2","value":2}},"weaponKillsSuper":{"basic":{"displayValue":"3","value":3}}},"weapons":[{"referenceId":613334176,"values":{"uniqueWeaponKills":{"basic":{"displayValue":"46","value":46}},"uniqueWeaponKillsPrecisionKills":{"basic":{"displayValue":"0%","value":0}},"uniqueWeaponPrecisionKills":{"basic":{"displayValue":"0","value":0}}}},{"referenceId":4293613902,"values":{"uniqueWeaponKills":{"basic":{"displayValue":"16","value":16}},"uniqueWeaponKillsPrecisionKills":{"basic":{"displayValue":"13%","value":0.125}},"uniqueWeaponPrecisionKills":{"basic":{"displayValue":"2","value":2}}}},{"referenceId":268260372,"values":{"uniqueWeaponKills":{"basic":{"displayValue":"1","value":1}},"uniqueWeaponKillsPrecisionKills":{"basic":{"displayValue":"0%","value":0}},"uniqueWeaponPrecisionKills":{"basic":{"displayValue":"0","value":0}}}}]},"player":{"characterClass":"Warlock","characterLevel":50,"classHash":2271682572,"destinyUserInfo":{"applicableMembershipTypes":[3,2],"bungieGlobalDisplayName":"made-fc","bungieGlobalDisplayNameCode":1183,"crossSaveOverride":2,"displayName":"made-fc","iconPath":"/common/destiny2_content/icons/24e9133c9cc157853762de5a2c3853aa.jpg","isPublic":true,"membershipId":"4611686018449010608","membershipType":2},"emblemHash":1907674137,"genderHash":2204441813,"lightLevel":1829,"raceHash":3887404748},"score":{"basic":{"displayValue":"0","value":0}},"standing":0,"values":{"activityDurationSeconds":{"basic":{"displayValue":"9m 37s","value":577}},"assists":{"basic":{"displayValue":"0","value":0}},"completed":{"basic":{"displayValue":"Yes","value":1}},"completionReason":{"basic":{"displayValue":"Objective Completed","value":0}},"deaths":{"basic":{"displayValue":"0","value":0}},"efficiency":{"basic":{"displayValue":"80.00","value":80}},"fireteamId":{"basic":{"displayValue":"-2147483648","value":-3420175362064546300}},"kills":{"basic":{"displayValue":"80","value":80}},"killsDeathsAssists":{"basic":{"displayValue":"80.00","value":80}},"killsDeathsRatio":{"basic":{"displayValue":"80.00","value":80}},"opponentsDefeated":{"basic":{"displayValue":"80","value":80}},"playerCount":{"basic":{"displayValue":"1","value":1}},"score":{"basic":{"displayValue":"0","value":0}},"startSeconds":{"basic":{"displayValue":"0m 0s","value":0}},"teamScore":{"basic":{"displayValue":"0","value":0}},"timePlayedSeconds":{"basic":{"displayValue":"9m 37s","value":577}}}}],"period":"2023-10-03T17:54:21Z","startingPhaseIndex":0,"teams":[]},"ThrottleSeconds":0}

On this next one:

d2orbc commented 11 months ago

If I detect a malformed PGCR response, I now re-request with a cache bust appended to the URL. It appears it can be resolved with the cache bust after one or two retries.

d2orbc commented 11 months ago

Vast majority get the correct response in under 10 seconds, but I had two instances today that took almost exactly 5 minutes to update with the correct response. I'm busting the cache with a URL parameter, but I'm guessing there's some other cache with a 5 min TTL that's being hit.