support rest api timeout (#674)

implement: #665
Change-Id: Id6b36904494a57e18d67bb73db8ce906858d9cb1
This commit is contained in:
Jermy Li 2019-09-02 14:25:28 +08:00 committed by GitHub
parent cd5953e07f
commit 0a0578fdb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 33 additions and 9 deletions

View File

@ -33,8 +33,8 @@ import org.slf4j.Logger;
import com.baidu.hugegraph.HugeException;
import com.baidu.hugegraph.HugeGraph;
import com.baidu.hugegraph.api.schema.Checkable;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.Checkable;
import com.baidu.hugegraph.metrics.MetricsUtil;
import com.baidu.hugegraph.server.RestServer;
import com.baidu.hugegraph.type.HugeType;

View File

@ -33,7 +33,7 @@ import javax.ws.rs.ext.Provider;
import com.baidu.hugegraph.config.HugeConfig;
import com.baidu.hugegraph.config.ServerOptions;
import com.baidu.hugegraph.core.WorkLoad;
import com.baidu.hugegraph.define.WorkLoad;
import com.baidu.hugegraph.util.Bytes;
import com.baidu.hugegraph.util.E;
import com.google.common.collect.ImmutableSet;

View File

@ -26,7 +26,7 @@ import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Context;
import javax.ws.rs.ext.Provider;
import com.baidu.hugegraph.core.WorkLoad;
import com.baidu.hugegraph.define.WorkLoad;
@Provider
@Singleton

View File

@ -29,9 +29,10 @@ import org.slf4j.Logger;
import com.baidu.hugegraph.HugeException;
import com.baidu.hugegraph.HugeGraph;
import com.baidu.hugegraph.api.API;
import com.baidu.hugegraph.api.schema.Checkable;
import com.baidu.hugegraph.config.HugeConfig;
import com.baidu.hugegraph.config.ServerOptions;
import com.baidu.hugegraph.define.Checkable;
import com.baidu.hugegraph.define.UpdateStrategy;
import com.baidu.hugegraph.metrics.MetricsUtil;
import com.baidu.hugegraph.server.RestServer;
import com.baidu.hugegraph.structure.HugeElement;

View File

@ -58,6 +58,7 @@ import com.baidu.hugegraph.backend.tx.SchemaTransaction;
import com.baidu.hugegraph.config.HugeConfig;
import com.baidu.hugegraph.config.ServerOptions;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.UpdateStrategy;
import com.baidu.hugegraph.exception.NotFoundException;
import com.baidu.hugegraph.schema.EdgeLabel;
import com.baidu.hugegraph.schema.PropertyKey;

View File

@ -54,6 +54,7 @@ import com.baidu.hugegraph.backend.id.SplicingIdGenerator;
import com.baidu.hugegraph.config.HugeConfig;
import com.baidu.hugegraph.config.ServerOptions;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.UpdateStrategy;
import com.baidu.hugegraph.schema.PropertyKey;
import com.baidu.hugegraph.schema.VertexLabel;
import com.baidu.hugegraph.server.RestServer;

View File

@ -44,10 +44,10 @@ import com.baidu.hugegraph.HugeException;
import com.baidu.hugegraph.HugeGraph;
import com.baidu.hugegraph.api.API;
import com.baidu.hugegraph.api.filter.StatusFilter.Status;
import com.baidu.hugegraph.api.schema.Checkable;
import com.baidu.hugegraph.backend.id.Id;
import com.baidu.hugegraph.backend.query.Query;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.Checkable;
import com.baidu.hugegraph.job.Job;
import com.baidu.hugegraph.job.JobBuilder;
import com.baidu.hugegraph.metrics.MetricsUtil;

View File

@ -41,6 +41,7 @@ import com.baidu.hugegraph.api.API;
import com.baidu.hugegraph.api.filter.StatusFilter.Status;
import com.baidu.hugegraph.backend.id.Id;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.Checkable;
import com.baidu.hugegraph.schema.EdgeLabel;
import com.baidu.hugegraph.type.define.Frequency;
import com.baidu.hugegraph.type.define.GraphMode;

View File

@ -40,6 +40,7 @@ import com.baidu.hugegraph.api.API;
import com.baidu.hugegraph.api.filter.StatusFilter.Status;
import com.baidu.hugegraph.backend.id.Id;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.Checkable;
import com.baidu.hugegraph.schema.IndexLabel;
import com.baidu.hugegraph.type.HugeType;
import com.baidu.hugegraph.type.define.GraphMode;

View File

@ -40,6 +40,7 @@ import com.baidu.hugegraph.HugeGraph;
import com.baidu.hugegraph.api.API;
import com.baidu.hugegraph.api.filter.StatusFilter.Status;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.Checkable;
import com.baidu.hugegraph.schema.PropertyKey;
import com.baidu.hugegraph.type.define.Cardinality;
import com.baidu.hugegraph.type.define.DataType;

View File

@ -41,6 +41,7 @@ import com.baidu.hugegraph.api.API;
import com.baidu.hugegraph.api.filter.StatusFilter.Status;
import com.baidu.hugegraph.backend.id.Id;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.define.Checkable;
import com.baidu.hugegraph.schema.VertexLabel;
import com.baidu.hugegraph.type.define.GraphMode;
import com.baidu.hugegraph.type.define.IdStrategy;

View File

@ -66,6 +66,16 @@ public class ServerOptions extends OptionHolder {
256
);
public static final ConfigOption<Integer> REQUEST_TIMEOUT =
new ConfigOption<>(
"restserver.request_timeout",
"The time in seconds within which a request must complete, " +
"-1 means no timeout.",
rangeInt(-1, Integer.MAX_VALUE),
30
);
public static final ConfigOption<Integer> CONN_IDLE_TIMEOUT =
new ConfigOption<>(
"restserver.connection_idle_timeout",

View File

@ -1,4 +1,4 @@
package com.baidu.hugegraph.api.schema;
package com.baidu.hugegraph.define;
public interface Checkable {

View File

@ -17,7 +17,7 @@
* under the License.
*/
package com.baidu.hugegraph.api.graph;
package com.baidu.hugegraph.define;
import java.math.BigDecimal;
import java.util.Collection;

View File

@ -17,7 +17,7 @@
* under the License.
*/
package com.baidu.hugegraph.core;
package com.baidu.hugegraph.define;
import java.util.concurrent.atomic.AtomicInteger;

View File

@ -36,7 +36,7 @@ import org.glassfish.jersey.server.monitoring.RequestEventListener;
import com.baidu.hugegraph.HugeException;
import com.baidu.hugegraph.config.HugeConfig;
import com.baidu.hugegraph.core.GraphManager;
import com.baidu.hugegraph.core.WorkLoad;
import com.baidu.hugegraph.define.WorkLoad;
import com.baidu.hugegraph.util.E;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.jersey2.InstrumentedResourceMethodApplicationListener;

View File

@ -70,17 +70,24 @@ public class RestServer {
E.checkState(listeners.size() > 0,
"Http Server should have some listeners, but now is none");
NetworkListener listener = listeners.iterator().next();
// Option max_worker_threads
int maxWorkerThreads = this.conf.get(ServerOptions.MAX_WORKER_THREADS);
listener.getTransport()
.getWorkerThreadPoolConfig()
.setCorePoolSize(maxWorkerThreads)
.setMaxPoolSize(maxWorkerThreads);
// Option keep_alive
int idleTimeout = this.conf.get(ServerOptions.CONN_IDLE_TIMEOUT);
int maxRequests = this.conf.get(ServerOptions.CONN_MAX_REQUESTS);
listener.getKeepAlive().setIdleTimeoutInSeconds(idleTimeout);
listener.getKeepAlive().setMaxRequestsCount(maxRequests);
// Option transaction timeout
int transactionTimeout = this.conf.get(ServerOptions.REQUEST_TIMEOUT);
listener.setTransactionTimeout(transactionTimeout);
return server;
}