Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-3372

Port, replace, or defer HSC-side provenance of EUPS products

    XMLWordPrintable

    Details

    • Story Points:
      6
    • Sprint:
      DRP X16-1, DRP X16-2, DRP X16-3, DRP F16-1
    • Team:
      Data Release Production

      Description

      The HSC pipeline checks that setup EUPS products are identical between runs with the same output directory, in the same way configuration is checked in both the LSST and HSC pipelines.

      The implementation is a bit messy, and it's not strictly necessary, so it's not clear we should port this over as-is, or just wait for a better implementation to be provided by the Process Middleware team. We should at least RFC this question now.

        Attachments

          Issue Links

            Activity

            No builds found.
            jbosch Jim Bosch created issue -
            jbosch Jim Bosch made changes -
            Field Original Value New Value
            Epic Link DM-1942 [ 16008 ]
            jbosch Jim Bosch made changes -
            Rank Ranked higher
            jbosch Jim Bosch made changes -
            Rank Ranked lower
            jbosch Jim Bosch made changes -
            Rank Ranked lower
            swinbank John Swinbank made changes -
            Epic Link DM-1942 [ 16008 ] DM-3560 [ 19650 ]
            swinbank John Swinbank made changes -
            Epic Link DM-3560 [ 19650 ] DM-3568 [ 19662 ]
            swinbank John Swinbank made changes -
            Link This issue blocks DM-3911 [ DM-3911 ]
            Hide
            swinbank John Swinbank added a comment -

            Note that in DM-3911 we add the option to disable this check. It would be useful to ensure they land at approximately the same time (or even to merge the tickets if that suits whoever ends up doing the work).

            Show
            swinbank John Swinbank added a comment - Note that in DM-3911 we add the option to disable this check. It would be useful to ensure they land at approximately the same time (or even to merge the tickets if that suits whoever ends up doing the work).
            lauren Lauren MacArthur made changes -
            Link This issue relates to DM-3911 [ DM-3911 ]
            lauren Lauren MacArthur made changes -
            Link This issue blocks DM-3911 [ DM-3911 ]
            Hide
            tjenness Tim Jenness added a comment -

            I'm a bit out of the loop but does this mean we are adding an EUPS dependency to the code? Or is this effectively comparing version strings that are created at build time and eups itself is not involved at run time?

            Show
            tjenness Tim Jenness added a comment - I'm a bit out of the loop but does this mean we are adding an EUPS dependency to the code? Or is this effectively comparing version strings that are created at build time and eups itself is not involved at run time?
            Hide
            jbosch Jim Bosch added a comment -

            The HSC-side implementation does depend on EUPS, but we could switch it depend on version strings created at build time - mostly. We don't currently have a mechanism besides Eups for getting version strings for third-party packages. In any case, this could certainly be an optional dependency.

            Show
            jbosch Jim Bosch added a comment - The HSC-side implementation does depend on EUPS, but we could switch it depend on version strings created at build time - mostly. We don't currently have a mechanism besides Eups for getting version strings for third-party packages. In any case, this could certainly be an optional dependency.
            Hide
            tjenness Tim Jenness added a comment -

            Ok, we have a policy of not requiring eups in the running code.

            Show
            tjenness Tim Jenness added a comment - Ok, we have a policy of not requiring eups in the running code.
            swinbank John Swinbank made changes -
            Epic Link DM-3568 [ 19662 ] DM-5399 [ 23206 ]
            swinbank John Swinbank made changes -
            Assignee Paul Price [ price ]
            swinbank John Swinbank made changes -
            Sprint DRP X16-1 [ 210 ]
            Hide
            swinbank John Swinbank added a comment -

            In the X16-1 sprint, Paul will start a discussion about this on community.lsst.org, potentially following up with an RFD.

            Show
            swinbank John Swinbank added a comment - In the X16-1 sprint, Paul will start a discussion about this on community.lsst.org, potentially following up with an RFD.
            Hide
            price Paul Price added a comment -
            Show
            price Paul Price added a comment - Bomb dropped at https://community.lsst.org/t/stack-provenance-in-tasks/605 .
            price Paul Price made changes -
            Status To Do [ 10001 ] In Progress [ 3 ]
            swinbank John Swinbank made changes -
            Sprint DRP X16-1 [ 210 ] DRP X16-1, DRP X16-2 [ 210, 214 ]
            swinbank John Swinbank made changes -
            Rank Ranked higher
            price Paul Price made changes -
            Link This issue is blocked by RFC-169 [ RFC-169 ]
            Hide
            price Paul Price added a comment -

            Proposal is in RFC-169.

            Show
            price Paul Price added a comment - Proposal is in RFC-169 .
            tjenness Tim Jenness made changes -
            Link This issue is triggered by RFC-169 [ RFC-169 ]
            tjenness Tim Jenness made changes -
            Link This issue is blocked by RFC-169 [ RFC-169 ]
            Hide
            price Paul Price added a comment -

            RFC approved. John Swinbank, do you want to implement it on this ticket or another?

            Show
            price Paul Price added a comment - RFC approved. John Swinbank , do you want to implement it on this ticket or another?
            Hide
            swinbank John Swinbank added a comment -

            I see no reason not to go ahead on this ticket. Thanks!

            Show
            swinbank John Swinbank added a comment - I see no reason not to go ahead on this ticket. Thanks!
            swinbank John Swinbank made changes -
            Sprint DRP X16-1, DRP X16-2 [ 210, 214 ] DRP X16-1, DRP X16-2, DRP X16-3 [ 210, 214, 217 ]
            swinbank John Swinbank made changes -
            Rank Ranked higher
            Hide
            price Paul Price added a comment -

            I'm working on this now.

            Our packages fall into three categories:
            1. Python packages, where we can determine the version by looking at module.__version__.
            2. Build-time (header-only) packages, where we can use the module.__dependency_versions__, which is written at build time.
            3. Run-time (library) packages, where we have to look at symbols or run functions in the library.

            I've added some functions to the 'base' package to get the run-time package versions:

            price@neverland:~/LSST/base (tickets/DM-3372=) $ python -c 'import lsst.base; print lsst.base.getRuntimeVersions()'
            {'cfitsio': '3.36', 'wcslib': '5.13', 'fftw': 'fftw-3.3.4', 'gsl': '1.16'}
            

            And here's the python and build-time packages, which are done together in python (here including only whatever happens to be loaded by lsst.pipe.base):

            price@neverland:~/LSST/pipe/base (tickets/DM-3372=) $ python -c 'from lsst.pipe.base.modules import getPythonVersions; print getPythonVersions()'
            OrderedDict([('_csv', '1.0'), ('_ctypes', '1.1.0'), ('_struct', '0.2'), ('argparse', '1.1'), ('astropy', u'1.1.1'), ('astropy.extern.configobj.validate', '1.0.1'), ('astropy.extern.ply', '3.6'), ('astropy.extern.ply.lex', '3.6'), ('astropy.extern.ply.yacc', '3.6'), ('astropy.extern.six', '1.7.3'), ('cPickle', '1.71'), ('csv', '1.0'), ('ctypes', '1.1.0'), ('decimal', '1.70'), ('distutils', '2.7.11'), ('json', '2.0.9'), ('logging', '0.5.1.2'), ('lsst.afw', '2.2016.10-16-g7c15dd3 with boost=1.60 eigen=3.2.5.lsst1'), ('lsst.base', '2.2016.10-2-ge90c490 with boost=1.60'), ('lsst.daf.base', '2016_01.0-2-g54642da+1 with boost=1.60'), ('lsst.daf.persistence', '2016_01.0-9-ga3a0b07+6 with boost=1.60'), ('lsst.pex.config', '2016_01.0-1-g6fbf654+8 with boost=1.60'), ('lsst.pex.exceptions', '2016_01.0-1-gfde6942 with boost=1.60'), ('lsst.pex.logging', '2016_01.0-3-g1a9be9b+1 with boost=1.60'), ('lsst.pex.policy', '2016_01.0-1-g9f41d6c+4 with boost=1.60'), ('lsst.utils', '2016_01.0-3-g5dd904a with boost=1.60'), ('multiprocessing', '0.70a1'), ('numpy', '1.10.4'), ('numpy.core', '1.10.4'), ('numpy.core.multiarray', '3.1'), ('numpy.core.umath', '0.4.0'), ('numpy.lib', '1.10.4'), ('numpy.linalg._umath_linalg', '0.1.4'), ('parser', '0.5'), ('pickle', '$Revision: 72223 $'), ('psutil', '4.1.0'), ('pyfits', '3.1.2.dev'), ('re', '2.2.1'), ('urllib', '1.17'), ('yaml', '3.11'), ('zlib', '1.0')])
            

            In python, we can only record the versions that have been imported at the time that our version recording function is called. For that reason, when we check versions against what's been used before, I think I need to use something like a greater-than-or-equal comparison rather than straight equal. That will allow for the possibility that python modules not imported for processCcd.py may be used in assembleCoadd.py.

            Show
            price Paul Price added a comment - I'm working on this now. Our packages fall into three categories: 1. Python packages, where we can determine the version by looking at module.__version__ . 2. Build-time (header-only) packages, where we can use the module.__dependency_versions__ , which is written at build time. 3. Run-time (library) packages, where we have to look at symbols or run functions in the library. I've added some functions to the 'base' package to get the run-time package versions: price@neverland:~/LSST/base (tickets/DM-3372=) $ python -c 'import lsst.base; print lsst.base.getRuntimeVersions()' {'cfitsio': '3.36', 'wcslib': '5.13', 'fftw': 'fftw-3.3.4', 'gsl': '1.16'} And here's the python and build-time packages, which are done together in python (here including only whatever happens to be loaded by lsst.pipe.base ): price@neverland:~/LSST/pipe/base (tickets/DM-3372=) $ python -c 'from lsst.pipe.base.modules import getPythonVersions; print getPythonVersions()' OrderedDict([('_csv', '1.0'), ('_ctypes', '1.1.0'), ('_struct', '0.2'), ('argparse', '1.1'), ('astropy', u'1.1.1'), ('astropy.extern.configobj.validate', '1.0.1'), ('astropy.extern.ply', '3.6'), ('astropy.extern.ply.lex', '3.6'), ('astropy.extern.ply.yacc', '3.6'), ('astropy.extern.six', '1.7.3'), ('cPickle', '1.71'), ('csv', '1.0'), ('ctypes', '1.1.0'), ('decimal', '1.70'), ('distutils', '2.7.11'), ('json', '2.0.9'), ('logging', '0.5.1.2'), ('lsst.afw', '2.2016.10-16-g7c15dd3 with boost=1.60 eigen=3.2.5.lsst1'), ('lsst.base', '2.2016.10-2-ge90c490 with boost=1.60'), ('lsst.daf.base', '2016_01.0-2-g54642da+1 with boost=1.60'), ('lsst.daf.persistence', '2016_01.0-9-ga3a0b07+6 with boost=1.60'), ('lsst.pex.config', '2016_01.0-1-g6fbf654+8 with boost=1.60'), ('lsst.pex.exceptions', '2016_01.0-1-gfde6942 with boost=1.60'), ('lsst.pex.logging', '2016_01.0-3-g1a9be9b+1 with boost=1.60'), ('lsst.pex.policy', '2016_01.0-1-g9f41d6c+4 with boost=1.60'), ('lsst.utils', '2016_01.0-3-g5dd904a with boost=1.60'), ('multiprocessing', '0.70a1'), ('numpy', '1.10.4'), ('numpy.core', '1.10.4'), ('numpy.core.multiarray', '3.1'), ('numpy.core.umath', '0.4.0'), ('numpy.lib', '1.10.4'), ('numpy.linalg._umath_linalg', '0.1.4'), ('parser', '0.5'), ('pickle', '$Revision: 72223 $'), ('psutil', '4.1.0'), ('pyfits', '3.1.2.dev'), ('re', '2.2.1'), ('urllib', '1.17'), ('yaml', '3.11'), ('zlib', '1.0')]) In python, we can only record the versions that have been imported at the time that our version recording function is called. For that reason, when we check versions against what's been used before, I think I need to use something like a greater-than-or-equal comparison rather than straight equal. That will allow for the possibility that python modules not imported for processCcd.py may be used in assembleCoadd.py.
            Hide
            price Paul Price added a comment -

            Jenkins passed.

            Because this is a fairly visible feature (i.e., people are prevented from running our CmdLineTasks by version mismatches) and contains some changes in important places (e.g., CameraMapper, TaskRunner), I would like it to be reviewed carefully by experts:

            • Tim Jenness, would you please review the changes in the "base" package and check everything works on your latest OSX box?
            • Kian-Tat Lim, would you please review the changes in the "daf_butlerUtils" package? This adds what I think is a useful feature that will ease the burden on maintaining the obs packages.
            • Russell Owen, would you please review the changes in the "pipe_base" and "ci_hsc" packages?

            price@price-laptop:~/LSST/base (tickets/DM-3372=) $ git sub
            commit 00e8c47636ff79c201266612115dab1a9ed03bb9
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Mon May 16 22:54:49 2016 -0400
             
                add functions to pull symbols out of dynamic-linked libraries
                
                This attempts to provide a platform-independent interface to dlopen
                and dlsym.
             
             include/lsst/base/library.h | 72 +++++++++++++++++++++++++++++++++++++++++++++
             src/library.cc              | 43 +++++++++++++++++++++++++++
             2 files changed, 115 insertions(+)
             
            commit d59b798a0f0fbda8e03d636799584cd1acb85e5d
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Mon May 16 23:03:26 2016 -0400
             
                convert thread handling to use dynamic library interface
             
             src/threads.cc | 56 +++++++++++++++++++++++++++-----------------------------
             1 file changed, 27 insertions(+), 29 deletions(-)
             
            commit 3b2db4a9318f5b2148cbdcc90bd617490548c726
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Mon May 16 23:04:40 2016 -0400
             
                add functions to determine versions of dependencies
                
                We get the versions by loading a dynamic library and pulling out the
                appropriate symbol.  Includes support for getting the versions of
                cfitsio, fftw, wcslib, gsl.
             
             include/lsst/base/versions.h | 26 +++++++++++++++++
             python/lsst/base/baseLib.i   | 12 ++++++++
             src/versions.cc              | 68 ++++++++++++++++++++++++++++++++++++++++++++
             3 files changed, 106 insertions(+)
             
            commit f23f926ddcd61839adaf1333514b2c3ee8256d72
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 11:46:43 2016 -0400
             
                add python module to collect package versions
             
             python/lsst/base/__init__.py |   1 +
             python/lsst/base/packages.py | 255 +++++++++++++++++++++++++++++++++++++++++++
             2 files changed, 256 insertions(+)
             
            commit 30cbd838064116223069b63767aa6540db754dd8
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Sat May 21 01:17:53 2016 -0400
             
                packages: avoid race in use of sys.modules
                
                By iterating with sys.modules.iteritems(), we're subject to a race
                condition: if there's another thread (e.g., in scons) that does an
                import, sys.modules will change while we're iterating over it.
             
             python/lsst/base/packages.py | 5 ++++-
             1 file changed, 4 insertions(+), 1 deletion(-)
             
             
            price@price-laptop:~/LSST/daf/butlerUtils (tickets/DM-3372=) $ git sub
            commit a1f5d3b8a37383af4749ceba513da9e08f6b09c4
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 18:49:10 2016 -0400
             
                CameraMapper: add capability to define default datasets
                
                We have several datasets that it would be helpful to define for all
                cameras. CameraMapper, being the base class, is the ideal place for this.
                This patch adds that capability. Default dataset definitions can be added
                through the "default_{images,exposures,calibrations,datasets}" methods of
                the CameraMapper.
             
             python/lsst/daf/butlerUtils/cameraMapper.py | 4 ++++
             1 file changed, 4 insertions(+)
             
            commit 1e7673e6015f94001f17950294979b0722a5f14b
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 18:49:46 2016 -0400
             
                CameraMapper: add default "packages" dataset
                
                This dataset is used to store the set of known packages and their versions,
                for later comparison.
             
             python/lsst/daf/butlerUtils/cameraMapper.py | 10 ++++++++++
             tests/cameraMapper.py                       |  5 +++--
             2 files changed, 13 insertions(+), 2 deletions(-)
             
             
            price@price-laptop:~/LSST/pipe/base (tickets/DM-3372=) $ git sub
            commit 4aad90ae1d1a4581f71dd0aea66e011559e03b0e
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 18:56:42 2016 -0400
             
                CmdLineTask: add check against package versions
                
                During a production run, we want to ensure we're operating with a
                consistent set of package versions all the way through. This patch adds a
                check against the packages used on previous runs. The check can be disabled
                with the "--no-packages" command-line flag, and the stored versions can be
                clobbered with the "--clobber-packages" command-line flag.
             
             python/lsst/pipe/base/argumentParser.py |  5 +++
             python/lsst/pipe/base/cmdLineTask.py    | 64 +++++++++++++++++++++++++++++----
             2 files changed, 63 insertions(+), 6 deletions(-)
             
             
            price@price-laptop:~/LSST/ci_hsc (tickets/DM-3372=) $ git sub
            commit 9d8aa4d9f7c2952c00527ea176d4fae83188f047
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 23:59:53 2016 -0400
             
                add empty-data commands for warp, coadd
                
                The new system for recording and checking packages is subject to race
                conditions, and it only knows about python packages which have been
                imported, so the "preSfm" empty-data command is not sufficient to
                cover warp and coadd (which may import a different set of python packages).
             
             SConstruct | 9 +++++++--
             1 file changed, 7 insertions(+), 2 deletions(-)
            

            Show
            price Paul Price added a comment - Jenkins passed . Because this is a fairly visible feature (i.e., people are prevented from running our CmdLineTasks by version mismatches) and contains some changes in important places (e.g., CameraMapper , TaskRunner ), I would like it to be reviewed carefully by experts: Tim Jenness , would you please review the changes in the "base" package and check everything works on your latest OSX box? Kian-Tat Lim , would you please review the changes in the "daf_butlerUtils" package? This adds what I think is a useful feature that will ease the burden on maintaining the obs packages. Russell Owen , would you please review the changes in the "pipe_base" and "ci_hsc" packages? price@price-laptop:~/LSST/base (tickets/DM-3372=) $ git sub commit 00e8c47636ff79c201266612115dab1a9ed03bb9 Author: Paul Price <price@astro.princeton.edu> Date: Mon May 16 22:54:49 2016 -0400   add functions to pull symbols out of dynamic-linked libraries This attempts to provide a platform-independent interface to dlopen and dlsym.   include/lsst/base/library.h | 72 +++++++++++++++++++++++++++++++++++++++++++++ src/library.cc | 43 +++++++++++++++++++++++++++ 2 files changed, 115 insertions(+)   commit d59b798a0f0fbda8e03d636799584cd1acb85e5d Author: Paul Price <price@astro.princeton.edu> Date: Mon May 16 23:03:26 2016 -0400   convert thread handling to use dynamic library interface   src/threads.cc | 56 +++++++++++++++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 29 deletions(-)   commit 3b2db4a9318f5b2148cbdcc90bd617490548c726 Author: Paul Price <price@astro.princeton.edu> Date: Mon May 16 23:04:40 2016 -0400   add functions to determine versions of dependencies We get the versions by loading a dynamic library and pulling out the appropriate symbol. Includes support for getting the versions of cfitsio, fftw, wcslib, gsl.   include/lsst/base/versions.h | 26 +++++++++++++++++ python/lsst/base/baseLib.i | 12 ++++++++ src/versions.cc | 68 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+)   commit f23f926ddcd61839adaf1333514b2c3ee8256d72 Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 11:46:43 2016 -0400   add python module to collect package versions   python/lsst/base/__init__.py | 1 + python/lsst/base/packages.py | 255 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 256 insertions(+)   commit 30cbd838064116223069b63767aa6540db754dd8 Author: Paul Price <price@astro.princeton.edu> Date: Sat May 21 01:17:53 2016 -0400   packages: avoid race in use of sys.modules By iterating with sys.modules.iteritems(), we're subject to a race condition: if there's another thread (e.g., in scons) that does an import, sys.modules will change while we're iterating over it.   python/lsst/base/packages.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)     price@price-laptop:~/LSST/daf/butlerUtils (tickets/DM-3372=) $ git sub commit a1f5d3b8a37383af4749ceba513da9e08f6b09c4 Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 18:49:10 2016 -0400   CameraMapper: add capability to define default datasets We have several datasets that it would be helpful to define for all cameras. CameraMapper, being the base class, is the ideal place for this. This patch adds that capability. Default dataset definitions can be added through the "default_{images,exposures,calibrations,datasets}" methods of the CameraMapper.   python/lsst/daf/butlerUtils/cameraMapper.py | 4 ++++ 1 file changed, 4 insertions(+)   commit 1e7673e6015f94001f17950294979b0722a5f14b Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 18:49:46 2016 -0400   CameraMapper: add default "packages" dataset This dataset is used to store the set of known packages and their versions, for later comparison.   python/lsst/daf/butlerUtils/cameraMapper.py | 10 ++++++++++ tests/cameraMapper.py | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-)     price@price-laptop:~/LSST/pipe/base (tickets/DM-3372=) $ git sub commit 4aad90ae1d1a4581f71dd0aea66e011559e03b0e Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 18:56:42 2016 -0400   CmdLineTask: add check against package versions During a production run, we want to ensure we're operating with a consistent set of package versions all the way through. This patch adds a check against the packages used on previous runs. The check can be disabled with the "--no-packages" command-line flag, and the stored versions can be clobbered with the "--clobber-packages" command-line flag.   python/lsst/pipe/base/argumentParser.py | 5 +++ python/lsst/pipe/base/cmdLineTask.py | 64 +++++++++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 6 deletions(-)     price@price-laptop:~/LSST/ci_hsc (tickets/DM-3372=) $ git sub commit 9d8aa4d9f7c2952c00527ea176d4fae83188f047 Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 23:59:53 2016 -0400   add empty-data commands for warp, coadd The new system for recording and checking packages is subject to race conditions, and it only knows about python packages which have been imported, so the "preSfm" empty-data command is not sufficient to cover warp and coadd (which may import a different set of python packages).   SConstruct | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
            price Paul Price made changes -
            Status In Progress [ 3 ] In Review [ 10004 ]
            Reviewers Kian-Tat Lim, Russell Owen, Tim Jenness [ ktl, rowen, tjenness ]
            Hide
            ktl Kian-Tat Lim added a comment -

            I will try to look at this tomorrow, but in the worst case I may not have time until late Thursday. I really would like to scan the code before it gets merged, but I don't want to hold it up unnecessarily, especially with the holiday coming up. Let me know if Thu/Fri is too late.

            Show
            ktl Kian-Tat Lim added a comment - I will try to look at this tomorrow, but in the worst case I may not have time until late Thursday. I really would like to scan the code before it gets merged, but I don't want to hold it up unnecessarily, especially with the holiday coming up. Let me know if Thu/Fri is too late.
            price Paul Price made changes -
            Story Points 2 6
            Hide
            rowen Russell Owen added a comment -

            pipe_base review:

            I suggest using versions instead of packages in the command option names, as I think it more clearly tells the user what's going on (saving version information, albeit package by package).

            Adding TaskRunner._precallImpl is a nice refactor.

            Show
            rowen Russell Owen added a comment - pipe_base review: I suggest using versions instead of packages in the command option names, as I think it more clearly tells the user what's going on (saving version information, albeit package by package). Adding TaskRunner._precallImpl is a nice refactor.
            Hide
            rowen Russell Owen added a comment -

            ci_hsc review:

            Please add comments before the "pre" commands explaining why these exist. On first read these commands are confusing because they look very similar to the commands they are being added to. Your commit message is roughly the right information, but I am asking for something that lives with the code.

            Aside from that, this looks fine.

            Show
            rowen Russell Owen added a comment - ci_hsc review: Please add comments before the "pre" commands explaining why these exist. On first read these commands are confusing because they look very similar to the commands they are being added to. Your commit message is roughly the right information, but I am asking for something that lives with the code. Aside from that, this looks fine.
            rowen Russell Owen made changes -
            Reviewers Kian-Tat Lim, Russell Owen, Tim Jenness [ ktl, rowen, tjenness ] Kian-Tat Lim, Tim Jenness [ ktl, tjenness ]
            Hide
            rowen Russell Owen added a comment -

            I am done with my part of the review. I removed myself from the list of reviewers, though I'm not sure if that was the right thing to do.

            Show
            rowen Russell Owen added a comment - I am done with my part of the review. I removed myself from the list of reviewers, though I'm not sure if that was the right thing to do.
            Hide
            tjenness Tim Jenness added a comment -

            Paul Price sorry for the delay. I have just tried building the branch and base builds but daf_butlerUtils fails complaining about amplifiers. I am assuming something needs to be rebased to take into account the recent changes in DM-6147 by @rowen ? (I haven't verified that).

            Show
            tjenness Tim Jenness added a comment - Paul Price sorry for the delay. I have just tried building the branch and base builds but daf_butlerUtils fails complaining about amplifiers. I am assuming something needs to be rebased to take into account the recent changes in DM-6147 by @rowen ? (I haven't verified that).
            Hide
            tjenness Tim Jenness added a comment -

            I've made some comments on base on the pull request on Github. I do wonder if "library" is too generic a name for the C++ code.

            Thanks for also refactoring the mkl/openblas code.

            I don't want to close the review until I can verify that it actually works on my Mac (Which requires pipe.base to build).

            Show
            tjenness Tim Jenness added a comment - I've made some comments on base on the pull request on Github. I do wonder if "library" is too generic a name for the C++ code. Thanks for also refactoring the mkl/openblas code. I don't want to close the review until I can verify that it actually works on my Mac (Which requires pipe.base to build).
            Hide
            price Paul Price added a comment -

            Kian-Tat Lim, I am back from my brief vacation and am looking forward to closing this out. Could you please pass or play?

            Show
            price Paul Price added a comment - Kian-Tat Lim , I am back from my brief vacation and am looking forward to closing this out. Could you please pass or play?
            swinbank John Swinbank made changes -
            Sprint DRP X16-1, DRP X16-2, DRP X16-3 [ 210, 214, 217 ] DRP X16-1, DRP X16-2, DRP X16-3, DRP F16-1 [ 210, 214, 217, 225 ]
            swinbank John Swinbank made changes -
            Rank Ranked higher
            Hide
            price Paul Price added a comment -

            Kian-Tat Lim seems to have disappeared. Russell Owen, would you mind also tackling the review of daf_butlerUtils? I think you're probably one of the few with some familiarity with this package.

            Tim Jenness, I'll clean things up and hope to get you something that will work on your Mac soon. No action required from you at present.

            Show
            price Paul Price added a comment - Kian-Tat Lim seems to have disappeared. Russell Owen , would you mind also tackling the review of daf_butlerUtils? I think you're probably one of the few with some familiarity with this package. Tim Jenness , I'll clean things up and hope to get you something that will work on your Mac soon. No action required from you at present.
            price Paul Price made changes -
            Status In Review [ 10004 ] In Review [ 10004 ]
            Reviewers Kian-Tat Lim, Tim Jenness [ ktl, tjenness ] Russell Owen, Tim Jenness [ rowen, tjenness ]
            Hide
            ktl Kian-Tat Lim added a comment -

            Kian-Tat Lim has reappeared and added a comment to the daf_butlerUtils PR. Removing Russell's name as a reviewer.

            Show
            ktl Kian-Tat Lim added a comment - Kian-Tat Lim has reappeared and added a comment to the daf_butlerUtils PR. Removing Russell's name as a reviewer.
            ktl Kian-Tat Lim made changes -
            Reviewers Russell Owen, Tim Jenness [ rowen, tjenness ] Tim Jenness [ tjenness ]
            Hide
            price Paul Price added a comment -

            In response to comments from Russell Owen, I've changed the command-line arguments to --no-versions and --clobber-versions in pipe_base, and added comments about the pre* products in ci_hsc.

            I expect the problem Tim Jenness had is due to other products moving forward to master while daf_butlerUtils was constrained by my branch. I've rebased my branches against master, and so I hope it will work now. I'm running a new Jenkins to confirm, and hope to turn it back over to you soon for another go on your Mac.

            Next I'll look at incorporating the GitHub comments from Tim Jenness and Kian-Tat Lim.

            Show
            price Paul Price added a comment - In response to comments from Russell Owen , I've changed the command-line arguments to --no-versions and --clobber-versions in pipe_base, and added comments about the pre* products in ci_hsc. I expect the problem Tim Jenness had is due to other products moving forward to master while daf_butlerUtils was constrained by my branch. I've rebased my branches against master, and so I hope it will work now. I'm running a new Jenkins to confirm, and hope to turn it back over to you soon for another go on your Mac. Next I'll look at incorporating the GitHub comments from Tim Jenness and Kian-Tat Lim .
            Hide
            price Paul Price added a comment -

            Tim Jenness, I hope this will now work for you. I've also made the three small fixups you requested.

            Kian-Tat Lim, I went with your suggestion of putting the default products into files (daf_butlerUtils/policy/{images,exposures,calibrations,datasets}.yaml) instead of a method within the CameraMapper, and added a description to the class docstring. The code has therefore changed a little bit; would you mind taking another look?

            Jenkins passed.

            price@price-laptop:~/LSST/base (tickets/DM-3372=) $ git sub
            commit ea95129791f04b2b3f7abae1480670bde4c89c05
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Mon May 16 22:54:49 2016 -0400
             
                add functions to pull symbols out of dynamic-linked libraries
                
                This attempts to provide a platform-independent interface to dlopen
                and dlsym.
             
             include/lsst/base/library.h | 72 +++++++++++++++++++++++++++++++++++++++++++++
             src/library.cc              | 43 +++++++++++++++++++++++++++
             2 files changed, 115 insertions(+)
             
            commit 52ae3d297bb1ace13f7e342a12bd9598bfd2f5ae
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Mon May 16 23:03:26 2016 -0400
             
                convert thread handling to use dynamic library interface
             
             src/threads.cc | 56 +++++++++++++++++++++++++++-----------------------------
             1 file changed, 27 insertions(+), 29 deletions(-)
             
            commit fb1f3acd8cbc1cfabe1a39790c2771f518d72bc9
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Mon May 16 23:04:40 2016 -0400
             
                add functions to determine versions of dependencies
                
                We get the versions by loading a dynamic library and pulling out the
                appropriate symbol.  Includes support for getting the versions of
                cfitsio, fftw, wcslib, gsl.
             
             include/lsst/base/versions.h | 26 +++++++++++++++++
             python/lsst/base/baseLib.i   | 12 ++++++++
             src/versions.cc              | 68 ++++++++++++++++++++++++++++++++++++++++++++
             3 files changed, 106 insertions(+)
             
            commit 112c08cbc87f94937266a28f532488de750f9e8a
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 11:46:43 2016 -0400
             
                add python module to collect package versions
             
             python/lsst/base/__init__.py |   1 +
             python/lsst/base/packages.py | 255 +++++++++++++++++++++++++++++++++++++++++++
             2 files changed, 256 insertions(+)
             
            commit 1fe6f696a0918d1581f4da50ea1bc4d1df7021e4
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Sat May 21 01:17:53 2016 -0400
             
                packages: avoid race in use of sys.modules
                
                By iterating with sys.modules.iteritems(), we're subject to a race
                condition: if there's another thread (e.g., in scons) that does an
                import, sys.modules will change while we're iterating over it.
             
             python/lsst/base/packages.py | 5 ++++-
             1 file changed, 4 insertions(+), 1 deletion(-)
             
             
            price@price-laptop:~/LSST/daf/butlerUtils (tickets/DM-3372=) $ git sub
            commit fc1b53b8d9864c4a11efa2d3c2c3c0e3f1be7160
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 18:49:10 2016 -0400
             
                CameraMapper: add capability to define default datasets
                
                We have several datasets that it would be helpful to define for all
                cameras. CameraMapper, being the base class, is the ideal place for this.
                This patch adds that capability. Default dataset definitions can be added
                through "policy/{images,exposures,calibrations,datasets}.yaml" files.
             
             python/lsst/daf/butlerUtils/cameraMapper.py | 11 +++++++++++
             1 file changed, 11 insertions(+)
             
            commit bc0493b79487015b0c556dfeea1fa95b8b84893a
            Author: Paul Price <price@astro.princeton.edu>
            Date:   Thu May 19 18:49:46 2016 -0400
             
                CameraMapper: add default "packages" dataset
                
                This dataset is used to store the set of known packages and their versions,
                for later comparison.
             
             policy/datasets.yaml  | 5 +++++
             tests/cameraMapper.py | 5 +++--
             2 files changed, 8 insertions(+), 2 deletions(-)
            

            Show
            price Paul Price added a comment - Tim Jenness , I hope this will now work for you. I've also made the three small fixups you requested. Kian-Tat Lim , I went with your suggestion of putting the default products into files ( daf_butlerUtils/policy/{images,exposures,calibrations,datasets}.yaml ) instead of a method within the CameraMapper , and added a description to the class docstring. The code has therefore changed a little bit; would you mind taking another look? Jenkins passed . price@price-laptop:~/LSST/base (tickets/DM-3372=) $ git sub commit ea95129791f04b2b3f7abae1480670bde4c89c05 Author: Paul Price <price@astro.princeton.edu> Date: Mon May 16 22:54:49 2016 -0400   add functions to pull symbols out of dynamic-linked libraries This attempts to provide a platform-independent interface to dlopen and dlsym.   include/lsst/base/library.h | 72 +++++++++++++++++++++++++++++++++++++++++++++ src/library.cc | 43 +++++++++++++++++++++++++++ 2 files changed, 115 insertions(+)   commit 52ae3d297bb1ace13f7e342a12bd9598bfd2f5ae Author: Paul Price <price@astro.princeton.edu> Date: Mon May 16 23:03:26 2016 -0400   convert thread handling to use dynamic library interface   src/threads.cc | 56 +++++++++++++++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 29 deletions(-)   commit fb1f3acd8cbc1cfabe1a39790c2771f518d72bc9 Author: Paul Price <price@astro.princeton.edu> Date: Mon May 16 23:04:40 2016 -0400   add functions to determine versions of dependencies We get the versions by loading a dynamic library and pulling out the appropriate symbol. Includes support for getting the versions of cfitsio, fftw, wcslib, gsl.   include/lsst/base/versions.h | 26 +++++++++++++++++ python/lsst/base/baseLib.i | 12 ++++++++ src/versions.cc | 68 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+)   commit 112c08cbc87f94937266a28f532488de750f9e8a Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 11:46:43 2016 -0400   add python module to collect package versions   python/lsst/base/__init__.py | 1 + python/lsst/base/packages.py | 255 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 256 insertions(+)   commit 1fe6f696a0918d1581f4da50ea1bc4d1df7021e4 Author: Paul Price <price@astro.princeton.edu> Date: Sat May 21 01:17:53 2016 -0400   packages: avoid race in use of sys.modules By iterating with sys.modules.iteritems(), we're subject to a race condition: if there's another thread (e.g., in scons) that does an import, sys.modules will change while we're iterating over it.   python/lsst/base/packages.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)     price@price-laptop:~/LSST/daf/butlerUtils (tickets/DM-3372=) $ git sub commit fc1b53b8d9864c4a11efa2d3c2c3c0e3f1be7160 Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 18:49:10 2016 -0400   CameraMapper: add capability to define default datasets We have several datasets that it would be helpful to define for all cameras. CameraMapper, being the base class, is the ideal place for this. This patch adds that capability. Default dataset definitions can be added through "policy/{images,exposures,calibrations,datasets}.yaml" files.   python/lsst/daf/butlerUtils/cameraMapper.py | 11 +++++++++++ 1 file changed, 11 insertions(+)   commit bc0493b79487015b0c556dfeea1fa95b8b84893a Author: Paul Price <price@astro.princeton.edu> Date: Thu May 19 18:49:46 2016 -0400   CameraMapper: add default "packages" dataset This dataset is used to store the set of known packages and their versions, for later comparison.   policy/datasets.yaml | 5 +++++ tests/cameraMapper.py | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-)
            price Paul Price made changes -
            Status In Review [ 10004 ] In Review [ 10004 ]
            Reviewers Tim Jenness [ tjenness ] Kian-Tat Lim, Tim Jenness [ ktl, tjenness ]
            Hide
            ktl Kian-Tat Lim added a comment -

            daf_butlerUtils code looks good to me now (and still nicely compact).

            Show
            ktl Kian-Tat Lim added a comment - daf_butlerUtils code looks good to me now (and still nicely compact).
            ktl Kian-Tat Lim made changes -
            Reviewers Kian-Tat Lim, Tim Jenness [ ktl, tjenness ] Tim Jenness [ tjenness ]
            Hide
            price Paul Price added a comment -

            Tim Jenness, I added some additional commits in the 'base' package with some tests. Would you please have a look? I left the fixup commits in so you can see what's changed, but will squash them away before merging.

            Show
            price Paul Price added a comment - Tim Jenness , I added some additional commits in the 'base' package with some tests. Would you please have a look? I left the fixup commits in so you can see what's changed, but will squash them away before merging.
            price Paul Price made changes -
            Status In Review [ 10004 ] In Review [ 10004 ]
            Hide
            tjenness Tim Jenness added a comment -

            Looks fine to me. Builds without problem. Thanks.

            Show
            tjenness Tim Jenness added a comment - Looks fine to me. Builds without problem. Thanks.
            tjenness Tim Jenness made changes -
            Status In Review [ 10004 ] Reviewed [ 10101 ]
            Hide
            price Paul Price added a comment -

            Merged to master.

            Thanks, all!

            Show
            price Paul Price added a comment - Merged to master. Thanks, all!
            price Paul Price made changes -
            Resolution Done [ 10000 ]
            Status Reviewed [ 10101 ] Done [ 10002 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ]
            Show
            swinbank John Swinbank added a comment - Mentioned in release notes: https://confluence.lsstcorp.org/display/DM/Data+Release+Production+WIP+F16+Release+Notes
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            tjenness Tim Jenness made changes -
            Link This issue is triggering DM-6587 [ DM-6587 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            lauren Lauren MacArthur made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            rhl Robert Lupton made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            rhl Robert Lupton made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            price Paul Price made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            pschella Pim Schellart [X] (Inactive) made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            pschella Pim Schellart [X] (Inactive) made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            rhl Robert Lupton made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            jbosch Jim Bosch made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            rowen Russell Owen made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            rowen Russell Owen made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            krzys Krzysztof Findeisen made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]
            swinbank John Swinbank made changes -
            Remote Link This issue links to "Page (Confluence)" [ 14109 ] This issue links to "Page (Confluence)" [ 14109 ]

              People

              Assignee:
              price Paul Price
              Reporter:
              jbosch Jim Bosch
              Reviewers:
              Tim Jenness
              Watchers:
              Jim Bosch, John Swinbank, Kian-Tat Lim, Paul Price, Russell Owen, Tim Jenness
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Jenkins

                  No builds found.