-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
make "report on git" link clickable and auto fill bug report #3557
base: master
Are you sure you want to change the base?
Conversation
Searching by issue title and then locating the stacktrace sounds like a simple and workable solution. Users changing the title or stacktrace are hopefully rare and to deal with obfuscation regex should be powerful enough to use it to normalize the names. |
is this even a good idea though?? wont this cause untold issue spam |
If you merge it as is, definitely. However I do think that automated deduplication is enough to stop the spam. |
Finding the direct duplicates seems to be reasonably easy. We just need to compress the relevant data into a search term and can then retrieve all duplicates in a single api request. To find the direct duplicate we could simply hash the complete stacktrace, but this will likely be overly specific in most cases, like with this stacktracebaritone.api.command.exception.CommandUnhandledException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at baritone.command.manager.CommandManager$ExecutionWrapper.execute(CommandManager.java:143) at baritone.command.manager.CommandManager$ExecutionWrapper.access$000(CommandManager.java:127) at baritone.command.manager.CommandManager.execute(CommandManager.java:83) at baritone.command.ExampleBaritoneControl.runCommand(ExampleBaritoneControl.java:146) at baritone.command.ExampleBaritoneControl.onSendChatMessage(ExampleBaritoneControl.java:71) at baritone.event.GameEventHandler.lambda$onSendChatMessage$2(GameEventHandler.java:69) at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:895) at baritone.event.GameEventHandler.onSendChatMessage(GameEventHandler.java:69) at net.minecraft.client.entity.EntityPlayerSP.handler$sendChatMessage$zze000(EntityPlayerSP.java:1416) at net.minecraft.client.entity.EntityPlayerSP.sendChatMessage(EntityPlayerSP.java) at net.minecraft.client.gui.GuiScreen.sendChatMessage(GuiScreen.java:456) at net.minecraft.client.gui.GuiScreen.sendChatMessage(GuiScreen.java:446) at net.minecraft.client.gui.GuiChat.keyTyped(GuiChat.java:126) at net.minecraft.client.gui.GuiScreen.handleKeyboardInput(GuiScreen.java:607) at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:556) at net.minecraft.client.Minecraft.runTick(Minecraft.java:1852) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1165) at net.minecraft.client.Minecraft.run(Minecraft.java:439) at net.minecraft.client.main.Main.main(Main.java:115) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:25) Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at baritone.command.defaults.GcCommand.execute(GcCommand.java:38) at baritone.command.manager.CommandManager$ExecutionWrapper.execute(CommandManager.java:140) ... 30 more and this stacktracebaritone.api.command.exception.CommandUnhandledException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at baritone.command.manager.CommandManager$ExecutionWrapper.execute(CommandManager.java:143) at baritone.command.manager.CommandManager$ExecutionWrapper.access$000(CommandManager.java:127) at baritone.command.manager.CommandManager.execute(CommandManager.java:83) at baritone.command.ExampleBaritoneControl.runCommand(ExampleBaritoneControl.java:146) at baritone.command.ExampleBaritoneControl.onSendChatMessage(ExampleBaritoneControl.java:74) at baritone.event.GameEventHandler.lambda$onSendChatMessage$2(GameEventHandler.java:69) at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:895) at baritone.event.GameEventHandler.onSendChatMessage(GameEventHandler.java:69) at net.minecraft.client.entity.EntityPlayerSP.handler$sendChatMessage$zze000(EntityPlayerSP.java:1416) at net.minecraft.client.entity.EntityPlayerSP.sendChatMessage(EntityPlayerSP.java) at net.minecraft.client.gui.GuiScreen.sendChatMessage(GuiScreen.java:456) at net.minecraft.client.gui.GuiScreen.sendChatMessage(GuiScreen.java:446) at net.minecraft.client.gui.GuiChat.keyTyped(GuiChat.java:126) at net.minecraft.client.gui.GuiScreen.handleKeyboardInput(GuiScreen.java:607) at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:556) at net.minecraft.client.Minecraft.runTick(Minecraft.java:1852) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1165) at net.minecraft.client.Minecraft.run(Minecraft.java:439) at net.minecraft.client.main.Main.main(Main.java:115) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:25) Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at baritone.command.defaults.GcCommand.execute(GcCommand.java:38) at baritone.command.manager.CommandManager$ExecutionWrapper.execute(CommandManager.java:140) ... 30 more(the difference is the line number in line 6, determined by whether you use chat control or prefix control) To overcome this I'd suggest processing only part of the stacktrace. No line numbers (they only exist in dev anyway) and e.g. no lines higher up the trace than where the exception was caught. If you want me to do so I can contribute the code for the api requests (I've already written a proof of concept implementation for testing anyways). |
the issue of the different obfuscation stuff for baritone when comparing stack traces does come up tho... |
If you say that's too much of a problem (and deobfing Baritones names is too much or doesn't help) then I guess I'll have to give up automated duplicate finding as well because a powerful enough implementation is to much effort. We should still change the message though to tell people to use the search function. |
Maybe a related issues with a title comparison based search, and then a create new anyway button or something if that returns results and the user " manually confirms" that it's different |
@ZacSharp I did it
closes #3527
todo: