MeterService interactions and ConsistentMapException$Timeout

9 views
Skip to first unread message

Jordi Ortiz

unread,
Mar 23, 2017, 1:22:40 PM3/23/17
to ONOS Developers, Ali Al-Shabibi, brigade-n...@onosproject.org, Luca Prete
Dear all,

we are developing an application that makes intensive use of Meters.
The application works good but sometimes rises a
ConsistentMapException$Tiemout as can be seen below.

I'm not sure we are using the MeterService in a proper way.
1) We create the MeterRequest and then Submit to MeterService.
2) We have to know that the Meter is created before creating the flows
so we start polling the MeteManager.getMeter() to know if it is
already in ADDED stage.
3) Create the rest of the needed flows/intents

So my question is how was intended the MeterService to be used since I
understand that active polling is not an option there.
Should I split this part of the code and listen for meter creation??
Should we use the polling but using a TimerTask between retries or
something like? (now using Thread.Sleep)

Regards
Jordi





19.0.0 | Exception thrown by removal listener
org.onosproject.store.service.ConsistentMapException$Timeout: onos-meter-store
at org.onosproject.store.primitives.DefaultConsistentMap.complete(DefaultConsistentMap.java:228)
at org.onosproject.store.primitives.DefaultConsistentMap.lambda$computeIf$2(DefaultConsistentMap.java:110)
at org.onlab.util.Tools.lambda$null$2(Tools.java:418)
at org.onlab.util.RetryingFunction.apply(RetryingFunction.java:52)
at org.onlab.util.Tools.lambda$retryable$3(Tools.java:421)
at org.onosproject.store.primitives.DefaultConsistentMap.computeIf(DefaultConsistentMap.java:113)
at org.onosproject.store.primitives.DefaultConsistentMap.computeIfPresent(DefaultConsistentMap.java:97)
at org.onosproject.incubator.store.meter.impl.DistributedMeterStore.failedMeter(DistributedMeterStore.java:206)

Ali Al-Shabibi

unread,
Mar 23, 2017, 2:11:24 PM3/23/17
to ONOS Developers, brigade-n...@onosproject.org, Luca Prete, Jordi Ortiz
Hi Jordi,

You should indeed not poll. Why not simply implement a MeterListener and get notified when a meter has been added. You will probably need to add ADD and REMOVE events to the meter event which would be triggered when pushMeterMetrics sees a meter on the data plane.

Let us know if you need more help.

Cheers.

--
Ali

Jordan Halterman

unread,
Mar 23, 2017, 2:30:04 PM3/23/17
to Jordi Ortiz, ONOS Developers, Ali Al-Shabibi, brigade-n...@onosproject.org, Luca Prete
Meant to reply to the group:

The MeterManager adds meters asynchronously. I'm not sure what the rationale is for that, but you should add a listener (using addListener) to the MeterService rather than polling it. Then you can block on the listener using a CountDownLatch or something like that rather than polling.

Maybe we want to consider blocking in submit() or at least providing a blocking version of the API though.


--
You received this message because you are subscribed to the Google Groups "ONOS Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to onos-dev+unsubscribe@onosproject.org.
To post to this group, send email to onos...@onosproject.org.
Visit this group at https://groups.google.com/a/onosproject.org/group/onos-dev/.
To view this discussion on the web visit https://groups.google.com/a/onosproject.org/d/msgid/onos-dev/CA%2BMS2e67RxuzYzn9ZkEBRLkDQotnAFmtgc%3Di5zCKjXuvdPanPw%40mail.gmail.com.

Jordi Ortiz

unread,
Mar 23, 2017, 5:41:23 PM3/23/17
to Jordan Halterman, ONOS Developers, Ali Al-Shabibi, brigade-n...@onosproject.org, Luca Prete

On 23/03/17 19:30, Jordan Halterman wrote:
Meant to reply to the group:

The MeterManager adds meters asynchronously. I'm not sure what the rationale is for that, but you should add a listener (using addListener) to the MeterService rather than polling it. Then you can block on the listener using a CountDownLatch or something like that rather than polling.

Maybe we want to consider blocking in submit() or at least providing a blocking version of the API though.

That would simplify the life for lots of people =)
I might help if you decide to implement it.

Jordan Halterman

