Bug Fail to login when in TCRS on r27237

Happens when attempting to log in while currently in TCRS, errors and stays on the login window.


Code:
class java.lang.IllegalStateException: ERROR: too many sources for bitmap modifier Clowniness, consider using longs.
java.lang.IllegalStateException: ERROR: too many sources for bitmap modifier Clowniness, consider using longs.
    at net.sourceforge.kolmafia.persistence.ModifierDatabase.parseModifiers(ModifierDatabase.java:644)
    at net.sourceforge.kolmafia.persistence.ModifierDatabase.parseModifiers(ModifierDatabase.java:570)
    at net.sourceforge.kolmafia.persistence.ModifierDatabase.overrideModifierInternal(ModifierDatabase.java:998)
    at net.sourceforge.kolmafia.persistence.ModifierDatabase.overrideModifier(ModifierDatabase.java:979)
    at net.sourceforge.kolmafia.persistence.ModifierDatabase.updateItem(ModifierDatabase.java:1018)
    at net.sourceforge.kolmafia.persistence.TCRSDatabase.applyModifiers(TCRSDatabase.java:595)
    at net.sourceforge.kolmafia.persistence.TCRSDatabase.applyModifiers(TCRSDatabase.java:532)
    at net.sourceforge.kolmafia.persistence.TCRSDatabase.loadTCRSData(TCRSDatabase.java:974)
    at net.sourceforge.kolmafia.persistence.TCRSDatabase.loadTCRSData(TCRSDatabase.java:894)
    at net.sourceforge.kolmafia.KoLmafia.refreshSessionData(KoLmafia.java:755)
    at net.sourceforge.kolmafia.KoLmafia.refreshSession(KoLmafia.java:696)
    at net.sourceforge.kolmafia.session.LoginManager.initialize(LoginManager.java:213)
    at net.sourceforge.kolmafia.session.LoginManager.doLogin(LoginManager.java:99)
    at net.sourceforge.kolmafia.session.LoginManager.login(LoginManager.java:51)
    at net.sourceforge.kolmafia.request.LoginRequest.processLoginRequest(LoginRequest.java:212)
    at net.sourceforge.kolmafia.request.GenericRequest.handleServerRedirect(GenericRequest.java:1832)
    at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:1757)
    at net.sourceforge.kolmafia.request.GenericRequest.externalExecute(GenericRequest.java:1395)
    at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1382)
    at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1149)
    at net.sourceforge.kolmafia.request.LoginRequest.run(LoginRequest.java:88)
    at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:242)
    at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:207)
    at net.sourceforge.kolmafia.swingui.LoginFrame$LoginPanel.doLogin(LoginFrame.java:266)
    at net.sourceforge.kolmafia.swingui.LoginFrame$LoginPanel.actionConfirmed(LoginFrame.java:230)
    at net.sourceforge.kolmafia.swingui.panel.GenericPanel$ConfirmedListener.execute(GenericPanel.java:504)
    at net.sourceforge.kolmafia.swingui.listener.ThreadedListener.run(ThreadedListener.java:175)
    at net.sourceforge.kolmafia.RequestThread$SequencedRunnable.run(RequestThread.java:342)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Error during session initialization
 

Ryo_Sangnoir

Developer
Staff member
This was introduced in https://github.com/kolmafia/kolmafia/commit/0822a55d5a7109f450d7414cce5b7f571b9e63df where we switched to throwing instead of silently ignoring the errors.

Unfortunately, I can't reproduce at test level:
Code:
  @Test
  public void shouldLoadNewModifiers() {
    var cleanups = new Cleanups(withPath(Path.CRAZY_RANDOM_SUMMER_TWO), withClass(
      AscensionClass.SEAL_CLUBBER), withSign(ZodiacSign.MONGOOSE));

    try (cleanups) {
      TCRSDatabase.loadTCRSData();
      Modifiers mods = ModifierDatabase.getModifiers(ModifierType.ITEM, ItemPool.ASPARAGUS_KNIFE);
      assertEquals(50.0, mods.getDouble(DoubleModifier.SLEAZE_SPELL_DAMAGE));
      assertEquals(0.0, mods.getDouble(DoubleModifier.STENCH_DAMAGE));
    }
  }
passes. If I duplicate the "TCRSDatabase.loadTCRSData();" call without resetting the modifiers in between it fails with the error as expected, but I don't think that should happen on login.
 
Top