소스 검색

Improve documentation, disable cleanup if heartbeat interval nonpositive, change default heartbeat interval from 500 to 300, some logging on client side (#9265)

tags/7.0.0.beta1
Johannes Dahlström 11 년 전
부모
커밋
2adfd3e94a

+ 4
- 0
client/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java 파일 보기

@@ -290,6 +290,10 @@ public class ApplicationConfiguration implements EntryPoint {
return rootId;
}

/**
* @return The interval in seconds between heartbeat requests, or a
* non-positive number if heartbeat is disabled.
*/
public int getHeartbeatInterval() {
return heartbeatInterval;
}

+ 11
- 5
client/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java 파일 보기

@@ -2524,19 +2524,23 @@ public class ApplicationConnection {
}

/**
* Schedules a heartbeat request.
* Schedules a heartbeat request to occur after the configured heartbeat
* interval elapses if the interval is a positive number. Otherwise, does
* nothing.
*
* @see #sendHeartbeat()
* @see ApplicationConfiguration#getHeartbeatInterval()
*/
private void scheduleHeartbeat() {
final int interval = 1000 * getConfiguration().getHeartbeatInterval();
protected void scheduleHeartbeat() {
final int interval = getConfiguration().getHeartbeatInterval();
if (interval > 0) {
VConsole.log("Scheduling heartbeat in " + interval + " seconds");
new Timer() {
@Override
public void run() {
sendHeartbeat();
}
}.schedule(interval);
}.schedule(interval * 1000);
}
}

@@ -2552,7 +2556,7 @@ public class ApplicationConnection {
* @see #scheduleHeartbeat()
* @see com.vaadin.ui.Root#heartbeat()
*/
private void sendHeartbeat() {
protected void sendHeartbeat() {
final String uri = addGetParameters(
translateVaadinUri(ApplicationConstants.APP_PROTOCOL_PREFIX
+ ApplicationConstants.HEARTBEAT_REQUEST_PATH),
@@ -2568,6 +2572,7 @@ public class ApplicationConnection {
int status = response.getStatusCode();
if (status == Response.SC_OK) {
// TODO Permit retry in some error situations
VConsole.log("Heartbeat response OK");
scheduleHeartbeat();
} else {
VConsole.error("Heartbeat request failed with status code "
@@ -2585,6 +2590,7 @@ public class ApplicationConnection {
rb.setCallback(callback);

try {
VConsole.log("Sending heartbeat request...");
rb.send();
} catch (RequestException re) {
callback.onError(null, re);

+ 14
- 9
server/src/com/vaadin/Application.java 파일 보기

@@ -2448,7 +2448,9 @@ public class Application implements Terminal.ErrorListener, Serializable {
/**
* Removes all those roots from the application whose last heartbeat
* occurred more than {@link #getHeartbeatTimeout()} seconds ago. Close
* events are fired for the removed roots.
* events are fired for the removed roots. If
* <code>getHeartbeatTimeout()</code> returns a nonpositive number, no
* cleanup is performed.
* <p>
* Called by the framework at the end of every request.
*
@@ -2459,13 +2461,15 @@ public class Application implements Terminal.ErrorListener, Serializable {
* @since 7.0.0
*/
public void closeInactiveRoots() {
long now = System.currentTimeMillis();
for (Iterator<Root> i = roots.values().iterator(); i.hasNext();) {
Root root = i.next();
if (now - root.getLastHeartbeat() > 1000 * getHeartbeatTimeout()) {
i.remove();
retainOnRefreshRoots.values().remove(root.getRootId());
root.fireCloseEvent();
if (getHeartbeatTimeout() > 0) {
long now = System.currentTimeMillis();
for (Iterator<Root> i = roots.values().iterator(); i.hasNext();) {
Root root = i.next();
if (now - root.getLastHeartbeat() > 1000 * getHeartbeatTimeout()) {
i.remove();
retainOnRefreshRoots.values().remove(root.getRootId());
root.fireCloseEvent();
}
}
}
}
@@ -2478,7 +2482,8 @@ public class Application implements Terminal.ErrorListener, Serializable {
*
* @since 7.0.0
*
* @return The heartbeat timeout in seconds.
* @return The heartbeat timeout in seconds or a nonpositive number if
* timeout never occurs.
*/
public int getHeartbeatTimeout() {
// Permit three missed heartbeats before closing the root

+ 2
- 1
server/src/com/vaadin/terminal/DeploymentConfiguration.java 파일 보기

@@ -155,7 +155,8 @@ public interface DeploymentConfiguration extends Serializable {
public int getResourceCacheTime();

/**
* Returns the number of seconds between heartbeat requests of a root.
* Returns the number of seconds between heartbeat requests of a root, or a
* non-negative number if heartbeat is disabled.
*
* @return
*/

+ 2
- 2
server/src/com/vaadin/terminal/gwt/server/AbstractDeploymentConfiguration.java 파일 보기

@@ -228,11 +228,11 @@ public abstract class AbstractDeploymentConfiguration implements
try {
heartbeatInterval = Integer
.parseInt(getApplicationOrSystemProperty(
Constants.SERVLET_PARAMETER_HEARTBEAT_RATE, "500"));
Constants.SERVLET_PARAMETER_HEARTBEAT_RATE, "300"));
} catch (NumberFormatException e) {
getLogger().warning(
Constants.WARNING_HEARTBEAT_INTERVAL_NOT_NUMERIC);
heartbeatInterval = 500;
heartbeatInterval = 300;
}
}


Loading…
취소
저장