unread,
Mar 24, 2017, 6:42:33 AM3/24/17
to Jordi Ortiz, ONOS Developers, Ali Al-Shabibi, brigade-n...@onosproject.org, Luca Prete
It's a simple change - just a few lines of code. I'm always in favor of reducing code for users. We probably shouldn't have to register listeners to block on an asynchronous method if this is a common use case.

But actually, now that I'm looking at the API more, it may not even be possible to do this without polling. The MeterService events seem to only include "meter add requested" and "meter remove requested," which implies you're not getting any event for when it's finished. In that case, there may be no better solution than the one you have. I don't see any other way to do it.

I'm interested in others thoughts on the API, though. I think we will have to go through the meter store code a bit regardless. I'll have to spend some more time looking at the MeterStore, but I'm pretty sure I see a bunch of memory leaks in there.

It seems the API either has to have a blocking method or additional events for this use case. We've invested a lot in efficient event based APIs, so we certainly don't want to be forcing users to poll the cluster for changes!

Jordi Ortiz

unread,
Mar 24, 2017, 8:05:35 AM3/24/17
to Jordan Halterman, ONOS Developers, Ali Al-Shabibi, brigade-n...@onosproject.org, Luca Prete
Hi,

I already created some time ago a patch that sent meter events but
finally was discarded since it was not needed. I can do that. I create
a jira issue https://jira.onosproject.org/browse/ONOS-6188

Regards
>> email to onos-dev+u...@onosproject.org.

MA Zhenhua

unread,
Mar 24, 2017, 8:50:29 AM3/24/17
to Jordan Halterman, Jordi Ortiz, Ali Al-Shabibi, ONOS Developers, jo...@onlab.us, bo...@onlab.us, t...@onlab.us, ma...@onlab.us, r...@onlab.us, brigade-n...@onosproject.org, Luca Prete


Hi Jordan, Ali, Jordi, Jonathan, Brian, Thomas, Marc, Ray and All,


Formerly, I encountered the same ConsistentMapException$Timeout problem on ONOS 1.6.1 while installing flows referencing a meter. I used only one ONOS instance and don't form a cluster.

 

The process I made:

1. create a meterRequest and then submit it;

2. I just check whether the return value of MeterService.submit() is null while not checking if it is added;

3. if the return value is not null, I'll put it into a ConsistentMap for management; (And I sometimes encountered ConsistentMapException$Timeout at this step)

4. Add flow rules referring the meter.


management ConsistentMap:

 

 

// service meter
private ConsistentMap<TrafficSchedulerSvcNameInfo, MeterId> svcMeterSet;

 

