Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-8134

Services can't be deployed on servers outside of baseline topology

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.4
    • Fix Version/s: 2.7
    • Labels:
      None

      Description

      If a node is not a part of the baseline topology, the services will never be deployed on it. In particular, if that node calls a synchronous deploy* method, the method will hang.
      After the node is added to the baseline, all previously initiated deployments succeed (and deploy* methods return).

      It seems that the issue is with the continuous query started by the GridServiceProcessor on the ignite-sys-cache.

      Example:
      =====================

      public class BltServicesBug {
          public static void main(String[] args) {
              // start one node
              IgniteConfiguration cfg1 = new IgniteConfiguration()
                  .setIgniteInstanceName("node1")
                  .setDataStorageConfiguration(
                      new DataStorageConfiguration()
                          .setDefaultDataRegionConfiguration(
                              new DataRegionConfiguration()
                                  .setPersistenceEnabled(true)
                          )
                  );
              try (Ignite ignite1 = Ignition.start(cfg1)) {
                  // activate and set baseline topology
                  ignite1.cluster().active(true);
      
                  // start another node
                  IgniteConfiguration cfg2 = new IgniteConfiguration(cfg1)
                      .setIgniteInstanceName("node2");
                  try (Ignite ignite2 = Ignition.start(cfg2)) { 
                      // try to deploy a service; 
                      // this call hangs until the second node is added to the BLT (e.g. externally via control.sh) 
                      ignite2.services().deployNodeSingleton("myService", new MyServiceImpl()); System.out.println(">>>>> Deployed"); }
      
                  }
      
              }
      
              private static class MyServiceImpl implements Service {
                  @Override public void cancel(ServiceContext ctx) { }
                  @Override public void init(ServiceContext ctx) { }
                  @Override public void execute(ServiceContext ctx) { }
              }
          }
      }
      

      =====================

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                dmekhanikov Denis Mekhanikov
                Reporter:
                slukyanov Stanislav Lukyanov
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: