konsolas / AAC-Issues

AAC Issue Tracker.
32 stars 15 forks source link

AAC VL not being added under high frequency API calls #2171

Closed GitGoppy closed 3 years ago

GitGoppy commented 3 years ago

Issue description

So I talked to Photon about AACadditionpro, there seemed to be a bug with skinblinker check not getting all VLs passed on AAC as it should. We confirmed that this is isolated to this check and AAC is getting correct API calls. AAC seems to not add violations properly when adding violations at high frequency.

Core information

Server version: paper1-16-5 #468

AAC version: 5.0.11

ProtocolLib version: ProtocolLib v4.6.0-SNAPSHOT-b492

Configuration

  skinblinker:
    delay: 1.0
    features:
      - aacadditionpro_skinblinker
    thresholds:
      250:
        - "aac status %player_name%"
        - "aac reset %player_name%"
        - "kick %player_name% Internal Exception: java.io.IOException: An existing connection was forcibly closed by the remote host."
konsolas commented 3 years ago

AAC does not generate status reports for players that are not doing anything on the server - custom feature providers will only be shown in the scoring when a report is generated.

GitGoppy commented 3 years ago

The report containing skinblinker feature is generated BUT not all of the API calls are reaching AAC, aacadditionpro shows correct number of VLs and Photon confirmed that he is sending the correct API calls. The problem is AAC won't execute the commands because it won't recognize the new VLs that are rapidly being sent by AACadditionpro. Since VL doesn't increase properly then aac won't execute the threshold commands.

konsolas commented 3 years ago

Reports generated through /aac check do not cause execution of threshold actions

GitGoppy commented 3 years ago

They weren't supposed to execute threshold actions... they were used to show rating points of a player, rating points that are supposed to have at least the same amount of points as aacadditionpro's skinblinker check. Threshold for kick is 250 VL, Aacadditionpro shows over 5000 VL, AAC adds the first few VL and then stops adding them, not because AACAP is broken, but because AAC doesn't add VLs if it's API calls are too rapid. If I were to stop my skinblinker hack for a few seconds and then start it again AAC again adds a bit of VLs and then stops adding them, but AACAP keeps recording and sending VLs to AAC correctly. This shows that there is something wrong with AAC's API that ignores api requests if a very high amount of API calls are sent. AACAP is using the API correctly. AAC api is not working correctly because it decides to ignore AACAP requests after it recognizes a small amount of requests in a short time.

konsolas commented 3 years ago

AAC limits the score of any individual feature to 250.

GitGoppy commented 3 years ago

Yes, but skinblinker doesn't even reach 100 because the API is IGNORING RAPID CALLS. Look at the config for skinblinker in my first comment. Threshold is 250, AAC doesn't get stuck on 250, it never reaches 250 when it actually should, because it's ignoring API calls.

konsolas commented 3 years ago

The API can't "ignore rapid calls" because plugins don't make API calls to add custom features. They register a feature provider once, and then respond to API calls made by AAC.