public final class TrafficSchedulerSvcNameInfo {
private final String svcName;
private final DeviceId dvcId;


And after the operation, I print the store and see the item is added actually.

onos> trafficscheduler:list-svc-meter-store

svcMeterSet: {TrafficSchedulerSvcNameInfo{svcName=subscriber1, dvcId=of:0000001e08000fe3}=2}

 


 

log:

2017-01-17 17:44:05,915 | WARN  | tp1740749102-531 | ServerErrorMapper                | 127 - org.onosproject.onlab-rest - 1.6.1.SNAPSHOT | Unhandled REST exception
org.onosproject.store.service.ConsistentMapException$Timeout
        at org.onosproject.store.primitives.DefaultConsistentMap.complete(DefaultConsistentMap.java:228)[75:org.onosproject.onos-api:1.6.1.SNAPSHOT]
        at org.onosproject.store.primitives.DefaultConsistentMap.put(DefaultConsistentMap.java:118)[75:org.onosproject.onos-api:1.6.1.SNAPSHOT]
       
at org.onosproject.trafficscheduler.DistributedTrafficSchedulerStore.addSvcNameInfoToMeterMapping(DistributedTrafficSchedulerStore.java:673)[180:org.onosproject.onos-app-trafficscheduler:1.6.1.SNAPSHOT]

// The line marked red corresponds to step 3 above
        at org.onosproject.trafficscheduler.flowinstaller.TrafficSchedulerFlowInstaller.calcMeterId(TrafficSchedulerFlowInstaller.java:277)[180:org.onosproject.onos-app-trafficscheduler:1.6.1.SNAPSHOT]
        at org.onosproject.trafficscheduler.flowinstaller.GroupSingleTableFlowInstaller.generateTractionFlow(GroupSingleTableFlowInstaller.java:122)[180:org.onosproject.onos-app-trafficscheduler:1.6.1.SNAPSHOT]
        at org.onosproject.trafficscheduler.flowinstaller.TrafficSchedulerFlowInstaller.generateFlow(TrafficSchedulerFlowInstaller.java:239)[180:org.onosproject.onos-app-trafficscheduler:1.6.1.SNAPSHOT]
        at org.onosproject.trafficscheduler.TrafficSchedulerManager.addSvcCfg(TrafficSchedulerManager.java:840)[180:org.onosproject.onos-app-trafficscheduler:1.6.1.SNAPSHOT]
        at org.onosproject.trafficscheduler.web.TrafficSchedulerWebResource.addSvcCfg(TrafficSchedulerWebResource.java:538)[180:org.onosproject.onos-app-trafficscheduler:1.6.1.SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_101]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_101]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_101]
        at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_101]
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[110:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[110:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[110:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[110:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[110:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[110:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[118:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)[124:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)[124:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)[124:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)[124:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)[124:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[93:org.ops4j.pax.web.pax-web-jetty:3.2.6]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:522)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)[93:org.ops4j.pax.web.pax-web-jetty:3.2.6]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75)[93:org.ops4j.pax.web.pax-web-jetty:3.2.6]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.Server.handle(Server.java:370)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.17.v20150415]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_101]
2017-01-17 17:44:05,917 | WARN  | t-client-event-1 | LocalCache                       | 43 - com.google.guava - 19.0.0 | Exception thrown by removal listener
org.onosproject.store.service.ConsistentMapException$Timeout


        at org.onosproject.store.primitives.DefaultConsistentMap.complete(DefaultConsistentMap.java:228)
        at org.onosproject.store.primitives.DefaultConsistentMap.lambda$computeIf$2(DefaultConsistentMap.java:110)

        at org.onlab.util.Tools.lambda$null$2(Tools.java:395)
        at org.onlab.util.RetryingFunction.apply(RetryingFunction.java:52)
        at org.onlab.util.Tools.lambda$retryable$3(Tools.java:398)


        at org.onosproject.store.primitives.DefaultConsistentMap.computeIf(DefaultConsistentMap.java:113)
        at org.onosproject.store.primitives.DefaultConsistentMap.computeIfPresent(DefaultConsistentMap.java:97)

        at org.onosproject.incubator.store.meter.impl.DistributedMeterStore.failedMeter(DistributedMeterStore.java:207)
        at org.onosproject.incubator.net.meter.impl.MeterManager$InternalMeterProviderService.meterOperationFailed(MeterManager.java:223)
        at org.onosproject.provider.of.meter.impl.OpenFlowMeterProvider.lambda$activate$0(OpenFlowMeterProvider.java:121)
        at com.google.common.cache.LocalCache.processPendingNotifications(LocalCache.java:1960)
        at com.google.common.cache.LocalCache$Segment.runUnlockedCleanup(LocalCache.java:3475)
        at com.google.common.cache.LocalCache$Segment.postWriteCleanup(LocalCache.java:3451)
        at com.google.common.cache.LocalCache$Segment.put(LocalCache.java:2906)
        at com.google.common.cache.LocalCache.put(LocalCache.java:4164)
        at com.google.common.cache.LocalCache$LocalManualCache.put(LocalCache.java:4805)
        at org.onosproject.provider.of.meter.impl.OpenFlowMeterProvider.performOperation(OpenFlowMeterProvider.java:175)
        at org.onosproject.provider.of.meter.impl.OpenFlowMeterProvider.performMeterOperation(OpenFlowMeterProvider.java:169)
        at org.onosproject.incubator.net.meter.impl.MeterManager$InternalMeterStoreDelegate.notify(MeterManager.java:257)
        at org.onosproject.incubator.net.meter.impl.MeterManager$InternalMeterStoreDelegate.notify(MeterManager.java:249)
        at org.onosproject.store.AbstractStore.notifyDelegate(AbstractStore.java:58)
        at org.onosproject.incubator.store.meter.impl.DistributedMeterStore.access$300(DistributedMeterStore.java:66)
        at org.onosproject.incubator.store.meter.impl.DistributedMeterStore$InternalMapEventListener.event(DistributedMeterStore.java:231)
        at org.onosproject.store.primitives.impl.MeteredAsyncConsistentMap$InternalMeteredMapEventListener.event(MeteredAsyncConsistentMap.java:291)
        at org.onosproject.store.primitives.impl.TranscodingAsyncConsistentMap$InternalBackingMapEventListener.event(TranscodingAsyncConsistentMap.java:311)
        at org.onosproject.store.primitives.resources.impl.AtomixConsistentMap.lambda$null$2(AtomixConsistentMap.java:100)[141:org.onosproject.onos-core-primitives:1.6.1.SNAPSHOT]
        at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)[43:com.google.guava:19.0.0]
        at org.onosproject.store.primitives.resources.impl.AtomixConsistentMap.lambda$null$3(AtomixConsistentMap.java:100)[141:org.onosproject.onos-core-primitives:1.6.1.SNAPSHOT]
        at java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1597)[:1.8.0_101]
        at org.onosproject.store.primitives.resources.impl.AtomixConsistentMap.lambda$handleEvent$4(AtomixConsistentMap.java:100)[141:org.onosproject.onos-core-primitives:1.6.1.SNAPSHOT]
        at java.util.ArrayList.forEach(ArrayList.java:1249)[:1.8.0_101]
        at org.onosproject.store.primitives.resources.impl.AtomixConsistentMap.handleEvent(AtomixConsistentMap.java:99)[141:org.onosproject.onos-core-primitives:1.6.1.SNAPSHOT]
        at io.atomix.manager.resource.internal.InstanceClient$EventListener.accept(InstanceClient.java:274)
        at io.atomix.manager.resource.internal.InstanceClient.handleEvent(InstanceClient.java:180)
        at io.atomix.manager.resource.internal.InstanceClient.lambda$onEvent$6(InstanceClient.java:163)
        at io.atomix.copycat.client.DefaultCopycatClient$EventListener.lambda$accept$61(DefaultCopycatClient.java:373)
        at io.atomix.catalyst.concurrent.Runnables.lambda$logFailure$2(Runnables.java:20)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_101]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_101]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)[:1.8.0_101]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)[:1.8.0_101]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_101]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_101]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_101]
