Thread: EventManager crashing server!

Results 1 to 10 of 10
  1. #1 EventManager crashing server! 
    Registered Member
    Join Date
    Apr 2014
    Posts
    176
    Thanks given
    17
    Thanks received
    4
    Rep Power
    11
    okay so i am using trisidiax v3 source and there is a problem with event manager. whenever i go and pk with another person who connects after a while the server crashes and whoever is online is logged off. An error appears multiple times which states-

    Code:
    [EventManager] - Player has logged out during an Event <caught>

    this is my eventmanager code:

    Code:
    package server.event;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import server.util.Misc;
    
    /**
     * Manages events which will be run in the future. Has its own thread since some
     * events may need to be ran faster than the cycle time in the main thread.
     * 
     * @author Graham
     * 
     */
    public class EventManager implements Runnable {
    
    	/**
    	 * A reference to the singleton;
    	 */
    	private static EventManager singleton = null;
    
    	/**
    	 * The waitFor variable is multiplied by this before the call to wait() is
    	 * made. We do this because other events may be executed after waitFor is
    	 * set (and take time). We may need to modify this depending on event count?
    	 * Some proper tests need to be done.
    	 */
    	private static final double WAIT_FOR_FACTOR = 0.5;
    
    	/**
    	 * Gets the event manager singleton. If there is no singleton, the singleton
    	 * is created.
    	 * 
    	 * @return The event manager singleton.
    	 */
    	public static EventManager getSingleton() {
    		if (singleton == null) {
    			singleton = new EventManager();
    			singleton.thread = new Thread(singleton);
    			singleton.thread.start();
    		}
    		return singleton;
    	}
    
    	/**
    	 * Initialises the event manager (if it needs to be).
    	 */
    	public static void initialize() {
    		getSingleton();
    	}
    
    	/**
    	 * A list of events that are being executed.
    	 */
    	private List<EventContainer> events;
    
    	/**
    	 * The event manager thread. So we can interrupt it and end it nicely on
    	 * shutdown.
    	 */
    	private Thread thread;
    
    	/**
    	 * Initialise the event manager.
    	 */
    	private EventManager() {
    		events = new ArrayList<EventContainer>();
    	}
    
    	/**
    	 * Adds an event.
    	 * 
    	 * @param event
    	 *            The event to add.
    	 * @param tick
    	 *            The tick time.
    	 */
    	public synchronized void addEvent(Event event, int tick) {
    		events.add(new EventContainer(event, tick));
    		notify();
    	}
    
    	@Override
    	/*
    	 * Processes events. Works kinda like newer versions of cron.
    	 */
    	public synchronized void run() {
    		long waitFor = -1;
    		List<EventContainer> remove = new ArrayList<EventContainer>();
    		
    		while(true) {
    			
    			// reset wait time
    			waitFor = -1;
    			
    			// process all events
    			for(EventContainer container : events) {
    				if(container.isRunning()) {
    					if((System.currentTimeMillis() - container.getLastRun()) >= container.getTick()) {
    						try {
    							container.execute();
    						} catch (Exception exception) {
    							Misc.println("[EventManager] - Player logged out during an event (Caught)");
    							container.isRunning = false;
    							//events.stop();
    						}
    					}
    					if(container.getTick() < waitFor || waitFor == -1) {
    						waitFor = container.getTick();
    					}
    				} else {
    					// add to remove list
    					remove.add(container);
    				}
    			}
    			
    			// remove events that have completed
    			for(EventContainer container : remove) {
    				events.remove(container);
    			}
    			remove.clear();
    			
    			// no events running
    			try {
    				if(waitFor == -1) {
    					wait(); // wait with no timeout
    				} else {
    					// an event is running, wait for that time or until a new event is added
    					int decimalWaitFor = (int)(Math.ceil(waitFor*WAIT_FOR_FACTOR));
    					wait(decimalWaitFor);
    				}
    			} catch(InterruptedException e) {
    				break; // stop running
    			}
    		}
    	}
    
    	/**
    	 * Shuts the event manager down.
    	 */
    	public void shutdown() {
    		this.thread.interrupt();
    	}
    
    }
    if you know a fix to this i would very much appreciate your help. i will thank and rep++
    Reply With Quote  
     

  2. #2  
    Registered Member
    TheChosenOne's Avatar
    Join Date
    Jan 2013
    Posts
    967
    Thanks given
    47
    Thanks received
    161
    Rep Power
    366
    add "exception.printStackTrace()" above
    Misc.println("[EventManager] - Player logged out during an event (Caught)");

    That way, the stacktrace will be printed, leading you to where the exception truly occurs.
    Reply With Quote  
     

  3. Thankful user:


  4. #3  
    Registered Member
    Join Date
    Apr 2014
    Posts
    176
    Thanks given
    17
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by TheChosenOne View Post
    add "exception.printStackTrace()" above
    Misc.println("[EventManager] - Player logged out during an event (Caught)");

    That way, the stacktrace will be printed, leading you to where the exception truly occurs.
    ok thanks
    Reply With Quote  
     

  5. #4  
    Registered Member
    Join Date
    Apr 2014
    Posts
    176
    Thanks given
    17
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by TheChosenOne View Post
    add "exception.printStackTrace()" above
    Misc.println("[EventManager] - Player logged out during an event (Caught)");

    That way, the stacktrace will be printed, leading you to where the exception truly occurs.
    i did it and now i got this multiple times-


    [06/07/14 21:18]: java.lang.NullPointerException
    [06/07/14 21:18]: at server.model.players.CombatAssistant$1.execute(Com bat
    Assistant.java:1459)
    [06/07/14 21:18]: at server.event.EventContainer.execute(EventContainer .ja
    va:51)
    [06/07/14 21:18]: at server.event.EventManager.run(EventManager.java:10 1)
    [06/07/14 21:18]: at java.lang.Thread.run(Thread.java:745)
    [06/07/14 21:18]: [EventManager] - Player logged out during an event (Caught)
    [06/07/14 21:18]: java.lang.NullPointerException
    [06/07/14 21:18]: at server.model.players.CombatAssistant$1.execute(Com bat
    Assistant.java:1459)
    [06/07/14 21:18]: at server.event.EventContainer.execute(EventContainer .ja
    va:51)
    [06/07/14 21:18]: at server.event.EventManager.run(EventManager.java:10 1)
    [06/07/14 21:18]: at java.lang.Thread.run(Thread.java:745)
    [06/07/14 21:18]: [EventManager] - Player logged out during an event (Caught)


    You know how to fix this by any chance? im a newb sorry

    combatassistant.java - Server.playerHandler.players[c.oldPlayerIndex].gfx0(2264);
    eventcontainer.java - this.event.execute(this);
    eventmanager.java = container.execute();
    Reply With Quote  
     

  6. #5  
    Registered Member Script's Avatar
    Join Date
    Apr 2010
    Posts
    293
    Thanks given
    26
    Thanks received
    74
    Rep Power
    47
    Quote Originally Posted by pityer tank View Post
    i did it and now i got this multiple times-


    [06/07/14 21:18]: java.lang.NullPointerException
    [06/07/14 21:18]: at server.model.players.CombatAssistant$1.execute(Com bat
    Assistant.java:1459)
    [06/07/14 21:18]: at server.event.EventContainer.execute(EventContainer .ja
    va:51)
    [06/07/14 21:18]: at server.event.EventManager.run(EventManager.java:10 1)
    [06/07/14 21:18]: at java.lang.Thread.run(Thread.java:745)
    [06/07/14 21:18]: [EventManager] - Player logged out during an event (Caught)
    [06/07/14 21:18]: java.lang.NullPointerException
    [06/07/14 21:18]: at server.model.players.CombatAssistant$1.execute(Com bat
    Assistant.java:1459)
    [06/07/14 21:18]: at server.event.EventContainer.execute(EventContainer .ja
    va:51)
    [06/07/14 21:18]: at server.event.EventManager.run(EventManager.java:10 1)
    [06/07/14 21:18]: at java.lang.Thread.run(Thread.java:745)
    [06/07/14 21:18]: [EventManager] - Player logged out during an event (Caught)


    You know how to fix this by any chance? im a newb sorry

    combatassistant.java - Server.playerHandler.players[c.oldPlayerIndex].gfx0(2264);
    eventcontainer.java - this.event.execute(this);
    eventmanager.java = container.execute();
    above Server.playerHandler.players[c.oldPlayerIndex].gfx0(2264); add

    if(Server.playerHandler.players[c.oldPlayerIndex]) != null)
    Reply With Quote  
     

  7. Thankful user:


  8. #6  
    Registered Member
    Join Date
    Apr 2014
    Posts
    176
    Thanks given
    17
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by Script View Post
    above Server.playerHandler.players[c.oldPlayerIndex].gfx0(2264); add

    if(Server.playerHandler.players[c.oldPlayerIndex]) != null)
    okay i will try it thanks a lot for your help
    Reply With Quote  
     

  9. #7  
    Registered Member
    Join Date
    Apr 2014
    Posts
    176
    Thanks given
    17
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by Script View Post
    above Server.playerHandler.players[c.oldPlayerIndex].gfx0(2264); add

    if(Server.playerHandler.players[c.oldPlayerIndex]) != null)
    okay so i tired it and got this-

    src\server\model\players\CombatAssistant.java:1459 : error: illegal start of expr
    ession
    if(Server.playerHandler.players[c.oldPla
    yerIndex]) != null)

    ^
    src\server\model\players\CombatAssistant.java:1459 : error: ';' expected
    if(Server.playerHandler.players[c.oldPla
    yerIndex]) != null)

    ^
    Reply With Quote  
     

  10. #8  
    Donator

    Jason's Avatar
    Join Date
    Aug 2009
    Posts
    6,092
    Thanks given
    2,402
    Thanks received
    2,823
    Rep Power
    4550
    Replace
    Code:
    if(Server.playerHandler.players[c.oldPlayerIndex]) != null)

    With
    Code:
    if(Server.playerHandler.players[c.oldPlayerIndex] != null)
    Reply With Quote  
     

  11. Thankful user:


  12. #9  
    Registered Member
    Join Date
    Apr 2014
    Posts
    176
    Thanks given
    17
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by Jason View Post
    Replace
    Code:
    if(Server.playerHandler.players[c.oldPlayerIndex]) != null)

    With
    Code:
    if(Server.playerHandler.players[c.oldPlayerIndex] != null)
    wow what an idiot im depending on other people too much should have noticed that thanks anyways
    Reply With Quote  
     

  13. #10  
    Registered Member
    Join Date
    Apr 2014
    Posts
    176
    Thanks given
    17
    Thanks received
    4
    Rep Power
    11
    Quote Originally Posted by Script View Post
    above Server.playerHandler.players[c.oldPlayerIndex].gfx0(2264); add

    if(Server.playerHandler.players[c.oldPlayerIndex]) != null)
    okay bro so i did that but my problem now is that the same thing happens just no error comes up any other ideas?
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Projectile Crashes Server
    By Delifed in forum Help
    Replies: 6
    Last Post: 06-12-2009, 05:36 PM
  2. Range crashes server?? help?
    By goldinfern0z in forum Help
    Replies: 2
    Last Post: 06-01-2009, 01:05 AM
  3. EventManager crash
    By Nemmyz in forum Help
    Replies: 4
    Last Post: 05-19-2009, 04:32 PM
  4. [508] An error which crashes server...
    By AndyJay in forum Help
    Replies: 2
    Last Post: 03-17-2009, 08:54 PM
  5. 2000 runes crashing server.
    By January 1st in forum Help
    Replies: 2
    Last Post: 10-27-2008, 07:37 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •