Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-15446

Slaves without iOS devices are listed


    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • None
    • Jenkins 1.484 running on Windows 2008 R2. ios-device-connector 1.1.

      We have about 40 slave machines: a few are physical machines, most are virtual machines. Wide variety of operating systems. 3 of the Mac slaves have iPads attached to them: 2 are physical machines, 1 is attached to a virtual machine (suspect that particular fact doesn't matter).

      When listing the iOS devices, Jenkins does find all three iPads and their iPad information is properly displayed. What is NOT correct is that the slave that they are attatched to. In v1.0 of this component, the iPad would be associated with a disconnected slave. Now, in v1.1, the iPad is always associated with a powered on, connected slave - but not always the right slave or even the right operating system.

      If our slaves are listed in alphabetic order as they are on the main Jenkins page, we noticed that the closer to the top of the list, the closer to accurate the iPad-slave mapping would be. For example, the 5 slave in our list has an iPad and this is the only iPad-slave mapping that is correct. All previously listed slaves are powered on and connected. The next slave would be around the 20th slot, but it's iPad-slave mapping is about 4 slaves off. We noticed that if we power on and connect one of the slaves that would come BEFORE the slave connected to the ipad, then it gets one slave closer to the correct one. We suspect (but didn't have resources to verify) that if we powered on ALL our slaves, then the iPad-slave mappings would be correct.

      This causes problems when trying to load the IPA onto a particular iPad. The job/task to perform the upload is sent to the associated slave, which might be a Windows machine, and completely incapable of handling the task.

      If I had to guess, I would say that the problem might lie somewhere in iOSDeviceList.java. The same computer list is used, but in one case, an iterator with a future is used and in the second case, a direct index iterator is used.

      We confirmed that order of slave has a big impact. We took a slave with associated iPad that normally was about three quarters of the way down the list and never had a proper association, and renamed it to start with "AAA", putting it at the beginning of the list. A refresh of the iOS device list showed the proper iPad-slave mapping for that device.

            kohsuke Kohsuke Kawaguchi
            jswager1 Jason Swager
            0 Vote for this issue
            2 Start watching this issue