2017-01-17 17:44:05,935 | ERROR | of-event-stats-6 | OpenFlowControllerImpl           | 162 - org.onosproject.onos-of-ctl - 1.6.1.SNAPSHOT | Uncaught exception on onos-of-event-stats-6
org.onosproject.store.service.ConsistentMapException$Timeout
        at org.onosproject.store.primitives.DefaultConsistentMap.complete(DefaultConsistentMap.java:228)[75:org.onosproject.onos-api:1.6.1.SNAPSHOT]
        at org.onosproject.store.primitives.DefaultConsistentMap.values(DefaultConsistentMap.java:143)[75:org.onosproject.onos-api:1.6.1.SNAPSHOT]
        at org.onosproject.store.primitives.ConsistentMapBackedJavaMap.values(ConsistentMapBackedJavaMap.java:141)[75:org.onosproject.onos-api:1.6.1.SNAPSHOT]
        at org.onosproject.store.group.impl.DistributedGroupStore.getStoredGroups(DistributedGroupStore.java:324)[140:org.onosproject.onos-core-dist:1.6.1.SNAPSHOT]
        at org.onosproject.store.group.impl.DistributedGroupStore.pushGroupMetrics(DistributedGroupStore.java:1272)[140:org.onosproject.onos-core-dist:1.6.1.SNAPSHOT]
        at org.onosproject.net.group.impl.GroupManager$InternalGroupProviderService.pushGroupMetrics(GroupManager.java:347)[138:org.onosproject.onos-core-net:1.6.1.SNAPSHOT]
        at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.pushGroupMetrics(OpenFlowGroupProvider.java:236)[166:org.onosproject.onos-of-provider-group:1.6.1.SNAPSHOT]
        at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.access$100(OpenFlowGroupProvider.java:81)[166:org.onosproject.onos-of-provider-group:1.6.1.SNAPSHOT]
        at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider$InternalGroupProvider.handleMessage(OpenFlowGroupProvider.java:333)[166:org.onosproject.onos-of-provider-group:1.6.1.SNAPSHOT]
        at org.onosproject.openflow.controller.impl.OpenFlowControllerImpl$OFMessageHandler.run(OpenFlowControllerImpl.java:674)[162:org.onosproject.onos-of-ctl:1.6.1.SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_101]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_101]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_101]

 

