Uploaded image for project: 'Apache ServiceComb'
  1. Apache ServiceComb
  2. SCB-1450

Microservice instance may get stuck when watch connection to sc is recovered and pulling instance action is executed in eventloop thread

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • java-chassis-1.3.0
    • Java-Chassis
    • None

    Description

      If you set property of servicecomb.service.registry.instance.watch to true and then set the peoperty of servicecomb.service.registry.client.eventLoopPoolSize to the smaller value as you can ,like 2. Unluckily, service center crashed..The following poor scenario  you may fall in:

      1 You had been informed while Service Center recovered a  few minutes later.It is so sad ,you can't get micro-service instance information from the Service Center.

      2 You can never  to shutdown your micro-service instance gracefully,

      Following are the dump logs:

      [ WARN ] [2019-06-11 22:32:38.417] [178.42.0.21] [vertx-blocked-thread-checker] [io.vertx.core.impl.BlockedThreadChecker$1.run(BlockedThreadChecker.java:55)] - Thread Thread[registry-vert.x-eventloop-thread-2,5,main] has been blocked for 20417526 ms, time limit is 2000 ms
      io.vertx.core.VertxException: Thread blocked
      at sun.misc.Unsafe.park(Native Method) ~[?:1.8.0_212]
      at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) ~[?:1.8.0_212]
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) ~[?:1.8.0_212]
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997) ~[?:1.8.0_212]
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304) ~[?:1.8.0_212]
      at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231) ~[?:1.8.0_212]
      at org.apache.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.findServiceInstances(ServiceRegistryClientImpl.java:739) ~[service-registry-1.0.0.B003.H69.jar:1.0.0.B003.H69]
      at org.apache.servicecomb.serviceregistry.registry.AbstractServiceRegistry.findServiceInstances(AbstractServiceRegistry.java:236) ~[service-registry-1.0.0.B003.H69.jar:1.0.0.B003.H69]
      at org.apache.servicecomb.serviceregistry.RegistryUtils.findServiceInstances(RegistryUtils.java:231) ~[service-registry-1.0.0.B003.H69.jar:1.0.0.B003.H69]
      at org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions.pullInstances(MicroserviceVersions.java:138) ~[service-registry-1.0.0.B003.H69.jar:1.0.0.B003.H69]
      at org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions.submitPull(MicroserviceVersions.java:130) ~[service-registry-1.0.0.B003.H69.jar:1.0.0.B003.H69]
      at org.apache.servicecomb.serviceregistry.consumer.MicroserviceManager.refreshInstances(MicroserviceManager.java:99) ~[service-registry-1.0.0.B003.H69.jar:1.0.0.B003.H69

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              liuhuaizhou133 Liu HuaiZhou
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m