BR,

Zhenhua

 



发件人: Jordan Halterman <jor...@onlab.us>
发送时间: 2017年3月24日 2:30
收件人: Jordi Ortiz
抄送: ONOS Developers; Ali Al-Shabibi; brigade-n...@onosproject.org; Luca Prete
主题: Re: [onos-dev] MeterService interactions and ConsistentMapException$Timeout
 
To unsubscribe from this group and stop receiving emails from it, send an email to onos-dev+u...@onosproject.org.

To post to this group, send email to onos...@onosproject.org.
Visit this group at https://groups.google.com/a/onosproject.org/group/onos-dev/.
karaf.log

MA Zhenhua

unread,
Mar 24, 2017, 9:09:46 AM3/24/17
to Jordan Halterman, Jordi Ortiz, Ali Al-Shabibi, ONOS Developers, jo...@onlab.us, bo...@onlab.us, t...@onlab.us, ma...@onlab.us, r...@onlab.us, brigade-n...@onosproject.org, Luca Prete

Hi Jordan, Ali, Jordi, Jonathan, Brian, Thomas, Marc, Ray and All,


Formerly, ONOS 1.6.1 runs well on my machine. However, I failed to start it use ok. Two strange points:

1.Failed to register Bandwidth

2. all bundles are stopped finally.


1.Failed to register Bandwidth

However, I'm able to see every ports of the switch on ONOS GUI.

2017-03-21 06:05:25,886 | WARN  | t-client-event-1 |ConsistentResourceStore          | 139 - org.onosproject.onos-core-dist - 1.6.1.SNAPSHOT | Failed to unregister [[of:0000001e08000fe3, 12]]: Commit failed.
2017-03-21 06:05:25,890 | WARN  | t-client-event-1 |ConsistentResourceStore          | 139 - org.onosproject.onos-core-dist - 1.6.1.SNAPSHOT | Transaction commit failed on registration
2017-03-21 06:05:25,892 | WARN  | source-registrar |ResourceDeviceListener           | 137 - org.onosproject.onos-core-net - 1.6.1.SNAPSHOT | Failed to register Bandwidth for [of:0000001e08000fe3, 8]
2017-03-21 06:05:25,896 | WARN  | t-client-event-1 |ConsistentResourceStore          | 139 - org.onosproject.onos-core-dist - 1.6.1.SNAPSHOT | Failed to unregister [[of:0000001e08000fe3, 15]]: Commit failed.
2017-03-21 06:05:25,903 | WARN  | t-client-event-1 |ConsistentResourceStore          | 139 - org.onosproject.onos-core-dist - 1.6.1.SNAPSHOT | Failed to unregister [[of:0000001e08000fe3, 2]]: Commit failed.
2017-03-21 06:05:25,907 | WARN  | t-client-event-1 |ConsistentResourceStore          | 139 - org.onosproject.onos-core-dist - 1.6.1.SNAPSHOT | Transaction commit failed on registration
2017-03-21 06:05:25,909 | WARN  | source-registrar |ResourceDeviceListener           | 137 - org.onosproject.onos-core-net - 1.6.1.SNAPSHOT | Failed to register Bandwidth for [of:0000001e08000fe3, 20]


2. all bundles are stopped finally

2017-03-21 06:09:41,075 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.service.command/3.0.5
2017-03-21 06:09:41,079 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.service.core/3.0.5
2017-03-21 06:09:41,090 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.log.command/3.0.5
2017-03-21 06:09:41,096 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.diagnostic.command/3.0.5
2017-03-21 06:09:41,099 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.diagnostic.core/3.0.5
2017-03-21 06:09:41,101 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.jaas.command/3.0.5
2017-03-21 06:09:41,137 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.instance.command/3.0.5
2017-03-21 06:09:41,155 | INFO  | FelixShutdown    |BlueprintExtender                | 15 - org.apache.aries.blueprint.core - 1.4.4 | Destroying BlueprintContainer for bundle org.apache.karaf.instance.core/3.0.5

...


Any advice is appreciated.


BR,

Zhenhua

Luca Prete

unread,
Mar 24, 2017, 10:22:56 AM3/24/17
to Ali Al-Shabibi, Jordan Halterman, Jordi Ortiz, MA Zhenhua, ONOS Developers, bo...@onlab.us, jo...@onlab.us, ma...@onlab.us, r...@onlab.us, t...@onlab.us, brigade-n...@onosproject.org
Zhenhua,

Why not moving simply to 1.9 or master?
1.6 is not even "officially" supported anymore..

-Luca

Jordan Halterman

unread,
Mar 24, 2017, 1:28:57 PM3/24/17
to Jordi Ortiz, ONOS Developers, Ali Al-Shabibi, brigade-n...@onosproject.org, Luca Prete
That sounds great!

Jordan Halterman

unread,
Mar 24, 2017, 3:35:52 PM3/24/17
to Luca Prete, Ali Al-Shabibi, Jordi Ortiz, MA Zhenhua, ONOS Developers, bo...@onlab.us, jo...@onlab.us, ma...@onlab.us, r...@onlab.us, t...@onlab.us, brigade-n...@onosproject.org
Yeah, I have to ask if this is still happening on 1.9

MA Zhenhua

unread,
Mar 24, 2017, 9:56:53 PM3/24/17
to Luca Prete, Ali Al-Shabibi, Jordan Halterman, Jordi Ortiz, ONOS Developers, bo...@onlab.us, jo...@onlab.us, ma...@onlab.us, r...@onlab.us, t...@onlab.us, brigade-n...@onosproject.org
Luca,

We've done quite a lot of work on ONOS, not just writing app, but also extend core and etc. And stability is also very important for a commercial system. We test extensively on ONOS 1.6.1 and it's of risk to move to the latest branch.

Zhenhua


-------- 原始邮件 --------
主题:Re: [onos-dev] I failed to start ONOS 1.6.1 use ok. Two strange

points: 1.Failed to register Bandwidth 2. all bundles are stopped finally.
发件人:Luca Prete
收件人:Ali Al-Shabibi ,Jordan Halterman ,Jordi Ortiz ,MA Zhenhua ,ONOS Developers ,bo...@onlab.us," jo...@onlab.us" ,ma...@onlab.us,r...@onlab.us," t...@onlab.us"
抄送:brigade-n...@onosproject.org

Luca Prete

unread,
Mar 24, 2017, 10:15:23 PM3/24/17
to MA Zhenhua, Ali Al-Shabibi, Jordan Halterman, Jordi Ortiz, ONOS Developers, bo...@onlab.us, jo...@onlab.us, ma...@onlab.us, r...@onlab.us, t...@onlab.us, brigade-n...@onosproject.org
Zhenhua,

I totally understand, but you're 3 releases back...Soon or later you'll need to move to the next release, and I think it's better this process happens incrementally, rather than all at once..

-Luca

On Fri, Mar 24, 2017 at 6:56 PM, MA Zhenhua <ma...@outlook.com> wrote:
Luca,

We've done quite a lot of work on ONOS, not just writing app, but also extend core and etc. And stability is also very important for a commercial system. We test extensively on ONOS 1.6.1 and it's of risk to move to the latest branch.

Zhenhua


-------- 原始邮件 --------
主题:Re: [onos-dev] I failed to start ONOS 1.6.1 use ok. Two strange
points: 1.Failed to register Bandwidth 2. all bundles are stopped finally.
发件人:Luca Prete
收件人:Ali Al-Shabibi ,Jordan Halterman ,Jordi Ortiz ,MA Zhenhua ,ONOS Developers ,bo...@onlab.us," jo...@onlab.us" ,ma...@onlab.us,r...@onlab.us," t...@onlab.us"

--
You received this message because you are subscribed to the Google Groups "Northbound brigade" group.
To unsubscribe from this group and stop receiving emails from it, send an email to brigade-northbound+unsub...@onosproject.org.
To post to this group, send email to brigade-northbound@onosproject.org.
Visit this group at https://groups.google.com/a/onosproject.org/group/brigade-northbound/.
To view this discussion on the web visit https://groups.google.com/a/onosproject.org/d/msgid/brigade-northbound/HK2PR03MB1523530F2DF86402E268CEE2AA310%40HK2PR03MB1523.apcprd03.prod.outlook.com.

Jordi Ortiz

unread,
Mar 25, 2017, 4:03:03 PM3/25/17
to Jordan Halterman, ONOS Developers, Ali Al-Shabibi, brigade-n...@onosproject.org, Luca Prete
Hi,

find draft in https://gerrit.onosproject.org/#/c/13315/

I want to check it with my app and then I'll put it in review process,
as far as I have tested with debugger it "works" looking in the logs.

Look for: "Posted meter added" and "Post meter removed" in the following
log.

2017-03-25 20:04:59,734 | INFO | h for user karaf |
MeterAddCommand | 27 - org.apache.karaf.shell.console -
3.0.8 | Requested meter with id 4:
DefaultMeter{device=of:00000000cafe0001, id=4,
appId=org.onosproject.cli.meterCmd, unit=KB_PER_SEC, isBurst=false,
state=PENDING_ADD, bands=[DefaultBand{rate=500, burst-size=0, type=DROP,
drop-precedence=null}]}
2017-03-25 20:04:59,736 | DEBUG | h for user karaf |
LoggingCommandSessionListener | 27 - org.apache.karaf.shell.console -
3.0.8 | Command: 'meter-add of:00000000cafe0001 ' returned 'null'
2017-03-25 20:05:01,193 | DEBUG | f-event-stats-28 |
MeterManager | 133 -
org.onosproject.onos-incubator-net - 1.10.0.SNAPSHOT | Posted meter
added: DefaultMeter{device=of:00000000cafe0001, id=4,
appId=org.onosproject.core, unit=KB_PER_SEC, isBurst=false, state=ADDED,
bands=[DefaultBand{rate=0, burst-size=null, type=null,
drop-precedence=null}]}
2017-03-25 20:05:31,887 | DEBUG | h for user karaf |
LoggingCommandSessionListener | 27 - org.apache.karaf.shell.console -
3.0.8 | Executing command: 'meter-remove of:00000000cafe0001 4'
2017-03-25 20:05:31,894 | INFO | h for user karaf |
MeterRemoveCommand | 27 - org.apache.karaf.shell.console -
3.0.8 | Requested meter removal:
DefaultMeterRequest{device=of:00000000cafe0001,
appId=org.onosproject.cli.meterCmd, unit=PKTS_PER_SEC, isBurst=false,
bands=[DefaultBand{rate=0, burst-size=0, type=DROP, drop-precedence=0}]}
2017-03-25 20:05:31,894 | DEBUG | h for user karaf |
LoggingCommandSessionListener | 27 - org.apache.karaf.shell.console -
3.0.8 | Command: 'meter-remove of:00000000cafe0001 4' returned 'null'
2017-03-25 20:05:41,580 | DEBUG | f-event-stats-27 |
MeterManager | 133 -
org.onosproject.onos-incubator-net - 1.10.0.SNAPSHOT | Posted meter
removed: DefaultMeter{device=of:00000000cafe0001, id=4,
appId=org.onosproject.cli.meterCmd, unit=PKTS_PER_SEC, isBurst=false,
state=PENDING_REMOVE, bands=[DefaultBand{rate=0, burst-size=0,
type=DROP, drop-precedence=0}]}


In a near future it would be nice to force the MeterStats retrieval from
device after every ONOS meter creation/deletion so that we minimize time
for notification. Now on the worst case, you will have to wait the whole
period between MeterStats message.


Regards

Jordi

Jordi Ortiz

unread,
Apr 25, 2017, 8:20:10 AM4/25/17
to Jordan Halterman, ONOS Developers, Ali Al-Shabibi, Northbound brigade, Luca Prete
Hi,

I updated the https://gerrit.onosproject.org/13315 patch regarding
Meter ADD/REMOVE notification to MeterListeners
I also implemented the MeterStats retrieval on the REMOVE case (ADD is
immediate) https://gerrit.onosproject.org/13641

Reviews are welcome =)

Regards
Reply all
Reply to author
Forward
0 new messages