Files
2025-02-06 20:33:26 +02:00

1.7 MiB

1issuekeytitledescriptionstorypoint
2DM-4Transition git repositories to StashTransition gitolite-managed repositories to Atlassian Stash.10
3DM-8Finalize DM mission statementThe proposed mission statement for the LSST Software Stack development: {quote} Enabling LSST science by creating a well documented, state-of-the-art, high-performance, scalable, multi-camera, open source, O/IR survey data processing and analysis system {quote} with the following rationale: * well documented -- as otherwise it will be impossible to maintain or be usable for Level 3 * state-of-the-art -- because the quality of the instrument and needs of the science to be systematic limited require us to develop new algorithms an break new ground in a number of areas * high-performance -- because of the massive amount of data we need to process for a reasonable budget * scalable -- because we need it to run from between a single core (for developers, or Level 3 users) to tens of thousands of cores (for Data Release production) * multi-camera -- because we need to process precursor data for development purposes, and because our as-delivered camera won't be ideal. * open source -- because we want the community and future surveys to benefit from our efforts. 2
4DM-9Open up LSST software mailing listsWe all benefit from making LSST software development as open as possible and conducive to outside volunteer contributions (*). One way to increase community involvement is to open up our development mailing lists to the public, analogous to the way other open source projects do. For example, we could have: * software-devel@lsstcorp.org: the development mailing list, equivalent to current lsst-data * software-users@lsstcorp.org: the users mailing list, equivalent to current lsst-dm-stack-users mailing list (but it could possibly be replaced by StackOverflow/Confluence Questions) * lsst-dm@lsstcorp.org: internal, DM-staff only mailing list, for the *rare* discussions/notices that should go out to staff only. (*) Though we don't rely on them for meeting the project specs (legally required disclaimer :) ).1
5DM-10Transition to Confluence QuestionsOpen the Confluence Questions site, for interaction with the community (and to enable community self-help). 10
6DM-17Add derivatives-based optimizer to meas_multifitSee https://dev.lsstcorp.org/trac/ticket/3146 Story points estimate is for remaining work only (just the code review, which is still substantial).10
7DM-20Release EUPS 1.3.0Release EUPS 1.3.0 in RHL's github repository.1
8DM-21Determine final URL/location for W'14 stackNeed to know where W'14 stack files are going to be housed.1
9DM-22Update newinstall.sh to check for existence of git and python on users' machinesNULL1
10DM-23Confirm stack builds on OS X 10.8NULL1
11DM-25Build Winter'14 releaseRun lsst-build scripts and 'eups distrib create' to build the Winter'14 release.1
12DM-26Update installation instructionsUpdate Confluence instructions on how to install the Winter'14 stack. The instructions are at: https://confluence.lsstcorp.org/display/LSWUG/LSST+Software+User+Guide1
13DM-28Modify gitolite permissions to allow issue/DM-NNNN branchesUse issue/DM-NNNN branches for issues tracked in JIRA, to differentiate them from tickets/NNNN branches that are still in Trac.1
14DM-52Qserv configuration - detailed designDetailed design covering how all Qserv components will be configured for runtime. 3
15DM-53Node configuration and bootstrapping - detailed designDesign covering how all Qserv components will be configured for runtime. Design how new Qserv nodes will be bootstrapped when we add them to the cluster, and how already added nodes will get updated after they were offline (crashed, turned off for maintenance etc) 6
16DM-55Node bootstrapping - 1st prototypeNULL15
17DM-56Zookeeper-based CSS (v1)NULL40
18DM-66switch back to throwing exceptions in css/Facede.ccNULL1
19DM-70Rewrite xrootd-facing codeThis task is related to DMTF-16570-09. It involves plugin in the new XRootD client (which has different interfaces, it is all async etc). We expect to also do a major cleanup on the code that is talking to XRootD while plugging in the new XRootD.30
20DM-71Data Distribution Design v1Need to come up with detailed design covering how we will deal with data distribution: managing multiple replicas, recovering from faults, adding new nodes to the cluster, registering new data from L2 ingest and user data (L3).8
21DM-75Modify format of version numbersThe versions auto-generated by the new EUPS+buildbot look like this: {code} ========== $ eups list .... pipe_tasks 7.3.2.0_5_g455c355d0f+070b2c1b35 b61 pyfits 3.1.2+9ef17db9b7 b61 b60 python 0.0.1 b61 b60 scisql 0.3+2b5a2f1b52 b61 b60 scons 2.1.0+2b5a2f1b52 b61 b60 sconsUtils 6.2.0.0_11_gf38997df3e+759c3944a1 b61 sconsUtils 6.2.0.0_19_g755151c0a5+759c3944a1 b60 shapelet 7.3.1.0_1_g9331ee763c+0c72f294dd b61 shapelet 7.3.1.0_1_g9331ee763c+e56ee84a68 b60 skymap 7.3.1.0_1_g64b750c066+db36490146 b60 skymap 7.3.1.0_1_ga6cd540cd3+493a438aa2 b61 skypix 6.1.0.0_1_g1157bf09ae+65137c93cd b61 skypix 6.1.0.0_1_gea33592463+6039c04989 b60 .... ========== {code} where the part before the plus sign is the output of git describe (slightly mangled), and the part after is the SHA1 of the sorted names+sha1s of the dependencies. While this has the benefit that any two causally disconnected buildbots with the same inputs will build the same versions, many people have complained that they're plain ugly. So here's an alternative proposal: * If a tag exist on a commit, use <tag> as the version. * If there's no tag, use branchname-gSHA1ABBREV, where any illegal characters in branchname get turned into dots * If the package has dependencies, and a build of this package with different dependencies already exists, append a +N to the end. Keep the mapping of +N -> (dependency name, sha1s) in a special git repository. Given the source code and this git repo, two causally disconnected buildbots will again generate the same set of versions. Example versions: * 7.10.2.1 * 7.10.2.1+5 * master-gdeadbeef * feature.dm-1234-gdeadbeef * feature.dm-1234-gdeadbeef+3 1
22DM-78Save a git-branch when a forced push is detectedCreate a gitolite hook that will save a branch when a forced push is detected. E.g., if we have a ticket: 'tickets/DM-AAAA' and someone rebases it and pushes with '--force' before applying the update --- then the hook will branch off the old state into (say): backups/tickets/DM-AAAA/NNNN where NNNN is a monotonically increasing number (per branch).1
23DM-83from __future__ import division breaks division of Extent*If one does: {{from __future__ import division}} the division operator on Extent types raises an exception. How to repeat: I've tried this with v7_3 and master: {code:py} from __future__ import division import lsst.afw.geom as afwGeom npt = afwGeom.Extent2I(10,10)/2 {code} an exception is raised. Removing the first line succeeds as expected.4
24DM-85Measurement - Aperture CorrectionsThe current implementation of aperture corrections in meas_algorithms' CorrectFluxes class is broken, and should not be replicated in meas_base: - it only works when the PSF model is correct - it doesn't work when the aperture to correct to is larger than the PSF model image size - it doesn't propagate the uncertainty in the aperture correction We probably need to do this by estimating the aperture correction and its errors on single frames, using the PSF stars (not the PSF models), then attaching that information to the Psf object to be retrieved *and coadded* by CoaddPsf. JK: In PMCS this would be 10% Bosch J 50% Krughoff S and 40% Owen R Breakdown: jbosch 10%; krughoff 50%; rowen 40%47
25DM-90Publish Winter 2014 binariesNULL3
26DM-92tests/testPsfDetermination.py has a broken testIn meas_algorithms tests/testPsfDetermination.py has a test testRejectBlends which does not operate as expected. When it calls pcaPsfDeterminer it results in no usable psf candidates BEFORE blends are rejected. Formerly this resulted in a numpy array named "sizes" containing one uninitialized value, which might raise an unexpected exception or raise the desired exception, depending on whether that value was negative or positive. On tickets/DM-3117 I pushed a fix for the bug that caused the invalid "sizes" array, but the unit test is now reliably broken because no viable psf candidates raises the wrong exception and does not test blend rejection in any case. So on this same ticket I have commented out the bad test for now.2
27DM-94Configure transition screens for DM agile workflowWhenever an issue is transitioned on JIRA Agile board to 'Ready for Review', a screen should pop up to ask for a reviewer. Whenever it's moved out of that state, another screen should ask for a new assignee.1
28DM-95Make lsst-build reuse buildIDs if nothing's changedAll built packages are EUPS-tagged with build IDs (the bNNN EUPS tags). Without this change, new EUPS tags are declared even when nothing changed since the previous build (and EUPS' tags code doesn't scale well at this time). This will be implemented by comparing the newly built manifest against ones stored in versiondb, and reusing the build IDs if a matching one is found.1
29DM-96Write unit tests for lsst-buildUnit tests need to be written for lsst-build; they should've been written together with the code, but due to Winter'14 release fire drill they had to be postponed.10
30DM-98clean up isr utility codeThere is some commented code in isr.py. This should be removed or updated so that it works.2
31DM-148Improve naming of getters in AmpInfoTableThe names of the methods to get values from a record on AmpInfoCatalog are potentially confusing. This is because the convention is to call the getters get[attributename]. We could change the method names in the AmpInfoCatalog, or add methods in the SWIG wrapper.1
32DM-177Box2I(bbox.getMin(), bbox.getMax()) fails for an empty bboxEmpty Box2I cannot be round tripped: {code:py} from lsst.afw.geom import Box2I b1 = Box2I() b2 = Box2I(b1.getMin(), b1.getMax()) assert b2.isEmpty() {code} It is confusing and surprising that this round tripping fails. It is also a trap for the unwary because saving min and max is the logical way to store boxes in afw tables. Records can contain points but not extents and so it saves casting back and forth and simplifies and clarifies the code to save max instead of extent. Thus that is the path most users will take, and the problem can be a time bomb: it could be quite some time before somebody tries to store an empty box and finds that it does not get retrieved correctly.1
33DM-195log4cxx-based logging prototype - v2 This is continuation of DMTF-16570-16. Initial work (v1) was done in branch u/bchick/protolog. V2 will include comments sent by K-T and issues discussed at the Qserv meeting March 13 + Free functions vs. a log object need to be discussed more. In particular, when metadata key/value pairs need to be attached, an object might make more sense. Avoiding the getLogger() call when no logging is needed (due to threshold) can be significant. + It's a security breach to use vsprintf() with any user-provided arguments. Use vsnprintf() instead so that you can check for overflow. (Or use stringstream or boost::format.) + In my prototype, I used a combination of a set of static log4cxx::LevelPtr variables with isEnabledFor(level) and a set of cpp macros to avoid the switch. + The return value from getLogger() shouldn't need to be cast. ---- + play with hierarchical names + don't execute code for formatting if debug level is off + use shorter threadId + experiment with defining special python handler, intercept and redirect to our log4cxx-based logging 15
34DM-197Replace PositionFunctor with some flavor of XYTransformafw has a special functor PositionFunctor that acts like an XYTransform. Unless PositionFunctor does not need to be invertible, it makes sense to merge these, likely by replacing PositionFunctor with the transform from afw::image::XYTransformFromWcsPair (as suggested by Jim Bosch on Trac ticket #2214).1
35DM-198Rework JOIN support, including Ref*Match tablesAdd support to the Ref*Match tables. The relevant code in Qserv core (supporting joins) has already been written. This task is related to DMTF-1640-2016
36DM-199Develop new master-worker result system Reimplement how results are returned from worker to the czar. Currently it relies on mysqldump, which is fairly inefficient. This is related to DMTF-1650-04520
37DM-201Qserv: unit testing (controller module) Design and build toy prototype of a test framework for testing controller module. This might require a mock framework, as we want to be able to test things in isolation, without testing everything around the controller module at the same time. This is related to DMTF-16570-20.10
38DM-202Qserv: unit testing (query execution) Design and build toy prototype of a test framework for testing query execution module. This might require a mock framework, as we want to be able to test things in isolation, without testing everything around the query execution module at the same time. This is related to DMTF-16570-21.8
39DM-203Prepare for setting up new cluster at IN2P3 for continuous integration/testingOnce the hardware is available, setup the environment where we could easily run integration testing of different Qserv releases, including testing/comparing performance. Integrate changes implemented in DM-1078 Add install script that exposes individual steps and allows modifications to the config file: newinstall, qserv-configure --prepare, then edit config file (or copy from somewhere), qserv-configure4
40DM-207Migrate Qserv czar code to the new logging systemThis includes switching Qserv to the new logging. Fine-tuning (what messages are printed deciding on error level) is covered in DM-685.10
41DM-208catch exceptions from CSSNULL1
42DM-210S15 Data ingestRework existing scripts used to load data into plain mysql. This involves mostly simplifying it, and pushing some functionality like converting types outside of the loading scripts. JK: Refer to loading spreadsheet for PMCS assignments10
43DM-211Revise design for Qserv front-end rearchitect Revisit the architecture. This includes proxy, down to XRootD client (mysqld, python, zookeeper). Capture all findings in new stories, add these stories to DM-170710
44DM-212Migrate away from using env variables in QservQserv is currently relying on many env variables. We should migrated away from that to the extend possible.10
45DM-213Setup multi-node testbedIt'd be useful to test Qserv using Winter2014 or Summer2014 data set on a multi-node cluster, just to exercise all pieces of the software and double check we are not missing anything.5
46DM-214W15 C++ geometryPort the geometry related code used by Qserv (it is currently written in python) to C++, and switch Qserv to the C++ based version. JK: Refer to loading spreadsheet for PMCS assignments47
47DM-215Implement C++ geometry primitives for QservNULL10
48DM-216Switch Qserv to C++ geometry primitivesNULL10
49DM-218Experiment with no-subchunking based approachNULL10
50DM-219Qserv worker scheduler – code cleanupThe qserv worker scheduler code is a bit ugly. The actual composable scheduler classes (FifoScheduler, ScanScheduler, GroupScheduler, BlendScheduler) might be pretty clean, but the interactions with the rest (wdb, wcontrol) may be harder to understand. There should be a small amount of low-hanging fruit of code to clean up, but to make things more sensible and understandable may require some new abstractions and shuffling of logic to new/different classes. Since this issue was opened, some refactoring work has been done as part of the new xrdssi port, so the organization may be somewhat cleaner now. Still, it's worth it to take a fresh look to evaluate the design/interactions to see how much can/should be reorganized.6
51DM-221Implement new (async) XrootD client(oops, earlier description was meant for DM-878. Sorry for the confusion. -danielw) (I also made a mess with the assignees. I'm sorry. -danielw)30
52DM-222Reference Test Server using new XRootDNULL5
53DM-224Switch to MariaDBWe should switch Qserv to the MariaDB Foundation based MySQL.3
54DM-228Setup dev test environmentSetup whole Qserv environment, including installing data set, and validate it by running some simple queries. Suggest changes/improvements as appropriate.8
55DM-231Refurbish existing configuration Refurbish existing configuration scripts to make them work with the new packaging/build system.10
56DM-240meas_base plugins for CModel magnitudesCreate meas_base Plugins for single-frame and forced measurement that uses the model-fitting primitives in meas_multifit to implement SDSS-style CModel magnitudes, in which we fit an exp and dev model separately and then fit the linear combination with ellipse parameters held fixed. An old-style plugin has already been implemented on the HSC fork, and should be used as a guide; this issue involves adapting that implementation to meas_base and potentially cleaning it up a bit. Note that the HSC implementation cannot be transferred directly to the LSST side because the meas_algorithms APIs are slightly different on the two forks.6
57DM-241refactor forced tasks into two tasksAfter looking at it a bit more, I think we should refactor the current meas_base forced photometry task to separate the CmdLineTask from the Measurement task. This will allow the forced measurement task to share a common base class with SingleFrameMeasurementTask (allowing us to move the callPlugin free functions into that base class), and give us better parallels with existing tasks: - ProcesImageForcedTask (my proposed name for the base command-line task) will be more similar to ProcessImageTask. We'll also have ProcessForcedCcdTask and ProcessForcedCoaddTask. - ForcedMeasurementTask will be more similar to SingleFrameMeasurementTask. In short, I think this will both clean up the ugliness in callPlugin and make the whole hierarchy easier for newcomers to understand.6
58DM-242switch from '.' to '_' in afw::table fieldsWe've been mapping '.' to '_' in afw::table I/O, which unnecessarily complicates lots of things. We'd like to switch to using '_' in the field names themselves, which requires ending this mapping in I/O, but we need to be backwards compatible. So we'll add a version to the FITS headers, and continue the mapping if the version is not present or is less than some value. Until we do this, the new field names being used in meas_base won't round-trip.3
59DM-245Implement HSC camera in new camera frameworkThe HSC camera needs to be put in the new camera geometry. I will implement is like we did lsstSim and sdss. That is I will generate a repository with the camera config and ampInfo FITS files that can be unpersisted by the butler. These changes should only require modifying obs_subaru. My plan is to just use the policy file to populate the new geometry, but if there is more up to date information, I'll happily use that.10
60DM-246Investigate compensation for DcrThis is a continuation of the W14 image differencing work. We have characterized the negative effects of Dcr on difference images, and now need to start working on compensation for these effects. This work will also touch on the Wcs and Psf classes, which are probable consumers of this information. Scope includes designing and implementing a class to describe the astrometric effects of Dcr, with consideration as to the other classes (Psf, Wcs) and tasks (ImageDifferencingTask) that may use it60
61DM-247Design of Dcr ClassDescribes the design process for implementation of a class to model the effects of Dcr. Includes design itself, and the design review process.20
62DM-248Implementation of Dcr ClassCore implementation of the class that represents the effects of Dcr. This only includes the initial implementation. We should realistically expect that this class will evolve as it encounters more use cases, no matter how thorough the design process is. 20
63DM-259Test and migrate to swig 3.0-------- Original Message -------- Subject: [LSST-data] Swig 3.0 is out (with C++11 support) Date: Mon, 17 Mar 2014 08:26:05 -0400 From: Robert Lupton the Good <rhl@astro.princeton.edu> To: LSST Data <lsst-data@lsstcorp.org> I tried a pre-release on os/x 10.7.5 and it failed some tests, but I haven't tried this version. I had some discussion about this with William, but haven't had time to follow through. R > Date: Sun, 16 Mar 2014 22:44:42 +0000 > From: William S Fulton <wsf@fultondesigns.co.uk> > > *** ANNOUNCE: SWIG 3.0.0 (16 Mar 2014) *** > > http://www.swig.org > > We're pleased to announce SWIG-3.0.0, the latest SWIG release. > > What is SWIG? > ============= > > SWIG is a software development tool that reads C/C++ header files and > generates the wrapper code needed to make C and C++ code accessible > from other programming languages including Perl, Python, Tcl, Ruby, > PHP, C#, Go, Java, Lua, Scheme (Guile, MzScheme, CHICKEN), D, Ocaml, > Pike, Modula-3, Octave, R, Common Lisp (CLISP, Allegro CL, CFFI, UFFI). > SWIG can also export its parse tree in the form of XML and Lisp > s-expressions. Major applications of SWIG include generation of > scripting language extension modules, rapid prototyping, testing, > and user interface development for large C/C++ systems. > > Availability > ============ > The release is available for download on Sourceforge at > > http://prdownloads.sourceforge.net/swig/swig-3.0.0.tar.gz > > A Windows version is also available at > > http://prdownloads.sourceforge.net/swig/swigwin-3.0.0.zip > > Please report problems with this release to the swig-devel mailing list, > details at http://www.swig.org/mail.html. > > Release Notes > ============= > SWIG-3.0.0 summary: > - This is a major new release focusing primarily on C++ improvements. > - C++11 support added. Please see documentation for details of supported > features: http://www.swig.org/Doc3.0/CPlusPlus11.html > - Nested class support added. This has been taken full advantage of in > Java and C#. Other languages can use the nested classes, but require > further work for a more natural integration into the target language. > We urge folk knowledgeable in the other target languages to step > forward and help with this effort. > - Lua: improved metatables and support for %nspace. > - Go 1.3 support added. > - Python import improvements including relative imports. > - Python 3.3 support completed. > - Perl director support added. > - C# .NET 2 support is now the minimum. Generated using statements are > replaced by fully qualified names. > - Bug fixes and improvements to the following languages: > C#, Go, Guile, Java, Lua, Perl, PHP, Python, Octave, R, Ruby, Tcl > - Various other bug fixes and improvements affecting all languages. > - Note that this release contains some backwards incompatible changes > in some languages. > - Full detailed release notes are in the changes file. 2
64DM-260Board workflow modificationsOn DM Software Development board, I propose we: * Change "Ready to Merge" to "Review Complete". Per K-T: {quote} That's what I thought "Review Complete" would be -- most of the work is done, but some fixups are needed before merging, and a re-review is not necessary. {quote} * Remove "Ready for Review". Instead, the developer should just drag the issue to "In Review" and assign it to a reviewer. If/when we re-instate the "review master", we may re-introduce "Ready for Review"1
65DM-271Setup the new Buildbot CI systemSetup the Buildbot 0.8.8 testbed for the DM environment. This includes: (1) setting up slaves on the set of common OS on which the DM stack runs; (2) creating a new continuous integration slave using the new eupsPkg-based build and distribution support, Definition of done: * Every git change of master should trigger a build of master * If a build failed, an e-mail will be sent to lsst-data (if the build succeeds, nothing happens) * Failures due to internal buildbot issues (e.g., config problems, transient system availability issues, timeouts, etc.) should go to the buildbot owner. * Allow user-triggered builds via web page (with specified refs to be built), with a common user (until we get LSSTC LDAP directory hooked up). It's understood that locking may not be fully implemented/fleshed out in this story. * It should be possible for a user on lsst-dev to easily setup the stack for either a failed or a successful build. 100
66DM-272Move TCT-relevant twiki documentation to ConfluenceCongregate all the trac TCT-relevant documents (standards, policies, guidelines, meeting history) onto Confluence.2
67DM-273Develop and then create the organizational structure for DM Confluence spaceBefore we start populating the DM Confluence space with active pages, we should define an overall organizational structure/taxonomy.1
68DM-274Adding support for numpy scalar array types as arguments to SWIG wrapped methodsBuilding against the anaconda on lsst-dev causes construction of Point2I (and other point types) with numpy dtypes to fail with the standard exception: {code} NotImplementedError: Wrong number or type of arguments for overloaded function {code} I did not know that was not allowed. If I am doing it others are as well. I think this should be addressed in some way before W14 release. How to repeat on lsst-dev: {code:sh} setenv EUPS_DIR ~lsstsw/stack/ source ~lsstsw/eups/bin/setups.csh setup afw setup anaconda echo "import lsst.afw.geom as ag\nimport numpy\nprint ag.Point2I(5,5)\nval = numpy.int64(5)\nprint ag.Point2I(val,val)" > test.py python test.py {code} Using the old 7_3 stack you can do a similar test: {code:sh} source /lsst/DC3/stacks/default/loadLSST.csh setup -t v7_3 afw echo "import lsst.afw.geom as ag\nimport numpy\nprint ag.Point2I(5,5)\nval = numpy.int64(5)\nprint ag.Point2I(val,val)" > test.py python test.py {code}3
69DM-278Improve handling errors occuring in AsyncQueryManagerAsyncQueryManager is initialized based on configuration file, if the configuration is invalid, an exception should be thrown (eg in _readConfig()) and gracefully handled upstream.1
70DM-280clean up multiple aperture photometry codeI've been doing some minor work on the HSC-side ApertureFlux algorithm, and I wanted to record some concerns here (from both me and RHL) that should be addressed in the new meas_base version: - We should consider merging ApertureFlux and EllipticalApertureFlux into the same algorithm (with a config field to choose whether to use elliptical apertures). We could still register it twice, with a different default config value, and this should eliminate a lot of code duplication. We could also consider having them inherit from a common base class (instead of having EllipticalApertureFlux inherit from ApertureFlux, as is done now). - We should test that the threshold at which we switch from Sinc to naive apertures is obeyed exactly. - We should create a flag for the failure mode in which an aperture cannot be measured because we go off the edge of the image, and test that it appears at the right point. If possible, we should set this flag and measure what area we can within that aperture, instead of just bailing out. - (Somewhat off-topic) We should consider having utility functions on SourceSlotConfig to set all slots to None for use in unit tests.5
71DM-289More helpful location information for errors in duplicator/partitioner inputCurrently, if the Qserv duplicator or partitioner encounters erroneous input (such as a formatting error, or missing columns), the error message it outputs does not include a mapping back to the location of the error, making it very hard/annoying indeed to fix that erroneous input. Fabrice would (quite reasonably) like to see a filename and line number in the error message. Unfortunately, producing a line number is complicated by the following facts: - multiple threads may be reading sub-sections of the same input file in parallel - sub-sections are not guaranteed to be read in order - lines can have varying length In other words, the code reading/parsing the input has no idea which line it is working on, and making that information available would involve either deferring error reports or extra synchronization (performance loss). What we can easily (and should) do is to arrange for processing code to know the file and byte offset of the input text being processed; error messages should include both pieces of information.2
72DM-290Eliminate dependence of query analysis on parser and antlrI would like to write and compile query analyzer code completely independently of the parser and ANTLR (transitively). This doesn't seem to work right now. This is not currently possible. This might take any where from a day to a week. (I'm not sure if we can finish anything in half a day, if you include the testing, review, feedback, and revision process, but perhaps unit testing will make that faster). Updates to follow after the scope is estimated. Dependencies to be broken: query --> parser, antlr (due to predicate depending on antlr nodes) qana --> parser, antlr 8
73DM-291Investigate new XrdSsi interfaceNULL10
74DM-295xrootd initialization should abort if mysql connection failsCurrently xrootd will happily start even if it can't connect to mysql, it will only print a message: {code} Configration invalid: Unable to connect to MySQL with config: {code} This can be easily overlooked, plus, it is a fatal error and xrootd initialization should be aborted. while working on this, I propose to also improve validateMysql(). At the moment it connects to mysql and database in one call. If connection is fine, but the database does not exist, it will fail without telling user why it failed. This can be confusing. It'd better to connect to mysql without connecting to database, then do "select_db", and if that fails, inform the user that the database does not exist. (transferred from trac ticket 3165)1
75DM-296fix namespaces in all Qserv core modulesThis was suggested by the code review for ticket 1945 (https://dev.lsstcorp.org/trac/wiki/SAT/CodeReviews/1945), pasted below: common/src/*: While it's not required by the coding standards, I'm a big proponent of using namespace scopes in .cc files, which usually save you from needing namespace aliases and will certainly save you from having prefix every declaration with qserv::. At some point I'd recommend changing the header file extension from .hh to .h to match the rest of the LSST DM code, unless it's a big backwards compatibility issue. (transferred from trac ticket 2528)5
76DM-297Qserv should check for loaded spatial UDFsQserv should have a way of checking for the existence of spatial UDFs loaded in the worker MySQL instances. Obviously, the worker must perform the physical check. However, the worker has no knowledge that spatial UDFs even exist, since the master is responsible for translating spatial spec into UDF call. At the moment, the preferred way of checking would be some sort of administrative command that runs on all nodes. An alternative would be some sanity check that is run on a worker before an admin starts a worker. Or the master could devise a MySQL query to check for things and dispatch to all chunks (although this would not get full coverage when replica exist, while being redundant while workers host more than 1 chunk). (transferred from trac ticket 1959)2
77DM-298restarting mysqld breaks qservRestaring mysqld results in unusable qserv (even if the restart happens when qserv is completely idle). The error message is: ERROR 2013 (HY000): Lost connection to MySQL server during query This happens most likely because qserv caches the connection, which becomes invalid when server is restarted. I am guessing the same will happen when there is a long period of inactivity (the connection times out). (transferred from trac 2853)1
78DM-300Centralize hardcoded constantsSome values in qserv need to become constant(e.g. chunkId column names, dirs, filenames). Some of these are configurable, others are hardcoded in non-obvious places in the code. When multiple places need this value, they really need to agree, and unfortunately, qserv doesn't have a well-known place for these constants yet. Any (constant) value that is needed by different parts of the code needs to be managed in a way that is reasonably obvious to unfamiliar programmers. List of values: * chunkId, subChunkId column names (master...indexing.py, app.py) * environment variable names * + others. This should actually be fairly simple to implement, once the right (?) design is conceived and worked-out. (transferred from trac ticket #2405)6
79DM-309Jira for QservJira setup for Qserv, includes things like adding new tasks, transferring tasks from trac, epic/story/task division, assigning story points, setting scrum board, just learning things and more...8
80DM-312Come up with a standard to handle C++ Exceptions in Qserv (and the rest of DM?)Currently CSS is using one class and relies on different error codes to differentiate between different type of exceptions, while other parts of Qserv core define an exception for each different error. It'd be good to standardize and use the same approach. 4
81DM-313cleanup includes in Qserv core modulesIncludes need cleanup: group into standard lib, boots and local, sort as appropriate etc. Also, unify forward declarations.2
82DM-318CSS - surviving mysql and zookeeper glitchesCSS should gracefully recover from failures such as lost connection to mysqld or zookeeper. It is not clear if it would survive such glitches right now -- this needs to be tested and the code improved as necessary.4
83DM-319Create a board (virtual or otherwise) with pictures and names of everyone in DMI tried compiling a list of everyone who works or has worked on the DM code -- it was nearly impossible. We should have a (public) list both of current staff and our alumni (and where they are now).1
84DM-321Re-think thread.cc and dispatcher.cc python interfaceThe mess of thread.cc and dispatcher.cc need to be re-thought and re-designed so that the interface is smaller and more obvious. 2
85DM-322Trim python importing by czar in app.pyClean up the way modules are imported in qserv master, use relative import when appropriate instead of lsst.qserv.master.<package> (migrated from Trac #2369)2
86DM-326Libraries being built in lib64 on OpenSUSE, when EUPS tables assume libA report from Darko Jevremovic <darko@aob.rs>: {quote} Hi Mario, I managed to build stack v8 on OpenSuse13.1 There were standard problems with lib/lib64 - namely system builds libraries in $PREFIX/lib64 and some programs are hard wired for $PREFIX/lib if you could change the last line of mysqlclient-5.1.65+3/ups/eupspkg.cfg.sh from (cd $PREFIX/lib && ln -s mysql/* . ) to ( cd $PREFIX && if [ ! -f "lib" ] ; then ln -sf lib64 lib; fi &&cd $PREFIX/lib && ln -s mysql/* . ) or something along that line (am not sure whether the syntax would work). Also if you could add in the same manner to ups/eupspkg.cfg.sh ( cd $PREFIX && if [ ! -f "lib" ] ; then ln -sf lib64 lib; fi) for the following packages: minuit2 gsl cfitsio wcslib {quote} 1
87DM-327Take RAM into account when computing NCORES to use in installsDarko Jevremovic reported he's had to switch off hyperthreading and manually override NCORES, MAKEFLAGS and SCONFLAGS because his 8-core machine had too little RAM to build afw with -j 8. To fix this, eupspkg default build routines should take RAM into account when computing the level of build parallelism. In the meantime, we should document the workaround (contact darko@aob.rs).1
88DM-330Local lsst-build invocations should use a different build number prefixBuildbot-invoked lsst-build installs packages in the stack with "b#" tags. These are propagated to the distribution server by {{eups distrib create}}. Local stacks maintained with lsst-build should use different tags so that they don't conflict with these distributed tags.1
89DM-331S14 Enhancements in Qserv installation procedureNULL15
90DM-334Cut Qserv releaseIt'd be very useful to have fully functioning Qserv release with the latest set of changes (build, packaging, CSS, Daniel's fixes etc) during the Hackathon week.2
91DM-335Migrate std::lists to std::vectorsSuggested by Andy when reviewing DM-296, discussed at Qserv mtg 3/27. std::list --> std::vector * why? Default now is vector, iterating over vector is much more efficient than over list * revisit on case by case bases, do not blindly replace * preferred solution: typedef, and name it in a way that conveys the intent (e.g., might call it a "container"), underneath use vector8
92DM-336improve code that initializes shared_ptrs Reported by Andy when reviewing DM-296. Discussed at Qserv mtg 3/27. boost::shared_ptr =(new T())" --> boost::make_shared()4
93DM-337removed dead code in stringUtil.hRemove obsolete strToDoubleFunc (and more) in util/stringUtil.h.1
94DM-339Make it easy to build and release point releasesNULL4
95DM-342Establish github mirror of LSST repositoriesNULL4
96DM-343Transition to StashNULL10
97DM-345Enable gravatarsCould you enable gravatars for all our atlassian products (at least Jira + Agile; Confluence) https://confluence.atlassian.com/display/AOD/Configuring+Gravatar+support1
98DM-354Add cameraGeom overview to Doxygen documentationThe CameraGeom package needs an overview page (part of afw's main.dox) as part of the Doxygen documentation. I think it's up to Simon or me to add this.2
99DM-355Install and tag multiple Qserv versions on the same distserverDone in DM-3661
100DM-359Simplify Co-add example in Software User GuideThe current example in the LSST Software User Guide for co-addition reflects the processes necessary to perform a DR production. While thorough, it only really works on the lsst cluster. The example should be simplified to work on a smaller subset of data, and on single-user machines. Definition of Done: * Following the documentation, it will be possible for users to identify the SDSS data they need (the subset of files) * There will be instructions on how to download the necessary files to their local machine * There will be instructions on how to build the necessary repositories * There will be instructions on how to run the Co-Add+forced photometry tasks. * Any issues requiring access rights to LSST machines or databases will be identified and issues created for later.8
101DM-365Integration tests dataset should be packaged in eupspkgA qserv-integration-tests package should be created : - it would allow to manage easily, in ups/qserv.table, tests version for a given Qserv version. - it would allow to install Qserv dependencies related to testing, like partition (and other data ingest code which may arrive.3
102DM-366Refactor install/distribution procedures using lsst-sw Here's Andy Salnikov remark, during #3100 review : https://dev.lsstcorp.org/trac/ticket/3100#comment:185
103DM-367CSS performance optimizations (avoiding redundant checks)Facade.cc: it seems worthwhile to think about how to tweak the implementation to reduce redundant calls. e.g., getChunkedTables() calls _cssI->exists() for the database for each contained table. It also calls exists() for each table, which it just retrieved. In reality, it only needs to call exists() once, for the db. So we are doing 1+3t reads rather than 1+t. (This came up in the review of DM-56, the review comments are captured in DM-225) 8
104DM-368integrate qserv_admin backend into czar or separate admindclient/qserv_admin_impl.py: I know the czar's Python code is ugly. But the concept of having more than one entry point for users is also ugly. I feel like the client should just wrap up stuff into JSON and make a REST call into the czar. Ideally the proxy would use REST, perhaps via: https://github.com/fperrad/lua-Spore/, which at least seems more thought-out than lua-xmlrpc. (This came up in the review of DM-56, the review comments are captured in DM-225)15
105DM-369Improve how CSS exceptions are handledCSS has one class for all exceptions. The model adopted by Daniel (each type as a separate exception) is better, as we can catch individual exceptions instead of (a) having to catch all css exceptions, (b) checking type and (c) rethrowing if it is not the type we want. To be able to catch all CSS exceptions, we can just introduce a new base class (that is new comparing to Daniel's version).6
106DM-370improved how default values for CSS are handledNeed to improve how defaults are handled in qserv_admin. There seems to be some desire to warn when values are not set--how about setting defaults and just printing what configuration is being used? If this is something human-created, we should have reasonable defaults and not bother the user, unless no default is viable. I think we should only be strict on machine-generated input, where we would like to catch bugs as soon as possible. (This came up in the review of DM-56, the review comments are captured in DM-225)5
107DM-372fix testQueryAnalysis5 tests fail in the testCppParser.2
108DM-373Catch AttributeError problems in czarI wonder if we could catch more exceptions in czar to simplify debugging. For example, if I change: {code} --- a/core/modules/czar/lsst/qserv/master/app.py +++ b/core/modules/czar/lsst/qserv/master/app.py @@ -418,7 +418,7 @@ class InbandQueryAction: self.constraints.size()) dominantDb = getDominantDb(self.sessionId) dbStriping = getDbStriping(self.sessionId) - if (dbStriping.stripes < 1) or (dbStriping.subStripes < 1): + if (dbStriping.x < 1) or (dbStriping.y < 1): {code} It will return to client a very cryptic error: {code} Qserv error: Unexpected error: (<type 'exceptions.AttributeError'>, AttributeError('x',), <traceback object at 0x969a02c>) {code} with no other clues, traceback or information in the log. 2
109DM-375S14 Improve error handling in all parts of Qserv, report sensible errors to usersQserv needs to handle error gracefully. No matter what error occurs, it should try to automatically recover, and if it can't it should report a reasonable error to user. We should try to poke around and trigger various errors in random places in Qserv and watch what happens, how system fails and/or how it reports the error to user (then we should fix it...). I expect we will need to design a better error handling framework to achieve graceful error handling.60
110DM-380loadLSST bug(s) for csh, kshA flaw in the v8.0 loadLSST scripts (and/or in eups/bin/setups) causes the following errors: 1) When using ksh: {code} $INSTALL_DIR/loadLSST.ksh ksh: /path/to/INSTALL_DIR/eups/bin/setups.ksh: cannot open [No such file or directory] {code} And indeed, there is no eups/bin/setups.ksh file. 2) When attempting to run the installation demo (v7.2.0.0): {code} $> printenv SHELL /bin/tcsh {code} [The same issue appears with csh, unsurprisingly.] {code} $> source /path/to/install_dir/loadLSST.csh $> cd /path/to/demo $> setup obs_sdss $> ./bin/demo.sh ./bin/demo.sh: line 7: /volumes/d0/lsst/stack80/eups/*default*/bin/setups.sh: No such file or directory ./bin/demo.sh: line 12: setup: command not found {code} After hand-editing the demo.sh script to omit the "/default" string from the offending line, the demo runs normally to completion. Note that everything works fine for bash with v8.0, which is what I tested awhile back. 1
111DM-384Add Versioning to SourceTable in lsst::afw::tableAdd version to afw::table::SourceTable. Persist that version number to fits file when the table is saved, and restore when the table is restored. Tables created and saved to disk prior to this modification will have the version number 0, by default. Tables created with the S14 version will have the version number 1. This change is to enable a new version of slots and field naming conventions as needed by the Measurement Framework overhaul, at the same time allowing current clients of SourceTable to continue to function. The work to define and persist the slots depending on the version will be on a separate issue. Should not appear as an alterable member of the metadata, but should be saved with the metadata and reloaded when the file is reloaded. getVersion and setVersion methods will be used to allow clients to alter this number.1
112DM-386Create Command/Event SenderSimulate the OCS and CCS (via the OCS) sending message to the Base DMCS. Write a library to send commands via method calls, which will be used by commandable entities and by the Base DMCS. The method calls in this library will be used to simulate sending commands from the OCS. This will initially be developed using DM messages, and later switched to use DDS. Write a command line tool to send these messages. Commands with no arguments: init, enable, disable, release, stop, abort, reset. Commands with arguments: configure - arguments are: Set of computers, software and versions to be executed, parameters used to control that software. Events with arguments: startIntegration, nextVisit. Definition of done: * A library that has method calls to each of these commands/events. Each method call sends one message to the given Topic. * Command line tool that can send any of these commands/events to a commandable entity subscribed to a Topic. * Unit tests for each of the commands/events6
113DM-387Build Base DMCS communications libraryWrite a library to be used by each commandable entity and the Base DMCS. Methods in this library receiving commands from the simulated OCS. Specific command actions will be handled by each entity, and events are handled by the Base DMCS. This will initially be developed using DM messages, and later switched to use the DDS. The library will include: * An object with methods for blocking receives, blocking receives with timeouts, and non-blocking receives. Any commands received by these methods are given to another class to call appropriate action methods. * An abstract class implementing each of the following methods for commands: init, configure, enable, disable, release, stop, abort, reset. * An abstract class with methods for implementing the following methods for events: startIntegration and nextVisit6
114DM-388Build replicatorReplicator On boot: * Establishes connection with single, pre-configured distributor. * Checks connection with the network outage buffer, the Base raw image cache, and the tape archive. On success, the replicator registers itself with the Orchestration Manager in the fully-operational pool. From K-T: Note that what to check should eventually be dependent on what was specified in the configuration. That way, if the tape library is down, we could still run using the network outage buffer or raw image cache as the redundancy source. In operation: * Receives a job with visit id, exposure sequence number within the visit and raft id. * Queries the Base EFD replica for information needed to process the image. * Subscribes to the Camera Data System (CDS) “startReadout” event and to the OCS telemetry topics. * Waits for a startReadout event * Request the cross-talk corrected exposure for the raft using the CDS client interface and block until it is available. On receipt of crosstalk-corrected image: * Verify integrity of image (hash or checksum) * Send image with telemetry to the distributor, compressing it if the configuration says to do so. At the same time, the image is written to the network outage buffer and the raw image cache using the Data Access Client Framework, retrying until successful for a configured number of tries. All images that are written are tagged with the Archiver mode (by the replicator job). * Request the raw image using the CDS client interface and block until it is available. On receipt of the raw image: * Verify integrity of image (hash or checksum) * Send image to the distributor and simultaneously write to the network outage buffer and the tape archive. ALL image transmission statuses (successful and unsuccessful) are recorded to the Alert Production Database. NOTE: Image some calibration or engineering modes, there may only be raw-image data, not crosstalk-corrected image data. The replicator job configuration will provide for this). NOTE: Replicator jobs will need to detect they are not completing in the expected amount of time. NOTE: Something (the Base DMCS? The Event/Message Monitor?) needs to pay attention to the number of replicator re-registering themselves with the local-only pool and notify NetOps to investigate and resolve the issue. On errors sending or keeping connected to the distributor, the replicator: * unregisters from the “fully-operational” pool * registers with the “local-only” pool The replicator will continue to try and connect to the distributor, and if it is able to reestablish the connection: * unregisters from the “local-only” pool * registers with the “fully-operational” pool Heartbeat messages between replicators and distributors will indicate when the replicators will be able to re-register with the fully-operational pool.10
115DM-389Build distributorDistributor On boot: * Checks the network, archive raw image cache and the tape archive. After all have tested successfully, the distributor waits for a connection from its associated replicator. In operation: * On receipt of a visit id, exposure sequence number and raft id from its associated replicator, the distributor publishes them along with its network address to the Archive DMCS. On receipt of crosstalk-corrected image and associated telemetry from its associated replicator: * Verifies integrity using a hash or checksum * Writes to the raw image cache using the Data Access Client Framework * Decompresses (if necessary) * Separates into individual CCD-sized portions * Sends portions to the appropriate connected Workers Note: Workers can connect to request a CCD-sized crosstalk-corrected image. On receipt of raw image: * Writes it to the tape system. * All images are tagged with the Archive mode. Should include heartbeat monitoring of the replicator/distributor connection.10
116DM-405Write Linux Standard Base - compliant init.d scriptsQserv services init.d scripts have to rely on LSB, in order to work on multiple systems. Remark : xrootd has to be launched as a background process (i.e. with a & at the end). But this always send of return code equal to 0, even if xrootd fails to start, a shell function wait_for_pid will be implemented in xrootd init.d scritps to solve that (inspired from mysqld init.d script).5
117DM-413Simulate computation and production of VOEvents for worker batch jobSimulate jobs which do alert processing. Produce VOEvents based on those results.6
118DM-417finish adding aliases to afw::table::SchemaThis issue picks up the partially-completed Trac Ticket #2351, which adds a string-substitution-based alias mechanism to afw::table::Schema. There are still some issues to sort out w.r.t. constness - in other respects, a Table or Catalog's schema cannot be changed once the Table has been constructed, but we do need to be able to change aliases after table construction.6
119DM-419Use aliases in slotsNULL2
120DM-420Remove measurement code from meas_algorithmsNULL4
121DM-421add basic FunctorKeysAdd the basic FunctorKeys mechanism, and enough implementations to support Slots.4
122DM-422Add FunctorKeys to replace compound field functionalityAdd more FunctorKeys to replace the functionality in all current compound field types and meas_base result objects. May involve moving some meas_base definitions to afw.4
123DM-423Add FunctorKeys for common analysis tasksAdd FunctorKeys for simple, common, calculated fields, including: - Magnitudes from fluxes - Coords from Points, Points from Coords - Ellipse conversions and radius/ellipticity extraction4
124DM-424Integrate FunctorKeys with SchemaMapperNULL10
125DM-425Remove support for compound field typesNULL2
126DM-428add live DS9-based debugging to measurement frameworkThe old measurement framework had a lot of live DS9-based display options. We should ensure the new one has at least as many, and that it still works. At some point, we should consider a different mechanism for enabling those displays and possibly other tools for displaying them, but that's out of scope for this issue.6
127DM-429Make NoiseReplacer outputs reproduceableWe need a way to get back the noise-replaced Exposure as it was when a particular source was measurement, after the measurement has been run, without having to run noise-replacement on all the previous objects again. There is already code in afw::math::Random to output its state as a string; I think we should probably just save this string in the output catalog. This will require some API changes to allow the NoiseReplacer to modify the schema and set a field in the output records.3
128DM-430Control log levels on a per-plugin basisWe should be able to control log levels so that certain plugins are run at one level while the rest are run at another (to allow a particular plugin being debugged to be more verbose).4
129DM-433Add slot support for meas_base-style outputsThe slot mechanism in afwTable currently uses compound fields to save the 3 slot types: flux, centroid, and shape. Since the new measurement framework uses a flattened representation in the SourceTable where these types are saved as multiple scalar fields, the slot mechanism need to be altered to handle this new table type. 1. An alternative to KeyTuple for storing the keys required by the slot 2. Fixup get(Centroid, Flux, Shape) in SourceRecord to use correct keys. 3. Fixup the single value getters (getX, getY, etc) to use the correct keys. 4. Persist slot info to fits correctly, based on table version.4
130DM-435add aperture-correction measurement code to the end of calibrateAt the end of CalibrateTask, we'll want to compute the PSF and aperture fluxes of the PSF stars, and send those to the PSF model to be stored and interpolated (using the featured added via DM-434). We'll also need to run any other flux measurement algorithms that need to be tied to the PSF fluxes on these same stars; because these can be somewhat slow, we probably want to limit these measurements to only the PSF stars, rather than requiring all these algorithms to be run as part of calibrate.measurement. The relationships between these fluxes and the PSF fluxes will be additional fields to be added to and interpolated by the PSF. The HSC implementation of this work (as well as that of DM-436) was done on issue HSC-191: https://hsc-jira.astro.princeton.edu/jira/browse/HSC-191 There were changes to many packages, but the relevant ones for LSST are: https://github.com/HyperSuprime-Cam/afw/commit/057fb3c0581c512d5664f1883a72da950c9eae9d https://github.com/HyperSuprime-Cam/meas_algorithms/compare/HSC-3.0.0...u/jbosch/DM-191 https://github.com/HyperSuprime-Cam/pipe_tasks/compare/4c3a53e7238cbe9...u/jbosch/DM-1918
131DM-436apply aperture corrections in measurement tasksWe need to interpolate the aperture correction to the position of every source, and apply this correction to all appropriate fluxes. The HSC implementation of this work (as well as that of DM-435) was done on issue HSC-191: https://hsc-jira.astro.princeton.edu/jira/browse/HSC-191 There were changes to many packages, but the relevant ones for LSST are: https://github.com/HyperSuprime-Cam/afw/commit/057fb3c0581c512d5664f1883a72da950c9eae9d https://github.com/HyperSuprime-Cam/meas_algorithms/compare/HSC-3.0.0...u/jbosch/DM-191 https://github.com/HyperSuprime-Cam/pipe_tasks/compare/4c3a53e7238cbe9...u/jbosch/DM-191 Note that on the LSST side, we'll want to apply the aperture corrections either within a new plugin in meas_base or as a new part of BaseMeasurementTask, not as a change to the CorrectFluxes algorithm (which will be removed in the future along with the rest of the old measurement framework in meas_algorithms).7
132DM-441Setup of four new measurement algorithms for processCcd testingThe goal of this story is to take the following algorithms and make them fully operational with processCcd. PsfFlux,SdssShape,SdssCentroid,SincFlux. This code was moved to meas_base in w14, but has yet to be used in full operation. This is the first step in that process. Each algorithm will at least have one test to confirm that it works, but the unit tests will be very simple. The actual confirmation of full operability will the to run tests against real data, and compare against the existing meas_algorithms. The algorithm code will still require cleanup even after this story is completed. That is because it has intentionally been left the same as what existed in meas_algorithms. The goal of this ticket is to confirm that the each algorithm can (1) complete its measurement with some reasonable result, (2) responds to its major configuration options, and (3) handles at least some of its defined exceptions (that is, flags) correctly. Confirmation that the results are identical with meas_algorithms is a subsequent ticket Cleanup and documentation of this code will be done in a subsequent ticket.4
133DM-443Approve/Acquire HipChat licenses-------- Original Message -------- Subject: Getting HipChat licenses Date: Wed, 09 Apr 2014 08:51:46 -0700 From: Mario Juric <mjuric@lsst.org> Organization: Large Synoptic Survey Telescope Inc. To: Jeffrey Kantor <JKantor@lsst.org>, Iain Goodenow <IGoodenow@lsst.org>, Stefan Dimmick <SDimmick@lsst.org> Jeff et al., I'd like to start the process to acquire HipChat licenses (we have 10 days left on our evaluation one). Right now we have 26 users, so our first total would be $52/month. I'm expecting it will eventually grow to ~50 users or so. In terms of an account to charge, this should really be considered a project-wide tool, but if that's going to cause unnecessary delays I'd propose we charge it to DM as a sign of our infinite kindness and good will :). HipChat wants to simply bill a credit card -- once we get the necessary approvals, Iain, I can add you as an admin, and you can use our corporate one if that's OK. 1
134DM-444Write job ads for Tucson DM positionsNULL4
135DM-445Test four algorithms for compatibility with original meas_algorithmsDo a trial run of a small area of sky (using a single exposure from measMosaicData). First create a source catalog using the old measurement.py, then run the same test with the measurement task in sfm.py. Compare the results. If the code has been ported correctly, they should match.4
136DM-446Setup PeakLikelihoodFlux with new Algorithm FrameworkMove PeakLikehoodFlux to meas_base framework 1
137DM-447Setup Flux algorithms for testing with processCcdSimilar to DM-441 for flux algorithms GaussianFlux and NaiveFlux Unit tests for major config options, just to be sure that they do something reasonable. Test of at least one exception (flag)2
138DM-448Test Centroid algorithms against meas_algorithmsNULL2
139DM-449Test Flux algorithms agains meas_algorithmsTest for compatibility of NaiveFlux, GaussianFlux, and PsfFlux against meas_algorithms 2
140DM-454reimplement shapelet PSF approximationsThe CModel code we want to transfer from HSC in DM-240 currently relies on the old "multishapelet.psf" algorithm in meas_extensions_multiShapelet. That means we either need to convert that PSF-to-shapelets code in meas_extensions_multiShapelet to use the meas_base interface, or we need add new PSF-to-shapelets code in meas_multifit. I think the latter is the better choice, even if we delay DM-240 as a result; the heavy algorithmic code is already available as primitives in meas_multifit, so it should just be a matter of packing those into a simple driver, creating a config class for it, and testing it on a few real and simulated PSFs to learn reasonable defaults for the configs.6
141DM-460Implement backup/restore for CSSIt'd be very useful to have a way to "dump" and "restore" entire contents of the key/value store in zookeeper. The dump part is pretty much there (can dump to an ascii file) 4
142DM-461Add Classes of MeasurementErrorSome measurement failures are global for a whole exposure, such as a missing Psf or Wcs. The framework currently does not distinguish this from a failure in a single measurement. Should add a new subclass of MeasurementError which can be thrown in these cases. Should also add configuration option to the measurement framework to determine what should be done with this type of error. We should also add an exception class and associated how-to-handle config for problems that indicate that something has gone wrong in pre-measurement processing, such as NaNs in the image.4
143DM-463PixelsFlags, SkyCoordAlgorithm, and ClassificationSkyCoord was moved to DM-441 - done in Python Classification is also simple if done in Python Pixel Keys will be done in C++ Some work left from SdssShape will be done with this ticket Also, since these are out only two Python algorithms in the base set, I will add the exception handling and base fail() methods at this time. 2
144DM-464add and use "suspect" flag in slots and slot-like measurementsWe need to have both "fatal" and "suspect" flags to handle different levels of warnings in measurement. (other tasks previously included on this ticket have been split into other tickets, including DM-461 and DM-984)4
145DM-466lsst-build updates based on feedback from 1st month of usechange lsst-build interface to: * rename 'prepare' to 'clone' * use current directory to clone to * remove the default REPOSITORY_PATTERN, as it isn't complete * use the current username as default build tag prefix * don't write the manifest by default; use --manifest=<filename> option instead * refuse to change/overwrite repositories if they're dirty, use --force to override * create a separate 'version' verb * ProductFetcher.fetch doesn't need to return ref, sha1 * read config file within build directory, .btconfig * rename the binary to bt * have the versioner use git db by default, but fall back to generating versions from hash by default See the linked web page for a mock of the command line interface.6
146DM-467Understand galfast bugsNULL2
147DM-468Alias measurement.plugins to measurement.algorithmsThe config item in the old measurement task, measurement.algorithms was changed to measurement.plugins in meas_base. The creates a backward compatibility issue for code which refers to this class member. Jim's suggested fix is to alias plugins with algorithms in the new measurement task.1
148DM-470Rework exceptions in css (python side)Rework exceptions in css/KwInterface.py: split into key-value related exceptions, possibly moving the rest that deals with db/tables into client. This came up in the CSS review, see DM-225: "CssException feels a bit out of place...."1
149DM-471Create LSSTsim processing example for SW User GuideCreate a worked example in the Software User Guide of processing raw data with obs_lsstSim. The example should include: - Pointers to documents for creating multi-band, raw datasets with PhoSim - Creating a data repository for the data - Creating an astrometry_net_data repository - Processing raw files through processCdc (including ISR, measurement, etc.) - Creating a catalog of measurements - Visualizing the output using existing tools It is possible to work initially with a limited set of data (a raft, or CCD), and to start with eImages rather than raw; the example can be elaborated in due course.10
150DM-472Create an iPython Notebook visualization of the LSST Demo DataDevelop an iPython Notebook to illustrate the processing and results of the LSST Demo. This can be used as both a basic tutorial for the Stack, and a how-to for creating additional visualizations for DM. The visualization should include the source catalog, and possibly also one or more of the processed images. 4
151DM-473Prioritize and define the backlog for Summer 2014At the DMLT meeting in Seattle, finish the backlog prioritization for Summer 2014 cycle. Definition of Done: * All epics and major stories defined for Summer 2014. * Rank-ordered in terms of priority. * Leadership teem agreement on their prioritization and backlog. * Teams identified to execute the stories, and stories labeled accordingly. 2
152DM-474Document how to create an astrometry_net_data repositoryDocument how to create astrometry_net_data index files for an arbitrary astronomical dataset, as well as how to create a repository of such data to support processing with the LSST Stack. It must be possible to limit the area of sky coverage in the index files to that appropriate for the images that the user wishes to process. 6
153DM-488Make JIRA notification e-mail more usefulFrom HipChat/Data Management: [12:09] Mario Juric: @jbosch @KTL @KSK Could you double-check if any of you got an e-mail from Jira on Saturday (Apr 12th) re issue DM-78 (I made you reviewers, but it looks like you weren't notified)? [12:10] K-T Lim: I don't recall and can't determine now; it would have been deleted (irrevocably). [12:10] Simon Krughoff: I did get an email. [12:10] Jim Bosch: @mjuric, ah, it appears that I actually did. The fact that I was a reviewer was just buried, and I didn't notice it. [12:10] Simon Krughoff: I must have missed that I was a reviewer. [12:10] Mario Juric: OK, thanks! That gives me not one, but two useful data points (#1 -- emails work, #2 -- they're useless :) ). [12:12] Simon Krughoff: I'm not sure why they are useless. The emails from trac were a very important part of my workflow as far as being notified of review responsibility goes. Maybe it's just the volume from Jira. [12:14] Jim Bosch: Yeah, same here. Though the volume from JIRA hasn't been so bad, so I don't think that's it. Maybe my brain just has to get used to the new email format. [12:14] K-T Lim: (In my case, I'm mostly paying attention to the RSS feed although the mailbox serves as a backup.) [12:22] Robert Lupton: One of the things that made gnats a good bug tracker was that the emails contained the right amount of information (I did have source code...), and trac was pretty good too when we tuned it; bugzilla always used to be awful. I bet we can fiddle with Jira to make its mail more useful; I don't just mean filtering what it sends, but making sure that each email is self contained, but not too long1
154DM-495Build Base DMCS Archiver Command ReceiverBase DMCS Archiver The Archiver receives commands from the OCS, and performs the following actions: * init - Move from OFFLINE mode to IDLE state. * configure - (arguments: set of computers to use, the software to be executed, and parameters to control that software). 1) Verify format and accept command; 2) change to disable mode as if a disable command had been received; 3) install configuration; 4) return success to the OCS. On failure (illegal configuration, cannot be installed properly), a command error with the failure reason is sent to the OCS. prerequisite for configure command - sufficient replicator/distributor pairs are available. Note that after configure, the Archiver remains disabled. * enable - Subscribe to the startIntegration event. * disable - Unsubscribe to the startIntegration event. Note that this does NOT terminate any replicator jobs which are already executing. * release - Unsubscribe to the startIntegration event, and go into OFFLINE state. * abort - if received during a configure command, causes this component to go into the ERROR state with no configuration. If received at any other time, the system transitions into an ERROR state, but nothing stops that was already in progress. * reset - Unsubscribe to the startIntegration event, go into IDLE state, with no configuration6
155DM-502Build Base DMCS Catch-Up Archiver Command ReceiverBase DMCS Catch-Up Archiver The Catch-Up Archiver receives commands from the OCS, and performs the following actions: * init - Move from OFFLINE mode to IDLE state. * configure - (arguments: set of computers to use, the software to be executed, and parameters to control that software). 1) Verify format and accept command; 2) change to disable mode as if a disable command had been received; 3) install configuration; 4) return success to the OCS. On failure (illegal configuration, cannot be installed properly), a command error with the failure reason is sent to the OCS. Prerequisite for configure command - sufficient catch-up-dedicated replicator/distributor pairs are available. Note that after configure, the Archiver remains disabled. * enable - 1) Allows Catch-Up Archiver to scan for unarchived images to be handled; 2) Enables the Orchestration Manager to schedule image archive jobs. * disable - 1) Stop scanning for unarchived images; 2) Tell the Orchestration Manager to stop scheduling any new image archive jobs. * release - Unsubscribe to the startIntegration event, and go into OFFLINE state. * abort - if received during a configure command, causes this component to go into the ERROR state with no configuration. If received at any other time, the system transitions into an ERROR state, but nothing stops that was already in progress. * reset - Unsubscribe to the startIntegration event, go into IDLE state, with no configuration6
156DM-503Build Base DMCS EFD Replicator Command ReceiverBase DMCS EFD Replicator The EFD Replicator receives commands from the OCS, and performs the following actions: * init - Move from OFFLINE mode to IDLE state. * configure - (arguments: set of computers to use, the software to be executed, and parameters to control that software). 1) Verify format and accept command; 2) change to disable mode as if a disable command had been received; 3) install configuration; 4) return success to the OCS. On failure (illegal configuration, cannot be installed properly), a command error with the failure reason is sent to the OCS. Prerequisite for configure command - communication with the US DAC EFD replica is possible. Note that after configure, the EFD Replicator remains disabled. * enable - Causes the Base DMCS to enable the US DAC EFD replica to be a slave to the Chilean DAC EFD replica. * disable - Causes the Base DMCS to disable the slave operation of the US DAC EFD replica. * release - Unsubscribe to the startIntegration event, and go into OFFLINE state. * abort - if received during a configure command, causes this component to go into the ERROR state with no configuration. If received at any other time, the system transitions into an ERROR state, but nothing stops that was already in progress. * reset - Unsubscribe to the startIntegration event, go into IDLE state, with no configuration6
157DM-504Build Base DMCS Alert Production Cluster Command ReceiverBase DMCS Alert Production Cluster The Alert Production Cluster receives commands from the OCS, and performs the following actions: * init - Move from OFFLINE mode to IDLE state. * configure - (arguments: set of computers to use, the software to be executed, and parameters to control that software). 1) Verify format and accept command; 2) change to disable mode as if a disable command had been received; 3) install configuration; 4) return success to the OCS. On failure (illegal configuration, cannot be installed properly), a command error with the failure reason is sent to the OCS. Prerequisite for configure command - sufficient workers are available. Note that after configure, the Alter Production Cluster remains disabled. * enable - Causes the Base DMCS to subscribe to the “nextVisit” topic in normal science mode; another event may be subscribed to in calibration or engineering mode. * disable - Causes the Base DMCS to unsubscribe from the “nextVisit” topic. It does NOT terminate any worker jobs already executing. In particular, the processing for the current visit (not just exposure) will normally complete. * release - Unsubscribe to the startIntegration event, and go into OFFLINE state. * abort - if received during a configure command, causes this component to go into the ERROR state with no configuration. If received at any other time, the system transitions into an ERROR state, but nothing stops that was already in progress. * reset - Unsubscribe to the startIntegration event, go into IDLE state, with no configuration6
158DM-505improve initialization of kvMap in testQueryAnalysisBuild the kvMap at build-time and embed it into the executable. (this was brought up in DM-225)1
159DM-506improve generating kvMap in testFacade.ccGenerating the kvmap file, and pasting it into a string inside the test program. (this was brought up in DM-225)1
160DM-508shorten internal names in zookeeperrename DATABASE_PARTITIONING to PARTITIONING rename DATABASES to DBS2
161DM-509rename "dbGroup" to "storageClass" in CSS metadataIt is meant to be used to indicate L1, L2, L3... At Qserv design week we decided to rename it (original plan was to remove it all together) 1
162DM-510Tweak metadata structure for driving table and secondary indexThere seem to be confusion about driving table and secondary index. At the moment in zookeeper structure we have {code} /DATABASES/<dbName>/objIdIndex /DATABASES/<dbName>/TABLES/<tableName>/partitioning/secIndexColName /DATABASES/<dbName>/TABLES/<tableName>/partitioning/drivingTable /DATABASES/<dbName>/TABLES/<tableName>/partitioning/latColName /DATABASES/<dbName>/TABLES/<tableName>/partitioning/lonColName /DATABASES/<dbName>/TABLES/<tableName>/partitioning/keyColName {code} Issues to think about: * we can't call it objIdIndex, it is too lsst-specific. * drivingTable and keyColName - perhaps these should be at database level, which means we would only allow one drivingTable and one secondary index per database? * or, maybe instead of database level, it is a partitioning parameter? Note that two databases might use different name for secondary index or driving table, yet they might be joinable. That argues for introducing a new group, something like /DATABASE/partitioning in addition to /DATABASE_PARTITIONING. * consider renaming drivingTable to keyTable * do we really need secIndexColName and keyColName? Can't we get rid of one, and rename to keyColName? 2
163DM-511rework ubuntu.patchNULL1
164DM-512Generalizing data chunking (n-level chunking rather than stripes/subStripes)It'd be cleaner to use numbering (e.g. 0 for no chunking, 1 for chunks, 2 for subchunks etc) instead of "chunks", "subchunks" throughout qserv code. This might also be true in partitioner, where flags like -S and -s etc are not entirely obvious. This came up in the review of CSS, see DM-225.3
165DM-513fix threading issues in CSS watcherFix problems with threads in watcher.py brought up in DM-225 by Serge: * A thread per database doesn't scale * There is a thread leak when a database is deleted * There is another design problem, in that each database thread looks like it is holding on to the same lsst.db.Db instance under the hood. I don't remember any consideration for thread safety from the lsst.db code when I reviewed it. Note for one that it is not safe to use a MySQL connection simultaneously from multiple threads (and I seem to recall that you are caching a connection inside Db instances). In practice, even the Python GIL may not save you, since calls into C code (i.e. the mysql client library) may very well release it.8
166DM-514Switch to the "czar" name consistently1) Change lsst.qserv.master to lsst.qserv.czar in the czar module. 2) Rename masterLib to czarLib 3) Rename startQserv to startCzar 4
167DM-516Fix race condition when creating db (and elsewhere?) in client/qserv_admin_impl.pyThis came up in the review of CSS, see DM-225: QservAdminImpl: so, if there's a problem while inserting the various keys for a database, and another exception during cleanup, you can end up with a partially constructed database. How do you plan on handling this? This is perhaps another argument for trying to batch metadata more - if it's all in a single key, this worry goes away (at least in this particular case). The createDb implementations seem racy. Consider what happens if 2 admins try to create the same database D. Suppose admin A does the _dbExists(D) check first; it returns false. Then admin B comes along, and does the same check, which returns false again. Let's further suppose that admin B successfully issues all the key creates for D without being interrupted by A. Back to A: when A tries to create all the keys required for D, an exception will be raised immediately since D exists. At this point A will dutifully try to clean up (to avoid leaving around a partially constructed D), deleting D as created by B. End result: D was successfully created, no explicit drop was issued, but D does not exist. Database drops can also race with table creates: zookeeper doesn't have a native recursive delete. In other words, it is perfectly possible for an admin A to issue a database drop while someone else is issuing a table create. The recursive delete might descend into the table "directory" while the create is populating it with child znodes. The recursive delete will get an incomplete list of children, remove them, and finally fail to remove the table directory because the table create has since added more children, and it is illegal to remove a non-empty directory. At this stage, the drop will report success even though it has failed (that's the recursive delete behavior that kazoo gives you), and the table create will report success. But the database will still exist, and table keys may be partially present in zookeeper.10
168DM-517qserv_admin needs to deal with uncommon names/charactersqserv/admin/bin/qserv_admin.py needs to deal with strange names (e.g. with embedded spaces or semi-colons), or at minimum, catch and forbid them.3
169DM-518Rework exceptions in qserv clientThere is a bunch of (I think) unnecessary translation from KvException to QservAdmException. Can't you just handle printing KvException in CommandParser.receiveCommands(), and get rid of the CSSERR error code? (This is in /admin/bin/qserv-admin.py) (this came up in DM-225)1
170DM-519rethink configuration for client_fetchOptionsFromConfigFile in client/qserv_admin.py:: If you are going to use the ConfigParser library, please use SafeConfigParser (or RawConfigParser if you don't need string interpolation). But anyway, I'm not sure the INI file format is the right one to use here, as it forces the use of sections in parameter files, which doesn't make much sense (I notice your code just throws away the section names when reading parameter files). I found myself wishing that the admin client just had syntax for the various options, rather than relying on more or less undocumented parameter files. (this came up in DM-225)3
171DM-520Remove old partitioner/ loader and duplicatorOnce Fabrice has migrated the integrated tests towards using the new partitioner and duplicator, we should delete the old partitioner/duplicator (in {{client/examples}}).1
172DM-521Confusing error message (non-existing column referenced)A query that references non existing column for non-partitioned table results in a confusing message: "read failed for chunk(s): 1234567890". To repeat, run something like {code} SELECT whatever FROM <existingTable>; {code} Similar error occurs when we try to reference non-existing table, try something like: {code} SELECT sce.filterName FROM StrangeTable AS s, Science_Ccd_Exposure AS sce WHERE (s.scienceCcdExposureId = sce.scienceCcdExposureId); {code} 5
173DM-522gracefully handle misconfigured sconsWhen I try to run scons using the latest master (89aaa6), it fails with {code} scons: Reading SConscript files ... AttributeError: 'NoneType' object has no attribute 'rfind': File "/home/becla/cssProto/qserv_css6/SConstruct", line 17: state.init(src_dir) File "/home/becla/cssProto/qserv_css6/site_scons/state.py", line 161: _initEnvironment(src_dir) File "/home/becla/cssProto/qserv_css6/site_scons/state.py", line 128: _initVariables(src_dir) File "/home/becla/cssProto/qserv_css6/site_scons/state.py", line 89: (PathVariable('XROOTD_DIR', 'xrootd install dir', _findPrefix("XROOTD", "xrootd"), PathVariable.PathIsDir)), File "/home/becla/cssProto/qserv_css6/site_scons/state.py", line 53: (binpath, binname) = os.path.split(binFullPath) File "/usr/lib/python2.7/posixpath.py", line 83: i = p.rfind('/') + 1 {code} The scripts should check that requires variables are not set, and print appropriate error (and ideally, suggest how to fix it) 1
174DM-527make Image construction robust against integer overflowI just fixed a bug on the HSC side (DM-523) in which integer overflow in the multiplication of width and height in image construction caused problems. We should backport this fix to LSST.1
175DM-530Table column names in new parserRunning tests (qserv-testdata.sh) on pre-loaded data I have observed that many test fail for the only reason that the column names in the dumped query results are different between mysql and qserv. Here is an example of query reqult returned from mysql: {code} mysql> SELECT sce.filterName, sce.field, sce.camcol, sce.run FROM Science_Ccd_Exposure AS sce WHERE sce.filterName = 'g' AND sce.field = 670 AND sce.camcol = 2 AND sce.run = 7202; +------------+-------+--------+------+ | filterName | field | camcol | run | +------------+-------+--------+------+ | g | 670 | 2 | 7202 | +------------+-------+--------+------+ {code} and this is the same query processed by qserv: {code} mysql> SELECT sce.filterName, sce.field, sce.camcol, sce.run FROM Science_Ccd_Exposure AS sce WHERE sce.filterName = 'g' AND sce.field = 670 AND sce.camcol = 2 AND sce.run = 7202; +----------+----------+----------+----------+ | QS1_PASS | QS2_PASS | QS3_PASS | QS4_PASS | +----------+----------+----------+----------+ | g | 670 | 2 | 7202 | +----------+----------+----------+----------+ {code} We discussed this already with Daniel yesterday and at qserv meeting today, here I just want to collect what we know so far so that we can return to this again later. As Daniel explained to me this is the result of the new parser assigning aliases to the columns which do not define aliases for themselves. This helps with tracking query proceeding through the processing pipeline. Daniel's observation is that different database engines may assign different names to result columns (or some may not even assign any names), there is no standard in that respect so there is no point in trying to follow what one particular implementation does. Additionally there are issues with conflicting column names and names which are complex expressions. Difference in column names breaks our tests which dump complete results including table header. The tests could be fixed easily, we could just ignore table headers when dumping the data. More interesting issue is that there may be use cases for better compatibility between mysql and qserv including result column naming. In particular standard Python mysql interface allows one to use column names to retrieve values from queiry result. If qserv assigns arbitrary aliases to the columns it may confuse this kind of clients. This issue depends very much on what kind of API qserv is going to provide to clients. If mysql (wire-level) protocol is going to be the main API (which would allow all kinds of mysql clients to talk to qserv directly) then we should probably think more about compatibility with mysql. OTOH if we decide to provide our own API then this may not be an issue at all (but we still need to fix current test setup which is based on mysql). We probably should discuss API question at our dev meeting.5
176DM-531Qserv returns error table instead of error codeRunning the tests on pre-loaded data I noticed that for some queries qserv returns result which does not look like it is related in any way to the query - result column names are different from the columns in the query (different in a different way from DM-530). Here is an example of query and result produced: {code} mysql> SELECT sce.filterName, sce.field, sce.camcol, sce.run FROM Science_Ccd_Exposure AS sce WHERE sce.filterName like '%' AND sce.field = 535 AND sce.camcol like '%' AND sce.run = 94; +---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | chunkId | code | message | timeStamp | +---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | -1 | 0 | NULL | 1.39779e+09 | | -1 | 100 | Dispatch Query. | 1.39779e+09 | | 32767 | 1200 | Query Added: url=xroot://qsmaster@127.0.0.1:1094//q/LSST/1234567890, savePath=/dev/shm/qserv-salnikov-80df10ee4ed55693702f55021486cd45647c3a58ce549e7c826d9626/7_1234567890_0 | 1.39779e+09 | | 32767 | 1300 | Query Written. | 1.39779e+09 | | 32767 | 1400 | Results Read. | 1.39779e+09 | | 32767 | 1500 | Results Merged. | 1.39779e+09 | | 32767 | 1600 | Query Resources Erased. | 1.39779e+09 | | 32767 | 2000 | Query Finalized. | 1.39779e+09 | +---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ {code} Daniel and Bill explained to me what is happening there - when query results in an error instead of returning mysql error condition (which is an error code plus some text) proxy produces a diagnostic result which is a table (above) containing some info which could be useful to diagnose the issue. This feature looks potentially useful but it may also be confusing for clients like me who are not aware of this feature. For regular mysql client it may be actually harder to intercept errors because one would need to analyze returned table to understand that error condition happened. It may also be ambiguous in a sense that the legitimate query could produce result with the same column names. Like in DM-530 this issue is tied to a question what kind of API we want to provide to qserv clients. If mysql wire-level protocol is going to be our main API then we should probably try to be more mysql-compatible. OTOH if we are going to hide everything behind our own API then we may have more freedom in re-defining what kind of result error condition produces.4
177DM-533transfer multiband processing changes from HSCWe have a new multi-band processing scheme for coadds on the HSC side, encompassing changes in afw, meas_deblender, and pipe_tasks. These should be transferred to the LSST side, with RFCs for any backwards incompatible changes. Changes to the Footprint classes may only be temporary, as we plan to refactor those classes soon anyway, but they're still worth doing now to support the higher-level changes.8
178DM-536Move HSC issues to hsc-jira.astro.princeton.eduNULL10
179DM-545ensure pipe_tasks, obs*, and other packages are compatible with meas_baseThe switch to meas_base will involve changing the names of most measurement algorithms, as we're using a new naming convention that provides more traceability. This will break downstream code that: - uses field names instead of slots to access measurements - reads or modifies the list of configured-to-run algorithms. Whenever possible, we should fix the former by converting them to use slots, as this will automatically provide backwards compatibility. I'm not yet sure how to handle the latter; the easiest solution would be to give up on full backwards-compatibility with meas_algorithms, but we might be able to find some way to make the old names aliases to the new ones during the deprecation period. 12
180DM-546scons rebuilds targets without changesI'm seeing something strange when I run scons from current master - running 'scons install' after 'scons build' re-compiles several C++ files even though nothing has changed between these two runs: {code:bash} $ scons build scons: Reading SConscript files ... ... scons: Building targets ... scons: `build' is up to date. scons: done building targets. $ scons install scons: Reading SConscript files ... ... scons: Building targets ... swig -o build/czar/masterLib_wrap.cc -Ibuild -I/usr/include/python2.6 -python -c++ -Iinclude build/czar/masterLib.i g++ -o build/czar/masterLib_wrap.os -c -g -fPIC -D_FILE_OFFSET_BITS=64 -fPIC -I/u2/salnikov/STACK/stack/Linux64/protobuf/2.4.1/include -I/u2/salnikov/STACK/stack/Linux64/xrootd/qs5/include/xrootd -I/u2/salnikov/STACK/stack/Linux64/mysql/5.1.65/include -Ibuild -I/usr/include/python2.6 build/czar/masterLib_wrap.cc g++ -o build/control/AsyncQueryManager.os -c -g -fPIC -D_FILE_OFFSET_BITS=64 -fPIC -I/u2/salnikov/STACK/stack/Linux64/protobuf/2.4.1/include -I/u2/salnikov/STACK/stack/Linux64/xrootd/qs5/include/xrootd -I/u2/salnikov/STACK/stack/Linux64/mysql/5.1.65/include -Ibuild -I/usr/include/python2.6 build/control/AsyncQueryManager.cc g++ -o build/control/dispatcher.os -c -g -fPIC -D_FILE_OFFSET_BITS=64 -fPIC -I/u2/salnikov/STACK/stack/Linux64/protobuf/2.4.1/include -I/u2/salnikov/STACK/stack/Linux64/xrootd/qs5/include/xrootd -I/u2/salnikov/STACK/stack/Linux64/mysql/5.1.65/include -Ibuild -I/usr/include/python2.6 build/control/dispatcher.cc g++ -o build/control/thread.os -c -g -fPIC -D_FILE_OFFSET_BITS=64 -fPIC -I/u2/salnikov/STACK/stack/Linux64/protobuf/2.4.1/include -I/u2/salnikov/STACK/stack/Linux64/xrootd/qs5/include/xrootd -I/u2/salnikov/STACK/stack/Linux64/mysql/5.1.65/include -Ibuild -I/usr/include/python2.6 build/control/thread.cc g++ -o build/merger/TableMerger.os -c -g -fPIC -D_FILE_OFFSET_BITS=64 -fPIC -I/u2/salnikov/STACK/stack/Linux64/protobuf/2.4.1/include -I/u2/salnikov/STACK/stack/Linux64/xrootd/qs5/include/xrootd -I/u2/salnikov/STACK/stack/Linux64/mysql/5.1.65/include -Ibuild -I/usr/include/python2.6 build/merger/TableMerger.cc scons: `install' is up to date. scons: done building targets. {code} This is kind of unexpected, or at least I can't understand now why it happens. Trying to run with --debug=explain shows that some dependencies have disappeared and in some dependencies order is different. No clue yet what that means and how it could happen. Need to study our scons scripts to understand what is going on.3
181DM-548rearchitect Qserv to fix dependencies between modules in qserv/coreI looked at includes in "core/modules", here is a summary. * ":" indicates a dependency * global, log, util, wbase, wlog and xrootd are low level, it is an easy, I didn't bother showing them below * "!!!" indicates circular dependency * lower-level modules first {core} css: <nothing> global: <nothing> mysql: <nothing> obsolete: <nothing> proto: <nothing> sql: mysql wconfig: sql, mysql wpublish: sql, wconfig !!! wsched <--> wcontrol !!! wcontrol <--> wdb wsched: proto, wcontrol wcontrol: mysql, sql, wsched, wdb, wcontrol, obsolete, proto wdb: sql, mysql, proto, wconfig, wcontrol xrdfs: wpublish, wdb, wconfig, sql, obsolete, wcontrol merger: sql, xrdfs xrdoss: obsolete, wpublish, xrdfs !!! control <--> qdisp !!! qana <--> qproc !!! qana <--> query !!! parser --> query -->qana --> parser !!! query --> qana --> qproc --> query control: css, merger, obsolete, qdisp, qproc, query qdisp: control qana: css, parser, qproc, query qproc: css, merger, parser, proto, qana, qdisp, query query: css, qana, qdisp parser: query {core} 10
182DM-554Base DMCS and Replicator Interaction for Simulator - v1Create the Base DMCS and Replicator processes that demonstrate Send startIntegration Send startReadout Assume: Archiver and Alert Production Cluster already enabled, replicators already registered in fully-operational pool. Demonstrate: Sending startIntegration event to the Base DMCS. Replicator jobs submission Replicator jobs subscribe to startReadout Sending the startReadout event to the replicator jobs. Replicator jobs receive startReadout Replicator jobs pull data 10
183DM-559clean up include <> --> "" for third party includesAccording to our coding standard 4.15: https://dev.lsstcorp.org/trac/wiki/C%2B%2BStandard/Files#a4-15.OnlysystemincludefilepathsSHALLbedelimitedwith we should be using "" for boost, but in quite a few places we do not: {code} grep 'include <boost' */* |wc 146 314 7916 {code} 1
184DM-560cleanup includes - add module nameChange places like {code}#include "cssException.h"{code} to {code}#include "css/cssException.h"{code} 1
185DM-561Add distributor to simulator - v2Add distributor to the simulator Demonstrate: Replicator node associated with to distributor node Replicator jobs send job info to distributor node Replicator jobs copy data to distributor node.6
186DM-564Add Archive DMCS to simulator - v3Add Archive DMCS Demonstrate: Receiving information from duplicator (visit id, exposure sequence number, raft id, and network address).4
187DM-566Fix Doxygen Doc for new meas_base classesThe final stage of moving the old algorithms to meas_base will be to generate the doxygen documentation and be sure that it is useful. We will do this after the cleanup of the old meas_algorithms code.3
188DM-583Investigate Approaches to DcrThis story captures the work of investigating the implications of the different options to compensate for Dcr: ignore objects with extreme colors, compensate for Dcr in measurement, and compensate per-image at the per-object/pixel level. We anticipate the latter option will be required going forward, but we need to do the background work to justify this. We need to understand exactly which classes will need to make use of Dcr information, and what the limitations are of operating at the per-pixel level (e.g. blends).20
189DM-584Validation of Dcr Approach at the Pixel LevelBefore we start the process of extending the Dcr functionality into the stack (e.g. Psf, Wcs, etc), we need to validate that the implementation works at the pixel level. In this task we will work with simulated images to debug and optimize the implementation, to the degree possible.30
190DM-586Cleanup Source.h.m4This include file was damaged somewhat by the addition of slot routines to work with the flattened field definitions. It would be nice to put the Measurement abstraction back in place -- or get rid of it. We need to decide whether the old slot and compound key mechanisms from SourceTable version 0 are going to be continued for doing this. 2
191DM-587The way the observation date is translated by obs_cfht breaks the defect registry.The fields of the observation date and time as stored in the CFHT-LS headers are not padded with zeros. This makes the sqlite DATETIME constructor return a NULL string when the observation time is < 10hrs. The fix is to force the fields to be padded when the metadata from the input files are ingested.1
192DM-588Get one HTCondor ClassAds scenario runningWe have a worker script that takes three arguments: a CCD number, a cache limit, and a length of time. The script starts out looking at a slot-specific filesystem for a calibration file /local/slot#/calib/CCD#. If that file doesn't exist, it checks to see if there are more than the cache limit of files in /local/slot#/calib. If there are, it removes one at random (later we could try other algorithms). It then immediately transfers /gpfs/calib/CCD# (maybe a 1 GB file) to /local/slot#/calib/CCD#. The script then waits for the given length of time and exits. We make sure we can measure how many file copies from /gpfs are performed and when so that we can determine peak demand rates and average rates. Meanwhile, the HTCondor hook checks for the same /local/slot#/calib/CCD# files and sets the ClassAds based on which CCD#s are present. Scenario 1) 4 slots, 4 CCDs, cache limit 1, jobs take 1 min, total of 5 jobs per CCD, 1 job per CCD submitted every 2 min (1234 pause 1234 pause 1234 pause 1234 pause 1234)14
193DM-590load non-LSST FITS tables as version 1In DM-384 and DM-242, we disabled the periods-to-underscores translations for new tables ("version 1") but left it in place for old tables ("version 0"). In addition, when reading a table without a version number, we assumed it was version 0, to maintain backwards compatibility. I think we should modify this slightly: we should assume a table without a version number is version 0 if and only if it also has the AFW_TYPE key. Otherwise we should assume it is version 1. This will allow us to load externally-produced tables without turning any underscores they contain into periods, while still maintaining backwards compatibility with older tables written by afw.1
194DM-593Update all DM Software Copyright and License Agreement notices to reflect AURA/LSSTThe lsstcorp.org/LegalNotices/{LsstLicenseStatement.txt LsstSourceCopyrightNotice.txt} need to be updated to reference AURA/LSST. The referenced list of LSST partner institutions needs to be either resurrected or the reference deleted. The git repository for devenv/templates needs the Copyright templates to be updated. LsstLicenseStatement.txt needs to be updated to include recent additions of 3rd party tools' Licenses (~10 tools) to the DM stack and all the QSERV 3rd party tools' Licenses (~25 tools). The Copyright banner in all software needs to be updated to reflect the new reality of AURA/LSST in place of LSST Corporation. Files with no Copyright banner, need to add it. Update may occur 'the next time' the code file is updated. THis needs to be broadcast to the developers once the Copyright templates and the website versions are updated.2
195DM-594running multiple Qserv installations on the same machineIt would be very useful to be able to run multiple installations of Qserv on the same machine (say, 2 developers playing with Qserv on the same machine). I guess we are almost there, we just need to know how to configure all ports so that we are not colliding. Can you test it, tweak whatever is necessary and document what is involved in changing defaults to a unique set of port numbers? 6
196DM-595Setup multi-node Qserv We are currently focusing on single-node Qserv. It'd be nice to try setting up multi-node Qserv (say 4 workers and a czar on lsst-dbdev*), and improve installation scripts to simplify the process.6
197DM-596Fix automated tests after css migrationAfter yesterday's merge of DM-58 into master automated tests do not work any more. The part which is broken now is loading of metadata into qserv. We need to replace old script which created metadata with something different that creates metadata using new CSS. The code which loads metadata in tests is in QservDataLoader class, createQmsDatabase() method (in tests/python/lsst/qserv/test/ directory).2
198DM-597reorganize client modulemove everything in the client package (qserv_admin*, associated tests and examples) to admin/ move css/bin/watcher.py to admin/ 1
199DM-599Investigate off-the-shelf data distribution toolsResearch available off the shelf tools, try to find one that would best fit our needs. Produce a document (trac page).12
200DM-600fix 12 issues in testCppParser (related to switching to CSS)NULL3
201DM-602Add support for installing qserv on machines without internetIt is common we install qserv on machines that are on internal network without external network connectivity. How do we do that?9
202DM-603Look into git-fatLook into the use of git-fat with the LSST DM workflow. Specifically, how does this work with anonymous access.4
203DM-604Update parse/analysis tests to detect missing css-kvmap earlyDue to the CSS code merge, the testCppParser test depends on an external kvmap file. If this file doesn't exist, nearly every test will fail. There isn't a way to check whether the cssFacade (constructed from kvmap file) is valid. This ticket includes, at minimum: * changes to css/ and qproc/ to make the unit tests fail early if the facade could not be constructed. Optionally, this ticket could include: * renaming testCppParser to testQueryAnalyzer * compile-time linking the kvmap into testCppParser to eliminate the need for an external kvmap file. 4
204DM-607CSS throws exception if tableIsSubChunked is called for non partitioned tableNULL3
205DM-608referring to table without database context crashes czarRunning a query like "select * from Object" if we do not have database context results in {code} terminate called after throwing an instance of 'lsst::qserv::css::CssException_InternalRunTimeError' what(): Internal run-time error. (*** css::KvInterfaceImplZoo::exists(). Zookeeper error #-8. (/DATABASES/)) {code} Need to gracefully catch the zookeeper -8. Need to detect that empty database name is passed in Facade. Need to avoid it higher up. 3
206DM-609afw unit tests not built unless afwdata availableIf afw_data is not available then the afw unit tests are not built. I think it would make more sense to build all of them and run those we can (not all depend on afw_data). One advantage is that a version of afw installed using "eups distrib install" would include built tests, so the tests could be run. This is presently not practical because the SConstruct file is not installed (I intend to open a ticket about that, as well).1
207DM-611Switch kazoo version to 2.0b1 or laterWhile we aren't using any of the new features of Kazoo's 2.x series, the removal of zope.interface as a dependency is a worthwhile feature. The 2.0b1 release seems at least as stable as our own code, so I don't think we'll see any negative effects. This ticket covers: - Upgrade of the packaged kazoo from 1.3.1 to 2.0b1 (or later). - (optionally) patches for kazoo's setup.py so that it doesn't search for and try to download any dependencies. This can be done in a later ticket, though. I note that kazoo can be run without installation: you can untar it, cd into the directory, and if you run python from there, you can immediately "import kazoo" and use it. Hence we could avoid setup.py completely and just copy the "kazoo" subdirectory into some directory in the PYTHONPATH.2
208DM-612remove obsolete QMS-related codetry running {code} find core css admin client tests site_scons | xargs grep -i qms {code} There is a lot of old unused qms related code.2
209DM-613Automated test differences after CSS migrationI'm running automated tests with recent master after merging DM-605 and observe some differences between mysql and qserv. Here I'm going to document all differences (and everything related).6
210DM-614rename qserv_admin.py to qserv-admin.pyWe have 6 scripts in qserv/admin/bin that start with "qserv-", and one that starts with "qserv_", we should rename qserv_admin to qserv-admin.1
211DM-616commons.config should always be managed as a global variableQserv configuration object (i.e. commons.config) used in admin and tests should be managed the same way a logger object is (cf. http://hg.python.org/cpython/file/2.7/Lib/logging/__init__.py). I.e. a function called config.getConfig("config-type") (returning an config occurence of a global dictionnary), should be used in order to ease retrieval of all configuration objects related to client, data, (and server?) anywhere in the admin/test python code.2
212DM-621User friendly single node loading scriptThis entails the creation of an end-to-end loading script that, given database and table param files, a SQL table schema and one or more CSV data files, places appropriate metadata into zookeeper, runs the partitioner, and finally creates and loads chunk tables.8
213DM-622Qserv configuration tool refactoring* Instance configuration should not be in the same directory where qserv software is installed Qserv configuration, including things like mysql or zookeeper data directory should be separate from where Qserv software is installed. At the moment, when I want to work with branch "a" and "b", in order to switch from one to the other I have to run "cd $QSERV_DIR/admin; scons". This is ok the very first time after I created a branch, but it is way too heavy afterwards, because it wipes out all data from zookeeper and mysql.10
214DM-623Package antlr 2.7 in eupsNULL5
215DM-624Make sure we have queryId in all places where needed in loggingNULL4
216DM-625Too many connections from czar to zookeeperI have just managed to crash qserv czar by running repeated queries against it. What I see in the logs: qserv-czar.log: {code} 2014-05-02 13:21:10,861:22525(0x7f76e37ab700):ZOO_ERROR@handle_socket_error_msg@1723: Socket [127.0.0.1:12181] zk retcode=-4, errno=104(Connection reset by peer): failed while receiving a server response 2014-05-02 13:21:10,861:22525(0x7f76e37ab700):ZOO_ERROR@handle_socket_error_msg@1723: Socket [127.0.0.1:12181] zk retcode=-4, errno=104(Connection reset by peer): failed while receiving a server response terminate called after throwing an instance of 'lsst::qserv::css::CssException_ConnFailure' what(): Failed to connect to persistent store. {code} and zookeeper.log: {code} 2014-05-02 13:21:10,861 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12181:NIOServerCnxnFactory@193] - Too many connections from /127.0.0.1 - max is 60 2014-05-02 13:21:10,861 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12181:NIOServerCnxnFactory@193] - Too many connections from /127.0.0.1 - max is 60 2014-05-02 13:21:14,585 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12181:NIOServerCnxn@357] - caught end of stream exception EndOfStreamException: Unable to read additional data from client sessionid 0x145bdd1b8440015, likely client has closed socket at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228) at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208) at java.lang.Thread.run(Thread.java:744) 2014-05-02 13:21:14,585 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12181:NIOServerCnxn@1007] - Closed socket connection for client /127.0.0.1:49913 which had 2014-05-02 13:21:14,585 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12181:NIOServerCnxn@357] - caught end of stream exception EndOfStreamException: Unable to read additional data from client sessionid 0x145bdd1b8440016, likely client has closed socket at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228) at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208) at java.lang.Thread.run(Thread.java:744) 2014-05-02 13:21:14,586 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12181:NIOServerCnxn@1007] - Closed socket connection for client /127.0.0.1:49939 which had {code}1
217DM-626ORDER BY and DISTINCT do not work reliably in qservQueries with ORDER BY and DISTINCT are buggy. For example, results do not always come ordered and order changes from one run to another: {code} mysql> SELECT objectId FROM Object WHERE qserv_areaspec_box(0, 0, 3, 10) ORDER BY objectId; +-----------------+ | objectId | +-----------------+ | 417857368235490 | | 417861663199589 | | 417865958163688 | | 420949744686724 | | 420954039650823 | | 424042121137958 | | 424046416102057 | | 427134497589192 | | 430226874040426 | +-----------------+ 9 rows in set (1.27 sec) mysql> SELECT objectId FROM Object WHERE qserv_areaspec_box(0, 0, 3, 10) ORDER BY objectId; +-----------------+ | objectId | +-----------------+ | 424042121137958 | | 424046416102057 | | 427134497589192 | | 430226874040426 | | 417857368235490 | | 417861663199589 | | 417865958163688 | | 420949744686724 | | 420954039650823 | +-----------------+ 9 rows in set (1.24 sec) {code} This was done with testdata/case01 data, let me know if you need to load that data. Also, using case03 data, e.g. {code} SELECT distinct run, field FROM Science_Ccd_Exposure WHERE run = 94 AND field = 535; {code} returns 6 rows in qserv (vs 1 in mysql). The full list of DISTINCT failures is (all with testdata/case03): - 0002_fetchRunAndFieldById.txt - 0021_selectScienceCCDExposure.txt - 0030_selectScienceCCDExposureByRunField.txt 1
218DM-627Switch to using new partitioner, loaderIntegrated tests procedure has to rely on new loader4
219DM-630Non-partitioned table query returns duplicated rowsRunning automated test I noticed that a query on non-partitioned table returns multiple copies of the same row, one copy per chunk. Here is example: {code} mysql> SELECT offset, mjdRef, drift FROM LeapSeconds where offset = 10; +--------+--------+-------+ | offset | mjdRef | drift | +--------+--------+-------+ | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | | 10 | 41317 | 0 | +--------+--------+-------+ 13 rows in set (5.62 sec) {code} Czar log file shows that it correctly finds that table is non-chunked but sends query to each chunk anyway: {code} 20140502 16:22:08.745081 0x3172430 INF *** KvInterfaceImplZoo::exist(), key: /DATABASES/LSST/TABLES/LeapSeconds/partitioning 20140502 16:22:08.745735 0x3172430 INF *** LSST.LeapSeconds is NOT chunked. 20140502 16:22:08.745762 0x3172430 INF *** KvInterfaceImplZoo::get2(), key: /DATABASES/LSST/TABLES/LeapSeconds/partitioning/subChunks 20140502 16:22:08.746393 0x3172430 INF *** LSST.LeapSeconds is NOT subchunked. 20140502 16:22:08.746409 0x3172430 INF getChunkLevel returns 0 ..... 20140502 16:22:08.757832 0x3172430 INF <py> Using 85 stripes and 12 substripes. 20140502 16:22:08.775586 0x3172430 INF <py> Using /usr/local/home/salnikov/dm-613/build/dist/etc/emptyChunks.txt as default empty chunks file. 20140502 16:22:08.791559 0x3172430 INF <py> empty_LSST.txt not found while loading empty chunks file. 20140502 16:22:08.791592 0x3172430 ERR <py> Couldn't find empty_LSST.txt, using /usr/local/home/salnikov/dm-613/build/dist/etc/emptyChunks.txt. 20140502 16:22:08.891239 0x7fbb28003660 INF QuerySession::_buildChunkQueries() : Non-subchunked 20140502 16:22:08.891498 0x7fbb28003660 INF Msg cid=6630 with size=153 20140502 16:22:08.891682 0x7fbb28003660 INF Added query id=6630 url=xroot://qsmaster@127.0.0.1:1094//q/LSST/6630 with save /dev/shm/qserv-salnikov-b93a8b7cca1128f50fa5531feb93f8f24a185f162d36c10ee76b8dca/1_6630_0 20140502 16:22:08.891694 0x7fbb28003660 INF Opening xroot://qsmaster@127.0.0.1:1094//q/LSST/6630 20140502 16:22:08.891705 0x7fbb28003660 INF QuerySession::_buildChunkQueries() : Non-subchunked 20140502 16:22:08.891882 0x7fbb28003660 INF Msg cid=6631 with size=153 20140502 16:22:08.892077 0x7fbb28003660 INF Added query id=6631 url=xroot://qsmaster@127.0.0.1:1094//q/LSST/6631 with save /dev/shm/qserv-salnikov-b93a8b7cca1128f50fa5531feb93f8f24a185f162d36c10ee76b8dca/1_6631_0 20140502 16:22:08.892087 0x7fbb28003660 INF Opening xroot://qsmaster@127.0.0.1:1094//q/LSST/6631 20140502 16:22:08.892097 0x7fbb28003660 INF QuerySession::_buildChunkQueries() : Non-subchunked 20140502 16:22:08.892275 0x7fbb28003660 INF Msg cid=6800 with size=153 20140502 16:22:08.892462 0x7fbb28003660 INF Added query id=6800 url=xroot://qsmaster@127.0.0.1:1094//q/LSST/6800 with save /dev/shm/qserv-salnikov-b93a8b7cca1128f50fa5531feb93f8f24a185f162d36c10ee76b8dca/1_6800_0 ... {code} Looking at the code together with Daniel we found that at the Python level (czar/app.py) the code that dispatches query does not check for chunkLevel, this is likely why this happens. The code to look at is in {{InbandQueryAction._applyConstraints()}} method.5
220DM-631Define C++ API for C++ GeometryNULL10
221DM-633Query sessions are never destroyedPlease see DM-625, when I run say 10 "select count(*) from LSST.Object" queries, for each query a new AsyncQueryManager is created in dispatcher, but the sessions are never destroyed.3
222DM-635admin/tests/test_qservAdminImpl.py has hardcoded connection infoNULL1
223DM-637complexity of eups dependencies relationships for db packageHello, I'm currently trying to use the very last version of db package (the one which relies on sconsUtils), but, in order to make it works with Qserv, I had to introduce next update : {code:bash} fjammes@clrlsstwn02-vm:~/src/qserv-packager/dist/dependencies/db (master) $ git diff HEAD~1 diff --git a/ups/db.cfg b/ups/db.cfg index e1ae31b..a469061 100644 --- a/ups/db.cfg +++ b/ups/db.cfg @@ -3,7 +3,7 @@ import lsst.sconsUtils dependencies = { - "required": ["mysqlclient", ], + "required": ["mysql", ], } config = lsst.sconsUtils.Configuration( diff --git a/ups/db.table b/ups/db.table index 8c8d831..9e770a3 100644 --- a/ups/db.table +++ b/ups/db.table @@ -1,5 +1,5 @@ setupRequired(python) -setupRequired(mysqlclient) +setupRequired(mysql) setupRequired(mysqlpython) setupRequired(sconsUtils) {code} Is there a solution to describe in eups that mysqlclient is included in mysql ? Thanks, Fabrice1
224DM-644update overview docs to clarify roles of meas_multifit and shapelet packagesFrom the review of DM-17: {quote} It was not obvious how responsibility is split between {{meas_extensions_multishapelet}}, {{shapelet}}, and {{meas_multifit}}. Shapelet could use an {{overview.dox}} file. {quote} {{meas_extensions_multiShapelet}} is on its way out, so we'll wait until that's done and then document the relationship between meas_multifit and shapelet.2
225DM-645meas_base plugin for sampling-based galaxy fitterIn addition to a CModel plugin for galaxy photometry (DM-240), we should create a plugin to do sampling-based galaxy fitting, using the optimizer as a starting point and the existing AdaptiveImportanceSampler class to do most of the work. A major blocker for this is the fact that the {{SourceTable/SourceRecord}} don't currently provide any way to save multiple samples per object. This issue may get worked on before it falls into an official sprint, as it's something I want to on my 20% time.8
226DM-646Implement DISTINCT aggregate in qservIt looks like DISTINCT aggregate is not supported yet in qserv. Daniel told me that this should be relatively straightforward to add. Adding this ticket so that we do not forget it.2
227DM-647support samples and other many-to-one outputs in SourceRecordFor DM-645, I need to be able to save multiple samples (each a parameter vector and possibly a weight) with each {{SourceRecord}}, with the number of samples possibly differing from {{SourceRecord}} to {{SourceRecord}}. I'll also want to save Mixture distributions, which can also be easily represented as a sequence-of-tuples of values to be associated with a record. Since we don't want to hard-code the outputs of a particular plugin into {{SourceRecord}} (which is what I've done with the {{ModelFitRecord}} class in meas_multifit, which I'd like to remove), I think this means we want a more general way of allowing algorithms to define many-to-one tables to be associated with each source. While few algorithms will likely want to save samples, this plugin may not be the only one, and it's likely a general many-to-one feature could be used by other algorithms to save diagnostics when configured to do so. I'm worried this is another case where afw::table may be intruding on a feature best left to a true RDBMS, but I don't like the idea of tying an RDBMS directly to the source measurement framework either. I'm open to other ideas, if anyone has one. It's also worth pointing out that because this is blocking DM-645, which is important for my 20%-time science work, I'd like to get moving on this even before it becomes a real priority for LSST. But I'd still like to get some design feedback on this.20
228DM-648Add support for running unit tests in sconsAdd code in scons that runs unit tests for Qserv.5
229DM-649framework for documenting "how to run qserv"We need to have permanent location for how-to-run-qserv, currently we keep it in https://dev.lsstcorp.org/trac/wiki/db/Qserv/RedesignFY2014/Hackathon2/howToRunQserv. It should be in the code repo. Need to decide on how we format it, and need to expose it on our Qserv trac/confluence pages 3
230DM-650Migrate database trac pages to ConfluenceNeed to migrate Qserv trac pages to Confluence.10
231DM-653Run baseline HTCondor ClassAds ScenariosRun initial HTCondor ClassAds Scenarios to verify that the implementation for utilizing Rank to place Jobs near data is operating as anticipated. The main test of the baseline scenarios is to verify that, e.g., a job for a CCD that has calibrations advertised for a particular slot/node will consistency be executed within that location for appropriate Rank expression. This is to occur even when other open slots are always available (e.g., 4 CCDs, 5 slots). 4
232DM-654Run "single slow worker" HTCondor ClassAds ScenarioWe run and study a "single slow worker" HTCondor ClassAds Scenario. The scenario is a perturbation of the baseline HTCondor ClassAds Scenario. In the baseline, Jobs for a given CCD are consistently pinned to a slot/node that advertises the presence of associated data files/calibration files for that CCD. A baseline run may proceed, for example, with jobs for 4 CCDs repeating executing within same HTCondor slot on a node (even when spare processing slots are readily available.). The baseline is observed to be quite stable, as the pool is empty each time a wave of jobs is submitted. In the "single slow worker" scenario, we cause one of the jobs for a chosen CCD to stall (mocking up a slow file transfer, lengthy computation in an algorithm, etc), such that the pool is not empty at the the submission time for a wave of jobs. We seek to observe how Rank places jobs in this scenario, and work to assign Rank (especially for spare slots) in an optimal way so as to minimize file transfers. 4
233DM-655unknown column derails QservRunning a query that references invalid column hangs Qserv, it looks like the query is never squashed. For example, I run a query: {code} SELECT distinct run, field FROM Science_Ccd_Exposure WHERE run = 94 AND field = 535; {code} on the pt1.1 data set Corresponding log from xrootd: {code} Foreman:>>Unknown column 'run' in 'field list' Unable to execute query: CREATE TABLE r_7d8e5a45a6aba94de141cf1d8ab510c89_3598_0 SELECT run,field FROM LSST.Science_Ccd_Exposure \ AS QST_1_ WHERE run=94 AND field=535; <<---Error with piece 0 complete (size=1). Foreman:TIMING,q_f99cQueryExecFinish,1399667470 Foreman:Broken! ,q_f99cQueryExec---Unknown column 'run' in 'field list' Unable to execute query: CREATE TABLE r_7d8e5a45a6aba94de141cf1d8ab510c89_3598_0 SELECT run,field FROM L\ SST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535; (during QueryExec) QueryFragment: CREATE TABLE r_7d8e5a45a6aba94de141cf1d8ab510c89_3598_0 SELECT run,field FROM LSST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535; Foreman:Fail QueryExec phase for q_f99c: Unknown column 'run' in 'field list' Unable to execute query: CREATE TABLE r_7d8e5a45a6aba94de141cf1d8ab510c89_3598_0 SELECT run,field \ FROM LSST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535; (during QueryExec) QueryFragment: CREATE TABLE r_7d8e5a45a6aba94de141cf1d8ab510c89_3598_0 SELECT run,field FROM LSST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535; Foreman:(FinishFail:0x7f26700055c0) Db = q_f99cc9cd5519d465e673119a84b5570a, dump = /usr/local/home/becla/qserv/1/qserv/build/dist/xrootd-run/result/f99cc9cd5519d465e673119a84b\ 5570a hash=f99cc9cd5519d465e673119a84b5570a Foreman:Finished task Task: msg: session=7 chunk=3598 db=LSST entry time=Fri May 9 15:31:10 2014 frag: q=SELECT run,field FROM LSST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535, sc= rt=r_7d8e5a45a6aba94de141cf1d8ab510c89_3598_0 ScanSched:ChunkDisk remove for 3598 : SELECT run,field FROM LSST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535 BlendSched:Completed: (3598)SELECT run,field FROM LSST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535 ScanSched:Completed: (3598)SELECT run,field FROM LSST.Science_Ccd_Exposure AS QST_1_ WHERE run=94 AND field=535 ScanSched:_getNextTasks(32)>->-> ScanSched:ChunkDisk busyness: no ScanSched:_getNextTasks <<<<< BlendSched:Blend trying other sched. GroupSched:_getNextTasks(4)>->-> GroupSched:_getNextTasks <<<<< 140509 15:31:27 13960 cms_Finder: Waiting for cms path /usr/local/home/becla/qserv/1/qserv/build/dist/tmp/worker/.olb/olbd.admin {code} and the log in czar has {code} 20140509 15:35:40.070654 0x7f4694003660 INF Still 1 in flight. {code} 4
234DM-658Database name used by integration tests should use their own dedicated database, not "LSST"Currently automated tests use the database "LSST", and they will go ahead and delete that database without any warning. This is far from ideal, we should have a more unique database name. How about something like qservAutoTest_<uniqueId>.9
235DM-661Parser has inverted order for "limit" and "order by"{code} SELECT run FROM LSST.Science_Ccd_Exposure order by field limit 2 {code} Works in MySQL, fails in Qserv (ERROR 4120 (Proxy): Error executing query using qserv.) {code} SELECT run FROM LSST.Science_Ccd_Exposure limit 2 order by field {code} Works in Qserv, fails in MySQL (limit should be after order by) 1
236DM-664"out of range value" message when running qserv-testdata (loader.py)Fabrice I am getting "out of range value" when I run the qserv-testdata: Are you seeing that too? 2014-05-09 18:11:55,975 {/usr/local/home/becla/qserv/1/qserv/build/dist/lib/python/lsst/qserv/admin/commons.py:134} INFO stderr : /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'calib_detected' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'calib_psf_candidate' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'calib_psf_used' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_negative' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_badcentroid' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'centroid_sdss_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_edge' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_interpolated_any' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_interpolated_center' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_saturated_any' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_saturated_center' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_cr_any' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_cr_center' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'centroid_gaussian_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'centroid_naive_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'shape_sdss_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'shape_sdss_centroid_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'shape_sdss_flags_unweightedbad' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'shape_sdss_flags_unweighted' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'shape_sdss_flags_shift' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'shape_sdss_flags_maxiter' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_psf_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_psf_flags_psffactor' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_psf_flags_badcorr' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_naive_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_gaussian_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_gaussian_flags_psffactor' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_gaussian_flags_badcorr' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flux_sinc_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_psf_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_psf_flags_maxiter' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_psf_flags_tinystep' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_psf_flags_constraint_r' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_psf_flags_constraint_q' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flux_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flags_psffactor' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flags_badcorr' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flags_maxiter' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flags_tinystep' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flags_constraint_r' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flags_constraint_q' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_dev_flags_largearea' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flux_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flags_psffactor' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flags_badcorr' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flags_maxiter' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flags_tinystep' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flags_constraint_r' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flags_constraint_q' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_exp_flags_largearea' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_combo_flux_flags' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_combo_flags_psffactor' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'multishapelet_combo_flags_badcorr' at row 1 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'calib_detected' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'calib_psf_candidate' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'calib_psf_used' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_negative' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_badcentroid' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'centroid_sdss_flags' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_edge' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_interpolated_any' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_interpolated_center' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_saturated_any' at row 2 self.cursor.execute(stmt) /usr/local/home/becla/qserv/1/qserv/build/dist/bin/loader.py:99: Warning: Out of range value for column 'flags_pixel_saturated_center' at row 2 self.cursor.execute(stmt) 2
237DM-666partition package has to detect eups-related boostpartition package doesn't detect eups-related boost. This has to be fixed by using sconsUtils, or hand-made procedure. {code:bash} [fjammes@lsst-dev lsstsw]$ export LD_LIBRARY_PATH="$LSSTSW/anaconda/lib:$LD_LIBRARY_PATH" [fjammes@lsst-dev lsstsw]$ setup boost 1.55.0.1+1 [fjammes@lsst-dev lsstsw]$ rebuild partition partition: ok (0.5 sec). boost: ok (0.3 sec). python: ok (0.3 sec). scons: ok (0.4 sec). # BUILD ID: b49 python: master-gcbf93ab65b (already installed). scons: 2.1.0+8 (already installed). boost: 1.55.0.1+1 (already installed). partition: master-gf2ef2cf2dc ERROR (1 sec). *** error building product partition. *** exit code = 1 *** log is in /lsst/home/fjammes/src/lsstsw/build/partition/_build.log *** last few lines: ::::: scons: Reading SConscript files ... ::::: Checking for C++ library boost_system-mt... no ::::: Checking for C++ library boost_system... no ::::: Checking for C++ library boost_thread-mt... no ::::: Checking for C++ library boost_thread... no ::::: Checking for C++ library boost_filesystem-mt... no ::::: Checking for C++ library boost_filesystem... no ::::: Checking for C++ library boost_program_options-mt... no ::::: Checking for C++ library boost_program_options... no ::::: Missing required boost library! # BUILD b49 completed. {code}3
238DM-674fix handling of nested control objectsWork on the HSC side has revealed some problems with nested control objects being wrapped into config objects. This is a pull request for those changes (along with writing a unit test for some of them). Some (but not all of these changes) are part of Trac ticket #3163 (https://dev.lsstcorp.org/trac/ticket/3163), which I'll now close as a duplicate.2
239DM-675Citizen methods should be private and accessible only through a friend interfaceThe Citizen interface is useful, but it pollutes its derived classes with methods and attributes that can cause confusion later on (I've got a concrete example of that confusion that Perry and I just spent a few days tracking down - Citizen's {{getId()}} was being mistaken for {{SourceRecord.getId()}}). I think everything Citizen provides should be hidden and only accessible through a friend interface, e.g.: {code} afw::image::Image<float> image(4, 5); daf::base::CitizenAccess::getId(image); {code} We should also make an effort to ensure that other aspects of Citizen's design don't affect derived classes, perhaps by prefixing an name that could be seen by derived classes with a "Citizen" prefix; see https://dev.lsstcorp.org/trac/ticket/2461.4
240DM-676Implement HTCondor dynamic classad solution for Slot based valuesThe HTCondor team will be updating their HOWTO for managing Slot based classads/dynamic classads set by a cron startd process. We currently have a technique for dynamic slot based values that is iinefficient from a negotiation perspective, and we will want to update to a more optimal approach that the HTCondor team plans to provide.2
241DM-677Develop monitoring for identifying Data processed on a Node/in a SlotTo understand the effectiveness with which we are mapping Jobs to Data, it is vital to monitor/record what data has been processed on a given Node, or within a given Slot on a Node. Under this issue we examine HTCondor monitoring standards like STARTD_HISTORY, as well as more custom implementation of blackboard type records via Job Update hooks to be executed on the execute node (along the lines of OWL.) 4
242DM-678Run HTCondor ClassAds Scenarios with heterogeneous data cacheThe initial series of tests with HTCondor ClassAds work with jobs for individual ccds with a single file representing the data dependency for the job. In this issue we consider the management of multiple types of data dependencies that may have to be cached for jobs (calibrations, templates, catalogs of sources/objects, etc). 4
243DM-680Study ORDER BY supportWe don't have a proper implementation of ORDER BY. Actually, to support ORDER BY properly, we really have to manage all the column names, so we would need to have an in-memory list of columns for the table in question. This is because the general case requires us to ORDER BY a column that may not exist in the select list. In this case, we must add it to the select list if it is not there (or apply *). The easiest solution is to only allow ORDER BY if the sort key column exists explicitly in the select list.4
244DM-681Parser ignores syntax after LIMITParser stops after the LIMIT condition, believing that it has a complete select statement. It ignores whatever is afterwards.To fix this, we would need to alter the parser to make sure that there isn't garbage afterwards. So we have to make sure that the only thing acceptable afterwards is a semicolon or a comment. The right thing to do is probably to add a grammar rule for this. The easiest thing is to check to see if the entire string was consumed (give-or-take a semicolon), but this would disallow comments.4
245DM-684Estimate expected counts of unassociated sources We need to have an idea how many sources/forcedSource/diaSources that are not associated with any object we will have to deal with in the database. Can we have a rough estimate? (e.g., per DR).2
246DM-685Fine-tune logging messagesFine-tune log messages in Qserv (what messages are printed, what is the error level, etc)5
247DM-689During scons configure : check if mysql isn't runingMysqld can't be configured is its running before configuration step.1
248DM-690Minor possible enhancements in install procedureUsefull enhancements : - add swigged target to "build" alias (run scons install to see that swigged target are re-builded at install time) Other possibles enhancements : - manage default (i.e. const.py) for server configuration file ? - state.py : where to save state ? print it to sdtout ? 7
249DM-693Create tutorial on the use of eupsCreate a beginner's guide to the use of EUPS for the DM Developer Guide. Describe the capabilities and basic usage for "everyday" user and developer activities. Provide pointers to the EUPS reference manual for advanced usage. 10
250DM-699rename git repository qservdata to qserv_testdataeups package have the same name as their related git repos. Renaming git repos would lead to a more understandable name. Please note that the qserv-testdata may also be cloned from qservdata, and and qservdata be removed. New repos will also have to be distributed with lsst-sw tool.1
251DM-702Buildbot CI needs to save manifest file of failed build for later user debugThe manifest file created during a build instance is transient and removed as soon as the next build commences. Due to that volatility, it's important to save the manifest to some well-known location so that the developer responsible for debug and repair can easily setup the failing environment. The location of the manifest file will be provided to the developer(s) in the failure notification.4
252DM-703Use of HipChat for Buildbot CI failure notifications should be exploredK-T recommended the use of HipChat rather than email when notifying users of a buildbot build failure. The purpose was twofold: get immediate attention from the developers and help change the culture towards using HipChat more. This Issue is to explore the feasibility of using HipChat for the notifications.1
253DM-704Better review notification e-mailsRussell writes: {quote} I think our system for getting code reviewed using JIRA needs some improvements. It seems that people don't always know that they have been assigned to review a ticket. Also, even if I know I have been assigned to review a ticket, I find it hard to find on JIRA. More concretely, I would like to see these improvements: - Much clearer notification that one has been assigned as a reviewer. Presently the email is quite generic and easy to miss. In fact I find that most JIRA notifications are rather hard to read -- it's not always easy to see what has changed and thus why I should care. The signal to noise ratio is poor. - By default a user should see which issues they have been assigned as reviewer when they log into JIRA. (If there is a way to reconfigure the dashboard for this, I'd like to know about it, but it really should be the default). One way to fix this, of course, is to reassig the ticket when putting it into review, but we have good reasons to avoid that. -- Russell {quote} and I added: {quote} In fact, you don't know that the ticket has passed into review unless you scroll all the way to the bottom of the comment. If the comment associated with the change in status is long and you don't scroll all the way down, then you may not know that you were assigned to review. With Trac, the important information was at the top of the e-mail. {quote}2
254DM-705CSS keys are too fine-grain, consider merging them together (design)I've seen a lot of sentiment (from Serge and Daniel) to try and combine keys in CSS. Current design has one key for each table-chunk (leading to tens of thousands of keys in production), and small-grain keys like "nStripes", "nSubStripes", and "overlap" in partitioning are each stored in separate key. This issue will capture discussion, decisions, and implementation of a more compact version. 10
255DM-706cleanup extra file names in docstringReported by Serge in email: When using doxygen to document C++ source, you can mark a comment block with just: {code} /** @file * Blah blah */ {code} in which case doxygen assumes you want the comment block tied to the file it appears in. We seem to have lots of "@file <fileName>” statements all over the place, which is an extra thing we have to remember to change when renaming files. Is there some reason to do it that way that I’m missing?1
256DM-707cleanup exception code in CSSReported by Serge: In CssException.h you’ve got: {code} class CssRunTimeException: public std::runtime_error { … }; class CssException_XXXX : public CssRunTimeException { … }; {code} This is inconsistent (shouldn’t it be CssRunTimeException_XXX, or maybe even CssRunTimeError?), lengthy, violates the LSST C++ naming conventions, and doesn’t match the KvInterface docs, which all still talk about a CssException class that does not exist. Can we consider changing this to something more like: {code} class CssError : public std::runtime_error class KeyError : public CssError class NoSuchTable : public KeyError class NoSuchDb : public KeyError class AuthError : public CssError class ConnError : public CssError {code} ? Then we can succinctly throw and catch css::NoSuchTable, css::AuthError etc…2
257DM-708IN2P3: Cloud-computing Platform / OpenStackCC-IN2P3 offer computing resources via Openstack : https://indico.in2p3.fr/getFile.py/access?sessionId=2&resId=0&materialId=0&confId=8236 This platform allow to boot virtual machines on multiples linux distribution. It could be a powerfull tool for continuous integration and testing. Virtual machines are easilly available to all IN2P3 users, only a SSH account on ccage.in2p3.fr is required. 15
258DM-709Prepare a fedora64 openstack image which allow to easily build and test QservQserv packaging procedure requires to often rebuild Qserv and relaunch integration tests. IN2P3 Openstack platform offer next virtual machines : {code:bash} [fjammes@ccage030 ~]$ nova flavor-list {code} | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | | 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | True | | 15 | cc.windows.small | 4096 | 20 | 0 | | 2 | 1.0 | True | | 16 | cc.windows.xlarge | 8192 | 50 | 0 | | 4 | 1.0 | True | | 2 | m1.small | 2048 | 10 | 20 | | 1 | 1.0 | True | | 3 | m1.medium | 4096 | 10 | 40 | | 2 | 1.0 | True | | 4 | m1.large | 8192 | 10 | 80 | | 4 | 1.0 | True | | 5 | m1.xlarge | 16384 | 10 | 160 | | 8 | 1.0 | True | | 6 | cc.lsst.medium | 4096 | 20 | 40 | | 2 | 1.0 | False | | 7 | cc.lsst.large | 16384 | 20 | 160 | | 8 | 1.0 | False | | 9 | cc.lsst.xlarge | 40000 | 20 | 160 | | 20 | 1.0 | False | cc.lsst.xlarge would allow a quick build/test of new Qserv release.5
259DM-710Reduce and comment client configuration fileClient configuration file '~/.lsst/qserv.conf) is used by integration test procedure. Next improvments are required : 1. use templates in it 2. client config file should retrieve templated values from mother config file"1
260DM-720Upgrade various external packagesI note that the LSST and HSC versions of external packages are slightly out of sync. I propose uprevving the LSST packages to match as HSC has tested these versions. {quote} cfitsio 3.360 HSC cfitsio 3310+2 sims Winter2014 current b4 b5 b6 b3 doxygen 1.8.2+2 sims b4 Winter2014 current b5 b6 b3 doxygen 1.8.5 HSC eigen 3.1.1+2 Winter2014 current b5 b6 b3 b4 eigen 3.2 HSC fftw 3.3.2+2 Winter2014 current b5 b6 b3 b4 fftw 3.3.3 HSC gsl 1.15+2 Winter2014 current b5 b6 b3 b4 gsl 1.16 HSC minuit2 5.22.00+2 Winter2014 current b5 b6 b3 b4 minuit2 5.28.00 HSC mysqlclient 5.1.65+3 Winter2014 current b5 b6 b3 b4 mysqlclient 5.1.73 HSC pyfits 3.1.2+2 sims b4 Winter2014 current b5 b6 b3 pyfits 3.2 HSC scons 2.1.0+7 sims b4 Winter2014 current b5 b6 b3 scons 2.3.0 HSC sqlite 3.7.14+2 Winter2014 current b5 b6 b3 b4 sqlite 3.8.2 HSC wcslib 4.14 wcslib 4.14+3 b4 Winter2014 current b5 b6 b3 xpa 2.1.14+2 Winter2014 current b5 b6 b3 b4 xpa 2.1.15 HSC {quote} 20
261DM-736Rewrite secondary index system and merge empty chunks functionalityWe'd like to rewrite the indexing system so that it doesn't depend on a narrow innodb table. We'd also like to fold in the emptychunks functionality. secondary index: dirColumn->(chunkId, subChunkId) emptychunks: hasChunk = chunkID -> bool danielw has a dirt simple implementation of the "create" portion of the secondary index.30
262DM-737Rendering an IR node tree should produce properly parenthesized outputIt appears that rendering a tree of IR nodes doesn't always result in correct generation of parentheses. Consider the following tree: {panel} * OrTerm ** BoolFactor *** NullPredicate **** ValueExpr ***** ValueFactor: ColumnRef("refObjectId") ** BoolFactor *** CompPredicate **** ValueExpr ***** ValueFactor: ColumnRef("flags") **** Token("<>") **** ValueExpr ***** ValueFactor: Const("2") {panel} which corresponds to the SQL for: "refObjectId IS NULL OR flags<>2". If one prepends this (via {{WhereClause.prependAndTerm()}}) to the {{WhereClause}} obtained by parsing "... WHERE foo!=bar AND baz<3.14159;" and renders the result using {{QueryTemplate}}, one obtains: {{... WHERE refObjectId IS NULL OR flags<>2 AND foo!=bar AND baz<3.14159}} This is equivalent to {{... WHERE refObjectId IS NULL OR (flags<>2 AND foo!=bar AND baz<3.14159)}} which doesn't match the parse tree - one should obtain: {{... WHERE (refObjectId IS NULL OR flags<>2) AND foo!=bar AND baz<3.14159}} This issue involves surveying all IR node classes and making sure that they render parentheses properly. {color:gray}(One way we might test for this is to parse queries containing parenthesized expressions where removal of the parentheses changes the meaning of the query. This would give us some IR that we can render to a string and reparse back into IR. If the rendering logic is correct, one should obtain identical IR trees).{color} Other possibilities that might explain the behavior above is that the input tree is somehow invalid or that {{WhereClause.prependAndTerm}} creates invalid IR.8
263DM-740Implement abstract base class for approximated or interpolated fieldsThe user of an Approximate or Interpolate object doesn't care which of these they have, once the object has been constructed, and we should make these inherit from a common base class that only contains an interface for accessing the interpolated/approximated function while making no assumptions about its functional form. The new class will represent a scalar field defined over an integer bounding box, and will have methods for evaluating the field at a point and creating an image of the field. We could also consider giving it arithmetic interoperability with Image. I don't have a strong candidate for the name; I've called it "BoundedField" on the HSC side but would like that to be revisited. Adding derived classes to replace the functionality currently in the Approximate and Interpolate classes will be on a separate issue. The main work on this issue is tweaking the design on the HSC side and getting signoff on the final design from LSST developers; the actual coding should be minimal, as it's just an interface and we already have a good starting point for it. The HSC-side issue (which also includes work that is part of DM-1124) is here: https://hsc-jira.astro.princeton.edu/jira/browse/HSC-796 and the associated git commits are here: https://github.com/HyperSuprime-Cam/afw/compare/releases/S14A_0...tickets/DM-79610
264DM-742Use geom eups package for installing geometryUse geom eups package instead of downloading geometry.py during Qserv configuration step.3
265DM-744Qserv release (12.04) - final build, testing and cutting releaseNULL4
266DM-746Simplify (script) install procedureInstall procedure described in READMEs.txt is complex and error prone. It could be encapsulated in two scripts : 1. the first for installing Qserv current version in the eups stack, following the LSST official install procedure, 2. the second, developer-oriented, for installing Qserv from a git repository to the eups stack installed during 1. This two scripts logs could be colorized for better ergonomy. 3
267DM-750Integrate sciSQL in eupsIn order to become compliant with eups, sciSQL install process may have to be refactored : - provide a scons build and install target which build and install sciSQL binary (.i.e. reduce waf tool features) - provide a configuration procedure (scisql-deploy.py) which install UDF in MySQL datadir, and deploy .so file in MySQL plugin directory. Then it has to be packaged in eups format.9
268DM-751Replacing boost system lib with eups libs breaks scons buildWhile detecting boost, Qserv build system checks for both system lib and then eups lib. This procedure use next code : {code:python} class BoostChecker: def __init__(self, env): self.env = env self.suffix = None self.suffixes = ["-gcc41-mt", "-gcc34-mt", "-mt", ""] self.cache = {} pass def getLibName(self, libName): if libName in self.cache: return self.cache[libName] r = self._getLibName(libName) self.cache[libName] = r return r def _getLibName(self, libName): state.log.debug("BoostChecker._getLibName() LIBPATH : %s, CPPPATH : %s" % (self.env["LIBPATH"], self.env["CPPPATH"])) if self.suffix == None: conf = self.env.Configure() def checkSuffix(sfx): return conf.CheckLib(libName + sfx, language="C++", autoadd=0) {code} and this last line run next gcc command : {code:bash} g++ -o .sconf_temp/conftest_10.o -c -g -pedantic -Wall -Wno-long-long -D_FILE_OFFSET_BITS=64 -fPIC -I/data/fjammes/stack/Linux64/protobuf/master-g832d498170/include -I/data/fjammes/stack/Linux64/boost/1.55.0.1/include -I/data/fjammes/stack/Linux64/zookeeper/master-gc48457902f/c-binding/include -I/data/fjammes/stack/Linux64/mysql/master-g5d79af2a50/include -I/data/fjammes/stack/Linux64/antlr/master-gc05368a54f/include -I/data/fjammes/stack/Linux64/xrootd/master-gfc9bfb2059/include/xrootd -Ibuild -I/data/fjammes/stack/Linux64/anaconda/1.8.0/include/python2.7 .sconf_temp/conftest_10.cpp g++ -o .sconf_temp/conftest_10 .sconf_temp/conftest_10.o -L/data/fjammes/stack/Linux64/xrootd/master-gfc9bfb2059/lib -L/data/fjammes/stack/Linux64/protobuf/master-g832d498170/lib -L/data/fjammes/stack/Linux64/antlr/master-gc05368a54f/lib -L/data/fjammes/stack/Linux64/zookeeper/master-gc48457902f/c-binding/lib -L/data/fjammes/stack/Linux64/mysql/master-g5d79af2a50/lib -L/data/fjammes/stack/Linux64/boost/1.55.0.1/lib -lboost_regex-mt scons: Configure: yes {code} As the "-mt" suffix is searched before the empty suffix, previous command succeed.In my example boost_regex-mt is a system lib. When launching "scons build", then CheckLib only looks for boost in /data/fjammes/stack/Linux64/boost/1.55.0.1/lib, not in /usr/lib/. This behaviour is eups-correct, but prevents to find boost_regex-mt. In this example, a trivial solution is to reverse self.suffixes in python code, but a better solution would be to prevent g++ to use default search paths (e.g. : /usr/lib and /usr/include) in the second command. Is it possible to to it with scons ? Mario, did you meet the same problem with sconsUtils ? Thanks Fabrice3
269DM-754Update obs_decam for new CameraGeomThe obs_decam package worked on by Paul and Andy B. needs to be updated to reflect changes in the camera geometry.6
270DM-758Stretch: Data and test script specification for daily/automated QA/integration tests[I have renamed this Epic to better capture the current planned scope] Per discussions I am pulling this Epic into 02C.01.02 ["my" WBS] The intent for it is to cover the science and scientific programming portion activities associated with setting up a daily automated QA/integration run. The infrastructure activities to enable this are covered by other Epics. It is a stretch because it will be primarily worked on by the Tucson Scientist, still to be identified ICW Tucson Scientific Programmer, still to be identified. JK: In PMCS this would be New Hire LS670
271DM-760Identify Data Set for MiniProductionNULL3
272DM-761Generate data for MiniProductionAssuming that the data needed for mini-production are to be simulated, the input files need to be created and simulated. The input data then need to be put in a repo with appropriate calibrations.5
273DM-762Create scripts to run MiniProductionWrite command line script to run mini production. The scripts should be able to be handed directly to the orca layer.3
274DM-763Eliminate local pixel indexing; always use parent insteadAs Jim Bosch notes in <https://dev.lsstcorp.org/trac/wiki/Winter2014/Bosch/Miscellaneous>: Our image classes currently handle two different pixel coordinate systems which differ only by the offset commonly referred to as "xy0". The PARENT coordinate system puts the first pixel in the image at xy0; the LOCAL coordinate system always puts the first pixel at (0,0). Our general rule has long been "always pay attention to xy0", which implies PARENT, but the Image class itself doesn't: in many operations, including subimage accessors and bbox getters, LOCAL is the default, whereas in others - particularly the pixel and iterator accessors - there isn't even an option to use PARENT. IMO this is the main source of image-offset bugs in the code. We plan to address this issue as follows: * Modify the methods on image-like objects that return pixel iterators or locators based x and/or y index, so that they use parent coordinates. * Eliminate the ImageOrigin enum argument, which appears in image-like constructors, image-like getBBox methods. * Eliminate the image origin string argument in the butler's get and put methods for image-like objects. At the end of this transition all indices will be PARENT indices; the concept of LOCAL will be gone. This will reduce ambiguity and eliminate an argument that is a source of confusion. Furthermore, at Jim's suggestion and K-T's agreement, we plan to do this in two basic stages: * Rename methods or otherwise make changes that should break any code using LOCAL indices. Fix the code accordingly. * Rename methods back and eliminate the ImageOrigin argument. Fix the code accordingly.53
275DM-764Exception naming conventionThe naming convention for exceptions in pex_exceptions is quite redundant. This issue will make the convention more compact and update all packages that make use of pex_exceptions.5
276DM-765Evaluate moving to C++11 for .cc filesCheck that {{C\+\+11}} works on .cc files. Make {{C\+\+11}} the default in SconsUtils.5
277DM-766Improve afw::CameraGeom::utils codeSome of the utility code in CameraGeom was not completely ported in W13 and documentation is in need of updating.3
278DM-767Determine scope of XY0 convention updateIt's unclear exactly how much effort will be involved in making a change to how the XY0 is used. If the parent/child argument is removed completely this change could be quite invasive and wide reaching.2
279DM-768Does SWIG 3.x work with DM stack?This task is to evaluate whether we can use SWIG 3.x (and is it stable enough). Assuming SWIG 3.x can be used with the stack, evaluate how much work will be involved in moving over to use it by default.10
280DM-769Create scripts to assess and report MiniProduction quality.Write a command line script to assess the quality of the mini production run. This will involve comparing output data to data produced using a standard stack. The script will provide a report.7
281DM-770Create script to clean up after a MiniProduction runThe run of a mini production will produce an output repository. It's likely that we will not want to save all output data. A script to clean up and potentially save parts of the repo is needed.3
282DM-772Package log4cxxFabrice, can you package log4cxx? I should have asked you earlier, sorry I waited so long, not it becoming urgent! Bill is almost done with his logging prototype and will be turning it into a real package, and we need to have log4cxx packages. Many thanks. log4cxx version 0.10.0, which was released in 4/3/2008 but is still undergoing "incubation" at Apache. 2
283DM-774XLDB in RioPrepare for and attend XLDB-South America in Rio.15
284DM-775XLDB-2015 reportWriting the report, most work done by Daniel, with input from Jacek and K-T.8
285DM-776Researching partnership opportunitiesNULL8
286DM-778Restructure and package logging prototypeRestructure and package log4cxx-based prototype (currently in branch u/bchick/protolog). It should go into package called "log"8
287DM-780Access patterns for data store that supports data distribution Data distribution related data store includes things like. chunk --> node mapping, locations of chunk replicas, runtime information about nodes (and maybe also node configuration?). Need to understand access patterns - who needs to access, how frequently etc. 5
288DM-781research mysql cluster ndbCheckout mysql cluster ndb from the perspective of data distribution - could it be potentially useful to store data related to data distribution?2
289DM-782Automated test should optionally ignore column headersSome types of queries (like COUNT(*)) may return different column headers in qserv and mysql. This differences break our automated tests which dump and compare complete result including headers. It looks like we will not be able to guarantee that qserv can be made to return the same column headers as mysql except for providing aliases in the query itself. Running those queries without aliases is a legitimate use case so it would be nice to have an option in the test runner which ignores headers for some queries.4
290DM-783Disable failing test cases in automated testsThere are currently 4 test cases failing in out automated tests. Until we have a fix we want to disable them.1
291DM-786JOIN queries are brokenRunning a simple query that does a join: {code} SELECT s.ra, s.decl, o.raRange, o.declRange FROM Object o JOIN Source s USING (objectId) WHERE o.objectId = 390034570102582 AND o.latestObsTime = s.taiMidPoint; {code} results in czar crashing with: {code} 2terminate called after throwing an instance of 'std::logic_error' what(): Attempted subchunk spec list without subchunks. {code} This query has been taken from integration tests (case01, 0003_selectMetadataForOneGalaxy.sql) 3
292DM-787Understand DCR amplitudes using realistic distribution of starsNULL4
293DM-788Determine refraction amplitudes as a function of SEDNULL2
294DM-789Model refraction amplitudes as a function of SEDNULL2
295DM-790Determine DCR ampltiudes as a function of SEDNULL2
296DM-791Model DCR amplitudes as a function of SEDNULL2
297DM-792Determine requirements on atmospheric measurements to predict refraction/DCRNULL2
298DM-793Put together requirements to model refraction/DCR for a given sourceNULL8
299DM-794SQL injection in czar/proxy.pyRunning automated tests for some queries I observe python exceptions in czar log which look like this: {code} 20140529 19:47:19.364371 0x7faacc003550 INF <py> Query dispatch (7) toUnhandled exception in thread started by <function waitAndUnlock at 0x18cd8c0> Traceback (most recent call last): File "/usr/local/home/salnikov/qserv-master/build/dist/lib/python/lsst/qserv/czar/proxy.py", line 78, in waitAndUnlock lock.unlock() File "/usr/local/home/salnikov/qserv-master/build/dist/lib/python/lsst/qserv/czar/proxy.py", line 65, in unlock self._saveQueryMessages() File "/usr/local/home/salnikov/qserv-master/build/dist/lib/python/lsst/qserv/czar/proxy.py", line 87, in _saveQueryMessages self.db.applySql(Lock.writeTmpl % (self._tableName, chunkId, code, msg, timestamp)) File "/usr/local/home/salnikov/qserv-master/build/dist/lib/python/lsst/qserv/czar/db.py", line 95, in applySql c.execute(sql) File "/u2/salnikov/STACK/Linux64/mysqlpython/1.2.3+8/lib/python/MySQL_python-1.2.3-py2.7-linux-x86_64.egg/MySQLdb/cursors.py", line 174, in execute self.errorhandler(self, exc, value) File "/u2/salnikov/STACK/Linux64/mysqlpython/1.2.3+8/lib/python/MySQL_python-1.2.3-py2.7-linux-x86_64.egg/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'r' AND sce.tract=0 AND sce.patch='159,3';', 1401410839.000000)' at line 1") ok 0.000532 seconds {code} I believe this is due to how query string is being constructed in czar/proxy.py: {code:py} class Lock: writeTmpl = "INSERT INTO %s VALUES (%d, %d, '%s', %f);" # ................... self.db.applySql(Lock.writeTmpl % (self._tableName, chunkId, code, msg, timestamp)) {code} If {{msg}} happens to contain quotes then resulting query is broken. One should not use Python formatting to construct query strings, instead the parameters should be passed directly to {{cursor.execute()}} method. 2
300DM-800Zookeeper times outI noticed running some queries, leaving system up and them returning few hours later and running more queries can result in: {code} ZOO_ERROR@handle_socket_error_msg@1723: Socket [127.0.0.1:12181] zk retcode=-4, errno=112(Host is down): failed while receiving a server response {code} It needs to be investigated (if we can reproduce) 3
301DM-803Provide a "stackfitCalib" for coaddsCoadds have a Psf class that returns the proper sum of input PSFs at a point. We need the same functionality for the Calib object associated with the Coadd Exposure. This will require making a Calib a baseclass (it currently doesn't have a virtual dtor (although it does have virtual protected members)) 4
302DM-813PhotoCalTask doesn't return information about which stars were used in calibrationThe PhotoCalTask returns numpy arrays of the source and reference fluxes (and errors) of matched "good" photometric objects, typically stars. However, while estimating the zero point, it clips outliers so the actual list of objects used is shorter. Please add another output to the returned struct, a numpy Bool array "good", to indicate which objects are kept. 1
303DM-814Cleanup in core/examples and core/doc- core/examples and core/doc seems to be out of data. Some cleanup here would be welcome.1
304DM-815Define filter for Epics and mapping of Epics to WBSNULL2
305DM-817qserv have to use boost from stackTo quote Jacek and KT: {code} Andy, re dm-751, KT says never use the system version. J. {code} So we need to switch qserv to eups-boost. This should be easy once DM-751 is done, just add boost to qserv.table. Then one can remove conditional part of {{BoostChecker}} which works with system-installed boost. 1
306DM-820Simplify copying tables while adding columnsCurrently, if I want to copy a table while adding a few columns (as specified by schema in the example) I need to do something like: {code} cat = afwTable.SourceCatalog(schema) cat.table.defineCentroid(srcCat.table.getCentroidDefinition()) cat.table.definePsfFlux(srcCat.table.getPsfFluxDefinition()) # etc. scm = afwTable.SchemaMapper(srcCat.getSchema(), schema) for schEl in srcCat.getSchema(): scm.addMapping(schEl.getKey(), True) cat.extend(srcCat, True, scm) {code} Please make this easier! For example - by adding a flag to the SchemaMapper constructor that automatically does the addMapping (should this be the default?) - by making it possible to copy all the slots (maybe this'll be the case when the new alias scheme is implemented?). Maybe we just need a new method: {code} cat = srcCat.extend(schema) {code} that does all the above steps.4
307DM-827Reimplement C++/Python Exception TranslationI'd like to reimplement our Swig bindings for C++ exceptions to replace the "LsstCppException" class with a more user-friendly mechanism. We'd have a Python exception hierarchy that mirrors the C++ hierarchy (generated automatically with the help of a few Swig macros). These wrapped exceptions could be thrown in Python as if they were pure-Python exceptions, and could be caught in Python in the same language regardless of where they were thrown. We're doing this as part of a "Measurement" sprint because we'd like to define custom exceptions for different kinds of common measurement errors, and we want to be able to raise those exceptions in either language.8
308DM-828Design Prototypes for C++ Algorithm APIWe've never really been happy with the new design for the C++ algorithm API, and Perry and Jim have a few ideas to fix this that need to be fleshed out. Each of the subtasks of this issue will correspond to a different design idea. Ideally, for each one, we'll try to do a nearly-complete conversion of the SdssShape algorithm (as a good example of a complicated algorithm) to see how these ideas work in practice.6
309DM-829Algorithm API without (or with optional) Result objectsIn this design prototype, I'll see how much simpler things could be made by making the main algorithm interface one that sets record values directly, instead of going through an intermediate Result object. Ideally the Result objects would still be an option, but they may not be standardized or reusable.3
310DM-832add persistable class for aperture correctionsWe need to create a persistable, map-like container class to hold aperture corrections, with each element of the container being an instance of the class to be added in DM-740. A prototype has been developed on DM-797 on the HSC side: https://hsc-jira.astro.princeton.edu/jira/browse/HSC-797 and the corresponding code can be found on these changesets: https://github.com/HyperSuprime-Cam/afw/compare/32d7a8e7b75da6f5327fee65515ee59a5b09f6c7...tickets/DM-7972
311DM-833implement coaddition for aperture correctionsWe need to be able to coadd aperture corrections in much the same way we coadd PSFs. See the HSC-side HSC-798 and HSC-897 implementation for a prototype: https://hsc-jira.astro.princeton.edu/jira/browse/HSC-798 https://hsc-jira.astro.princeton.edu/jira/browse/HSC-897 with code here: https://github.com/HyperSuprime-Cam/meas_algorithms/compare/d2782da175c...u/jbosch/DM-798 https://github.com/HyperSuprime-Cam/meas_algorithms/compare/c4fcab3251...u/price/HSC-897a https://github.com/HyperSuprime-Cam/pipe_tasks/compare/6eb48e90be12d...u/price/HSC-897a3
312DM-834reduce code- and object-duplication in aperture correction and PSF coadditionThe aperture correction code to be added on DM-833 will likely not be as closely integrated with CoaddPsf as it could be, because the original design of CoaddPsf didn't anticipate the addition of other, similar classes. We should work on allowing these classes to share code.8
313DM-836design Array fields for table version 1While we're trying to eliminate the need for compound fields in afw::table, Arrays present a few problems. We could use FunctorKeys, the way we plan to use other compound fields, but here we need to guarantee that the per-element keys are contiguous, and we also be able to support views. We also need to determine the naming scheme. Finally, we need to make sure these work with aliases and slots.6
314DM-837Rewrite multiple-aperture photometry classWe've never figured out how to handle wrapping multiple-aperture photometry algorithms. They can't use the existing Result objects - at least not out of the box. We should try to write a new multiple-aperture photometry algorithm from the ground up, using the old ones on the HSC branch as a guide, but not trying to transfer the old code over. The new one should: - Have the option of using elliptical apertures (as defined by the shape slot) or circular apertures. - Have a transition radius at which we switch from the sinc photometry algorithm to the naive algorithm (for performance reasons).2
315DM-839Rename methods that return pixel iterators and locators in image-like classes, and change to use parent indexingImage-like classes have a large number of methods that return pixel iterators and locators based on row and/or column. We wish to change these to use parent indexing (making row and column relative to XY0). As the first step in doing this, rename all these methods and modify them to parent indexing. Renaming will help identify and fix all code that uses these methods.6
316DM-840Change code so ImageOrigin must be specified (temporary)Image-like classes have a getBBox method and various constructors that use an ImageOrigin argument which in most or all cases defaults to LOCAL. As the first stage in cleaning this up, try to break code that uses the default as follows: * Remove the default from getBBox(ImageOrigin) so an origin must be specified. * Change the default origin of constructors to a temporary new value UNDEFINED * Modify code that uses image origin to fail if origin is needed (it is ignored if bbox is empty) and is UNDEFINED. Note: this is less safe than changing constructors to not have a default value for origin, because the error will be caught at runtime rather than compile time. However, that is messy because then the bounding box will also have to be always specified, and possibly an HDU, so it would be a much more intrusive change.2
317DM-841Change data butler I/O of image-like objects to require imageOrigin if bbox specified (temporary)As part of making PARENT the default for image origin, change the data butler to require that imageOrigin be specified if bbox is specified when reading or writing image-like objects. Note: this ticket turns out to be unnecessary, as all the few necessary change are done as part of DM-840.2
318DM-842Update code that uses pixel iterators and accessorsFix all code that uses pixel iterators and locators as per the changes in DM-839. This affects roughly 60 files distributed over many packages.16
319DM-843Restore names of methods that return pixel iterators and locatorsRestore the names of methods that return pixel iterators and pixel locators on image-like classes. (This is part of the final stage of eliminating LOCAL pixel indexing).2
320DM-844Eliminate ImageOrigin argumentEliminate the ImageOrigin enum and argument from image-like classes.2
321DM-845Eliminate image origin argument from butler for (un)persisting image-like objectsEliminate the image origin argument for butler get and put when dealing with image-like objects.2
322DM-846Change code to always specify image origin (temporary)The next step after DM-840 is to change all code that uses image-like getBBox and constructors that take an image origin argument to always specify the origin (DM-840 will break any code that tries to use a default image origin). This results in a working stack after DM-840. Neither this nor DM-840 will be merged to master, though it can be used by HSC and other users as they transition to a default image origin of PARENT. See DM-1176 for the final step.10
323DM-847Update code to use restored names for methods that return pixel iterators and locatorsFor all code changed in DM-842, change it again to use the restored names for methods that return pixel iterators and locators. This task is much simpler than DM-842 because it is merely renaming methods. Nonetheless, it touches many files in many packages.4
324DM-848Specify ImageOrigin = PARENT in all casesFor all code that uses the ImageOrigin argument (either explicitly or using a bbox and the default value) change the code to use an explicit ImageOrigin of PARENT. In other words, update all code to match the changes in DM-840 and DM-841. This affects 40-ish modules in many packages. I am concerned about testing the modified code because we are missing unit tests for so many tasks. But we can do some data processing and check those results. I will want some help with that.12
325DM-849Eliminate use of ImageOrigin argumentFor all code that uses the ImageOrigin argument, eliminate the use of that argument. In other words, update all code to match the changes in DM-844 and DM-845, This affects all the code affected by DM-848, plus any code that was already using ImageOrigin=PARENT, but is a simpler change.5
326DM-854duplicate column name when running near neighbor queryRunning a simplified version of near neighbor query on test data from case01: {code} SELECT DISTINCT o1.objectId, o2.objectId FROM Object o1, Object o2 WHERE scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_PS) < 1 AND o1.objectId <> o2.objectId {code} Result in an error on the worker: {code} Foreman:Broken! ,q_38f9QueryExec---Duplicate column name 'objectId' Unable to execute query: CREATE TABLE r_13237cd4cfc9e0fa01497bcf\ 67a91add2_6630_0 SELECT o1.objectId,o2.objectId FROM Subchunks_LSST_6630.Object_6630_0 AS o1,Subchunks_LSST_6630.Object_6630_0 AS o2\ WHERE scisql_angSep(o1.ra_PS,o1.decl_PS,o2.ra_PS,o2.decl_PS)<1 AND o1.objectId<>o2.objectId; {code} It is fairly obvious what is going on. "SELECT t1.x, t2.x" is perfectly valid, but if we add "INSERT INTO SELECT t1.x, t2.x", we need to add names, eg. something like "INSERT INTO SELECT t1.x as x1, t2.x as x2"8
327DM-860Passing error messages from czar to end user - designNULL3
328DM-861Provide a detailed integration tests reportTest output is very low level. Indeed only a verbose logfile and SLQ queries output are currently available. Furthermore failing queries (i.e. .sql.FIXME) aren't launched. This ouput could be leveraged to a detailed html web report (using sbadmin for example : http://startbootstrap.com/templates/sb-admin/) which could : - launch all queries, even failing ones, - print Qserv services status after each query, - execution time for each query, - information about MySQL and Qserv results differences, - href to Qserv services log files - all other interesting information about queries execution 10
329DM-862apr and apt_util packages do not install shared libraryWhen we installed apr and apr_utils packages (as a dependency of new log4cxx package, see DM-772) we discovered that both these packages only build static libraries but no shared libs are installed. This is problematic if mixed with shared libs and we use shared libs everywhere else. We certainly need to build shared libs for these packages, this ticket is to follow up on this problem.2
330DM-863near neighbor does not return resultsA query from qserv_testdata (case01/queries/1051_nn.sql) runs through Qserv, but it returns no results, while the same query run on myql does return results. The exact query for qserv is: {code} SELECT o1.objectId AS objId FROM Object o1, Object o2 WHERE qserv_areaspec_box(0, 0, 0.2, 1) AND scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_PS) < 1 AND o1.objectId <> o2.objectId; {code}1
331DM-869disable extraneous warnings from boost (gcc 4.8)Compiling qserv on ubuntu 14.04 (comes with gcc 4.8.2) results in huge number of warnings coming from boost. We should use the flag "-Wno-unused-local-typedefs".1
332DM-870XLDB Rio - workshop reportNULL3
333DM-873XLDB - strategic positioningDiscussions with strategic partners. Improving website and adding new context (community, speakers). 1-pager document3
334DM-874W'14 newinstall.sh picks up wrong python?newinstall.sh fails with: Installing the basic environment ... Traceback (most recent call last): File "/tmp/test_lsst/eups/bin/eups_impl.py", line 11, in ? import eups.cmd File "/tmp/test_lsst/eups/python/eups/__init__.py", line 5, in ? from cmd import commandCallbacks File "/tmp/test_lsst/eups/python/eups/cmd.py", line 38, in ? import distrib File "/tmp/test_lsst/eups/python/eups/distrib/__init__.py", line 30, in ? from Repositories import Repositories File "/tmp/test_lsst/eups/python/eups/distrib/Repositories.py", line 8, in ? import server File "/tmp/test_lsst/eups/python/eups/distrib/server.py", line 1498 mapping = self._noReinstall if outVersion and outVersion.lower() == "noreinstall" else self._mapping ^ SyntaxError: invalid syntax Perhaps from running the wrong version of python. Full script/log is attached. 1
335DM-875lsst_dm_stack_demolsst-dm_stack_demo has obsolete benchmark files (circa Release 7.0) which fail to serve the purpose of validating, for the user, the correct functioning of a freshly built Release v8.0 stack. At the very least, the benchmark files should be regenerated for each official Release. Tasks: (1) Build the benchmark files for Release v8.0 (2) Debate (a) recommending the use of 'numdiff' to check if the output is within realistic bounds. Or, (b) develop another procedure to better show how the current algorithms compare to the algorithms used at the benchmarked Release. (3) Depending on result of the debate on #2: for: (a) provide appropriate 'numdiff' command invocation in manual.; for (b) implement the new procedure.40
336DM-882Segmentation fault from writing dotted FITS header keywordsObserved on HSC, but I'm not aware of any fix for this on the LSST side either. {code:sh} pprice@tiger3:~ $ gdb python GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1) (gdb) r Starting program: /tigress/HSC/products-20130212/Linux64/python/2.7.6/bin/python >>> from lsst.afw.image import ExposureF >>> exp = ExposureF(1,1) >>> exp.getMetadata().add("A.B.C.D", 12345) >>> exp.writeFits("test.fits") Program received signal SIGSEGV, Segmentation fault. lsst::daf::base::PropertySet::combine (this=0x1eda370, source=...) at src/PropertySet.cc:746 746 if (dj == _map.end()) { (gdb) w #0 lsst::daf::base::PropertySet::combine (this=0x1eda370, source=...) at src/PropertySet.cc:746 #1 0x00002aaabac068dc in lsst::daf::base::PropertyList::deepCopy (this=0x1ddd4c0) at src/PropertyList.cc:74 #2 0x00002aaab7ba559e in lsst::afw::image::MaskedImage<float, unsigned short, float>::writeFits (this=0x1f1d8f0, fitsfile=..., metadata=<value optimized out>, imageMetadata=..., maskMetadata=..., varianceMetadata=...) at src/image/MaskedImage.cc:569 #3 0x00002aaab7b0a7f0 in lsst::afw::image::Exposure<float, unsigned short, float>::writeFits (this=0x1f1d8d0, fitsfile=...) at src/image/Exposure.cc:251 #4 0x00002aaab7b0a9fc in lsst::afw::image::Exposure<float, unsigned short, float>::writeFits (this=0x1f1d8d0, fileName="test.fits") at src/image/Exposure.cc:239 #5 0x00002aaab6b91614 in _wrap_ExposureF_writeFits__SWIG_0 (self=<value optimized out>, args=<value optimized out>) at python/lsst/afw/image/imageLib_wrap.cc:160786 #6 _wrap_ExposureF_writeFits (self=<value optimized out>, args=<value optimized out>) at python/lsst/afw/image/imageLib_wrap.cc:29886 … {code} This appears to only affect dotted keywords (which should be supported through use of {{HIERARCH}}, and even if they're not supported, this should never fail with a segfault).4
337DM-887Optimize template engine used in configuration toolstring.Template and string interpolation are quite weak, some additional feature would be welcomed : - interpolation interprets wrongly "%d" in template files as template - string.template doesn't manage correctly non referenced template parameters present in template files.4
338DM-895Use an existing qserv_run_dir with a new Qserv instance/binaryHere's what should be added to qserv-configure.py : - edit $QSERV_RUN_DIR/admin/qserv.conf and change Qserv instance dir to current one (which qserv-configure.sh), - check compliance of QSERV_RUN_DIR with new Qserv instance (version check ?) and/or update configuration files, - re-initialize services, if needed, without breaking already loaded data. 4
339DM-898unset BASH_ENV in newinstall.sh or surrounding instructionsNutbar users such as myself may have BASH_ENV set, which can mess with your carefully constructed shell environments. Unsetting BASH_ENV should help. This could perhaps go in newinstall.sh, or the documentation alongside where we suggest they unset other variables: https://confluence.lsstcorp.org/display/LSWUG/Building+the+v8.0+LSST+Stack+from+Source1
340DM-900Update PhoSim tutorial to use CatSim for creating instance catalogsUpdate the Process PhoSim Images tutorial (https://confluence.lsstcorp.org/display/LSWUG/Process+PhoSim+Images) to use CatSim to generate instance catalogs, once CatSim documentation is available. This will obviate the need for the helper script refCalCat.py. 2
341DM-903SourceDetectionTask should only add flags.negative if config.thresholdParity == "both"The SourceDetectionTask always adds "flags.negative" to the schema (if provided) but it is only used if config.thresholdParity == "both". As adding a field to a schema requires that the table passed to the run method have that field this is a significant nuisance when reusing the task. Please change the code to only modify the schema if it's going to set it. 1
342DM-911Provide Task documentation for DipoleMeasurementTaskSee Summary. 2
343DM-912Provide Task documentation for PsfMatchTaskSee Description (it's currently called PsfMatch) 4
344DM-913Provide Task documentation for ImagePsfMatchTaskSee summary2
345DM-914Provide Task documentation for SnapPsfMatchTaskSee summary2
346DM-915Provide Task documentation for AssembleCcdTaskSee summary4
347DM-916Provide Task documentation for IsrTaskSee Summary4
348DM-926Provide Task documentation for SourceDeblendTaskSee Summary2
349DM-927Provide Task documentation for CmdLineTaskSee Summary4
350DM-928Provide Task documentation for RepairTaskSee Summary4
351DM-929How to write your own command line task, including how-to-retarget sub-tasksPlease provide documentation on how to write a command line task, and how to retarget tasks (e.g. reusing bits of IsrTask for a new camera) The documentation should include a complete annotated example. 4
352DM-930Improve install/configuration/tests documentation and migrate it to reST formatThis ticket propose to migrate README and README-devel to reST format (see http://sphinx-doc.org/rest.html). The output is located here : http://lsst-web.ncsa.illinois.edu/~fjammes/qserv-doc/ Furthermore this ticket wil integrate Andy S. DM-622 value-added remarks about Qserv embedded documentation. {quote} README.txt needs a bit of formatting, whole "NOTE FOR DEVELOPERS" is one long line which may need scrolling depending on what do you use to read the file, same applies to README-devel.txt The install procedure in README.txt implies that the whole stack has to be installed including eups. If people have some part of it installed already the it would probably be better to reuse existing stack. Shall we spit install instructions into "Install eups (if not installed already)" and "Install qserv"? README-devel.txt says "Once Qserv is installed...", I don't think that we need or want to install whole qserv before we start development (what if qserv is not available yet for the platform I'm trying to test). What probably needed is installed dependencies, and this should be covered by the comments before 'setup -r .' {quote} 1
353DM-933Photometric calibration uses a column "flux" not the specified filter unless a colour term is activeThe photometric calibration code uses a field "flux" in the reference catalog to impose a magnitude limit. If a colour term is specified, it uses the primary and secondary filters to calculate the reference magnitude, but if there is no colour term it uses the column labelled "flux" and ignores the filtername. Please change the code so that "flux" is ignored, and the flux associated with filterName is used.1
354DM-936Replace getXXXKey for slots with returning functorKeys similar to existing compound KeysMake any changes in the Functor Key capabilities necessary to support getXXXKey, getXXXErrKey, and getXXXFlagKey for the 3 different types of slots. Change these routines in Source.h.m4 to return FunctorKeys for both version 0 and version 1 tables. Then fixup any compilation breaks on the C++ size which this causes. Remove the version 1 specific accessors. I am assigning this to Jim to confirm that the first part is done, then he can assign the remainder to Perry either by reassigning, or as a subtask.4
355DM-944Package xrootd-4.0.0rc3-qsClient2 with eupsNULL1
356DM-945Prevent conflict related to non-unique temporary files created during SciSQL installSciSQL install sometime fails with next message : {code:bash} [1/2] MySqlScript: scripts/install.mysql [2/2] MySqlScript: scripts/demo.mysql Running testHtm : OK Running testSelect : OK Running testAngSep.py : OK Running testMedian.py : OK Running testPercentile.py : OK Running testS2CPoly.py : OK Running testS2PtInBox.py : OK Running testS2PtInCircle.py : OK Running testS2PtInEllipse.py : OK Running docs.py : FAIL [see /usr/local/home/salnikov/qserv-run/u.fjammes.DM-622-g86a30ec72a/tmp/scisql-0.3.2/build/tools/docs.log] 9 tests passed, 1 failed, and 0 failed to run One or more sciSQL unit tests failed make: *** [install] Error 1 -- CRITICAL: Error code returned by command : / u s r / l o c a l / h o m e / s a l n i k o v / q s e r v - r u n / u . f j a m m e s . D M - 6 2 2 - g 8 6 a 3 0 e c 7 2 a / t m p / c o n f i g u r e / s c i s q l . s h $ cat /usr/local/home/salnikov/qserv-run/u.fjammes.DM-622-g86a30ec72a/tmp/scisql-0.3.2/build/tools/docs.log rm: cannot remove `/tmp/scisql_demo_ccds.tsv': Operation not permitted Failed to run documentation example: rm -f /tmp/scisql_demo_ccds.tsv ERROR 1086 (HY000) at line 4: File '/tmp/scisql_demo_ccds.tsv' already exists {code} It looks like test uses non-unique temporary file name and someone already tried to run installation on the same host. 2
357DM-946Improve management of qserv-run-dir in start/stop scripts.qserv-start.sh by default tries again to use /usr/local/home/salnikov/qserv-run/2014_05.0 directory. There may be a confusion if we have multiple run directories. Would it be better to install qserv start/stop scripts into run directory itself so that they don't need to guess anything?2
358DM-951Add Doxygen documentation on rebuildsMaster-branch doxygen documentation should be rebuild on every full master build.20
359DM-953Move qserv-testdata.py to qserv_testdata packageAndy S. suggests this during DM-622 review, but this needs to be studied deeply, as qserv_testdata goal is to store large datafile, difficult to version in git.3
360DM-954Clearer and shorter output for qserv-configure.pyqserv-configure.py produces a lot of output which could be confusing if people try to look at it and understand it. It may be better to reduce it to something that just indicates that each step is completed successfully.1
361DM-956Buildbot email should state if the build used master only or included other branchesBuildbot build status report currently doesn't state if the build was only for master or included other branches requested by the user.4
362DM-957Use aliases to clean up table version transitionThe addition of schema aliases on DM-417 should allow us to clean up some of the transitional code added on DM-545, as we can now alias new versions of fields to the old ones and vice versa.2
363DM-958Move table versions to SchemaWe've added a version number to afw::table::BaseTable to help with the transition to a new approach with different naming conventions and FunctorKeys instead of compound keys. However, it looks like Schema objects need to know about this version number as well, in order to change Subschema objects to split/join using underscores instead of periods. That means we'll have to move the version down into the schema object, which may affect a lot of downstream code. Other than touching a lot of code, the changes should be trivial.4
364DM-963measAlg.interpolateOverDefects doesn't accept a python list of DefectsThe python binding of interpolateOverDefects should accept a python list of Defects as well as a swig-wrapped std::vector<Defect>; it doesn't (try using a python list in test818 in meas_algorithms/tests/Interp.py) 1
365DM-964Include aliases in Schema introspectionSchema stringification and iteration should include aliases somehow. Likewise the extract() Python methods.1
366DM-966fix int/long conversion on 32-bit systems and selected 64-bit systemstests/wrap.py fails in pex_config on 32-bit systems and some 64-bit systems (including Ubuntu 14.04) with the following: {code:no-linenum} tests/wrap.py ...EE.E. ====================================================================== ERROR: testDefaults (__main__.NestedWrapTest) Test that C++ Control object defaults are correctly used as defaults for Config objects. ---------------------------------------------------------------------- Traceback (most recent call last): File "tests/wrap.py", line 89, in testDefaults self.assert_(testLib.checkNestedControl(control, config.a.p, config.a.q, config.b)) File "/home/boutigny/CFHT/stack_5/build/pex_config/tests/testLib.py", line 987, in checkNestedControl return _testLib.checkNestedControl(*args) TypeError: in method 'checkNestedControl', argument 2 of type 'double' ====================================================================== ERROR: testInt64 (__main__.NestedWrapTest) Test that we can wrap C++ Control objects with int64 members. ---------------------------------------------------------------------- Traceback (most recent call last): File "tests/wrap.py", line 95, in testInt64 self.assert_(testLib.checkNestedControl(control, config.a.p, config.a.q, config.b)) File "/home/boutigny/CFHT/stack_5/build/pex_config/tests/testLib.py", line 987, in checkNestedControl return _testLib.checkNestedControl(*args) TypeError: in method 'checkNestedControl', argument 2 of type 'double' ====================================================================== ERROR: testReadControl (__main__.NestedWrapTest) Test reading the values from a C++ Control object into a Config object. ---------------------------------------------------------------------- Traceback (most recent call last): File "tests/wrap.py", line 82, in testReadControl config.readControl(control) File "/home/boutigny/CFHT/stack_5/build/pex_config/python/lsst/pex/config/wrap.py", line 212, in readControl __at=__at, __label=__label, __reset=__reset) File "/home/boutigny/CFHT/stack_5/build/pex_config/python/lsst/pex/config/wrap.py", line 217, in readControl self.update(__at=__at, __label=__label, **values) File "/home/boutigny/CFHT/stack_5/build/pex_config/python/lsst/pex/config/config.py", line 515, in update field.__set__(self, value, at=at, label=label) File "/home/boutigny/CFHT/stack_5/build/pex_config/python/lsst/pex/config/config.py", line 310, in __set__ raise FieldValidationError(self, instance, e.message) FieldValidationError: Field 'a.q' failed validation: Value 4 is of incorrect type long. Expected type int For more information read the Field definition at: File "/home/boutigny/CFHT/stack_5/build/pex_config/python/lsst/pex/config/wrap.py", line 184, in makeConfigClass fields[k] = FieldCls(doc=doc, dtype=dtype, optional=True) And the Config definition at: File "/home/boutigny/CFHT/stack_5/build/pex_config/python/lsst/pex/config/wrap.py", line 131, in makeConfigClass cls = type(name, (base,), {"__doc__":doc}) ---------------------------------------------------------------------- Ran 8 tests in 0.017s FAILED (errors=3) {code} There is a partial fix on u/jbosch/intwrappers; this seems to work for Ubuntu 14.04, but not on 32-bit systems.2
367DM-967qserv-configure.py is broken in masterIt looks like there was a bug introduced either during the merge of DM-622 with master or right before that. Running {{qserv-configure.py}} from master fails now: {code} $ qserv-configure.py File "/usr/local/home/salnikov/qserv-master/build/dist/bin/qserv-configure.py", line 229 ("Do you want to update user configuration file (currently pointing ^ SyntaxError: EOL while scanning string literal {code} I assign this to myself, Fabrice is on vacation now and we need to fix this quickly.1
368DM-973Create a "stub" package that checks for system dependencies for QservCreate a special "stab" package that checks and reports missing dependencies.2
369DM-975setup standard aliases for frequently-used measurementsFrequently-used measurement fields such as classification and pixel flags should have shortened aliases that can be used instead of their full, package-qualified versions. In some cases, these may serve as a sort of slot (e.g. we may have multiple classifications algorithms someday). In this issue, we should audit all current measurement algorithm fields that don't already have a slot that works for them and consider whether there should be a standard alias. We also need to work out a system for defining these aliases, probably in the config for SingleFrameMeasurementTask.4
370DM-976Detailed documentation for meas_base tasksWe should follow RHL's example for detailed task documentation and document all meas_base tasks.2
371DM-977Documentation audit and cleanup for meas_base pluginsMany meas_base Plugins and Algorithms have poor documentation, including several whose documentation is a copy/paste relic from some other algorithm. These need to be fixed.2
372DM-978add base class for measurement tasksWe should consider adding a base class for measurement tasks (SingleFrameMeasurementTask, ForcedMeasuremedTask) that includes the callMeasure methods. I'm hoping this will help cleanup callMeasure and improve code reuse.1
373DM-979Add FunctorKey to replace Coord compound keysUnlike previous FunctorKey replacements, Coord compound Keys are used in the minimal schema for SimpleTable and SourceTable, which makes removing them problematic.1
374DM-980convert measurement algorithms in ip_diffimip_diffim includes a few measurement algorithms which need to be converted to the new framework.5
375DM-981convert measurement algorithms in meas_extensions_shapeHSMThis is a low-priority ticket to replace the old-style plugins in meas_extensions_shapeHSM with new ones compatible with meas_base. As this isn't a part of the main-line stack, we should delay it until other the meas_base conversion is nearly (or perhaps fully) complete.3
376DM-982convert meas_extensions_photometryKron to new measurement frameworkThis is a low-priority ticket to replace the old-style plugins in meas_extensions_photometryKron with new ones compatible with meas_base. As this isn't a part of the main-line stack, we should delay it until other the meas_base conversion is nearly (or perhaps fully) complete.3
377DM-983Finish the Log packagingFinish the work started by Bill (DM-778)6
378DM-984allow partial measurement results to be set when error flag is setWe need to be able to return values at the same time that an error flag is set. The easiest way to do this is to have Algorithms take a Result object as an output argument rather than return it. We'll revisit this design later. 2
379DM-989.my.cnf in user HOME directory breaks setup scriptPresence of {{.my.cnf}} file in the user HOME directory crashes {{qserv-configure.py}} script if parameters in {{.my.cnf}} conflict with parameters in {{qserv.conf}}. How to reproduce: * create .my.cnf file in the home directory: {code} [client] user = anything # host/port and/or socket host = 127.0.0.1 port = 3306 socket = /tmp/mysql.sock {code} * try to run {{qserv-configure}}, it fails with error: {code} /usr/local/home/salnikov/qserv-run/u.salnikov.DM-595/tmp/configure/mysql.sh: connect: Connection refused /usr/local/home/salnikov/qserv-run/u.salnikov.DM-595/tmp/configure/mysql.sh: line 13: /dev/tcp/127.0.0.1/23306: Connection refused ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111) {code} It looks like {{~/.my.cnf}} may be a left-over from some earlier qserv installation. If I remove it and re-run {{qserv-configure.py}} now it's not created anymore. Maybe worth adding some kind of protection to {{qserv-configure.py}} in case other users have this file in their home directory.2
380DM-991add query involving a blob to the integration testsWe need to add a query (or more?) to the qserv_testdata that involve blobs. Blobs are interesting because they might break some parts of the qserv if we failed to escape things properly etc. 2
381DM-993improve message from qserv_testdataCurrently, when I try to run qserv-benchmark but qserv_testdata was not setup, I am getting {code} CRITICAL Unable to find tests datasets. -- FOR EUPS USERS : Please run : eups distrib install qserv_testdata setup qserv_testdata FOR NON-EUPS USERS : Please fill 'testdata_dir' value in ~/.lsst/qserv.conf with the path of the directory containing tests datasets or use --testdata-dir option. {code} It is important to note in the section for eups users that this has to be called BEFORE qserv is setup, otherwise it has no effect. 1
382DM-994make slot config validation more intelligentSlot config validation currently assumes that field names match plugin names, which is not always a safe assumption. This can prevent certain algorithms from being used in slots. We probably can't do this validation in Config.validate(); we need to check in the measurement Task constructor after the schema has already been constructed.1
383DM-995Make NoiseReplacer a context managerI think the API for NoiseReplacer could be made more idiomatic (and possibly safer) by turning it into a "context manager" (i.e. so it can be used with the "with" statement).1
384DM-998Adapt integration test to multi-node setup v1Following DM-595 we can start qserv in multi-node configuration. Next step is to be able to run integration tests in that setup. This needs a bit of understanding how to distribute chunks between all workers in a cluster and how to load data in remote mysql server.10
385DM-999rename config file(s) in QservRename local.qserv.cnf to qserv-czar.cnf. It is quite likely there are some other config files that would make sense to rename. If you see some candidates, let's discussion on qserv-l and do the renames.1
386DM-1001Modify assertAlmostEqual in ip_diffim subtractExposures.py unit testIn unit test, the comparison self.assertAlmostEqual(skp1[nk][np], skp2[nk][np], 4) fails. However if changed to self.assertTrue(abs(skp1[nk][np]-skp2[nk][np]) < 10**-4) which is the desired test, this succeeds. This ticket will remove all assertAlmostEquals from subtractExposure.py and replace with the fundamental comparison operator of the absolute value of the differences.1
387DM-1002Research Apache Mesos and Google KubernetesIt'd be good to check out Apache Mesos and Google Kubernetes and see how relevant they are for Qserv / LSST Database 4
388DM-1004Provide Task documentation for ModelPsfMatchTaskSee Description (it's currently called PsfMatch) 2
389DM-1005Migrate Qserv worker code to the new logging systemNULL8
390DM-1010fix names of meas_base plugins to match new naming standardsSome meas_base plugins still have old-style algorithm names.1
391DM-1011Remove use of compound fields in minimal schemaIf we want to ultimately remove compound fields, we need to remove the "coord" field from the SimpleTable/SourceTable minimal schema, and provide a different way to get ra,dec from a source.4
392DM-1012remove temporary workaround in new SkyCoord algorithmSingleFrameSkyCoordPlugin is using the Footprint Peak, not the centroid slot. According to comments in the code, this is a workaround for some problem with centroids. This needs to be fixed.1
393DM-1013Classification should set flags upon failureThe classification algorithm claims it can never fail. It can, and should report this.2
394DM-1014Detailed documentation for GaussianCentroidWe need more detailed documentation for the GaussianCentroid algorithm, in terms of how it actually computes the centroid. We (Jim and Perry) have done what we can, but we need help from whoever actually wrote it (RHL, we think) to provide the rest. In particular: - Additional detail should be filled in in the class Doxygen for GaussianCentroidAlgorithm, in GaussianCentroid.h - The "noPeak" flag field description and name should be compared to what the algorithm actually does with it. It looks to me like it's a bit misnamed (and maybe shouldn't be considered an error condition at all, if we want to run this on difference images), but I'm not sure.1
395DM-1015convert GaussianFlux to use shape, centroid slotsWe should cleanup and simplify the GaussianFlux algorithm to simply use the shape and centroid slot values instead of either computing its own or having configurable field names for where to look these up.1
396DM-1016Detailed documentation for SdssCentroidWe needed detailed documentation for how SdssCentroid actually works. I think it involves fitting something like a symmetrized PSF model, but I'm sufficiently unsure of the details that RHL should write this, not me. It should go in the Doxygen class docs for SdssCentroidAlgorithm in SdssCentroid.h in meas_base.1
397DM-1017fix testForced.pytestForced.py is currently passing even though it probably should be failing: it's trying to get centroid values from a source which has neither a valid centroid slot or a Footprint with Peaks (I suspect because transforming a footprint might remove the peaks). Prior to DM-976, that would have caused a segfault; on DM-976, I've turned it into an exception, which is then turned into a warning by the measurement framework.2
398DM-1018Fix incorrect eupspkg config for astrometry_netThe clang patch from 8.0.0. version was (correctly) deleted. However, the patch identity was still left in the eupspkg config's protocol. This will delete the last vestige of the formerly necessary clang patch.2
399DM-1022fix warnings related to libraries pulled through dependent packageThis came up during migrating qserv to the new logging system, and it can be reproduced by taking log4cxx, see DM-983, essentially: {code} eups distrib install -c log4cxx 0.10.0.lsst1 -r http://lsst-web.ncsa.illinois.edu/~becla/distrib -r http://sw.lsstcorp.org/eupspkg {code} cloning log package (contrib/log.git), building it and installing in your stack, and finally taking the branch u/jbecla/DM-207 of qserv and building it. The warnings looks like: {code}/usr/bin/ld: warning: libutils.so, needed by /usr/local/home/becla/qservDev/Linux64/log/1.0.0/lib/liblog.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libpex_exceptions.so, needed by /usr/local/home/becla/qservDev/Linux64/log/1.0.0/lib/liblog.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libbase.so, needed by /usr/local/home/becla/qservDev/Linux64/log/1.0.0/lib/liblog.so, not found (try using -rpath or -rpath-link) {code} and they show up when I build qserv package, and are triggered by the liblog. I suspect sconsUtils deal with that sort of issues, but since we have our own scons system for qserv it is not handled. Fabrice, can you try to find a reasonable solution for that? Thanks!1
400DM-1026make use of MeasurementDataFlagsWe started adding a system to allow algorithms to declare what kind of data they can run on, but never really put it in place. To do this, we should: - Add more flags (at least NO_CALIB). - Pass these flags in pipe_tasks and other places with tasks that use measurement tasks as subtasks (for instance, we should set NO_WCS and NO_CALIB during calibrate.initialMeasurement, and COADD in processCoadd). - Add checks for these flags in appropriate algorithms. For instance, PsfFlux should fail in construction if NO_PSF is set, and PeakLikelihoodFlux should fail if PRECONVOLVED is not set.6
401DM-1028qserv-version.sh produces incorrect version numberI have just installed qserv on a clean machine (this is in a new virtual machine running Ubuntu12.04) which got me version 2014_07.0 installed: {code} $ eups list qserv 2014_07.0 current b76 $ setup qserv $ eups list qserv 2014_07.0 current b76 setup $ echo $QSERV_DIR /opt/salnikov/STACK/Linux64/qserv/2014_07.0 {code} but the {{qserv-version.sh}} script still thinks that I'm running older version: {code} $ qserv-version.sh 2014_05.0 {code}2
402DM-1029"source" command is not in standard shell{{qserv-start.sh}} script fails when installed on Ubuntu12.04: {code} $ ~/qserv-run/2014_05.0/bin/qserv-start.sh /home/salnikov/qserv-run/2014_05.0/bin/qserv-start.sh: 4: /home/salnikov/qserv-run/2014_05.0/bin/qserv-start.sh: source: not found /home/salnikov/qserv-run/2014_05.0/bin/qserv-start.sh: 6: /home/salnikov/qserv-run/2014_05.0/bin/qserv-start.sh: check_qserv_run_dir: not found {code} It complains about {{source}} command. {{source}} is not standard POSIX shell command, it is an extension which exists in many shells. Apparently in older Ubuntu version {{/bin/sh}} is stricter about non-standard features. To fix the script one either has to use standard . (dot) command or change shebang to {{#!/bin/bash}}. This of course applies to all our executable scripts.2
403DM-1030W15 Refactoring of QservRefactoring Qserv code to make it cleaner, better, and most importantly more robust and resilient to failures. JK: Refer to loading spreadsheet for PMCS assignments84
404DM-1031W15 Integration Testing of QservImprovements to the integration tests suite for Qserv, including making it more generic (it currently uses a hardcoded database name), integrating new partitioner, and adding a data set from one of the last data releases. JK: Refer to loading spreadsheet for PMCS assignments19
405DM-1033W15 Design Metadata Store for production tracking (v1)Come up with a design of Metadata Store that will track all information in the Science Data Archive (across Data Releases), for both image and database repositories JK: Refer to loading spreadsheet for PMCS assignments45
406DM-1034W15 Initial version of image and file archiveBuild initial (alpha) version of system for tracking existing image data sets. (a) Build a web form where users enter information about existing data sets. (b) Design and build a MySQL backend (maybe through DataCat). (c) Implement crawler that automatically fetches metadata from FITS headers for data set registered by users. Note that support for additional formats (eg config files) will be added in the future, not through this epic. Note that this initial version will not be production ready, we will make it more bullet-proof and feature rich during S15 cycle. JK: Refer to loading spreadsheet for PMCS assignments30
407DM-1035W15 Butler (v2) for local data setsImprovements and tweaks to the butler as needed based on the feedback from the Apps team JK: Refer to loading spreadsheet for PMCS assignments19
408DM-1036W15 Management of distributed Qserv databases and tablesThis includes tasks such as creating and deleting distributed databases managed by Qserv, creating and deleting partitioned tables based on the information that is stored in the CSS. Design and exploratory prototype. JK: Refer to loading spreadsheet for PMCS assignments39
409DM-1037W15 Loading data into distributed Qserv-managed databasesImprovements to the existing data loader, to simplify data loading into Qserv. That includes integration with information in the CSS. This version will include non-parallel, single-node loader. Relevant document (describing a sketch of much more advanced version): https://dev.lsstcorp.org/trac/wiki/db/Qserv/DataLoading JK: Refer to loading spreadsheet for PMCS assignments28
410DM-1038S15 Implement Query Mgmt in QservInitial version of system for managing queries run through qserv. This includes capturing information about queries running in Qserv. Note, we are not dealing with query cost estimate here, (it will be covered through DM-1490).40
411DM-1041eliminate confusing config side-effects in CalibrateTaskCalibrateTask does some unexpected things differently if you configure it certain ways, because it perceives certain processing as only being necessary to feed other steps. In particular, if you disable astrometry and photometric calibration, it only runs measurement once, because it assumes the only purpose of the post-PSF measurement is to feed those algorithms. This (as well as poor test coverage) made it easy to break CalibrateTask in the case where those options are disabled a few branches back. After conferring with Simon and Andy, we think the best solution is to remove this sort of conditional processing from CalibrateTask, which should also make it much easier to read. Instead, we'll always do both the initial and final phase of measurement, even if one of those phases is not explicitly being used within CalibrateTask itself.1
412DM-1045Create a permanent and accessible mapping of the BB# and the bNNN. Create a permanent and accessible mapping of the BB# and the bNNN. The users are interested in the BB# since is is used to point to the STDIO file form the entire stack build. The bNNN is needed because the daily life of the developer revolves around the stack tagged alternately by the bNNN tags and/or the DM Release tags. 2
413DM-1046W15 Central State System, support for db/table/query metadataImprovements to the CSS system to make it more thread safe, more compact representation of keys, and adding information that will be needed to handle distributed databases, tables and likely queries (if we decided to use CSS for Query management). JK: Refer to loading spreadsheet for PMCS assignments49
414DM-1051W15 Image Cutout ServiceFirst version of the images cutout service. It will rely on butler. The bulk of the work in this epic includes building a web-based front-end. JK: Refer to loading spreadsheet for PMCS assignments19
415DM-1052Add / improve tests and examples for Log packageNULL1
416DM-1054init.d/qserv-czar needs LD_LIBRARY pathWith the addition of log we now need to find some shared libraries from stack. Current version of qserv-czar init.d script does not capture LD_LIBRARY_PATH, so we should add it there. 1
417DM-1055Remove unnecessary pieces from qserv czar configThe config file for the qserv czar has some items that are no longer relevant, and in this issue, we focus on the ones that are clearly the responsibility of our qserv css. This ticket includes: -- removing these items from the installation/configuration templates -- removing these items from sample configuration files -- removing these items from the code that reads in the configuration file and sets defaults for these items -- fixing things that seem to break as a result of this cleanup. danielw volunteers to assist on the last item, as needed. 2
418DM-1058fix SubSchema handling of "." and "_"SubSchema didn't get included in the rest of the switch from "." to "_" as a field name separator. As part of fixing this, we should also be able to simplify the code in the slot definers in SourceTable.1
419DM-1059track down difference in SdssShape implementationThe meas_base version of SdssShape produces slightly different outputs from the original version in meas_algorithms, but these should be identical. We should understand this difference rather than assume its benign just because it's small.2
420DM-1060S15 Data Distribution & Replica Mgmt DesignThis is a continuation of DM-779, continue research related to data distribution and replication. There are still many option questions: should it be centralized or peer-to-peer? Is bittorent useful? How much should be home grown vs off-the-shelf (and which off-the-shelf). There are no direct deliverables in FY2015, but it is a complex topic, so we should not wait until the last minute. This epic covers the R&D / design.100
421DM-1061W15 Qserv Stability / bug fixesTweaks, improvements, fixes to bugs discovered over the course of W15, to improve Qserv stability. JK: Refer to loading spreadsheet for PMCS assignments 83
422DM-1067move algorithm implementations out of separate subdirectoryWe should move the code in the algorithms subdirectory (and namespace) into the .cc files that correspond to individual algorithms. They should generally go into anonymous namespaces there. After doing so, we should do one more test to compare the meas_base and meas_algorithms implementations.1
423DM-1068audit and clean up algorithm flag and config usageCheck that meas_base plugins and algorithms have appropriate config options and flags (mainly, check that there are no unused config options or flags due to copy/paste relics).1
424DM-1070switch default table version to 1Now that all tasks that use catalogs explicitly set the table version, it should be relatively straightforward to set the default version to 1 in afw. Code that cannot handle version > 0 tables should continue to explicitly set version=0.2
425DM-1071Switch default measurement tasks to meas_baseWe should set the default measurement task in ProcessImageTask to SingleFrameMeasurementTask, and note that SourceMeasurementTask and the old forced photometry drivers are deprecated.2
426DM-1072create forced wrappers for algorithmsWe have multiple algorithms in meas_base which could be used in forced mode but have no forced plugin. We should go through the algorithms we have implemented and create forced plugin wrappers for these.1
427DM-1073remove old forced photometry tasksAfter meas_base has been fully integrated, remove the old forced photometry tasks from pipe_tasks1
428DM-1074Measurement - Calibration and IngestCreate command-line tasks to transform raw measurement quantities (e.g. fluxes, positions in pixels) to global units (e.g magnitudes and positions in celestial coordinates). Also requires interfacing with the measurement plugin system, as only plugins can be authoritative on how to transform their outputs. JK: In PMCS this would be Bosch J 50% Gee P 50%20
429DM-1076convert afw::table unit tests to version 1Most afw::table unit tests explicitly set version 0. We should change these to test the new behaviors, not the deprecated ones.2
430DM-1077Audit TCT recommendations to ensure that all standards updates were installed into Standards documents.Audit TCT recommendations to ensure that all standards updates were installed into Standards documents. It was found that the meeting recorded in: [https://dev.lsstcorp.org/trac/wiki/Winter2012/CodingStandardsChanges] failed to include two recommendations: * recommended: 3-30: I find the Error suffix to be usually more appropriate than Exception. ** current: 3-30. Exception classes SHOULD be suffixed with Exception. * recommended but not specifically included: Namespaces in source files: we should use namespace blocks in source files, and prefer unqualified (or less-qualified) names within those blocks over global-namespace aliases. ** Rule 3-6 is an amalgam of namespace rules which doesn't quite have the particulars desired. FYI: The actual vote was to: "Allow namespace blocks in source code (cc) files." To simplify the future audit, all other recommendations in that specific meeting were verified as installed into the standards.2
431DM-1078add batch flag to newinstall.shIn some cases (installing in some script environment) it is nice to be able to run without any interaction. This will add a flag to tell the script to install without asking about anaconda and git. It will assume the answer is 'yes' to any question it would have asked.1
432DM-1079Organize the content of the DM Developer GuideThe DM Developer Guide is presently a place-holder for information relevant to developers. It is time to re-organize the content, and to provide authoritative guidance to developers. This will involve contributions from various members of the DM Team, and likely some selected harvesting of the Trac/Wiki. 10
433DM-1083Fix overload problems in SourceCatalog.append and .extendThis example fails with an exception: {code:py} import lsst.afw.table as afwTable schema = afwTable.SourceTable.makeMinimalSchema() st = afwTable.SourceTable.make(schema) cat = afwTable.SourceCatalog(st) tmp = afwTable.SourceCatalog(cat.getTable()) cat.extend(tmp) {code} Expected behavior is that the last line is equivalent to {{cat.extend(tmp, deep=False)}}.1
434DM-1085Update the DMS and Astro GlossariesThe DMS and Astro Glossaries in Confluence define a set of technical terms used in their respective domains. Some of the definitions are placeholders, and other terms used in the SWUG, DM Space, and DM Developer Guide have yet to be defined in one glossary or the other. It is time to update these docs.2
435DM-1086Determine problem with Mac OS X processCCD output when compared to 'identical' dataset generated on RHEL6The benchmark file for the summer2012 demo is generated on RHEL6. When using the dataset to compare stack output generated on Mac OSX 10.8.5 (and 10.9) there are significant deviations. Find out where the problem arises...in the stack during processing or in the comparison.4
436DM-1087Research how to kill query in mysqlIn the port to the new Xrootd Ssi API, worker-side squashing was lost in the shuffle. The plumbing is different, and re-implementing squash functionality is not entirely straightforward, especially because the new API is still missing documentation and examples for implementing cancellation. The consequences of not implementing this are minor--some extra work may be done by the worker, but not a whole lot, because user-level cancellation has not been implemented. First step is to understand how mysql code is handling query killing.4
437DM-1088Investigate HTCondor config settings to control speed of ClassAd propagationWith default settings we do not have good visibility as to whether an updated ClassAd on a compute node (e.g., CacheDataList now has ccd "S00") will be in effect on the submit node in time for a Job to be matched to an optimal HTCondor node/slot. There are several components (negotiator, schedd, startd) and their associated activities that could impact the time that it takes for a new ClassAd on a worker node to 'propagate' back to the submit side. We investigate these configuration settings to try to determine what thresholds for configuration settings are required to meet a given time cadence of job submissions.2
438DM-1089Enhance SWUG chapter on measurementA basic description of measurement in the LSST Stack was created for the SWUG (see DM-692). However, this chapter lacks specifics about how the measurement algorithms work and does not yet mention some of the available algoritms. This task is intended to provide the next level of detail, with references to source-level descriptions that exist or are in progress. 6
439DM-1099afw::table - finish interface transitionJK: In PMCS Bosch J and Gee P36
440DM-1100Measurement - Convert Old AlgorithmsJK: In PMCS Bosch J and Gee P31
441DM-1101Measurement - Finish Framework OverhaulJK: In PMCS Bosch J and Gee P51
442DM-1103Design unit-test data packageGather requirements for unit test datasets and determine how to organize and generate the data.4
443DM-1104Generate test dataWrite scripts to generate the test data (as needed) and run them.10
444DM-1105Custom mapper for unit test data packageWe need a custom mapper for the test data package, so we can run unit tests against it without depending on any particular obs_* package.6
445DM-1106Convert existing tests to use new packageAfter the new unit test data package is available, we should convert all tests that currently use afwdata or obs_test to use the new package instead, and then remove obs_test and afwdata. Should have subtasks and a re-estimate of effort after auditing how much there is to be done.30
446DM-1107afw - Footprint ImprovementsThis epic contains several improvements to the Footprint class, including API refactoring, performance-related reimplementations, and some new features. JK: In PMCS this would be Bosch J and Swinbank J30
447DM-1108Galaxy Fitting - Shear Precision ExperimentsNB some of the below stories will actually be Lauren, not Perry. Breakdown: pgee 58%; jbosch 21%; krughoff 6%; lauren 15%100
448DM-1109Minimal MultiFit system prototypeExperiment with a framework for running "multifit"-style fitting algorithms (i.e. fit a model convolved with the PSF to multiple exposures simultaneously). Earlier prototypes (meas_multifit) have demonstrated executable multifit code on a single system: repeating that work is not the priority here. Rather, we will produce a concept for the framework for running multifit at scale using large datasets on a cluster. It is not a requirement that it be possible to run an at-scale multifit job and produce useful results by the end of this epic; however, there should be proof-of-concept code which demonstrates the structures within which future multifit work will be carried out. This will be supplied to both Science Pipelines and Process Middleware developers.100
449DM-1110Galaxy Fitting - Sampling Algorithm PluginNULL60
450DM-1111CModel robustnessThe CModel code is currently a mixture of work ported from HSC and some new development on LSST. It needs to be validated on real data (HSC, SDSS, CFHT). All known failure modes should be eliminated. Where possible, improve its performance.65
451DM-1112Create utilities to allow camera testing team to use CameraGeomThe camera team can use the CameraGeom classes to reduce lab data for testing purposes. Since the camera is relatively flexible, a good way of doing this is to create a camera at runtime from the header keys in the files to be reduced. JK: In PMCS this would be Krughoff S30
452DM-1113Make the API for ISR explicitThe run method of the IsrTask currently takes a dataRef which has getters for calibration products. This makes the task hard to re-use because one needs a butler and because the interface is opaque. This task will make the IsrTask API more transparent. JK: In PMCS this would be Krughoff S20
453DM-1114Re-write astrometry task to remove dependency on astrometry.netThe astrometry task currently depends as astrometry.net as the only possible algorithmic back end. This also has created a dependency on the astrometry.net file format. This task will remove the dependency on astrometry.net file format and will implement the current HSC astrometry solver in the astrometry task. This will focus on solving single chips, not the full focal plane. Note that DM-167 (which was closed with reference to this ticket) requests that we split photometric and astrometric catalogues, and this is still needed. JK: In PMCS this would be Krughoff S and Owen R80
454DM-1115Command-line Tasks - Unit tests for ProcessCcdWe can get a long way toward improved test coverage in pipe_tasks by having Unit tests for ProcessCcd. JK: In PMCS this would be Owen R20
455DM-1116Add numpy typemaps to afw interfaces so numpy types pass correctly to C++Currently SWIGed interfaces do not handle numpy types correctly. This can be fixed with the appropriate typemap. JK: In PMCS this would be Owen R11
456DM-1117Extend Exposure classes to contain background modelsExposures carry many things: PSFs, FITS metadata, Detectors, etc. Another object algorithms may want to access with an exposure is the set of background models subtracted from the exposure to that point. This will involve porting afw.math.BackrgoundList to C++ and extending Exposure classes to contain the new BackgroundList object. JK: In PMCS this would be Krughoff S20
457DM-1118Improve documentation of code from DM-70DM-70 was merged before its code documentation was completely ready, in an effort to not leave such a large amount of code un-merged. This ticket exists as the second half of DM-70 to clean up its documentation.6
458DM-1120Improve fault tolerance as demonstrated in nightly computing simulatorAdjust simulator parameters, mechanisms, and implementation to minimize time to recover and unprocessed/unarchived data resulting from a machine or network failure. For W15: Pietrowicz, S - 100% Start Oct 2014, finish Nov 2014 For S15 rollover: Pietrowicz, S - 12% Start March 2015, finish April 201550
459DM-1121Simplify and refactor the Event Services APIRemove old fixed metadata; refactor using more generic metadata interface. For W15: Pietrowicz, S - 100% Start Dec 2014, finish Dec 2014 For S15 rollover: Pietrowicz, S - 11% Start March 2015, finish April 2015 18
460DM-1122Write a log4cxx handler that emits events for log messagesWrite a log4cxx handler that emits events for log messages. For W15: Pietrowicz, S - 100% Start Jan 2015, end mid Jan 2015 For S15 rollover: Pietrowicz, S - 11% Start March 2015, finish April 201518
461DM-1123requirements and specifications for initial version of inter-Task communicationgather requirements and specification for Implementation of a gather/scatter mechanism for a set of Tasks executing in parallel using the Event Services, providing for eventual extension to support MPI or other communication mechanisms. Start mid Jan 2015, finish Feb 2015. JK: In PMCS this would be Pietrowicz S50
462DM-1124Chebyshev approximation object for aperture correctionsUsing the interface defined in DM-740, implement a Chebyshev-based implementation to be used to interpolate aperture corrections across CCD-level interfaces. A prototype is available on the HSC fork, which can be copied directly, modulo any interface changes on DM-740. For more information, see the HSC Jira issue (which also includes the work associated with DM-740): https://hsc-jira.astro.princeton.edu/jira/browse/HSC-796 and the HSC git commits https://github.com/HyperSuprime-Cam/afw/compare/releases/S14A_0...tickets/DM-7963
463DM-1125avoid usage of measurement framework in star selectorsAt least one of the star selectors uses the old measurement framework system to measure the moments of a cloud of points. With the new versions of all the measurement plugins, it should be much easier (and cleaner) to just call the SdssShape algorithm directly, instead of dealing with the complexity of applying the measurement framework to something that isn't really an image.3
464DM-1126design new Footprint APIThis issue is for *planning* (not implementing) some changes to Footprint's interface, including the following: - make Footprint immutable - create a separate SpanRegion class that holds Spans and provides geometric operators does not hold Peaks or a "region" bbox (Footprint would then hold one of these). - many operations currently implemented as free functions should be moved to methods - we should switch the container from vector<PTR(Span)> to simply vector<Span>, as Span is nonpolymorphic and at last as cheap to copy as a shared_ptr. The output of this issue will be a set of header files that define the new interface, signed off by an SAT design review. Other issues will be responsible for implementing the new interface and fixing code broken by the change.8
465DM-1127implement new Footprint APIThis issue is the implementation for DM-1126, including fixing code broken by the API changes. This issue should be given subtasks for discrete pieces of work as part DM-1126, as it has a lot of story points. Because it's likely all of this needs to be merged at the same time, it should probably be done on a single branch, unless some of the earlier work can be done in a backwards-compatible way..20
466DM-1128Span-based grow operations for FootprintThe current grow operation for Footprints is very inefficient for isotropic grows. A better algorithm can be found in the attached paper.10
467DM-1129Span-based topological set operations for FootprintImplement span-based overlap tests and spatial union, intersection, and difference operators for Footprints. Should be split into subtasks; first task would be to come up with the interface, and then each operation to be implemented should have one subtask each. If complete after DM-1126 and DM-1127, these operations should be implemented in the SpanRegion class, and Footprint should delegate to that.20
468DM-1130refactor C++ Algorithm classesUsing one of the prototypes of DM-828, refactor the C++ Algorithm code in meas_base and any other packages.10
469DM-1131create PSF simulations for shapelet approximation testTo determine the number and order of shapelet expansions needed to approximate the LSST PSF, we need simulations of LSST PSFs, presumably generated using PhoSim. I think we want something like 50-100 extremely high-SNR stars, drawn from realistic distributions of anything that would affect the PSF, including position on the focal plane and center position within a pixel. I only care about getting these out as postage stamps, so I'll leave the question of how best to run PhoSim to get these up to someone else. While this is part of a mostly-Princeton Epic, I'm assigning this issue to Simon as he'd be able to do it much faster than I could. I'll also let him review and update the story points estimate.6
470DM-1132create galaxy simulations for shapelet approximation and truncation testsUsing the PSF simulations generated in DM-1131 and the GalSim package, generate ~20k galaxies for each of 3 shear values for each input PSF. Will need to be divided into subtasks - figure out what the outputs should look like, write the code to generate the simulations, estimate the time need to run the simulations, run the simulations at scale, etc. 30
471DM-1133implement shear measurement driver for simulationsWe'll need driver code to run the galaxy fitting algorithms on the simulations from DM-1132. Efficiently saving all the samples could be challenging.10
472DM-1134implement SDSS PSF residual trickSDSS galaxy fitting approximated the convolution of a galaxy model with the PSF as the convolution of the galaxy model with a simplified approximation to the PSF added to the difference between the PSF approximation and the true PSF. We should do the same, as it'll be no worse than ignoring the difference between the PSF approximation and the true PSF, and it may greatly reduce the complexity needed in the approximation.8
473DM-1135test how large pixel region used in galaxy fitting needs to beUsing simulations built on DM-1132 and driver code from DM-1133, test different pixel region sizes and shapes, and determine at what point shear bias due to finite fit region drops below a TBD threshold.20
474DM-1136test number/order of shapelet expansions needed to approximate PSFRun driver from DM-1133 on simulations from DM-1132 with different configuration for shapelet PSF approximation, increasing complexity until change in shear estimate drops below a TBD threshold.14
475DM-1137Evaluate python/c++ documentation generation and publication tools This epic related to documentation that is provided as part of normal development activities. The desire is to keep this documentation in and near the codebase as this is best practice for it being maintainable. At the other end, we wish to publish this documentation in a coherent and searchable way for users. A number of tools exist in this area and this item requires a preliminary evaluation to be made. This is part of curating our documentation infrastructure. [FE 75% DOC 100% starting August 20th] 20
476DM-1138Demonstrate & iterate with team on documentation toolchain Following from DM-1137, this epic relates to demonstrating various options for documentation tools workflows to the team, gathering input as to the preferred solution, adopting a workflow, and defining any specific implementation choices. This is part of curating our documentation infrastructure. 5
477DM-1139 Stack documentation infrastructure and migration[Epic retitled and bumped in points to reflect wider scope and change in resource allocation] This epic containes work on migrating the documentation infrastructure into sphinx (from doxygen, Confluence) subject to RFC, continuous deployment of documentation, read-the-docs or similar presentation, standardisation via teplates of common information, a proposal for CI-ing examples and tutorials, release and install note documentation, and visual design and javascript development for UI/UX An additional request to migrate Word-based design documentation has been accepted. LaTeX support is being investigated. [JS 100%] 63
478DM-1140Investigate automatic MacOS X build/deployThis item is to set up the same continuous integration process we have on Linux on a MacOSX test server. JK: In PMCS this would be Economou F and New Hire LS34
479DM-1141Evaluate merits of alternative CI and RFCEvaluate whether we wish to continue buildbot development or use a different (or additional) continuous intergration system. This is part of a continuous occasional process of evaluating whether our current toolchain choices are still meeting our needs. [FE at 75%, JH at 75%]30
480DM-1142Regularise Nightly and Weekly builds The intent here is to create two seperate automated deployment environments, one based on a nightly (or ad-hoc) build, one one aslower cadence (eg weekly). This will allow us to do intergration/QA runs on a bleeding or trailing edge as required. JK: In PMCS this would be Economou F and New Hire LS36
481DM-1143Investigate candidates for Verification and Integration Data SetsThe task here is to develop a data set that can be used both for continuous integration (build tests) and automatic QA (integration tests). We want to maximise the richness of the data set in terms of its usefulness, but minimise it in terms of its size. DN to co-ordinate contributions. [DN 95% FE 5%]40
482DM-1145Remove code made obsoleteNULL4
483DM-1147Create a top-level qserv_distrib packageqserv_distrib will be a meta-package embedding qserv, qserv_testdata and partition.2
484DM-1148SUI: Research system framework for SUI developmentCurrent IPAC development utilizes GWT, is it the right system for LSST SUI in 2022? I think this will be an on-going activity for the first two years. 10% of Goldina, Zhang, Ciardi, Surace 20% of Roby, Rector, Ly, Wu 40% Groom100
485DM-1149W15 Metadata Store for production tracking (prototype)Build a first prototype of the Metadata Store. JK: Refer to loading spreadsheet for PMCS assignments45
486DM-1150Fast image searchA lot of users will search for images using some (often advanced) spatial criteria. Need to implement something similar to what we have in UDFs/SciSQL to efficiently support this class of search. Check GIS support in MariaDB10
487DM-1151Fix example of IsrTask to be callable with data on diskCurrently the example of the IsrTask takes a fake dataref. This is hard to use with real data. In DM-1113 we will update IsrTask to not take a dataRef. This will make it easy to update the example script to work with real data. This ticket will also include removing from the unit tests any fake dataRefs that have become unnecessary as a result of DM-1299. 2
488DM-1152Css C++ client needs to auto-reconnectThe zookeeper client in C++ that the czar uses doesn't auto-reconnect. This is a capability provided in the kazoo library that qserv's python layer provides, but isn't provided in the c++ client. The zookeeper client disconnects pretty easily: if you step through your code in gdb, the zk client will probably disconnect because its threads expect to keep running. zk sessions may expire too. Our layer should reconnect unless there is really no way to recover without assistance from the calling code (e.g. configuration is wrong, etc.). This ticket includes only basic reconnection attempting, throwing an exception only when some "reconnection-is-impossible" condition is met.2
489DM-1153Minor problems in lsstsw, related to Qserv offline install procedure- on lsstsw master branch tip, ./stack/Linux64/lsst/9.2/bin/newinstall.sh doesn't seems to be the last version (it still install eups-1.3.0 instead od eups-1.5.0) - on Fedora19, flock from util-linux 2.23.1 doesn't support next options : {code:bash} $ flock -w 0 200 flock: timeout cannot be zero {code} but {code:bash} flock -w 1 200 {code} works, - newinstall.sh : would it be possible to enable automatic answers to git and anaconda install questions. For example, in order to easily enable automatic install on 300 nodes clusters ? (cancelled : covered by DM-1078) - loadLSST.sh appends automatically http://sw.lsstcorp.org/eupspkg to EUPS_PKGROOT, and if first url in EUPS_PKGROOT isn't available eups fails without trying next ones => this isn't compliant with offline mode and introduce a work-around in Qserv offline mode install scripts. Would it be possible to define a lightly different behaviour for loadLSST.sh ? - In newinstall.sh, l. 167, if Python version isn't correct, then exit *with error code*. 3
490DM-1154SUI web user interface prototype SUI team want to use this time to study the DM system and all the other design documents to come up with preliminary design of the SUI infrastructure with some prototyping along the way to help the proof of concept. 40% Wu 30% Rector, Roby, Ly 10% Zhang, Goldina 80% Ciardi 90% Surace 60% Groom100
491DM-1155SUI Interface through Qserv with database and prototype Working closely with database group to define the interface needs between SUI and Qserv. Prototyping the functions will help us understand the interface better. 50% Rector 10% Ly 10% Wu32
492DM-1156SUI: Query and display LSST image Define the APIs for image query with database group. Depend on the implementation of APIs Exercise the image cutout service DM-1977 been developed in SLAC. 6
493DM-1157SUI catalog query interface prototypeDefine the APIs for image query with database group Depend on the implementation of APIs 30% Goldina 20% Ly 10% Wu34
494DM-1158SUI image visualization prototype (without searching LSST images)Using the current software components developed in IPAC to put together a prototype of visualization capabilities. The purpose is to get feedback from DM people and potential users of the tool. 20% Roby 30% Zhang34
495DM-1159SUI 2D plot for catalog prototypeUsing the current software components developed in IPAC to put together a prototype of visualization capabilities. The purpose is to get feedback from DM people and potential users of the tool. 30% Goldina 10% Ly38
496DM-1160SUI catalog and image interactive visualization with LSST dataUsing the current software components developed in IPAC to put together a prototype of visualization capabilities. The purpose is to exercise the data access APIs developed by SLAC and get feedback from DM people and potential users of the tool. 20% Goldina, Zhang 10% Roby, Ly, Wu, Ciardi 20
497DM-1161Cleanup SdssShapeWe should do a comprehensive cleanup of the SdssShapeAlgorithm class. This includes removing the SdssShapeImpl interface (never supposed to have been public, but it became public) from other code that uses it, and integrating this code directly into the algorithm class. We should also ensure that the source from which the algorithm is derived is clearly cited -- that's Bernstein and Jarvis (2002, http://adsabs.harvard.edu/abs/2002AJ....123..583B); see also DM-2304.8
498DM-1162Port meas_algorithms unit tests for pluginsWhile test coverage isn't complete, there are many unit tests for measurement plugin algorithms in meas_algorithms that have not yet been ported to meas_base. We should make sure any of these tests that aren't already covered in meas_base are moved over before we remove the meas_algorithms versions of things.6
499DM-1164remove dependency between sconsUtils and eupssconsUtils currently depends on eups, (and as far as I understand it, it should not...)4
500DM-1167experiment with building MyISAM as a shared libraryPer Monty (phone call Aug 28, 2014), this should be easy, code to look at is in storage/myisam/mi_test*2
501DM-1168zookeeper port numbers should be configurableThe test programs in core/modules/css/ has hardcoded zookeeper port numbers. That needs to be fixed, it needs to be configurable.1
502DM-1169User-friendly install/configure/test scripts- stdout, stderr output should be colorized, whereas redirecting it into a file shouldn't.3
503DM-1170FY19 Add Support for ForcedSource Table in QservForcedSources will needs special handling * ra/decl columns are not part of ForcedSource table, we will need them for partitioning * we might want to store them in subchunks? 53
504DM-1176Make default image origin PARENT in all casesAfter DM-840 is finished, and code updated for it (DM-846), make the new default image origin PARENT, remove the UNDEFINED image origin enum, and update at least some of the code that explicitly specifies PARENT (there is little harm in leaving this explicit, other than it does not set an optimal example).4
505DM-1177Implement sharable just-in-time subchunk management on the workerThe current subchunk management on the worker is very simple. When a query fragment is selected for execution, it builds exactly the subchunks it needs, performs the queries, and destroys the subchunks. This presents a problem when we have concurrent queries that need the same subchunks. Thus an earlier query will destroy its subchunks (some/all of which are needed by another concurrent query) and cause the later queries to fail. The suggested approach is as follows: * Each query, instead of building subchunks on its own, delegates responsibility for subchunk creation/deletion to another class (e.g. SubChunkManager, [but try to find a better name]). * Each query requests a subchunks and releases subchunks using a lock()/unlock() mechanism (in the SubChunkManager API), or wrapped in an interface like boost::lock_guard wraps boost::mutex where acquisition and deletion can be handled by scoping. (It might even be possible to use boost::lock_guard mechanism.) * Now SubChunkManager blocks calls to lock() until it has created the necessary subchunks and modified its records to note that these subchunks are needed by one additional query). A subsequent unlock() call from the client indicates that SCM can decrement its counter and destroy the appropriate subchunks. I (danielw) think the data structure to manage this is straightforward and the code for creation/deletion of subchunks already exists, but it might not be obvious how to route the plumbing so that queries can request/release appropriately, to an instance (probably only one per worker instance) owned by an object somewhere else. Please feel free to use a better or more maintainable approach. 15
506DM-1185Channel was inactive for too long errorThere as an issue with the receiveEvent call that can cause an exception "Channel was inactive for too long". The fix for this (according to the ActiveMQ users list and archives) is to either completely disable the inactivity monitor or to increase the inactivity limit to something extremely high. The fix is adding: "wireFormat.maxInactivityDuration=0" to the URL in establishing the connection. There might also be a way of doing this directly in the ActiveMQ broker, but so far I haven't seen anything that would let me specify that.2
507DM-1187Learn the OCS middlewareOCS will deliver the OCS Middleware software in November 2014. There will be a workshop held at SLAC the week of November 10th. I spoke with K-T and we should be able to attend this remotely, if necessary. We need to spend some time getting familiar with this software and how it will integrate with the Base DMCS for AP.6
508DM-1188rewrite low-level shapelet evaluation codeWhile trying to track down some bugs on DM-641, I've grown frustrated with the difficulty of testing the deeply-buried (i.e. interfaces I want to test are private) shapelet evaluation code there. That sort of code really belongs in the shapelet package (not meas_multifit) anyway, where I have a lot of similar code, so on this issue I'm going to move it there and refactor the existing code so it all fits together better.2
509DM-1192Write a transition plan to move gitolite and Stash repositories to GitHubAs recommended by the SAT meeting on 2014-09-16, we need this document to promote the use of GitHub by other subsystems within the project and to understand the impacts on DM. The plan should include, but is not limited to: * Whether and how the repositories should be reorganized. * How existing commit attributions will be translated. * Moving comments in Stash to GitHub20
510DM-1195There is a bug in the prescan bbox for megacam.The bounding box of the prescan region in the megacam camera should have zero y extent (I think). Instead it goes from y=-1 to y=2. This is either a bug in the generation of the ampInfoTables or in the way the bounding boxes are interpreted.1
511DM-1196exampleUtils in ip_isr is wrong about read cornerhttps://dev.lsstcorp.org/cgit/LSST/DMS/ip_isr.git/tree/examples/exampleUtils.py#n95 Says that the read corner is in assembled coordinates. This is not true, it is in the coordinates of the raw amp. That is, if the raw amp is in electronic coordinates (like the lsstSim images) it is always LL, but if it is pre-assembled, it may be some other corner. This should probably use the methods in cameraGeom.utils to do the image generation.1
512DM-1197Support some mixed-type operations for Point and ExtentThe current lack of automatic conversions in python is pretty irritating, and I think it's a big enough issue for people writing scripts that we should fix it. In particular, allow {code} Point2D + Extent2I Point2D - Extent2I Point2D - Point2I Extend2D + Extent2I Extend2D - Extent2I {code} (and the respective operations in the opposite order where well defined) It would also be good to allow the all functions expecting PointD to accept PointI, but I'm not sure if swig makes this possible. It's probably not worth providing C++ overloads for all of these functions (and to be consistent we should probably do all or none). I realize that you invented these types to avoid bare 2-tuples, but I'm not convinced that we shouldn't also provide overloads to transparently convert tuples to afwGeom objects.2
513DM-1199Revisit log integration with XrootdThe integration of logging with xrootd needs to be revisited, for both the czar and the worker, after a discussion with Xrootd devs about API changes. We want to accomplish 2 things: * Logging from xrootd client should go through the qserv-czar's logger, so it can be saved in the same file and enabled/disabled as a component. * Logging from the xrootd server may also find a benefit in using our logger as a backend20
514DM-1201add ColumnView support to FunctorKeysFunctorKeys currently only work with individual records, but at least some could work with columns as well. Need to add an interface for this and decide how to handle cases where it the FunctorKey doesn't support it.2
515DM-1210Invert buffering for czar in row-based result handlingThe XrdSsi API performs some impedance-matching in buffering transfers. The current code (introduced in DM-199) doesn't leverage this because its flow model is based on the older mysqldump-based results passing. With dump files, we don't know the size of the fragments expected, so we are just passing buffers of bytes and building up a text blob to ingest. With the row-based protocol, we have sizes specified, hence the receiver can specify exactly what sizes of bytes are needed. Implementation of this ticket should simplify and reduce the code overall. 10
516DM-1211anaconda is too outdated to work with pipThe version of anaconda distributed with the stack is too outdated to be used with pip (and probably other things). The issue is an unsafe version of ssh. A workaround is to issue this command while anaconda is setup: {code} conda update conda {code} Warning: it is unwise to try to update anaconda itself (with "conda update anaconda") because that will revert some of the changes and may result in an unusable anaconda. I think what is required is an obvious change to ups/eupspkg.cfg.sh The current version of anaconda is 2.0.1 based on http://repo.continuum.io/archive/ Note: there is no component for anaconda. I will submit another ticket.2
517DM-1213cleanup order/grouping of header filesWe want: * header for the class * then system * then third party * then lsst * then qserv We currently don't have the "lsst" group (with a few exceptions), and we call the last one "local" in most places.1
518DM-1215makeMaskedImage leaks memoryCalling afw.image.makeMaskedImage leaks memory when called from Python, because it returns a raw pointer without telling Swig %newobject. To fix it, it'd be better to just have it return by value instead of by pointer, though this might involve fixing some downstream C\+\+ code (Python code should not be affected).1
519DM-1216compute linear parameter derivatives more intelligently in optimizerThe numerical derivatives computed by the optimizer currently don't distinguish between the linear parameters (for which derivatives are trivial) and nonlinear parameters (for which they're hard), because we don't pass the information that distinguishes them to the object that computes the derivatives. If we move the computation of derivatives from the Optimizer class to the Objective class, we should be able to compute the derivatives much more efficiently. While this doesn't matter much when fitting single component galaxy models (because there's only one linear parameter in that case), it should matter quite a bit when fitting high-order shapelets to PSF models.4
520DM-1217Refactor meas_base Python wrappers and plugin registrationmeas_base currently has a single Swig library (like most packages), defined within a single .i file (like some packages). It also registers all of its plugins in a single python module, plugins.py. Instead, it should: - Have two Swig libraries: one for the interfaces and helper classes, and one for plugin algorithms. Most downstream packages will only want to %import (and hence #include) the interface, and having them build against everything slows the build down unnecessarily. The package __init__.py should import all symbols from both libraries, so the change would be transparent to the user. - Have separate .i files for each algorithm or small group of algorithms. Each of these could %import the interface library file and the pure-Python registry code, and then register the plugins wrapped there within a %pythoncode block. That'd make the implementation of the algorithms a bit less scattered throughout the package, making them easier to maintain and better examples for new plugins.3
521DM-1218Support multiple-aperture fluxes in slotsWe should be able to use multiple-aperture flux results in slots. While this is technically possible already by setting specific aliases, it doesn't work through the usual mechanisms for setting up slots (the define methods in SourceTable and the SourceSlotConfig in meas_base). After addressing this, we should remove the old SincFlux and NaiveFlux algorithms, as the new CircularApertureFlux algorithm will be able to do everything they can do.2
522DM-1226Refine Butler prototypeA prototype of the new Butler is part of the S14 delivery. This needs to be refined into a production package and the rest of the code needs to be ported to use it.15
523DM-1227S15 Multi-node Multi-query Integration Testing HarnessBuild end-to-end integration test harness for Qserv that will run queries on multi-node system.56
524DM-1228LSE-68: Bring pull interface to CCB approvalBring a long-pending set of changes, primarily the adoption of the "pull interface" for all DM-Camera image requests, to CCB approval6
525DM-1229LSE-68: Major phase-3 details (W15)Deepen ISD to cover: supply of crosstalk constants, deletion policy details, content of the new-data notification, availability of a pass-through tag in data, and other Phase 3 matters. Edit ISD to ensure that it covers WFS and guider requirements as well. Deliverables: * Marked-up LSE-68 with combination of DM proposals for Phase 3 details and, where that is not a realistic approach, specific questions for Camera DAQ team. * Bring a proposal to the CCB by the end of the cycle.16
526DM-1230LSE-69: Bring Summer 2014 work to CCB approvalBring Summer 2014 work on LSE-69 to CCB approval, ideally by 20 October in time to be part of the CD-2 document package.6
527DM-1232LSE-72: Bring Summer 2014 work to CCB approvalRemaining work is to proofread the SysML-ization by Brian Selvy of the LSE-72 draft, do any required cleanup in conjunction with the OCS team, and advocate for LCR-202 (already exists) at the CCB.3
528DM-1233Refine requirements and use cases for Level 3 facilitiesRefine the requirements and use cases for the three branches of Level 3 capabilities exposed to users: * Level 3 programming toolkit (user reconfiguration / extension of DM pipelines and stack) * Level 3 compute cycle delivery (user access to 10% of compute base) * Level 3 data product storage Deliverables: * Refinement, if necessary, to Level 3 requirements in DMSR * Flowed-down requirements as a separate document. Sufficient detail to allow a breakdown of the deliverables in the three areas of Level 3 by annual release cycle through construction period.20
529DM-1234LSE-72: Remaining Phase 2 detailsSort out remaining Phase 2 details of LSE-72, especially: * details of the configuration mechanism (yet to appear even in LSE-70), the publication of available configuration keys, the efficient publication of configuration contents, OCS-driven configuration "knobbing" * specific list of events to be published by DM * more specific EFD-query language * EFD deployment model (understanding of distributed design envisioned by OCS and its implications for the ICD)10
530DM-1235LSE-72: Phase 3 detailsAdvance Phase 3 details as needed to eliminate obstacles to OCS and DM development during Summer 15.10
531DM-1236LSE-75: Bring Summer 2014 work to CCBBring a small set of technical changes (e.g., pointing notice moved to OCS ICD) and the addition of PSF reporting to T&S into the SysML version of LSE-75 and submit a change request to get this approved.6
532DM-1237LSE-75: Refine WCS and PSF requirementsClarify the data format and precision requirements of the TCS (or other Telescope and Site components) on the reporting of WCS and PSF information by DM on a per-image basis. Depends on the ability of the T&S group to engage with this subject during the Winter 2015 period. Can be deferred to Summer 2015 without major impacts. Current PMCS deadline for Phase 3 readiness of LSE-75 is 29-Sep-2015.8
533DM-1238LSE-130: Bring Summer 2014 work to CCB approvalBring the current list-oriented version of LSE-130 into the camera-test-plan-oriented format requested by the Camera group, moving the old list(s) into LDM-272 for reference. Negotiate what further work is required to make the document acceptable to the Camera group for CCB approval in time for CD-2. Nominally this requires CCB approval by 20-Oct-2014 in order to have an approved document properly released to the CD-2 committee.16
534DM-1239LSE-130: Make requests more quantitativeProceed, as enabled by input from the DM Apps group and the Camera, to make the individual data requests in LSE-130 more quantitative.12
535DM-1240LSE-140: Bring Summer 2014 work to CCB approvalConvert the existing LSE-140 draft to SysML, produce a docgen, and review with Jacques Sebag. Bring to CCB meeting on 8 October under existing LCR-201.6
536DM-1241Complete data entry of LSE-140 revised draft into EANULL2
537DM-1242Risk Register refresh 1/2015Periodic review of DM risk register contents. Covers preparation for a review expected at the end of January 2015, the only one during Winter 2015.3
538DM-1244TOWG - Contributions to the Operations Concept DocumentCovers contributions to the writing and editing of the Operations Concept Document during the Winter 2015 cycle. Deliverables: * Timescales diagram and explanatory text * Framework for Nominal Operations chapter * Contributions to KTL's writing of the Data Processing Operations chapter * General proofreading10
539DM-1245Install scisql plugin (shared library) outside of eups stack.sciSQL plugin is currently deployed in eups stack (i.e. $MYSQL_DIR/lib/plugin) during configuration step. Nevertheless eups stack should be immutable during configuration step. MySQL plugin-dir option may allow to deploy sciSQL plugin outside of eups stack (for example in QSERV_RUN_DIR).3
540DM-1246add per-exposure callbacks for measurement pluginsWe should give measurement plugins an opportunity to do some work whenever we start processing a new Exposure. This give them a good time to throw exceptions when there's something obviously wrong with the exposure (e.g. it's missing a Psf). It also gives them an opportunity to do work that could be used to speed up per-source processing. One specific case I have in mind is in shapelet PSF approximation for galaxy fitting, where it could be very valuable to use an initial fit to an average PSF to initialize (and speed up) the first to per-source PSFs. One question here is how to to allow information to be passed from the per-Exposure method to the per-Source methods - we should not do that via plugin instance attributes, which means we probably want to have the per-Exposure method return an arbitrary object that would be passed to the per-Source methods. Unfortunately, I don't see a way to avoid having that change the signature for those methods for all existing plugins, so this should be done relatively early, before we have too many user-contributed plugins.3
541DM-1249Reimplement CSS using JSON-packing, czar kazoo + c++ snapshotting phase 1Transient cache for CSS, populated from python, no C++ interface to zookeeper. Pack multiple keys using json. Tenative packing spec is in DM-705 The v1 implementation transitions the zk access from the c++ layer into python, with code that understands how to unpack json-encoded data. This can coexist with the existing qserv_admin zk schema. v2 applies packing/unpacking logic in the creation/manipulation code in qserv_admin. 10
542DM-1250CSS design for query metadata v2NULL3
543DM-1251CSS design for query metadata v1The goal of this ticket (and DM-1250) is to try to understand what kind of per-query metadata is necessary to provide client-transparent query processing in case when czar/proxy could die or be restarted. Some relevant info is in the Trac: https://dev.lsstcorp.org/trac/wiki/db/Qserv/CSS/RunTimeState3
544DM-1252Implement structure for DB/table metadata in CSSNULL4
545DM-1253Requirements gathering for Metadata StoreNULL10
546DM-1254Metadata Store - design v1Research potential off-the-shelf candidates. Propose initial version of metadata design. 5
547DM-1255Metadata Store - experimental prototype v1This first prototype will involve capturing metadata from a small set of image files. * Create a new schema file in the cat package (lsstSchema4mysqlW15.sql) with definition of tables that will be used to capture image metadata (see Exposure tables in other schema files), and some basic structure for capturing information about the entire repository. Decide which keywords are standard, and which should go to flat key-value area * Pick a directory (or several) with images, candidates: /lsst7/dr7/runs, /lsst7/releaseW13EP, /lsst3/DC3/data/obs/ImSim/pt1_2, /lsst/DC3/data/pt1.2.3k/datarel/ImSim * create test database, load schema * extract metadata for all images in a given directory and load metadata from fits headers.10
548DM-1256Metadata Store - design v2NULL5
549DM-1257Metadata Store - experimental prototype v2 (DataCat)Integrate prototype v1 with Fermi's DataCat (e.g., reuse logic for reading headers using afw, store in DataCat). Experiment with foreign tables.6
550DM-1258Update documentation and automatic install script w.r.t. Qserv 2014_09.0 releaseCreation of qserv_distrib and distribution of Qserv via official LSST repositories have to be taken into account in Qserv documentation and automatic install script.4
551DM-1259evaluation of Cinder as OpenStack storage cache in the LSST MiddlewareDeliverable: evaluation of Cinder as OpenStack storage cache in the LSST Middleware Daues G 100%" 100
552DM-1260implementation of data movement in the production system in the existing hierarchy of NFS disk, condo, tapeDeliverable: implementation of data movement in the production system in the existing hierarchy of NFS disk, condo, tape Freemon M 50% 54
553DM-1261incorporation of sizing model into data center requirementsDeliverable: incorporation of sizing model into data center requirements Freemon M 100% 7
554DM-1262data center requirements documentDeliverable: data center requirements document Petravick D 10% 11
555DM-1263completed governance of security plan for reviewDeliverable: completed governance of security plan for review Petravick D 10% 1
556DM-1264security plan october.Deliverable: security plan Ephibian 10% 1
557DM-1265addition of procurement of physical goods to contractDeliverable: addition of procurement of physical goods to contract Petravick D 5%, Gelman M 10% 6
558DM-1266insertion of wide area simulator into test standDeliverable: insertion of wide area simulator into test stand Freemon M 100% 18
559DM-1267report of traffic shapingDeliverable: report of traffic shaping Freemon M 100% 7
560DM-1268upgraded KVMsDeliverable: upgraded KVMs Mather B 50% 9
561DM-1269sizing model critique reportDeliverable: sizing model critique report Perez A 50% 29
562DM-1270more efficient VMware infrastructureDeliverable: more efficient VMware infrastructure W15: Glick B 50%, Elliott M 25%, Mather B 10% 38 SP estimated S15: Mather B 40%, Glick B 25% 6 SP estimated6
563DM-1271technical roadmap critique reportDeliverable: technical roadmap critique report Perez A 50%29
564DM-1272Upgrade NFS Storage Servers with new hardwareDeliverable: new hardware, ZFS filesystem, 3x 100+ TB + 1 spare 100+ TB Elliot M 75% 55
565DM-1273deployment plan for version 1 of OpenStackDeliverable: deployment plan for version 1 of OpenStack Glick B 75%, Elliot M 15%, Mather B 10%, Wefel P 10%56
566DM-1274Procure replacement development infrastructureProcure, install, test, and deploy hardware to replace existing LSST development cluster infrastructure. Assignees: Bill Glick, Matt Elliot, Bruce Mather, Paul Wefel, Jason Alt Duration: November - December 201545
567DM-1275level of effortDeliverable: level of effort Wefel P 100%, Freemon M 5%100
568DM-1276level of effortDeliverable: level of effort Voiciu L 100%28
569DM-1277level of effortDeliverable: level of effort Petravick D 50%, Gelman M 50%, Glick B 30%, Mather B 50%100
570DM-1278written plan for next period epicsDeliverable: written plan for next period epics Petravick D 50%, Gelman M 50%, Glick B 50%10
571DM-1279Fix Scisql deployment test error (doc.py)Deployment test in tools/docs.py fails due to a wrong "scisql_index" path in scisql documentation. Fortunately, qserv-configure.py doesn't stop on this error.2
572DM-1280meas_base ResultMappers should be FunctorKeysThe ResultMapper classes in meas_base should inherit from FunctorKey, and support bidirectional transfers involving the Result structs and records.3
573DM-1281add Schema method to join strings using the appropriate delimiterDelimiters in Schema field names are version-dependent. One can currently use {{schema["a"]["b"].getPrefix()}} to join fields using the appropriate delimiter, but this is confusing to read.1
574DM-1282multi-level replacement in Schema aliasesSchema aliases should support more than one level (i.e. an alias may resolve to another alias).2
575DM-1283remove meas_extensions_multiShapelet from release packages/buildbotNULL1
576DM-1284rename meas_multifit to meas_modelfit, and add to lsst_appsNULL1
577DM-1285Improve Startup of HTCondor JobsAdjust configuration parameters of HTCondor config and/or submission files to improve speed at which HTCondor jobs start in both the replicator pool and worker pool.2
578DM-1286Improve worker fault tolerance of missing distributor dataInstances of worker jobs might ask the Archive DMCS which distributor to connect to, only to connect to that distributor which has recently been rebooted, so the distributor might not have that information. At this point, the Distributor could send an “expired” notice of some kind to the Archive DMCS to clear it’s cache, and also tell the worker that it has no file of the type it’s looking for. The worker would then go back to the Archive DMCS. 6
579DM-1287Propose and document a recipe to build Qserv in eupsIn-place build is available and documented.2
580DM-1291Identify test data and cameraTo test processCcd we need to identify a set of data to process (possibly mocked). This implies that there will also need to be a minimal camera to go with the minimal data. This task is to identify the minimal data and find a location for it.4
581DM-1293Implement designed tests for processCcdImplement the designed tests with the installed data.8
582DM-1294Generate use caseWe should first sit down with a Camera team rep (Jim C. maybe) to define the tool they need. How dynamic are the data? What is the layout of the data? We should also get some example test data to work with.6
583DM-1295Sync test data headers with standardsThe headers will need to be vetted against known FITS standards. The headers should be valid and should not contain any non-standard keywords. There should also be a census of FITS standards that may be used for defining sensor layout.8
584DM-1296Implement a tool to generate a Camera from FITS imagesImplement the tool to generate the camera object. It should be a command line tool that will take a path to a file. It should have an option to persist the generated camera. It should also have the ability to plot the camera.10
585DM-1297Verify use of the tool with the camera teamWe will need to run the tool in the camera team's system to make sure the interfaces are as they expected. It will also help to make sure that the tool addresses all of the cases.6
586DM-1298Design the APIThe API will have to be able to accommodate data we know about, so will need to deal with reasonable missing data. It should also not preclude extension. This will need to be RFC'd since it is an API change.8
587DM-1299Implement and test the new APIOnce the API is designed and signed off on, the API will need to be implemented and tested. This will require updating all obs_* packages that use the current interface.10
588DM-1302C++ code changes required for --std=c++11Some C++ code requires changes for modern C++ compilers if it is to be compatible with C++11 and the older standard. Here is my list, so far (ignoring the known issue of MacOS having two different standard C++ libraries) Implicit conversion of shared_ptr to bool no longer works: <http://stackoverflow.com/questions/7580009/gcc-error-cannot-convert-const-shared-ptr-to-bool-in-return> In C++11, shared_ptr has an explicit operator bool which means that a shared_ptr can't be implicitly converted to a bool. This is likely to show up in a lot of packages. So far found in: - pex_policy - meas_algorithms warning: adding 'int' to a string does not append to the string seen in daf_persistence warning: 'va_start' has undefined behavior with reference types seen in pex_logging Trace.h and one other place. Fixed by not using references (and thus copying the arguments), rather than using pointers, to avoid changing the APIs. this is an old issue; but not all compilers warned about it: See <http://stackoverflow.com/questions/222195/are-there-gotchas-using-varargs-with-reference-parameters> warning: 'register' storage class specifier is deprecated seen in: - boost 1.55.0.1 - Eigen 3.2.0 - a pex_logging .i file I silenced this warning in sconsUtils because it's too much trouble to upgrade boost and Eigen, and the warnings are very obtrusive in daf_persistence: {code} src/DbStorageImpl.cc:87:35: warning: first declaration of static data member specialization of 'mysqlType' outside namespace 'persistence' is a C++11 extension [-Wc++11-extensions] dafPer::IntegerTypeTraits<1>::mysqlType = MYSQL_TYPE_TINY; {code} I have not figured out how to fix this one. clang 6 is pickier about the order of instantiation: in afw (fixed in DM-1302) Many errors such as the following: {code} include/lsst/afw/table/Flag.h:27:8: error: explicit specialization of 'lsst::afw::table::FieldBase<lsst::afw::table::Flag>' after instantiation struct FieldBase<Flag> { ^~~~~~~~~~~~~~~ include/lsst/afw/table/Key.h:49:39: note: implicit instantiation first required here {code} Fixed by including Flag.h in Key.h clang 6 warns about ambiguous unsequenced modifications. Seen in shapelet, for example: {code} src/HermiteTransformMatrix.cc:107:59: warning: multiple unsequenced modifications to 'kn' [-Wunsequenced] for (int kn=jn, koff=joff; kn <= order; (koff += (++kn)) += (++kn)) { ^ ~~ {code} Fixed by using a += ++b, a += ++b, since it was the cleanest solution I could find. clang 6 is pickier about instantiation classes in the wrong namespace: in shapelet (fixed by not instantiating the anonymous classes): {code} src/MatrixBuilder.cc:945:1: error: explicit instantiation of 'lsst::shapelet::<anonymous namespace>::SimpleImpl' must occur in namespace '' INSTANTIATE(float); {code} meas_algorithms produced this warning because the class member _wcsPtr was a reference (which was unecessary): {code} src/ShapeletKernel.cc:188:34: warning: binding reference member '_wcsPtr' to a temporary value [-Wdangling-field] _interp(interp), _wcsPtr(wcsPtr->clone()) ^~~~~~~~~~~~~~~ {code} clang 6 warns about expressions such as if (!a == 0) because the ! is applied to "a", not the result of the "a == 0". Fixed in the obvious way in several places. meas_algorithms seg-faults on loading unless boost is built with C++11 support. See ticket DM-1361 4
589DM-1305Tests fail in shapelet when building on OS X 10.9When building the master on pugsley.ncsa.illinois.edu, shapelet builds successfully, but two tests fail: {code} pugsley:lsstsw mjuric$ cat build/shapelet/tests/.tests/*.failed tests/testMatrixBuilder.py .F..... ====================================================================== FAIL: testConvolvedCompoundMatrixBuilder (__main__.MatrixBuilderTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "tests/testMatrixBuilder.py", line 310, in testConvolvedCompoundMatrixBuilder self.assertClose(numpy.dot(matrix1D, coefficients), checkVector, rtol=1E-14) File "/Users/mjuric/test/lsstsw/stack/DarwinX86/utils/9.2+8/python/lsst/utils/tests.py", line 328, in assertClose testCase.assertFalse(failed, msg="\n".join(msg)) AssertionError: 1/50 elements differ with rtol=1e-14, atol=2.22044604925e-16 0.175869366369 != 0.175869366369 (diff=1.99840144433e-15/0.175869366369=1.13629876856e-14) ---------------------------------------------------------------------- Ran 7 tests in 0.323s FAILED (failures=1) tests/testMultiShapelet.py ...F... ====================================================================== FAIL: testConvolveGaussians (__main__.MultiShapeletTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "tests/testMultiShapelet.py", line 88, in testConvolveGaussians self.compareMultiShapeletFunctions(msf3a, msf3b) File "/Users/mjuric/test/lsstsw/build/shapelet/python/lsst/shapelet/tests.py", line 107, in compareMultiShapeletFunctions self.compareShapeletFunctions(sa, sb, rtolEllipse=rtolEllipse, rtolCoeff=rtolCoeff) File "/Users/mjuric/test/lsstsw/build/shapelet/python/lsst/shapelet/tests.py", line 86, in compareShapeletFunctions rtol=rtolEllipse) File "/Users/mjuric/test/lsstsw/stack/DarwinX86/utils/9.2+8/python/lsst/utils/tests.py", line 328, in assertClose testCase.assertFalse(failed, msg="\n".join(msg)) AssertionError: 1/5 elements differ with rtol=1e-14, atol=2.22044604925e-16 2.44929359829e-16 != 1.13310777953e-15 (diff=8.881784197e-16/1.13310777953e-15=0.783842839795) ---------------------------------------------------------------------- Ran 7 tests in 0.131s FAILED (failures=1) {code} =============== More info on pugsley.ncsa.illinois.edu: pugsley:lsstsw mjuric$ sw_vers ProductName: Mac OS X ProductVersion: 10.9.5 BuildVersion: 13F34 pugsley:lsstsw mjuric$ clang -v Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) Target: x86_64-apple-darwin13.4.0 Thread model: posix ============ The files are in {{/Users/mjuric/test/lsstsw/build/shapelet/}}.1
590DM-1306Pre-CCB review of LSE-140 docgenNULL2
591DM-1309Edit agreed-upon changes into Word version of LSE-69A meeting around 9/26/2014 agreed on a set of revisions to LSE-69, with some language still needed from [~gpdf]. This action is to edit the tracked-changes Word version of LSE-69 containing the notes from that meeting into a final copy that can be reviewed by the Camera team and used as input to editing the SysML version of the ICD.3
592DM-1310Create change request for LSE-69Create a change request to bring LSE-69 up to date and capture the Summer 2014 work.1
593DM-1311Enter LSE-69 update into EA as SysMLCovers entering the contents of the LSE-69 update into EA as SysML, with associated updating of diagrams, and the creation of a docgen'ed version for CCB action.1
594DM-1312Proofread docgen'ed version of LSE-72Brian Selvy is producing a SysML version of the LSE-72 updated edited by [~gpdf]. The action here is to proofread the docgen of that version once it is ready.2
595DM-1313Identify Conditions information in LSE-130 that is required for Alert ProductionLSE-69 declares that there are two categories of Conditions data (telemetry) required by DM from the Camera: those items that are needed for Alert Production (for which the AP components at the Base will need a whitelist, and for which the Camera has a tighter latency requirement), and those that are not (but are then presumably needed in DRP or other deferred productions). It states that the subset needed for AP should be enumerated in LSE-130. The action here is to create an initial version of that list.2
596DM-1314Publish Qserv S14 version on lsst distribution serverIn order to publish this version please tag Qserv master tip with "2014_09.0" and then run: {code:bash} ssh lsstsw@lsst-dev # command below can't be runned in buildbot, as it doesn't support qserv_distrib build rebuild -t 2014_09.0 qserv_distrib # bXXX is provided by previous command publish -t qserv -b bXXX qserv_distrib publish -t 2014_09 -b bXXX qserv_distrib {code} 1
597DM-1315advance to assigning tier-2 and tier-3 reliability levels Accommodated Ron Lambert's input on networking equipment. Assigned tier-2 and tier-3 levels to processing systems. 4
598DM-1316Deploy LSST stack within OpenStack instances on ISL testbedDeploy the LSST Stack within OpenStack instances within the ISL testbed -- this could be for multiple flavors CentOS, Ubuntu, etc, and this could be done by pulling Docker Images to the instances. There will also likely be some initial debugging of starting instances within the ISL platform as a new installation has been stood up Sept 2014. 1
599DM-1317Create Docker Image / Dockerfile for LSST Stack for ubuntuCreate an installation of the LSST Stack v9_2 within a Docker Image for ubuntu for easing the import of LSST software into an OpenStack instance, We create the image utilizing a Dockerfile to make systematic the creation of such images. 2
600DM-1318update expected results file in SDSS demo testUpdate the expected outputs in the SDSS DM stack demo repo to match what we expect from the new meas_base framework.1
601DM-1319Prepare quotes to order new VMware hardware & licensesNULL2
602DM-1320Setup temporary NFS datastore for VMsWe expect the primary datastores will be local to the VM compute node, but this NFS datastore will allow us to live migrate a handful of VMs between compute nodes. We may also use this or another datastore as place to create backup snapshots of particular VMs.2
603DM-1321Setup new VM compute nodesOnce the new VM compute nodes arrive, the hardware needs to be installed, ESXi installed, and networked for use by vSphere.6
604DM-1322Expire Workers that receive no filesIn instances where the files the worker expected to get never arrive, there should be a way of the worker to recognize this (say, a timeout after waiting for the Archive DMCS for some time), and exit.4
605DM-1323Configure and test new VM infrastructureThis would be configuring to work vSphere, setting up permissions and groups, adding datastores, and testing the use of the new setup.10
606DM-1326Automatic expiration of replicator jobsReplicator jobs that receive no data specifically for the visit, raft, and exposure sequence ID within a certain amount of time should self expire to prevent future jobs from running. If this is not done, jobs will back up in the HTCondor queue.4
607DM-1328Order new NFS serversWe are waiting on the UIUC Business Offices to provide us a new account number for ordering these servers. As soon as we get that account number we need to order the hardware from KOI Computing.6
608DM-1329Plan new NFS mounts & data organizationThis is a task of deciding the new client mounts for the 3 new NFS servers. These should match up with the new storage hierarchy and classification <https://wiki.ncsa.illinois.edu/display/LSST/Storage+Structure>.1
609DM-1330Install new NFS serversNULL10
610DM-1331squash edge errors in SdssCentroidSdssCentroid doesn't trap exceptions that are thrown due to being too close to the edge, resulting in noisy warnings in the logs. Instead, it should catch the low-level exception and re-throw as MeasurementError, after defining a flag field for this specific failure mode.1
611DM-1332address no-shape warnings in GaussianFluxGaussianFlux relies on the shape slot, and puts noisy warnings in the logs when the shape slot fails. However, we probably don't want to add a new flag for GaussianFlux to indicate this failure mode, because it'd be entirely redundant with the shape slot flag. We should figure out some other way to squash this warning - how we do that may depend on whether this is addressed before or after the C++ redesign. We should also consider having GaussianFlux add an alias to the schema to point back at the shape slot flag, creating what looks like a specific flag for this failure while actually just being a link back to the shape slot flag. That's probably not worth doing within the current C++ interface, however, as it'd require some unpleasant mucking around with ResultMappers.2
612DM-1333resolve factor of two difference in GaussianFluxAfter changing the implementation of GaussianFlux to use the shape slot rather than estimate the shape itself by re-running the SdssShape code, Perry saw a 5-15% difference in the fluxes (I'm not sure of the sign). The new behavior (using the shape) is consistent with what we'd have gotten with the old code when the little-used "fixed" config option was enabled (not surprising, as that just looked up the SdssShape measurement by name, instead of via slots). I suspect the difference is coming in because of the factor of two between SdssShape's "raw" measurements - the actual Gaussian-weighted moments - and the factor of 2 it applies to make its measurements equivalent to ideal unweighted moments. The correct weight function to use for GaussianFlux includes this factor of 2 (i.e. it's larger than the "raw" moments), and it's likely either the old code wasn't including this or the new code isn't. We need to determine which one, and if necessary, fix the new code.2
613DM-1334Test the creation of basic OpenStack instances on the new ISL testbed [IceHouse]A new version & implementation of the ISL OpenStack testbed is up and running. The new cloud is using IceHouse, the ninth OpenStack release. We get started on this platform by verifying that basic instance creation is working. We target the creation of an instance through the (Horizon) GUI interface, and via the nova CLI. 1
614DM-1335Create instance with a Floating IP Associated through the nova CLIWe see that in working with the Horizon GUI, it is fairly straightforward to give an instance a public IP address by associating a Floating IP with the current local IP. However, we will want to be able to accomplish this task both remotely and programmatically within workflow. As a step towards this, we target the solution of this via the nova CLI.2
615DM-1336Review advance doc to review with the data center working groupConsult with M. Freemon on the sizing model given the generic description of the computing needed tier-3 and tier-2 support. Make a pass through the underlying data center standards doc for things "any competent designer should know" for example wall plugs on separate circuits form computer circuits. add that to the document, and call meeting of working group for review in late Oct.4
616DM-1337Security Plan advancement for Octoberget a draft Project Office detail plan consistent with the level of devleopment of the master plan. (ephiphian). Draft a data classification plan, refer to plan and classes of data in drat materials. Obtain some central place in LSST documentation framework to hold materials being drafted (if supported by the LSST system) Recieve feedback based on portion of plan submitted to LSST project office. Incorporate feedback. (if minor) re-plan (if major)18
617DM-1338Make QSERV_RUN_DIR scripts able to detect qserv install paths using eupsTicket related to Mario email (subject: [QSERV-L] Some points/actions from the discussion today) : Making your "qserv data" directory independent of where qserv is installed I think this is a big one, and largely independent of EUPS. You have a problem where you want to use one set of test data potentially with different qserv binaries (not at the same time, of course). I'd argue you should refactor the scripts generated by qserv-configure to either: * get _all_ their information about various paths from a _single_ file, for example, from etc/paths.cfg.sh. Then you can easily regenerate just that file when you need to switch to a different qserv (or zookeper, or what not), or... * refactor the generated scripts to learn from the environment which binaries to run. I.e., if $QSERV_DIR is defined, use that qserv, etc. This will let you switch binaries by simply setup-ing the new one with EUPS. The two are not mutually exclusive -- e.g., all of this logic could be in etc/paths.cfg.sh, and depending on whether this is a development build or a "non-EUPS" build, it can either pick up the paths from the environment or hardcode them. Assuming you did that, your development loop may look something like this: {code} # assuming that qserv-configure.py has already been run # in ../qserv-run # do something with qserv-a clone cd qserv-a setup -r . ... do some edits ... scons # now do the tests cd ../qserv-run ./bin/qserv-start.sh ... do tests ... ./bin/qserv-stop.sh # now switch to qserv-b clone cd ../qserv-b setup -r . # and do the tests again cd ../qserv-run ./bin/qserv-start.sh ... do tests ... ./bin/qserv-stop.sh {code} that is, as qserv-start picks up the relevant products from the environment, there's no need to rebuild/reconfigure the qserv-rundirectory each time. 7
618DM-1340Read through log4cxx documentation and log.git codeRead through the log4cxx documentation and become familiar with how the log.git package is set up.2
619DM-1341Write/configure tests with existing configurations and appendersIn order to be come more familiar with how to use the log.git package, write some tests to see how existing configurations and appenders are used by the log.git package.4
620DM-1342Write DM message appender classWrite DM message appender class to be used with log.git package. This might entail writing a configurator class as well; that depends on the investigation of how configurations/appenders are used.16
621DM-1343Write Unit test for new DM message appender classWrite unit tests for DM message appender class. This might also require some tests for a configurator class, if that class is created.2
622DM-1344Define gather/scatter mechanism for tasks with generic APIDefine gather/scatter mechanism for tasks with generic API. This will use event services (DM Messages) initially, but we would like to support MPI or other communication mechanisms as well. This will involve consulting with Paul about how the existing code is structured. 8
623DM-1345OCS Middleware workshopAttend OCS Middleware workshop. This will probably have be done remotely because I have a personal conflict with that time that will prevent me from attending in person.4
624DM-1346Write example programs for OCS MiddlewareWrite some example programs to get familiar with the OCS middleware software. The OCS middleware will later be integrated with the AP, in the base dmcs and replicator jobs.4
625DM-1347Refine Event base class to allow ActiveMQ filterable settingsThe current Event.cc base class needs to be refined to remove and old-style data release terms that aren't used anymore. Plus, it needs to be easily extensible to allow other types of dictionaries of terms that will be used in the message headers to make them filterable on the server side.2
626DM-1348Update tests to use unit test frameworkThe tests for this package predate the unit test framework that other package use. Update the tests to uses the unit test framework and get rid of any duplicate or obsolete tests.5
627DM-1349Change marshaling code to use jsonThe marshaling code for non-standard (i.e., non-filterable) components of messages is custom and not standard. Change this to use JSON.10
628DM-1350General cleanup of Events packageThere are some obsolete classes and code in the ctrl_events package that needs to be removed and/or updated. PipelineLogEvent, for example. That not only is no longer used, but it is applications specific, and should have been part of another package in the first place, subclassed from this package.35
629DM-1352ORIGINATORID value can churn too quickly.The ORIGINATORID is a 64-bit word consisting of an IPv4 host address, 16-bit process id, and 16-bit local value. In addition to the 16-bit process id not being standard across platforms (Mac OS >Leopard goes to 99999), the churn rate for the local value should be much higher than just 16 bits. This could be fixed to changing ORIGINATORID to a 32-bit process id and a separate value for the local value, which would be specified together in the DM event selector. I have to look into this more to see if this is a viable solution. This might need to go to three separate values to future proof it (i.e., ipv6).8
630DM-1354Install docker 1.1.2 in an ISL OpenStack CentOS instance, perform basic checksInstall docker 1.1.2 in an ISL OpenStack CentOS 6.5 instance, and perform basic checks such stopping and starting the docker daemon, changing default settings such as size limit of containers/images, pulling standard images from docker hub, starting containers from these images, etc. 2
631DM-1355Re-arrange how Qserv directories are installedwe already touched question about installation directory structure at a meeting, maybe we can improve things by re-arranging how things are installed we are currently installing stuff into four directories: cfg, bin, lib, proxy to make it look more standard and to avoid clash with qserv source directories we could move cfg and proxy to a different location (something like share/qserv to make it more root-install-friendly in case we ever want to install under /usr) this change (if you want to do it) deserves separate ticket, do not do it in this ticket 3
632DM-1358End-to-end demo fails to exit with the correct status when Warning would be correct.The output of demo2012 results in an output file which is compared against a benchmarked file. Currently the comparison allows a deviation from the benchmark based "on the the number of digits in the significands used in multiple precision arithmetic"; that number is currently set to 11. An example using that setting is: @ Absolute error = 5.9973406400e-1, Relative error = 9.1865836000e-4 ##2566 #:25 <== 29.7751550737 ##2566 #:25 ==> 29.7478269835 Additionally, the current use returns: a 'Fatal' error if the code itself fails to execute correctly; a "Warning' error if the any of the benchmarked quantities do not meet the comparison criteria; 'Success' if the comparison meets all criteria. It is noted that the buildbot 'Warning' color indicator is not currently being displayed when the comparison fails. That is a coding error. This Issue will: * ensure that BUILDBOT_WARNING(S) causes the correct display color when appropriate. This Ticket has been split into two parts. This is part 1. Part 2 is DM-1379 2
633DM-1359improvements to PsfFluxWhile using it as an example for the redesign of DM-829, I came up with some ideas for how to improve PsfFlux's handling of edge/bad pixels: - Add a flag indicating that at least one pixel was rejected - Add thresholds (number? fraction of PSF model size?) for how many non-rejected, non-edge pixels we need to even attempt a fit.1
634DM-1360Fix minor loose ends from new result plumbingSome of the more minor issues raised in comments from DM-199 were left undone prior to merging. This ticket addresses them. For more information, please see: https://github.com/LSST/qserv/pull/2 . 1
635DM-1362Edit pull interface and other Summer 2014 work into LSE-68 in WordDeliverable: circulate a Word-based draft of LSE-68 in which the "push" interface is removed, and the "pull" interface is refined to include the guider and other Summer 2014 work. Note that the use of "pull" for the guider applies whether or not the proposed guider redesign is accepted.2
636DM-1363Avoid use of ~/.my.cnf (used by css watcher)See https://jira.lsstcorp.org/browse/DM-1258?focusedCommentId=29230&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-29230. {{~/.my.cnf}} is used by css watcher, an optional tool used for monitoring css. It is a symlink to $QSERV_RUN_DIR/etc/my-client.cnf. The css watcher could use MySQL credentials located in ~/.lsst/qserv.conf (used by integration tests wich are a Qserv/MySQL client)2
637DM-1364replace "bad data" flag in SdssCentroidSdssCentroid has a "bad data" flag that doesn't actually convey any information about what went wrong. This should be replaced with one or more flags that provide more information.3
638DM-1372Errors in testHealpixSkyMap.pyThere is a failing unit test when healpy is supplied. The problem is that the method boundary is not defined in the version of healpy we supply for the sims, however boundaries does exist. If I replace boundary with boundaries, the test passes.1
639DM-1375Create Docker Image / Dockerfile for LSST Stack for CentOS6.5Make a Dockerfile for systematic generation of docker images using a Centos6.5 base image containing the LSST Stack (v9_2 at the moment) and library dependencies.2
640DM-1376Ensure that the partition package is C++11 clean and compiles on OSX 10.9The LSST buildbot infrastructure recently changed to building everything with --std=c++0x, which broke the partition package, and hence automated Qserv builds. While debugging this, I discovered that the partition package does not build on OSX 10.9, and considering how minimal its dependencies are, it really should. The OSX issue can be fixed by avoiding {{using boost::make_shared}}. The partition package should be cleaned up to avoid all use of {{using}}. If we decide to use C++11 in Qserv, then the codebase should also be modernized (in particular, there are use-cases for static_assert, nullptr, etc... ). 2
641DM-1377Develop expanded and updated Information Security Program from NSF guidance/templates, using existing documents (e.g. LSE-99) as starting point Develop expanded and updated Information Security Program from NSF guidance/templates, using existing documents (e.g. LSE-99) as starting point. Create master document and subordinate documents, allowing for existing AURA, site, and institutional polices to be incorporated as appropriate. JK: In PMCS this is Petravick D and Ephibian (LeClair L)56
642DM-1383Investigate deblending in one band followed by using the resulting templates in all bands(See also [HSC-1025| https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1025]) One poor-man's approach to deblending multiple bands and visits is - Deblend in one band (or a combination, e.g. chi^2 band) using an SDSS-like algorithm that produces templates for each child - Take the templates (or possible model fits to those templates) and use them to deblend the objects in all other bands It will probably be necessary to include undetected objects in this fit (cf. [HSC-1023|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1023]), using point-source models. Note that this does not allow for the different seeing in each band. This is not obviously catastrophic for reasonably wide blends as the total flux in each pixel is conserved, and if only one template is important near an object's centre the exact form of the template is unimportant.40
643DM-1384Investigate deblending in one band followed by linear fits of models(Cf. [HSC-1024|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1024]) One poor-man's approach to deblending multiple bands and visits is - Deblend in one band (or a combination, e.g. chi^2 band) - Fit models in that band - In all bands separately fit those models simultaneously to all object in the blend, allowing only a minimum of coefficients to float (ideally only amplitudes, but given the realities of real galaxies the bulge and disk will need to both be fit, or the Sloan Swindle components, or the Lensfit Swindle, or ...). The correct PSF for each image would be used. It will probably be necessary to include undetected objects in this fit (cf. [HSC-1023|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1023]), using point-source models. It is not clear how much of a poor-man's solution this actually is, or whether it will work quite well.40
644DM-1386Merge Footprints from different bands/epochsThe current concept of the deblender assumes that the inputs are - A merged set of Footprints that define which pixels are part of the blend - A merged set of Peaks within that merged Footprint Please generate these merged Footprints (which will be defined in (x, y) coordinates in the tract/patch coordinate system). 5
645DM-1387Generate a master list of Objects given detections in multiple bands/epochsOnce we've detected Sources in multiple bands we need to merge the positions to generate Objects. This is a little complicated (or at least messy): - The positions have errors - If the seeing is different in different visits, objects may be blended in some but not all exposures - If we use more than one detection pass (e.g. smoothing when looking for faint objects, not smoothing for bright) this has similar-but-different consequences (but we should probably deal with in the per-band processing) - Objects move, so even if the positions are within the errors the motion may still be detectable 5
646DM-1388Submit LCR for LSE-68Create an LCR, including a summary of changes, for LSE-68.2
647DM-1389Edit LSE-68 changes into EANULL2
648DM-1390Improve output from integration testsCurrently the integration tests print pages and pages of output, it is hard to see what failed and how. It'd be nice to clean that out, and instead, print some short summary, perhaps in a form of a summary table what queries has run, what succeeded, what failed etc. HTML format might be a reasonable way to display it.6
649DM-1394Eups 1.5.4 requires each new shell to source the eups setups.sheups v 1.5.4 requires each new shell to source ...eups/../bin/setups.sh. This requires the buildbot scripts: runManifestDemo.sh, create_xlinkdocs.sh, be updated to individually do that task. Add demo2012: bin/demo.sh . 2
650DM-1395Reimplement CSS using JSON-packing, czar kazoo + c++ snapshotting phase 2The v1 implementation (DM-1249) transitions the zk access from the c++ layer into python, with code that understands how to unpack json-encoded data. This can coexist with the existing qserv_admin zk schema. v2 applies packing/unpacking logic in the creation/manipulation code in qserv_admin. v2 scope will be defined further, once DM-1249 enters review. Update: Phase 2 includes removal of c++ zk code and unification of Qserv css modules into a single place.10
651DM-1396Design CSS schema to support database deletionNeed to implement deleting databases. Deliverable: a design of the system that will be capable of deleting a distributed database including all copies of that database on all workers, all replicas of all chunks are deleted. It should be possible to "create database x" at any time later.2
652DM-1400Improve documentation of pixel systems in obs_lsstSimThere is not much documentation of the coordinate systems in use by CameraGeom. This is by nature documentation that is instrument specific, so should go in the obs_ package for each instrument.1
653DM-1404Create suite of Dockerfiles / docker images for LSST Stack for ubuntu, CentOSBuilding on issues DM-1317 and DM-1375 where initial images and Dockerfile's were constructed, we can now use these Dockerfile's as prototypes to extend the set of Dockerfiles & images. We observe that by making simple (scriptable) edits to the initial Dockerfile, we can run 'docker build' to make docker images for several combinations of OS and base compiler gcc version.2
654DM-1405Prepare a SL6x openstack image for with Qserv development environmentQserv packaging procedure requires to often rebuild Qserv and relaunch integration tests. IN2P3 Openstack platform offer next virtual machines : {code:bash} [fjammes@ccage030 ~]$ nova flavor-list {code} | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | | 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | True | | 15 | cc.windows.small | 4096 | 20 | 0 | | 2 | 1.0 | True | | 16 | cc.windows.xlarge | 8192 | 50 | 0 | | 4 | 1.0 | True | | 2 | m1.small | 2048 | 10 | 20 | | 1 | 1.0 | True | | 3 | m1.medium | 4096 | 10 | 40 | | 2 | 1.0 | True | | 4 | m1.large | 8192 | 10 | 80 | | 4 | 1.0 | True | | 5 | m1.xlarge | 16384 | 10 | 160 | | 8 | 1.0 | True | | 6 | cc.lsst.medium | 4096 | 20 | 40 | | 2 | 1.0 | False | | 7 | cc.lsst.large | 16384 | 20 | 160 | | 8 | 1.0 | False | | 9 | cc.lsst.xlarge | 40000 | 20 | 160 | | 20 | 1.0 | False | cc.lsst.xlarge would allow a quick build/test of new Qserv release.5
655DM-1407Add return code for integration testsIntegration test have to returns non-zero when failing. This will ease use of CI or debugging tools ({{git bisect}}, buildbot).1
656DM-1411Stand up netem server with Dell PE 1950NULL4
657DM-1424Create persistent volume of Cinder block storage and attach to instanceWe create a persistent volume of Cinder block storage and attach to working instance. When it was created, the instance does have a specified amount of ephemeral disk, but this disk will be destroyed with the instance. We want to test that we can create a persistent volume of block storage, attach it to an instance, format the storage with a file system, and mount the volume for use with processing, where data/output can be retained after the instance is destroyed. 1
658DM-1426Document how to switch Qserv or dependency in eupsDM-1338 may allow to switch Qserv or dependency version using eups, without having to re-configure Qserv (i.e. without any change in QSERV_RUN_DIR). There may have conditions for this to work. That's why it's reasonable to get some user feedback on DM-1338 before documenting this feature.2
659DM-1428Add return codes for qserv-check-integration.py and qserv-testunit.pyNULL1
660DM-1429Improve Qserv Configuration ProcedureBased on input from review of DM-1338, and discussions at hangout https://confluence.lsstcorp.org/display/DM/LSST+Database+Hangout+2014-10-29: implement -keepdata option. * --keepdata will preserve qserv_meta.conf and my.cnf. Regarding the latter, this is necessary because user might have customized data_dir. * The structure of qserv_meta.conf and my.cnf must remain the same between existing version of Qserv and the to-be-configured version of Qserv. It is users's responsibility to ensure the structure did not change. Note in particular, the template files (with the exception of my.cnf) should not be customized7
661DM-1431Process sample sdss data with LSST Stack in a Docker container in OpenStackProcess sample sdss data, starting with the lsst_dm_stack_demo, with LSST Stack in a Docker container in an OpenStack instance. 2
662DM-1432SUI define local hardware needs to host the test DB and application serversWe need have Qserv and the test DB in IPAC to do development and test locally, to access the data through Qserv APIs.10
663DM-1433SUI install Qserv and test DB, enable access to catalogs for SUI team membersInstall Qserv and test DB in local hosts. Enable SUI team members to access the catalogs. 6
664DM-1434State diagram for jobs in progressBuild a state diagram showing job progress throughout a run.13
665DM-1439afw tests use the same name for a dummy file: test.fitsThe afw package uses a file named: test.fits in multiple testers. If the user sets up the build to use multiple CPU (-j #), then there is the risk that the shared filename will be affected by more than one tester at a time. In the case which provoked this Issue, the tester: testSimpleTable.py, reported that the file was missing. A simple rerun managed to get past the error. I recommend that the different testers use uniquely named demo files.1
666DM-1440Github Transition: Naming conventions for repositoriesThe Simulations team has requested that repos in general and the numerous DM repos in particular are prefixed in a way that would make fitering them out of searches and display easy (for example, their repos are prefixed sims_*) This would be an evident useability aid to DM developers and outside contributors too. Obtain a decision on how to allow users to quickly isolate repositories they are interested in. 3
667DM-1441Github Transition: Storage of large data filesGithub currently has fixed 100MB per blob or 1GB per repo limits. Sims has at least one file in its repo whose history exceeds this (sims_meas) and this has been raised as an issue before. Obtain a decision on a suitable way forward for the time being that would allow the upload of the repositories on Github. Experienced to be reviewed in a few months time to consider whether has proved satsifactory.4
668DM-1442Github Transition: Stash-stored pull requests, extractionExtract comments from Atlassian Stash made during pull requests /code reviews and their associated SHA1s if it all possible. 4
669DM-1443Github Transition: pull request discussion, retention - proof of conceptStore review comments / PR discussion into relevant git repositories Code & process to do this on a continuous basis post-transition will be a different issue, 1
670DM-1444Test absence of individual componentsTest absence of individual components of the AP simulator. Bring each down, run the system, and restart just those components to see if the system still operates as expected2
671DM-1445check if Qserv compiles with C++11NULL1
672DM-1446Fine tune czar and worker database initializationFor now, Qserv databases are the same on the master and on the worker. It means that czar tables are created on the worker and vice-versa. This ticket aims at creating the right tables at the right places, and also at sharpening permissions on these tables. This is done by splitting configuration script qserv-czar.sh, which configure a mono-node instance, in two scripts: - qserv-czar.sh, for configuring the czar - qserv-worker.sh, for configuring workers. see https://confluence.lsstcorp.org/display/DM/LSST+Database+Hangout+2014-10-29 Please note that this code can't be validated with mono-node integration tests (whereas it doesn't break them): indeed it requires a mono-node installation with 2 MySQL instance, one for the worker and one for the master. Updating the mono-node configuration and integration tests with such a feature would make them far more complex. A quick and dirty, hard-coded, testbed is available in u/fjammes/DM-1446-test. It has been used successfully to test this ticket. This ticket will also be validated during next Qserv install on in2p3 clusters.4
673DM-1447Improve spatial-selection flexibility by parsing ptInSphBox-like syntax instead of qserv_areaspec_boxNote: it is not clear that we should do this. This is an idea to change the syntax for spatial area selection. Currently, we have SELECT...FROM...WHERE qserv_areaspec_box(...) ... This forces the area selection to apply the box (or appropriate) cut on the tables referenced in the FROM list that are partitioned, with those columns. It would be nice to allow spatial selection based on tables (and columns?) explicitly specified by the user, and then compute the appropriate chunk coverage and WHERE clause conditions and predicates. This is a pretty big deal, and would affect all spatial-select user queries, though the compatibility can be mitigated by supporting both syntaxes.100
674DM-1448Move code for mock images into afw so it reusable.There is some code in the exampleUtils in $IP_ISR_DIR/examples that could be of wider use. Specifically there is code to generate mock darks, flats, and raw data from a mock camera. There is also code to generate a mock dataRef. It could be used more widely if moved someplace else. Russell suggested afw.cameraGeom.utils.1
675DM-1449newinstall.sh should check that python2 is availableThe standards now suggest using: {code} #!/usr/bin/env python2 {code} instead of {code} #!/usr/bin/env python {code} This doesn't work with (at least) Mac OSX 10.9 system python. newinstall.sh should check if this works and suggest a fix (creating a symlink).1
676DM-1452Detect lua version in admin/templates/configuration/etc/init.d/mysql-proxyNULL1
677DM-1453Add data versions to ZookeeperTrack versions of data inside zookeeper, and detect from Qserv code if Qserv code is compatible with given format of data.2
678DM-1454LOE - Week ending 10/31/14NULL8
679DM-1455LOE - Week ending 10/24/14NULL6
680DM-1456finish porting meas_algorithms unit testsNULL4
681DM-1461C++ Redesign -- Result definition for custom algorithmsAdditions to Jim's redesign to make it easier to define custom results.3
682DM-1462Add NaN check to PixelFlagsThe test of PixelFlags in measureSources.py (from measAlg) requires a check to be sure that the center inputs are not NaN.1
683DM-1463SdssShape shiftMax config item is being ignoredThe code we ported from meas_algorithms sets the maxShift to 2 without regard to the config item which is supposed to set that value.1
684DM-1464Design Review prep for C++ redesignWrite up the design developed on DM-829 and push it through review.1
685DM-1469Github Transition Plan: Reverse mirror for beta-tester repositoriesTest the reverse mirror for beta-testers. Straw man: 1. Break the mirror for anybody beta-testing github workflow 2. Mirror back to new gitolite area: "mirror") Method: https://help.github.com/articles/duplicating-a-repository/ 1
686DM-1471Rewrite obs_testI want to use obs_test to test processCcd, but it contains no imaging data. I will replace the current data with new imaging data (a portion of one LsstSim CCD), add a camera and rewrite the mapper (subclassing CameraMapper). This also requires rewriting the unit tests in obs_test and in one other package that uses obs_test.10
687DM-1473Execute multi-platform lsst_dm_stack_demo test with Fig orchestrationIn DM-1431 we demonstrated processing of sample data within Docker containers within an OpenStack instance. Data was processed for containers based on CentOS6.5, Ubuntu 13.10, Ubuntu 14.10. We consider a multi-platform "testing" scenario, where we process the sample data in numerous containers based on various platforms/OSs all simultaneously on an OpenStack instance. This scenario entails starting up and managing multiple Docker containers. Fig (http://www.fig.sh) is a new tool for starting up and managing services via Docker containers. It is a common use case with Docker to have individual components of an application each run separately in a container (resulting in numerous containers running on a node or cloud env, i.e., a 'Docker stack'), with the containers having linkages/dependencies to be managed. Fig may be used to encode the relationship between the containers in the Docker stack, and to start up such a set of containers. We install and examine Fig, and apply Fig to our multi-platform "testing" scenario. 4
688DM-1475Fix 2014_09 documentationReplace {{NEWINSTALL_URL=http://sw.lsstcorp.org/pkgs/}} with: {{NEWINSTALL_URL=http://sw.lsstcorp.org/eupspkg/}} and {{eups distrib install qserv_distrib 2014_10.0}} with: {{eups distrib install qserv_distrib -t 2014_10}}1
689DM-1476Secure MySQL root password in configuration templatesMySQL password in written in multiple file during configuration procedure. One single file (QSERV_RUN_DIR/tmp/my.cnf) should be used, and removed at the end of configuration procedure. qserv-meta.conf also contains MySQL password and should be also secured (move password to qserv-configure.py cmd line?).4
690DM-1477Study fig to manage Qserv clusterhttp://www.fig.sh/ coordinate with @GregDaues who is also investigating fig.5
691DM-1480Buildbot master takes exception when exiting from mail notifier after dynamic email sent.Buildbot master exits without posting the required statically-addressed email notification if a dynamically-addressed was sent. This fix needs to ensure that the required (by buildbot specification) static email is sent even if it has to be directed to a dead-letter box (which it is).3
692DM-1481Discover/learn what others are doing in astronomy softwareAttend the annual ADASS conference to keep up with the software development in the astronomy community. Trey Roby, Tatiana Goldina, Xiuqin Wu plan to attend the ADASS 24.20
693DM-1482SUI: study other plot packagesFirefly uses clientsidegchart at https://code.google.com/p/clientsidegchart/ for XY plot. This package has not been updated since 2010. We need to find out more about other plotting packages and consider if we need to switch. The candidates are: 1. flot plotting library for JQuery. http://www.flotcharts.org/ 2. Highcharts JS at http://www.highcharts.com/10
694DM-1488Finalize the Design of Query MetadataFine-tune the design outlined in DM-1251 (metadata for capturing information about running queries in Qserv.).6
695DM-1489Modify czar to interact with query metadataModify czar code: it should interact with the query metadata (store information for long running queries, retrieving).6
696DM-1490FY18 Design and Implement Query Cost EstimateDesign and implement system that will estimate query cost. In particular, we will need to know if the query is interactive, or should be scheduled on shared scan, which shared scan etc. Estimating cost will likely involve looking at number of chunks involved, number of joins, and complexity of math operations. Consider extending API and allow users to specify a hint. 79
697DM-1493Add queries on partitioned table for Qserv integration test dataset #3Qserv test dataset #3 runs only queries on non-partitioned tables. Adding queries on partitioned table would increase drastically the coverage of these tests. Please note that a long-term solution could be to launch all the *.FIXME queries and to have a more detailed report. For example define queries which must pass for the integration test to succeed, and test queries which may pass and log their results in a report.4
698DM-1495Allow newinstall.sh to run in batch mode without installing AnacondaInstalling Qserv on a cluster without internet access requires newinstall.sh to run in batch mode without installing Anaconda (whose install requires internet access). So Anaconda should have a {{-anaconda=yes|no}}. Usefulness of git {{-git=yes|no}} option, against full batch option answering "yes" everywhere could also be studied.2
699DM-1497Package Qserv mono-node instance in DockerLearn Docker basics and then package a Qserv mono-node instance.5
700DM-1498Package Qserv master and worker instance in DockerLearn Docker basics and then package a Qserv mono-node instance.5
701DM-1505confusing error message when enabling unregistered items in RegistryFieldpex_config seems to split out this confusing error message when trying to enable (i.e. append to .names) a registry item that doesn't exist: {code:hide-linenum} File "/home/lam3/tigress/LSST/obs_subaru/config/processCcd.py", line 51, in <module> root.measurement.algorithms.names |= ["jacobian", "focalplane"] File "/tigress/HSC/LSST/lsstsw/anaconda/lib/python2.7/_abcoll.py", line 330, in __ior__ self.add(value) File "/tigress/HSC/LSST/lsstsw/stack/Linux64/pex_config/9.0+26/python/lsst/pex/config/configChoiceField.py", line 72, in add r = self.__getitem__(value, at=at) AttributeError: 'SelectionSet' object has no attribute '__getitem__' {code}1
702DM-1506Support new version of newinstall.shnewinstall.sh now creates loadLSST.bash instead of loadLSST.sh. This has to be taken in account in Qserv automated install script: qserv-install.sh and in Qserv documentation.1
703DM-1508Reverse image slicing doesn't work as expectedThe lsst.afw.image image-like classes support slicing, but reverse slicing does not work as expected. Here are some examples: {code} from lsst.afw.image import ImageF im = ImageF(10, 10) im[:,:].getDimensions() # is (10,10) as expected im[0:10, 0:10].getDimensions() # is (10,10) as expected im[::-1, ::-1] # should be the data with x and y reversed, but fails with: Box2I(Point2I(-2,-2),Extent2I(12,12)) doesn't fit in image 10x10 im[9:1:-1, :].getBBox() # starts at 0,0, as expected, but is 10x10 instead of 9x10 {code}1
704DM-1509Remove unnecessary config/install stepsSome existing installation configuration steps are not needed any more. For instance, we don't need $RUN/q or $RUN/result any more-- these paths are handled directly by qserv code, so the filesystem lookup shouldn't ever take place. Completion of this ticket should remove unnecessary steps and concepts from installation, simplifying future maintenance. 2
705DM-1510C++ Standards Rule 3-9 needs rewriteJim Bosch reviewed Section 3 of the C++ Standard. He noted this change which I felt warranted SAT clarification: 3-9: This is a confusing conflation of two entirely different concepts: it seems to discourage all global variables, regardless of whether they're in a namespace, but only to discourage free functions when they aren't in namespace. If that reading is correct, I think both are sensible recommendations, but they need to be clarified, and probably split up. If the reading should be that all free functions are discouraged, that'd be a terrible rule we violate all over the place. If the reading should be that global variables are only discouraged when not in a namespace, that needs to be clarified (and IMO it could be bumped up to a complete prohibition). Refer to: https://confluence.lsstcorp.org/pages/viewpage.action?pageId=16908685 Rule 3.9. The current Rule states: 3-9. Global variables and functions SHOULD be avoided and if used MUST always be referred to using the '::' operator. _________________________________________ ::mainWindow.open(), ::applicationContext.getName(), ::erf(1.0) __________________________________________ In general, the use of global variables should be avoided. Consider using singleton objects instead. Only use where required (i.e. reusing a framework that requires it.) See Rule 5-7 ( .https://confluence.lsstcorp.org/pages/viewpage.action?pageId=16908706#C++Statements-5-7 ). Global functions in the root namespace that are defined by standard libraries can often be avoided by using the C++ versions of the include files (e.g. "#include <cmath>" instead of "#include <math.h>"). Since the C++ include files place functions in the std namespace, "using namespace std;", which is permitted by Rule 5-41, will allow these functions to be called without using the '::' operator. In cases where functions are only available in the C include files, the '::' operator must be used to call them. This requirement is intended to highlight that these functions are in the root namespace and are different from class methods or other namespaced free functions. 1
706DM-1514calling extend with a SchemaMapper should support positional argumentsCalling {{catalog.extend(other, mapper)}} isn't equivalent to {{catalog.extend(other, mapper=mapper)}} because the second argument is the boolean {{deep}}. When a SchemaMapper is passed as the second argument, we should recognize it for what it is.1
707DM-1515sconsUtils fails to identify Ubuntu's gccOn Ubuntu 12.04, gcc --version says: {code:hide-linenum} gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. {code} This apparently isn't quite what sconsUtils expected, because it says: {code:hide-linenum} scons: Reading SConscript files ... Checking who built the CC compiler...(cached) error: no result CC is unknown version unknown {code} Happily, everything seems to work anyway, as the fall-back options for the unknown compiler work fine with this one.1
708DM-1516Use eups swig instead of system swig during Qserv buildQserv build system use system swig, it should be fixed to use eups swig. 3
709DM-1518Add support for "SET @@session.autocommit"The SUI team is using JDBC connector and queries like "SET @@session.autocommit = {0}".format(switch) are derailing everything. We should add support for these queries. 2
710DM-1519check out FIrefly package, build and run an applicaitonGet familiar with FIrefly package, build and run an application. Understand the coordinate grid overlay on an image. 10
711DM-1520Fix confusing error messageSelecting from a table that does not exist, e.g. something like: select count(*) from whdfd produces a strange error: ERROR 4110 (Proxy): Qserv error: 'Unknown error setting QuerySession' 1
712DM-1521Fix "stripes and substripes must be natural numbers" bugon user side: {code} ERROR 4110 (Proxy) at line 1: Qserv error: Unexpected error: (<class 'lsst.qserv.czar.config.ConfigError'>, ConfigError(), <traceback object at 0x26b8b90>) {code} in czar log: {code} 1114 22:30:10.155 [0x7fafcefab700] ERROR root (app.py:370) - Unexpected error: (<class 'lsst.qserv.czar.config.ConfigError'>, ConfigError(), <traceback object at 0x26b8b90>) Traceback (most recent call last): File "/usr/local/home/becla/qservDev/Linux64/qserv/2014_09.0/lib/python/lsst/qserv/czar/app.py", line 360, in __init__ self._prepareForExec() File "/usr/local/home/becla/qservDev/Linux64/qserv/2014_09.0/lib/python/lsst/qserv/czar/app.py", line 437, in _prepareForExec self._addChunks() File "/usr/local/home/becla/qservDev/Linux64/qserv/2014_09.0/lib/python/lsst/qserv/czar/app.py", line 535, in _addChunks self._computeConstraintsAsHints() File "/usr/local/home/becla/qservDev/Linux64/qserv/2014_09.0/lib/python/lsst/qserv/czar/app.py", line 529, in _computeConstraintsAsHints self.pmap = self._makePmap(self.dominantDb, self.dbStriping) File "/usr/local/home/becla/qservDev/Linux64/qserv/2014_09.0/lib/python/lsst/qserv/czar/app.py", line 478, in _makePmap raise lsst.qserv.czar.config.ConfigError(msg) ConfigError: "Partitioner's stripes and substripes must be natural numbers." {code} To reproduce: {code} qserv-check-integration.py --case-no 01 --load {code} then {code} mysql --port 4040 LSST -e "select count(*) from Object" {code} 2
713DM-1524Switch readMetadata' return value from PropertySet to PropertyListIt'd be useful if readMetadata would return PropertyList instead of PropertySet, because in many situations order matters. For details, see discussion in DM-15172
714DM-1525Investigate halos around starsAndrew Becker reports on dm-users: {quote} We have been using the LSST stack to reduce CFHT data at UW, and have come across a potential bug in the DM software. I don't see how this could be something intrinsic to the data, instead it seems like it could be a bug in the software triggered by its application to new data. I have a how to reproduce at NCSA at /lsst/home/becker/CFHT. Follow commands in the SETUP file to get an up-to-date version of the stack (b449) and a modified version of ip_isr (a hack to avoid overscan correction) and a private branch of obs_cfht (u/krughoff/ossos_support). If you run the commands in SOURCE_ME it will run the processCcd on a single CCD, in 2 modes, yielding 2 output directories. The second call merely sets the bin sizes to be the same amongst all the various background subtractions, but is sufficient to trigger the bug. A basic script included in the directory differences the 2 output calexps (a straight -=) and ds9 is used to view the diff. If you pan to e.g. 1845,546 you'll see a feature like attached in the difference (out1 on the left, out2 in the middle, diff on the right). This can be seen in various other parts of the image, as irregular annuli around bright blended objects. It suggests to me that during measurement some substamp manipulations are leaking into the original image. But you can kind of see in the center image that the second run seems to trigger the issue. {quote} And then: {quote} So to summarize: export LSSTSW=~lsstsw source ~lsstsw/bin/setup.sh setup lsst_apps -t b449 setup -k -r /nfs/lsst/home/becker/LSST/DMS/obs_cfht setup -k -r /nfs/lsst/home/becker/LSST/DMS/ip_isr setup -k -r /nfs/lsst/home/becker/LSST/DMS/processFile cd /nfs/lsst/home/becker/CFHT will set up your environment. The following is sufficient to recreate the bug, and create postIsrCCD images for processFile: processCcd.py input/ --id visit=1612606 ccd=8 --output out1/ --config isr.doAssembleDetrends=False isr.fringeAfterFlat=False isr.fringe.pedestal=False isr.doBias=False isr.doFlat=False isr.doFringe=False isr.doWrite=True calibrate.doPhotoCal=False calibrate.doAstrometry=False doDeblend=True processCcd.py input/ --id visit=1612606 ccd=8 --output out2/ --config isr.doAssembleDetrends=False isr.fringeAfterFlat=False isr.fringe.pedestal=False isr.doBias=False isr.doFlat=False isr.doFringe=False isr.doWrite=True calibrate.doPhotoCal=False calibrate.doAstrometry=False doDeblend=True detection.background.binSize=512 calibrate.detection.background.binSize=512 calibrate.background.binSize=512 Following are the calls I made to processFile.py (using my modified version of the processFile.git package), and which return images whose difference is exactly 0. So I don't really get whats happening with processFile, but it doesn't seem to be accepting my command-line config changes. processFile.py out1/postISRCCD/13AP06/E+0+0/2013-03-11/r/postISRCCD-1612606-08.fits --outputCalexp calexp1.fits -c calibrate.doPhotoCal=False calibrate.doAstrometry=False doDeblend=True calibrate.repair.doCosmicRay=False processFile.py out2/postISRCCD/13AP06/E+0+0/2013-03-11/r/postISRCCD-1612606-08.fits --outputCalexp calexp2.fits -c calibrate.doPhotoCal=False calibrate.doAstrometry=False doDeblend=True calibrate.repair.doCosmicRay=False detection.background.binSize=512 calibrate.detection.background.binSize=512 calibrate.background.binSize=512 processFile.py out2/postISRCCD/13AP06/E+0+0/2013-03-11/r/postISRCCD-1612606-08.fits --outputCalexp calexp3.fits -c calibrate.doPhotoCal=False calibrate.doAstrometry=False doDeblend=True calibrate.repair.doCosmicRay=False detection.background.binSize=1024 calibrate.detection.background.binSize=1024 calibrate.background.binSize=1024 {quote}2
715DM-1526Update processFile to use new measurement frameworkprocessFile.py uses the old measurement framework in meas_algorithms, but all the other components expect it to be using the new measurement framework in meas_base.4
716DM-1527Draft security risks into the Center's templateThe Cyber security center has provided a risk template consistent with their templates, The Center attempted to populate their templates with material from LSE 99 to the templates, The impedance mis match was too large, The way forward is seem as attempting a high level decomposition of risk into the templates.4
717DM-1528Identify potential KVM hardwareIdentify potential KVM hardware that would meet our needs. e.g. a current version of the Avocent or Dell KVMs used at NCSA.1
718DM-1529Reorganize docker image repositories and align with githubA heterogeneous collection of docker images have been accumulating within the public docker repository daues/lsstdistrib . Such a heterogeneous collection prevents the assignment of a "latest" tag to allow users to easily obtain the most recent image for a particular item (detailed version numbers, labels currently required.) Thus we should break out the single repository into multiple repositories where are "latest" tag will be effective. We also make github repositories of matching names to hold the Dockerfiles which produced images (a common pattern for github/dockerhub usage, especially with automated builds; so we start this practice.) 2
719DM-1530Test if IPMI can replace KVMCan we use IPMI in place of a KVM? Can we reliably do the following across our various server vendors? - power cycle hung systems - view and use text console - view and use remote gui console - boot from a remote ISO3
720DM-1531Create a LSST base CentOS imageNULL2
721DM-1532Document use of LSST image for CentOSNULL1
722DM-1533Gather Open Stack needs/requirements from DM teamNULL9
723DM-1534Assist DM team in accessing test open stacksNULL1
724DM-1538Fix qserv_testdata documentationqserv_testdata relies on sconsUtils, and its build procedure has to be clearly documented.1
725DM-1539Add support for mysql JDBC driverSUI which rely on JDBC fail because they internally issue some queries that are not yet supported by Qserv. Need to patch it (in the short term), and add proper support (in the long term). This story covers the patching only. The queries that upset Qserv are listed below. {code} SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'license' OR Variable_name = 'init_connect' SELECT @@session.auto_increment_increment SET NAMES latin1 SET character_set_results = NULL SET autocommit=1 SET sql_mode='STRICT_TRANS_TABLES' {code}2
726DM-1540Add support for BIT columnsThe mysql/SchemFactory code has incomplete logic for dealing with columns that have BIT type - in particular, it doesn't properly handle the length of a bit field, and it sets the SQL type to "BIT?", which causes table creation failures later on. Fixing this requires modifying SchemaFactory, and making sure that bit values are transmitted properly.4
727DM-1541Add support for transmitting [VAR]BINARY column dataThe code that pulls data out of a {{MYSQL_ROW}} and puts it into a protobuf {{RowBundle}} does not handle binary data correctly. See [_fillRows|https://github.com/LSST/qserv/blob/master/core/modules/wdb/QueryAction.cc#L217] for the relevant code. The issue is that the generated {{add_column(const char*)}} member function of {{RowBundle}} treats the input as C-style NULL-terminated strings. But in the case of {{BINARY}} column data (and {{VARBINARY}}/{{BLOB}} variants, maybe also {{BIT\(n\)}}), the contents can contain embedded NULLs. We are currently using such columns for user defined types in MySQL (e.g. image bounding polygons), so it's important to get this right. On the protobuf side the fix is as simple as calling {{add_column(const char* value, int size)}} instead. I'm not a MySQL C API expert, but the size will presumably have to be obtained/derived from the corresponding {{MYSQL_FIELD}}. 8
728DM-1542Drawing speed will detect and optimize for large datasetsNULL10
729DM-1543Finished Background conversionNULL2
730DM-1544Set up GIT hub for ipac fireflyNULL18
731DM-1545Span-based shrink operations for FootprintAnalogous to DM-1128, but shrinking rather than growing footprints.5
732DM-1547Install docker in an ISL OpenStack Ubuntu instance, perform basic checksNULL1
733DM-1551Prototype HTM-based spatial binning to visualize large number of catalog sourcesCurrently we are using a generic 2-d binning algorithm, that is finding minimum and maximum values of the two columns to be visualized and bins the values into 2-d grid with the specified number of grid cells. This algorithm distorts data in the pole regions and whenever data are on both sides of ra=0. More smart binning based on a spatial index is necessary when reducing the number of (ra,dec) entries intended for visualization. 16
734DM-1552Resolving QServ database configuration/connectivity issuesTo start the development I should be able to connect to the QSERV development database via VPN and run simple queries. Ideally, I'd like to be able to connect to QSERV with JDBC, view the data, run spatial queries. I also need an access to data dictionary to interpret data.10
735DM-1553Evaluate SDSS catalog accessSDSS allows two ways to access their catalog data: via HTTP Post service, accessible to anonymous users, and via CasJobs services, which require having an account. Evaluate how SDSS catalog data can be accessed from an application by prototyping single and multiple target searches accessing SDSS services. 10
736DM-1556FY17 Add Support for User Upload Tables for QservUsers will need to be able to upload a list of "things" to workspace, then request "repeat a given query for each "thing" from the uploaded list". Example of "things": ra/dec points, ra/dec points + distances, object ids, object names, bounding boxes, etc. In IPAC terminology, this is called "table upload queries". Note, we will need to assign some sort of unique id to such list. Results must contain information which result correspond to which "thing". E.g, if user asks for neighbors near (1,1), (4,4), it is not enough to just return list of neighbors, we need to tell which neighbor is for which point. In Qserv, that means that user will upload a special table with these "things", and then issue a query that involves join against that table. We need to evaluate and agree on how generic these upload tables can be. We might need to do some special optimizations (e.g., related to spatial searches). 53
737DM-1557FY17 User Upload Tables for ImgServUsers will need to be able to upload a list of "things" to workspace, then request "repeat a given query for each "thing" from the uploaded list". Example of "things": ra/dec points, ra/dec points + distances, object ids, object names, bounding boxes, etc. In IPAC terminology, this is called "table upload queries". Note, we will need to assign some sort of unique id to such list. Results must contain information which result correspond to which "thing". E.g, if user asks for neighbors near (1,1), (4,4), it is not enough to just return list of neighbors, we need to tell which neighbor is for which point. In Qserv, that means that user will upload a special table with these "things", and then issue a query that involves join against that table. We need to evaluate and agree on how generic these upload tables can be. We need to decide on format / location: csv? Table in database? We might need to do some special optimizations (e.g., related to spatial searches).53
738DM-1560A better coordinate grid overlaySome of the grid lines are not drawn right and the labels are not in the locations.10
739DM-1561Research Javascript Frameworks: General OverviewBegin looking into JS frameworks. Start to look into AngularJS, try to write some sample code. Attempt to understand the main concepts. Gat an overview of the others out there. 12
740DM-1562Work with the database group to define initial concepts for backend interface API We are starting to gel around some ideas. 10
741DM-1563Improve management of integration test datasets descriptionCurrently data set description (i.e. data file extension, compressed extension, schema file extension) is hard-coded in python/lsst/qserv/tests/datareader.py This could be improve (standard format for test dataset, meta service, meta-configuration file, ...)5
742DM-1564Implement drawing only active tab with new data modelNULL6
743DM-1566LOE - Week ending 11/07/14NULL7
744DM-1567LOE - Week ending 11/14/14NULL6
745DM-1568LOE - Week ending 11/21/14NULL8
746DM-1569LOE - Week ending 11/28/14NULL12
747DM-1570Create integration test case using data duplicatorIntegration tests should provide a new test case which use sph-duplicate in partition package.6
748DM-1571Setup Qserv for SUI testsSetup Qserv on lsst-db2 with and load some reasonable data set (perhaps PT 1.2). One potential caveat: we need to setup access for some accounts that are ideally other than our internal qsmaster.2
749DM-1572Test deblended CModel colorsUsing HSC data, examine color-color and color-magnitude diagrams with deblended CModel magnitudes. Investigate outliers by looking at images and deblended HeavyFootprints.8
750DM-1573Basic validation of LSST pipeline on HSC dataGet the pipeline running on HSC data to the point where nothing is obviously wrong.8
751DM-1574add support for "freeze-drying" measurement failuresWe should make it easy for users to inspect and capture problems in measurement algorithms into an on-disk format that allows them to be reproduced later with minimal setup (ideally, the package would require no access to the original data or configuration). While this issue is mostly concerned with capturing problems in measurement algorithms, an extension to capture deblender failures should be considered as a future extension.6
752DM-1575Support Mac OS in scisql-deploy.shcf. Andy Connolly message: {quote} Just as an FYI on my mac scisql-deploy.py was looking for 0.3.4/lib/libscisql-scisql_0.3.so but there is only 0.3.4/lib/libscisql-scisql_0.3.dylib {quote}1
753DM-1576Sanitize AstrometryTask interfaceCurrently the AstrometryTask and Astrometry class share work. E.g. distortion is done in AstrometryTask but matching is done in Astrometry. AstrometryTask also makes assumptions about what fields are available in the solver config. The AstrometryTask interface should be sanitized so that it can be used as a thin wrapper for calling any astrometry solver. Top level config params should go in the AstrometryTaskConfig and solver level work should be done in the solver class and configured at the solver level.10
754DM-1577Rework Astrometry classThe Astrometry class shares information upstream with AstrometryTask. This should be factored out so that the Astrometry class can be configured and called via a single well known method (solve?). One thing the Astrometry class that is needed by down stream processing (PhotoCal) is to match sources. This is currently a private method, but should be made public so that it can be used without running AstrometryTask.4
755DM-1578Move photocal out of meas_astromIt is confusing that photocal is in meas_astrom. I assume that is historical. I think it could probably live in pipe_tasks.2
756DM-1579Implement replacement for A.net index filesAstrometry.net index files are hard to generate and hard to read. We need another, more flexible, more standard system for storing reference files. We should also be able to read FITS files and other formats, but having a standard format with the utilities to create and query them is a must. Coming up with a format that satisfies astrometry.net's solver may be too hard, because a.net requires quads, which a non-blind solver may not need. However, a format that we can convert to something suitable for a.net would probably suffice (conversion would presumably be a separate task that is run once). It will be easier to identify a suitable format once we have identified at least one solver other than than a.net that we wish to implement or adapt. hscAstrom appears to use a catalog of star positions, which is nice and simple.5
757DM-1580Implement a replacement solver to the current A.net solverThis should be further refined. The solver will be required to work with several input formats. It will only be required to solve in the in the presence of a reasonable starting point with reasonable pointing errors. Failure should be graceful. If multiple, equivalent solutions are found, this should be reported (for situations including perfect grids of sources).15
758DM-1582Qserv spatial restrictor names are case sensitiveThe SQL grammar treats Qserv spatial restrictor names case insensitively, but {{qana/QservRestrictorPlugin.cc}} does not, which means that one must use e.g. {{qserv_areaspec_box}} rather than {{qserv_areaSpec_box}}. We are loose with case in a lot of our wiki pages, so we really should fix this to avoid confusing users. Also, case insensitivity is consistent with MySQL behavior for UDF names.1
759DM-1584Research how to integrate different image metadata stores with DataCatData Release Production will generate highly structured image metadata (exposure* tables). If we decide to use DataCat (e.g., for keeping more ad hoc metadata), the question arises if/how to integrate all this together: * should we integrate all exposure* tables from all releases into DataCat? (eg via foreign tables) * should we keep them distinct, and integrate at higher level (e.g., Metadata Service)4
760DM-1585Design system for tracking existing images/filesWe have a lot of files/images already brought in or generated through Data Challenges done to date. We need a system for cataloging them. This story will define such system, eg, sketch of UI, underlying technology used (DataCat, plain mysql, schema etc).6
761DM-1587Define structure of web form for collecting metadata about existing data setsWeb alpha version of the form (using django or Fermi Java webservices code) that collects input from users about data repositories. Authentication not covered in this version.2
762DM-1588Implement FITS header crawler and integrate it with the formImplement crawler that walks through registered repos (through the form) and loads metadata from fits headers into the mysql backend7
763DM-1589Research and experiment with building form for capturing user inputNeed to build a form that will be used to capture user input about existing image repositories (users will be registering their files/repositories). Options to consider: python-based django, java-based system that is part of Fermi DataCat. 4
764DM-1590Break down & discuss DM-1074I will take the lead on DM-1074. First step will be to sit with [~jbosch], get a feeling for what needs to be done, and sketch out a set of stories.1
765DM-1591Convert test_qservAdmin.py into a real unit testNeed to turn ./admin/tests/test_qservAdmin.py into a real unit test. In the past it was broken and it went unnoticed, see DM-13951
766DM-1594Remove check for stack dir write access in qserv-configure.pyqserv-configure.py checks for write access to stack dir, this should be replace by check for read access, or removed. fjammes@qserv-build-server-xlarge:~/src/qserv$ qserv-configure.py --all INFO: Qserv configuration tool ======================================================================= WARNING : Do you want to erase all configuration data in /home/fjammes/qserv-run/2014_10.0 ? [y/n] y INFO: Copying template configuration from /home/fjammes/stack/Linux64/qserv/2014_10.0/cfg/templates to /home/fjammes/qserv-run/2014_10.0 INFO: Creating meta-configuration file: /home/fjammes/qserv-run/2014_10.0/qserv-meta.conf INFO: Reading meta-configuration file /home/fjammes/qserv-run/2014_10.0/qserv-meta.conf INFO: Defining main directory structure INFO: No write access to dir /home/fjammes/stack/Linux64/qserv/2014_10.0 : [Errno 13] Permission denied: '/home/fjammes/stack/Linux64/qserv/2014_10.0/write_tester' 2
767DM-1595Research Javascript Frameworks: Understand Angular & ReactWrite some prototype code with Angular and then try to do the same thing with React10
768DM-1596Clean up multi-component FootprintsFollowing the landing of DM-1545, it's possible for an erosion operation on a footprint to cause it to split into multiple components and for peaks which were previously inside the footprint to not fall inside any of those components. Here, we should provide a "clean up" operation that takes a multiple-component footprint and splits it into a set of contiguous footprints with appropriate peak lists.4
769DM-1597init script fails to start xrootd after crashI think we saw this issue in the past, not sure it was actually fixed back then or just was to reintroduced one more time. After crash of xrootd the regular {{etc/init.d/xrootd start}} fails to start it: {code} [salnikov@lsst-dbdev2 dm-621]$ ~/qserv-run/dm-621/etc/init.d/xrootd status xrootd is dead but PID file exists [FAILED] see /usr/local/home/salnikov/qserv-run/dm-621/var/run/worker/xrootd.pid [salnikov@lsst-dbdev2 dm-621]$ ~/qserv-run/dm-621/etc/init.d/xrootd start Starting xrootd: (already up) [ OK ] [salnikov@lsst-dbdev2 dm-621]$ ~/qserv-run/dm-621/etc/init.d/xrootd status xrootd is dead but PID file exists [FAILED] see /usr/local/home/salnikov/qserv-run/dm-621/var/run/worker/xrootd.pid {code} I can start it with {{restart}} but I think that {{start}} should detect that xrootd is dead ({{status}} does that) and start service correctly. This issue may exist for other services but I did not check. 1
770DM-1598Design of calibration and ingest systemProduce a confluence page describing the approach to be taken to solve DM-1074. Ensure that all the relevant folks have reviewed that page and are happy. Break down DM-1074 into stories appropriate to that design.10
771DM-1600Determine if Astrometry class is desiredThe question is whether the Astrometry class is the thing that is overridden or if the AstrometryTask has component configurables that are overridden. Also, determine location default implementation.2
772DM-1601Add support for c-style comments in front of queries sent to qservConnecting to qserv from java fails because the jdbc driver inserts comments. "/* ... */" in front of queries (example pasted below). The fix involves removing the comments at the proxy level {code} SQLException: Qserv error: 'ParseException:ANTLR parse error:unexpected token: /:' Query being executed when exception was thrown: /* mysql-connector-java-5.1.34 ( Revision: jess.balint@oracle.com-20141014163213-wqbwpf1ok2kvo1om ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'license' OR Variable_name = 'init_connect' {code}1
773DM-1602Prevent collisions in /tmp related to scisql deploymentDeploying scisql involves creating a file in /tmp. The file never gets removed. This can cause the following error when Qserv is installed later on the same machine: {code} ERROR: failed to open output file /tmp/scisql_demo_htmid10.tsv for writing {code} We should switch to using a temporary file instead of file with fixed name.2
774DM-1603Qserv scons scripts do not pick up the version of swig provided by eupsSee the summary. The consequence is that the Qserv integration tests fail on systems that provide swig 2.x+ - there seems to be some implicit dependency on SWIG 1.x. The reason may be that swig is getting confused about shared_ptr to objects that are defined in one module, but used in another (recent swig reorganization split czar and css into two separate swig modules).2
775DM-1604Sanitize configsSome solver specific information is stored in the AstrometryTask config. Further, the solver config is accessed inside the AstrometryTask run method. This mixing of information make it hard to make the framework pluggable. Solver configuration should be confined completely within the solver class (whether it be part of the Astrometry class or a configurable of its own).2
776DM-1607Add unit tests to test c-style comments in/around queriesI should have thought about it when doing DM-1601 but I didn't... it'd be good to add test queries that test comments before/after/inside query.1
777DM-1608Move meas_algorithms unit tests to meas_base frameworkThe following tests in meas_algorithms need to be ported to the meas_base framework: measure.py psfSelectTest.py testPsfDetermination.py ticket2019.py testCorrectFluxes.py (though this cannot be done until the algorithm exists)2
778DM-1609Research off-the-shelf solutions for harvesting metadataRelevant links: * http://www.ivoa.net/documents/SIA/20141024/index.html - there’s a list of metadata in the document * CAOM (Common Archive Object Model): http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2/4
779DM-1610Integrate Metadata Store prototype v1 with cat and db Integrate prototype developed through DM-1255 with cat and db as appropriate (don't hardcode schema, don't hardcode credentials, etc).4
780DM-1611Experiment with DataCat foreign tablesThis is a placeholder story, we should break it down into more smaller stories...15
781DM-1614Add support for mysql JDBC driver (v2)MySQL client 4.1 and higher is stripping out comments before sending them to server, so the fixes done in DM-1539 are not sufficient.1
782DM-1615Design and implement CSS structure for distributed Qserv setupFor management of the distributed databases/tables we need info in CSS about all workers and tables. The info will be created by data loader and updated by replicator which do not exist yet. For this issue we need to provide python API which can fill the same information in CSS so that we can build and test other pieces needed for this epic.5
783DM-1616Implement remote host access for management frameworkTo manage remote workers we need a way to access services on remote machines that run workers. Services may be something like mysql (which we would prefer to run without TCP port open) and optionally xrootd. This ticket will implement Python module which will hide a complexity of doing things like ssh/port forwarding/authentication from the client.5
784DM-1617Client library for accessing distributed database/table information from CSSProvide Python interface for accessing information in CSS which is relevant to distributed management, such as database/table/node data. This interface can be used also by data loader and replicator.8
785DM-1618Implement distributed database creationImplement Python library which creates databases on all active workers based on info from CSS.10
786DM-1619Implement distributed table creationImplement Python library for creating mysql tables on all active workers.11
787DM-1620Move CSS documentation close to code CSS documentation about the structure is currently in trac (which is readonly), at https://dev.lsstcorp.org/trac/wiki/db/Qserv/CSS. We need to move it close to the source code, e.g., to a doc file.2
788DM-1621Add unit test to to verify zookeeper versioning worksThis is a follow u pto DM-1453, we need to add a unit test that will prove that mismatched versions in zookeeper and software are properly handled.1
789DM-1622Add unit test for queries from DM-1539Need to add unit test for queries listed in DM-15391
790DM-1624Qserv should report it's versionIt should be possible to determine which version of qserv we are running by looking at information from log files. So, in practice, we probably should generate in scons a unique id (from sha from git?) and compile it into the code.1
791DM-1625SciSQL should report its versionIt should be possible to determine which version of scisql we are running.1
792DM-1626Build 2014_12 Qserv releaseThe title says it all. Please open ticket for next release when closing this one.1
793DM-1627Integrate metaserv, imgserv and dbserv with Data Access Services* Create dbserv for handling database related web-based queries, support running queries through web (initial version). * Integrate dbserv, metaserv and imgserv RESTful API into the webserv - want to run all services (meta, image, db) under one server. * Also want to be able to run them separately, so have some handy servers for each service * Proof of concept for supporting multiple formats (html, json)22
794DM-1629Adopted/Retired RFCs are not counted as resolvedAlso, marking an RFC as Adopted brings up a box with a message applicable to the Closed status.1
795DM-1630New RFCs should result in dm-devel E-mails and HipChat postingsEmail notices of new RFCs filed with a DM component go to dm-devel Email notices of new RFCs filed with a DM component go to Data Management chat room Email notices of all new RFCs go to Bot: RFC room 1
796DM-1632Build 2014_11 Qserv releaseThe title says it all. Please open ticket for next release when closing this one. Tasks to do: - publish last buildbot build under a temporary eups-tag ("qserv-dev")and test it, if it works fine: - create git-tags for Qserv and dependencies - publish the release with eups-tags "qserv" and "YYYY_MM" - generate and publish the doc for release "YYYY_MM" - update release number in Qserv code and set "YYYY_MM+1" as release in dev and "YYYY_MM" as stable release (update {{admin/bin/qserv-version.sh}}, {{doc/source/conf.py}}, {{doc/source/toplevel.rst}}) - generate and publish the doc for release "YYYY_MM+1" - look at the doc - commit {{admin/bin/qserv-version.sh}}, {{doc/source/conf.py}}, {{doc/source/toplevel.rst}} with current ticket number This procedure should be validated and documented.1
797DM-1633Update build process for Firefly opensourceUpdate build and deploy related scripts to reflects the changes affected by open sourcing of Firefly.7
798DM-1635Remove redundant CORS headers from Firefly's http responseMake sure CORS related headers are not sent when the Origin header is missing. Firefox does not like it.1
799DM-1636Research popular web development technologiesResearch popular web development technologies to prepare Firefly for the future with the focus on front-end framework. 6
800DM-1641Document "getting started" procedure for new stack developersDocument a procedure for building the stack on a new system in a way that is appropriate for both project members and external contributors. This can be linked as a "getting started" guide from http://dm.lsst.org/.5
801DM-1642LOE - Week ending 12/5/14NULL8
802DM-1645preparation work for FIrefly open source1. discuss with IPAC director and managers to open source Firefly 2. study the major open source license,Apache, GPL, BSD 3-clause, MIT. 3. final decision: BSD-3 clause6
803DM-1647Use an OpenStack instance to run an HTCondor Central managerUse an OpenStack instance to run an HTCondor Central manager4
804DM-1648W16 Research technologies for Data AccessResearch technologies potentially useful for Data Access / Database. This epic covers Apache Mesos, Google Kubernetes, MaxScale, Serf, Consul, and MemSQL.38
805DM-1652The existing FITS reader class needs to be refactored to improve the performance(1)- checkout the classes - understand the FITS standard and current implementation16
806DM-1653Extend data loading script to support multi-node setupImplement simplest use case for data loading with one or more worker database separate from czar database. Simplest means minimal functionality in what concerns access to workers, just assume for now that we can connect to every worker directly using regular TCP connection. It should be possible to just add a list of worker nodes as an option to loader script and send the chunks in some random order to the workers in that list. Of course chunks for different tables should end up on the same host, so some form of chunk management is needed (use for now whatever is defined in CSS doc on trac).8
807DM-1655Working with SLAC on definition of metadata storeFollow up metadata store schema development to ensure SUI will be able to use it. Define the fields that should go into Data Definition table. Define the fields that must be present in the image metadata table, which SUI will be searching.2
808DM-1656hipchat support for maigically urlifying docushare documentsIt would be generally use full if references to official documents in hipchat (or it's successor) automagically generated urls for official document handles. Eg: Document-1234, LSE-1231
809DM-1657LOE - Week ending 12/12/14NULL8
810DM-1658Add git bisect tool for Qserv repos{code:bash} fjammes@clrlsst-dbmaster-vm:~/src/qserv (u/fjammes/DM-627 $%) $ qserv-test-head.sh -h Usage: qserv-test-head.sh [options] Available options: -h this message -q quick: only rebuild/install new Qserv code, and perform test case #01 Rebuild from scratch, configure and run integration tests against a Qserv git repository. Pre-requisite: source loadLSST.bash setup qserv_distrib -t qserv setup -k -r ${QSERV_SRC_DIR} Can be used with 'git bisect' : cd ${QSERV_SRC_DIR} git bisect start git bisect bad git bisect good git-commit-id git bisect run /home/fjammes/src/qserv_testdata/bin/qserv-test-head.sh {code} Code is in DM-627 ticket branch.2
811DM-1659Aperture Flux back into an abstract classThe last change to ApertureFlux to make it work with the new C++ design changed ApertureFluxAlgorithm into an instantiatable class. However, I have now figured out how to make this work with SWIG while still allowing measure and fail to be defined by default at the ApertureFlux level.. So this issue is to put things back in order.1
812DM-1660Statistics tests use a constant imageI just noticed that the tests for Statistics (clipped mean etc.) use a constant image. We should be testing a Gaussian field (although that makes the tests a little trickier) 2
813DM-1661czar log4cxx link/load bugUnder ubuntu 14.04 (at least), the czar falls over at load time with an unresolved sym for typeinfo for log4cxx::helpers::ObjectPtrBase while loading the css python wrapper shared lib.2
814DM-1662Make qserv dependencies build on OS X with clangFix anything necessary for qserv dependencies to build on OS X with clang. Note -- making qserv itself build is more complicated and may require a separate ticket.4
815DM-1663fix dependency problems in obs_subaru scons scriptsWhen building obs_subaru with -j4, it often tries to build files related to the defects before the main Python module is built, resulting in import errors (because the scripts it invokes depend on the main Python module). We need to rewrite the SCons scripts to ensure this dependency is captured. A preliminary look indicated that this is not entirely trivial, and I'll have to remind myself a bit of how some things in SCons work to get it done, so I'm putting this off for a future sprint. In the meantime, the workaround is to build obs_subaru with no parallelization.2
816DM-1664Understand historical written docushare materials dealing with the operational security environment.researched the docushare traversing the plans for materials to be embedded in the OCS and similar systems, as well as extant operational plans. The goal was to understand how to separate the the security responsibilities of development, what security constraints ought to be but on items that are delivered, and what to tell the camera and telecscope teams to mender ea smooth integration with IT security systems upon delivey and integration of their sub systems in Chile.3
817DM-1667Install PgMySQL and use to connect to local Qserv.Used "pip" to install it. "Conda" should work as well. Therefore, it should be easy to make it part of the delivered system: VM, container, tar file, after the fact download, etc. It has documentation, uses the MIT license, under active development and available from PyPI. DB connection is straight forward and requires little experience to get meaningful work done.2
818DM-1668Create SQL code to read Qserv into Python Pandas data frameThis works well, at least for a simple case. You can move directly from a query statement to a Pandas data frame for analysis in just a few lines of code. Here is the start of an iPython Qserv session showing how easy it is. In [6]: import pandas as pd In [7]: import pymysql as db In [8]: conn = db.connect(host='lsst-db1.ipac.caltech.edu',port=4040, user='qsmaster', passwd='', db='LSST') In [11]: df = pd.read_sql("select deepCoaddId, tract, patch, ra, decl from DeepCoadd", conn) In [12]: df Out[12]: deepCoaddId tract patch ra decl 0 26607706 0 406,11 0.669945 1.152218 1 26673242 0 407,11 0.449945 1.152218 2 26804242 0 409,2 0.011595 -0.734160 3 26673154 0 407,0 0.449945 -1.152108 … 2
819DM-1669Explore queries for Qserv database.Use a local database here at IPAC with 5 Qserv tables in it. Looked at several Python query interfaces. Used the pymysql interface for testing because it's pure Python and because I found reports suggesting it was almost as fast as the mysqldb interface that requires C language libraries. Ad hoc queries can be constructed in three lines of code, so useable in a science environment. Found a couple of bugs in Qserv that were reported.6
820DM-1670Begin looking at how Python Pandas can be used for LSST data analysis.Pandas is well integrated with the other parts of SciPy: numpy, matlibpy, etc. It’s a good candidate for data analysis, especially where time series are involved. However, there are no multidimensional columns, poor metadata support for FITS files and a need to use masks instead of NaN values. These may, or may not, be problems. There is a 400 page book about Pandas, so it will take some further time to learn its value, especially with astronomical data in different situations.5
821DM-1673Allow SWIG override for broken SWIG installationsDependency on SWIG 2.0+ was introduced into Qserv, and this broke Qserv building on systems relying on SWIG 1.3.x. This ticket introduces basic code to override SWIG_LIB on those systems to allow use of the broken installation (some SWIG search paths are fixed during its build process otherwise).1
822DM-1674Data ingest scripts cleanupNULL10
823DM-1675Identify dead codeNULL1
824DM-1676Write documentation for SSI interfaceNULL5
825DM-1677multi-error utility classQueryAction::Impl currently has a handful of private members/methods related to maintaining a collection of errors that occurs while processing a query (_addErrorMsg, IntString, IntStringVectory, _errors, etc.) It would be useful to split this stuff out into a separate, re-usable utility class, and extend, then extend with some additional functionality (output stream operator, subclass from std::exception, maybe capture __LINE__ and __FILE__, integrate with logging, etc.) [Fabrice: discuss requirements and basic design w/ Fritz and/or Daniel]10
826DM-1685Minor bug in a testtests/centroid.py has a bug in testMeasureCentroid: "c" is undefined in the following bit of code: {code} if display: ds9.dot("x", c.getX(), c.getY(), ctype=ds9.GREEN) {code}1
827DM-1692Implement "unlimited" result size handlingDM-854 exposed an issue in handling large results. Result rows are returned from worker to czar in protobufs messages. However, protobufs messages should not be larger than some number of megabytes, according to protobufs documentation. IOW, protobufs is not designed to handle messages on the order of hundreds of megabytes. There may be some code in the protobufs implementation that does not scale beyond messages of a few megabytes. Hence, in order to send larger amounts of result rows, we need to use multiple messages. The current protobufs definition for result messages includes a placeholder for chaining result messages, but there is no code on the czar or worker that implements result chaining. The scope of this ticket is to implement message chaining for results on the worker and on the czar, in such a way that it places no limits on the overall number of result rows (if there is a limit, it should be no smaller than quadrillions and be well-documented). 15
828DM-1694Define interfaces for Data Access ServicesNULL8
829DM-1695Implement interfaces for Data Access ServicesImplement proof of concept, skeleton of the prototype. The work will continue in follow up stories in February and in S15.8
830DM-1696Integrate image cutout service interfaces with butlerNULL5
831DM-1697Finish image cutout service implementationDefine appropriate interfaces and connect them with the RESTful API (see DM-1695).9
832DM-1698Finish metadata store prototype* A quick proof-of-concept prototype of loading tool for loading database-information into metadata store. * Handling mysql credentials through auth file in home dir instead of hardcoded values.4
833DM-1700Create read only OpenStack volume and execute processing scenarioCreate read only OpenStack volume and execute processing scenario4
834DM-1701Clone OpenStack volume for use against multiple instancesClone OpenStack volume for use against multiple instances2
835DM-1702Examine fqdn/hostname assignment for OpenStack instanceExamine fqdn/hostname assignment for OpenStack instance4
836DM-1703S15 Implement Database & Table MgmtContinuation of DM-1036, making the code for managing distributed databases and tables more feature reach, including features such as deletion.53
837DM-1704S15 Run Large Scale Qserv TestsRun large scale tests to uncover unexpected issues and bottlenecks.48
838DM-1705S15 Tune QservFix scalability and performance issues uncovered through large scale tests DM-1704100
839DM-1706S15 Analyze Qserv PerformanceFinal analysis of Qserv performance, measure KPIs. Based on LDM-240, we are aiming to demonstrate: * 50 simultaneous low volume queries, 18 sec/query * 5 simultaneous high-volume queries, 24 h/query * data size: 10% of DR1 level. * Continuous running for 24 h with no software failures. 5
840DM-1707S15 Refactor QservOngoing refactoring of Qserv - code cleanup, tightening interfaces etc.100
841DM-1708W16 Improve Query Coverage in QservCurrently Qserv supports only a limited subset of queries. We need to make sure it supports all queries that users need to run.46
842DM-1709Implement result sorting for integration testsWe need to be able to sort results, because we can't always rely on ORDER BY. So we need a formatting per query in the integration tests (sort result for some, don't sort for others etc.) The following queries have been disabled because we don't have result sorting, so once it is implemented, we will need to re-enabled them prior to closing this ticket: {code} case02/queries/0003_selectMetadataForOneGalaxy_withUSING.sql case02/queries/3001_query_035.sql case02/queries/3008_selectObjectWithColorMagnitudeGreaterThan.sql case02/queries/3011_selectObjectWithMagnitudes.sql case02/queries/3011_selectObjectWithMagnitudes_noalias.sql {code}8
843DM-1710ValueError in lsst.afw.table.Catalog.extend(){code} from lsst.afw.table import BaseCatalog, Schema s = Schema() c1 = BaseCatalog(s) c2 = BaseCatalog(s) c1.extend(c2) {code} The above fails, saying: {code} Traceback (most recent call last): File "test.py", line 7, in <module> c1.extend(c2) File "/Users/jds/Projects/Astronomy/LSST/stack/DarwinX86/afw/10.0+3/python/lsst/afw/table/tableLib.py", line 6909, in extend _tableLib.BaseCatalog_extend(self, iterable, deep) ValueError: invalid null reference in method 'BaseCatalog_extend', argument 3 of type 'lsst::afw::table::SchemaMapper const &' {code}1
844DM-1711S15 Improve MetaServ: RESTful, Basic Image Search, DDL, Config FilesImplement beta version of the Metadata Service. This version will support basic image search, DDL, config files, and RESTful interfaces for MetaServ and Database (Qserv).57
845DM-1712S15 Add Support for Image Stitching and Rotation, RESTful APIsImplement image stitching and rotating, including RESTful APIs.35
846DM-1713S15 Image & File Archive v2System for tracking existing image data sets integrated with metadata services.5
847DM-1714Integrate MetaServ with Schema BrowserSchema browser displays detailed info about schema, including custom fields like UCD, units etc. This information is stored as comments embedded in the master version of the schema (in "cat" repo). Currently we are generating ascii from the master schema for schema browser, and we load it into mysql, then schema browser reads it from mysql. This story involves changing schema browser such that it will read the schema information directly from MetaServ.6
848DM-1715Disable query killingApparently killing a query through Ctrl-C is confusing xrootd. Disable query killing (which seems to be only partly implemented).1
849DM-1716Implement query killing through Ctrl-CNeed to properly implement query killing through Ctrl-C16
850DM-1720Make secondary index for director table onlyFollowing discussion on qserv-l, we only need to generate "secondary" index for director table, no other table is supposed to have it. Need to modify data loader to recognize which table is director table and generate index only for that table. 2
851DM-1721S15 Improve Query Coverage in QservQuery coverage in the qserv integration testing is very limited, we have been turning off more and more queries and we were making the qserv code and the data loader more strict. This epic covers work (fixes and improvements) related to * re-enabling test queries marked as "fixme" (when it make sense, some queries are for features that are not implemented yet) * adding more queries to test interfaces and features that are implemented but are not currently tested.40
852DM-1722LOE - Week ending 12/19/14The System Administration team at NCSA worked on the following LOE tasks this week: - RMA'ed RAID card for lsst-dev <https://jira.ncsa.illinois.edu/browse/LSST-599> - Updated user's updated public ssh keys <https://jira.ncsa.illinois.edu/browse/LSST-614> - Rebuilt failed drive in lsst-dbdev2 <https://jira.ncsa.illinois.edu/browse/LSST-610> - Increasing drive size of lsst-eval <https://jira.ncsa.illinois.edu/browse/LSST-611> - Researched & repaired lsst20 NFS issues <https://jira.ncsa.illinois.edu/browse/LSST-591> - Upgraded lsst-xfer to 10G networking14
853DM-1725stack build fails on gcc 4.8 with opt=3The stack fails to build with gcc 4.8, with a test failure in meas_base (though a similar problem on the HSC fork suggests the problem is actually in afw). [~darko] reports that on OpenSuse 13.1, the failure goes away when compiling with opt=1 instead of the default opt=3, indicating that the problem is overly aggressive optimization. This, and the fact that a traceback of the HSC-side failure implicates MaskedImage::getXY0, leads me to guess that something is going wrong with the alignment of the Eigen data members in afw::geom::Point. Until that theory is disproven, this probably belongs in my court, though I'd be happy to let someone steal it from me if they're interested in working on it.4
854DM-1726Stabilize Firefly Repository- Make GitHub firefly ready but not public - Add firefly to LSST git - Clean up any lingering issues from separation - break up IRSA Viewer from Firefly Viewer14
855DM-1727Research Javascript Frameworks: Work toward future proposalTake prior research and come up with rough firefly migration proposal. Include how to use a hybrid system for foreseeable future. Write some prototype code.16
856DM-1731fix table file handling of MANPATH in dependenciesAs discussed on DM-1220, the table files for: - mysqlproxy - protobuf - lua - expat should have the MANPATH entry removed entirely, while: - xrootd should have ":" added to the end of its MANPATH value, to allow the default paths to be searched as well.1
857DM-1732Fix error on duplicate result_id_m table while launching qserv integration testsNext command: {code} qserv-check-integration.py --case=01 --load; qserv-check-integration.py --case=02 --load {code} Fails, most of the time, with next error in logs: {code} qserv@clrinfoport09:~/src/qserv (u/fjammes/DM-627 *+)⟫ cat ~/qserv-run/2014_12/var/log/qserv-czar.log | grep result_1211906_m 0103 16:38:18.576 [0x7f23c4ff9700] DEBUG root (build/rproc/InfileMerger.cc:432) - InfileMerger create table:CREATE TABLE qservResult.result_1211906_m (`ra` DOUBLE) 0103 16:38:18.661 [0x7f23c4ff9700] DEBUG root (build/rproc/InfileMerger.cc:354) - InfileMerger sql success: CREATE TABLE qservResult.result_1211906_m (`ra` DOUBLE) 0103 16:38:18.661 [0x7f23c4ff9700] DEBUG root (build/rproc/InfileMerger.cc:445) - InfileMerger table qservResult.result_1211906_m is ready 0103 16:38:18.686 [0x7f23c77fe700] INFO root (build/rproc/InfileMerger.cc:299) - Merging w/CREATE TABLE qservResult.result_1211906 SELECT ra AS ra FROM qservResult.result_1211906_m ORDER BY ra 0103 16:38:18.720 [0x7f23c77fe700] DEBUG root (build/rproc/InfileMerger.cc:354) - InfileMerger sql success: CREATE TABLE qservResult.result_1211906 SELECT ra AS ra FROM qservResult.result_1211906_m ORDER BY ra 0103 16:38:18.720 [0x7f23c77fe700] INFO root (build/rproc/InfileMerger.cc:305) - Cleaning up qservResult.result_1211906_m 0103 16:38:18.721 [0x7f23c77fe700] INFO root (build/rproc/InfileMerger.cc:317) - Merged qservResult.result_1211906_m into qservResult.result_1211906 0103 16:38:24.716 [0x7fe3cf7fe700] DEBUG root (build/rproc/InfileMerger.cc:432) - InfileMerger create table:CREATE TABLE qservResult.result_1211906_m (`QS1_COUNT` BIGINT(21)) 0103 16:38:24.717 [0x7fe3cf7fe700] ERROR root (build/rproc/InfileMerger.cc:351) - InfileMerger sql error: Error applying sql. Error 1050: Table 'result_1211906_m' already exists Unable to execute query: CREATE TABLE qservResult.result_1211906_m (`QS1_COUNT` BIGINT(21)) 0103 16:38:24.717 [0x7fe3cf7fe700] ERROR root (build/rproc/InfileMerger.cc:438) - InfileMerger error: Error creating table (qservResult.result_1211906_m) 0103 16:38:34.672 [0x7fe3deffd700] INFO root (build/rproc/InfileMerger.cc:299) - Merging w/CREATE TABLE qservResult.result_1211906 SELECT SUM(QS1_COUNT) AS OBJ_COUNT FROM qservResult.result_1211906_m 0103 16:38:34.673 [0x7fe3deffd700] ERROR root (build/rproc/InfileMerger.cc:351) - InfileMerger sql error: Error applying sql. Error 1054: Unknown column 'QS1_COUNT' in 'field list' Unable to execute query: CREATE TABLE qservResult.result_1211906 SELECT SUM(QS1_COUNT) AS OBJ_COUNT FROM qservResult.result_1211906_m 0103 16:38:34.673 [0x7fe3deffd700] INFO root (build/rproc/InfileMerger.cc:305) - Cleaning up qservResult.result_1211906_m 0103 16:38:34.674 [0x7fe3deffd700] INFO root (build/rproc/InfileMerger.cc:317) - Merged qservResult.result_1211906_m into qservResult.result_1211906 {code} So it seems test case #01 create table .result_1211906_m, and then test case #02 try to re-use this name for an other query. Qserv result tables aren't cleaned (here Qserv has be stopped): {code} ls ~/qserv-run/2014_12/var/lib/mysql/qservResult/ db.opt result_1211336_m.MYI result_1211340_m.MYI result_1211343_m.MYI result_1211346_m.MYI result_1211382_m.MYI result_1211385_m.MYI result_1211902_m.MYI result_1211905_m.MYI result_1211334_m.frm result_1211337_m.frm result_1211341_m.frm result_1211344_m.frm result_1211347_m.frm result_1211383_m.frm result_1211386_m.frm result_1211903_m.frm result_1211906_m.frm result_1211334_m.MYD result_1211337_m.MYD result_1211341_m.MYD result_1211344_m.MYD result_1211347_m.MYD result_1211383_m.MYD result_1211386_m.MYD result_1211903_m.MYD result_1211906_m.MYD result_1211334_m.MYI result_1211337_m.MYI result_1211341_m.MYI result_1211344_m.MYI result_1211347_m.MYI result_1211383_m.MYI result_1211386_m.MYI result_1211903_m.MYI result_1211906_m.MYI result_1211335_m.frm result_1211339_m.frm result_1211342_m.frm result_1211345_m.frm result_1211381_m.frm result_1211384_m.frm result_1211901_m.frm result_1211904_m.frm result_1211335_m.MYD result_1211339_m.MYD result_1211342_m.MYD result_1211345_m.MYD result_1211381_m.MYD result_1211384_m.MYD result_1211901_m.MYD result_1211904_m.MYD result_1211335_m.MYI result_1211339_m.MYI result_1211342_m.MYI result_1211345_m.MYI result_1211381_m.MYI result_1211384_m.MYI result_1211901_m.MYI result_1211904_m.MYI result_1211336_m.frm result_1211340_m.frm result_1211343_m.frm result_1211346_m.frm result_1211382_m.frm result_1211385_m.frm result_1211902_m.frm result_1211905_m.frm result_1211336_m.MYD result_1211340_m.MYD result_1211343_m.MYD result_1211346_m.MYD result_1211382_m.MYD result_1211385_m.MYD result_1211902_m.MYD result_1211905_m.MYD {code} Changing _idCounter to next value in appInterface.py: {code:python} self._idCounter = int(time.time() % (60*60*24*365) * 10) {code} solves the problem, but a deeper explanation will allow to bring a more robust fix.8
858DM-1733Build 2015_01 Qserv releaseSee https://confluence.lsstcorp.org/display/DM/Qserv+Release+Procedure for recipe.1
859DM-1734refactor fftools viewer to have derived viewers / start LSST SUI git repoDo the following: - refactor fftools to allow for specialized viewers. - make a generic fftools viewer. - make an irsaviewer package in ife-new that will build. - generalize the catalog search and add factories to access the lsst search process. 10
860DM-1735Have newinstall.sh check itself against distrib versionWe want to alert people who are just using a newinstall.sh they have lying around (old or hacked up or...) that they are not using the official server version. 1
861DM-1736Migrate qserv modules (python code) to new logging systemNULL8
862DM-1738deblender artifacts in noise-replaced imagesWe still see noise artifacts in some deblended images on the LSST side when running the M31 HSC data. They look like the result of running NoiseReplacer on HeavyFootprints in which the children can extend beyond the parents. This was fixed on the HSC side on DM-340 (before the HSC JIRA split off), and I *think* we just need to transfer the fix to LSST.1
863DM-1739Catch-all epic for essential fixes during DM-W15-4NULL10
864DM-1743CSV reader for Qserv partitioner doesn't handle no-escape and no-quote options properlyBoth the no-quote and no-escape CSV formatting command line options should not have a default value, as specifying any value turns off field escaping and quoting. Furthermore, when quoting is turned off, the reader incorrectly treats embedded NUL characters as a quote character.1
865DM-1744Fix SWIG_SWIG_LIB empty list default valueSee Serge message to Qserv-l "xrootd premature death": {quote} However, there are bigger problems. First of all, master doesn’t build for me. I get this error: File "/home/lsstadm/qserv/SConstruct", line 104: env.Alias("dist-core", get_install_targets()) File "/home/lsstadm/qserv/SConstruct", line 90: exports=['env', 'ARGUMENTS']) File "/home/lsstadm/stack/Linux64/scons/2.3.0+1/lib/scons/SCons/Script/SConscript.py", line 609: return method(*args, **kw) File "/home/lsstadm/stack/Linux64/scons/2.3.0+1/lib/scons/SCons/Script/SConscript.py", line 546: return _SConscript(self.fs, *files, **subst_kw) File "/home/lsstadm/stack/Linux64/scons/2.3.0+1/lib/scons/SCons/Script/SConscript.py", line 260: exec _file_ in call_stack[-1].globals File "/home/lsstadm/qserv/build/SConscript", line 39: canBuild = detect.checkMySql(env) and detect.setXrootd(env) and detect.checkXrootdLink(env) File "/home/lsstadm/qserv/site_scons/detect.py", line 225: xrdLibPath = findXrootdLibPath("XrdCl", env["LIBPATH"]) File "/home/lsstadm/qserv/site_scons/detect.py", line 213: if os.access(os.path.join(path, fName), os.R_OK): File "/home/lsstadm/stack/Linux64/anaconda/2.1.0/lib/python2.7/posixpath.py", line 77: elif path == '' or path.endswith('/'): which is caused by the fact that env[“LIBPATH”] looks like: [[], '/home/lsstadm/stack/Linux64/antlr/2.7.7/lib', '/home/lsstadm/stack/Linux64/boost/1.55.0.1.lsst2/lib', '/home/lsstadm/stack/Linux64/log4cxx/0.10.0.lsst1+2/lib', '/home/lsstadm/stack/Linux64/xrootd/4.0.0rc4-qsClient2/lib', '/home/lsstadm/stack/Linux64/zookeeper/3.4.6/c-binding/lib', '/home/lsstadm/stack/Linux64/mysql/5.1.65.lsst1/lib', '/home/lsstadm/stack/Linux64/protobuf/2.4.1/lib', '/home/lsstadm/stack/Linux64/log/10.0+3/lib'] The first element is [], which comes from https://github.com/LSST/qserv/blob/master/site_scons/state.py#L173 where a PathVariable called SWIG_SWIG_LIB is given a default value of []. I can fix the build by changing the default to an empty string… but I don’t know enough scons to say whether that’s the right thing to do. Can one of the scons gurus confirm that’s the right fix? {quote}1
866DM-1753make lsst-sui & firefly git repo / make an lsst viewerNULL4
867DM-1754Update auto build tool to work with new split repositories After the repository split, changes are required to get the auto build tool to work properly. Firefly and Firefly based applications are built using Gradle system. 8
868DM-1755Create an integration test case with GB-sized dataIt's difficult to load manually data in Qserv, so a way to do that is to use integration test framework to automatically do this. Big data file won't be stored in git, but the user wil lhave to retrieve them manually, and the test case won't be executed by integration tests.4
869DM-1761Provide input data for exampleCmdLineTask.py{{pipe_tasks/examples/exampleCmdLineTask.py}} reads data from a repository. The comments in {{pipe_tasks/python/lsst/pipe/tasks/exampleCmdLineTask.py}} suggest that {code} # The following will work on an NCSA lsst* computer: examples/exampleCmdLineTask.py /lsst8/krughoff/diffim_data/sparse_diffim_output_v7_2 --id visit=6866601 {code} There are a few problems with that: * External contributors don't have access to {{lsst*}}; * Even though that data exists now, it's unclear how long it will remain there, or what steps are being taken to preserve it; * The mention of this data is fairly well buried -- it does appear in the documentation, but it's certainly not the first thing a new user will stumble upon. At least the first two points could be addressed by referring to a publicly available data repository. For example, the following works once {{afwdata}} has been set up: {code} examples/exampleCmdLineTask.py ${AFWDATA_DIR}/ImSim --id visit=85408556 {code} Although this has the downside of only providing a single image.1
870DM-1762Export SUI data (DC_W13_Stripe82_subset)- import sui.sql.bzip2.out (produced by Serge) into MySQL for DeepSource and DeepForcedSource tables: - remove columns chunkId and subChunkId for each chunk table - merge all chunk table into the main table - join DeepSource and DeepForcedSource to add coordinates of DeepSource (director) object in DeepForcedSource table. then dump DeepSource and DeepForcedSource to files DeepSource.csv and DeepForcedSource.csv {code:sql} SELECT f.*, COALESCE(s.ra, f.ra), COALESCE(s.decl, f.decl) FROM DeepForcedSource f LEFT JOIN DeepSource s ON (f.deepSourceId = s.deepSourceId) INTO OUTFILE '/db1/dump/DeepForcedSource.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; {code} - Load this file using Qserv loader. A sample should be made and tested first to validate this procedure. This sample could be added in qserv_testdata3
871DM-1764overhaul slot and alias systemWhile working on DM-1218 and DM-464, I've grown quite dissatisfied with the current state of the slot and alias mechanisms, and we now have a concrete proposal for larger-scale changes on RFC-11. Unfortunately, I don't think we'll be in a good position to do much about this until we've completed the transition to meas_base and removed the old measurement framework in meas_algorithms.6
872DM-1765move SourceRecord/Table/Catalog to meas_baseWe can make address a lot of dependency issues if we move the Source classes to meas_base, because we'll no longer have low-level code (e.g. afw::table persistence) in the same module as very high-level code (e.g. slots). It will also put all the slot code in the same place, instead of spreading it across two pacakges. This should be straightforward, except that we'll have a lot of downstream code to (trivially) change, and there's a good chance Swig will get confused somewhere along the way.2
873DM-1766Remove in-memory support of old-version afw::table objectsAfter removing the old measurement framework in meas_algorithms, we should also end support for version=0 Schemas in memory, and instead convert version=0 Schemas to version 1 when we unpersist them.11
874DM-1767afw::table - post-transition improvementsBreakdown: jbosch 40%; swinbank 60%23
875DM-1769Measurement - Framework ImprovementsAdd new features in meas_base that are desirable, but not required to replace functionality in meas_algorithms. Breakdown: pgee 70%; jbosch 30%60
876DM-1770Support DDL in MetaServ - designDDL information is embedded as comments in the master version of the schema (in "cat" repo). Currently we are only using it for schema browser. This story involves designing the procedure involving loading DDL information into MetaServ. We need to be ready to support a variety of scenarios: * we are getting already preloaded database, need to just load metadata about it to metaserv (we might have the original ascii file with extra information, or not) * we are starting from scratch, need to initialize database (including loading schema), and need to load the information to the metaserv * we already have the database and metadata in metaserv, but we want to change something (eg. alter table, or delete table, or delete database).2
877DM-1771move executionOrder from plugin config class to plugin classWe originally put the executionOrder parameter (which determines when a plugin is run, relative to others), in the config object, simply because that's where it was in the old framework. But it's really not something that should be configurable, as it depends only on the inputs the algorithm needs, which don't change.1
878DM-1772Create a search processor to do cone/box search on a QSERV catalogCreate a search processor which accepts cone and box spatial constraints, queries a catalog, stored on QSERV (DeepSource), and returns the relevant rows as an IPAC table or RawDataSet. The implementation is querying DeepSource catalog using qserv_areaspec_circle and qserv_areaspec_box spatial restrictors. 11
879DM-1773Read SUI requirements, send a list of questions to the group scientistRead the requirements document on Archive Browser and Query Tools, make a record of unclear items, send questions to our scientist (D. Ciardi) 5
880DM-1774Add support for running unit tests in qserv/adminThis came up during review of DM-370: "We do not run tests scripts in admin/ during regular build, SConscript in admin/ does not support that unfortunately." This story involves tweaking SConscript to enable running unit tests automatically.1
881DM-1775Setup work environment / test builds for refactored repositoriesAfter the repository was split into firefly and new-ife, it was necessary to understand the changes, check for inconsistencies, test builds, set up new IDEA project, etc. 3
882DM-1776Obtain and use catalog dd (data definition)Get catalog metadata, which should include column description, units, and type. Use it in tool tips and possibly to create flexible constraints. A temporary solution is to get metadata from an internal lsst_schema_browser_S12_lsstsim database on lsst-db.ncsa.illinois.edu A permanent solution would be querying catalog metadata from metadata store.10
883DM-1777XYPlotter should be caching and restoring plot metadataFor efficiency, XYPlotter is designed to create up to 4 cards. When the card limit is exceeded, a previously created card is reused to plot catalog data for the current catalog. When card is reused the previous plot metadata (like column selections, grid option, etc.) are lost.4
884DM-1778Remove optimisation flag management in partition SConstruct- eups build with -g and -O3 by default. - Developpers can build their sources with next options: scons debug=false opt=3 - Nevetheless partition SConstruct add -O2 option if debug is disabled, which is orthogonal. 2
885DM-1782The existing FITS reader class needs to be refactored to improve the performance(2)- FITS reader class refactoring, improve readability - validation of the new code against the old one - unit test - performance improvement recording if possible16
886DM-1783fix faint source and minimum-radius problems in Kron photometryThis transfers some improvements to the Kron photometry from the HSC side: - HSC-983: address failures on faint sources - HSC-989: fix the minimum radius - HSC-865: switch to determinant radius instead of semimajor axis - HSC-962: bad radius flag was not being used - HSC-121: fix scaling in forced photometry The story points estimate here is 50% of the actual effort, as the work (already done) also benefited HSC.5
887DM-1784Fix errors in parsing or rendering nested expressionsQserv has errors rendering nested expressions in predicates of the WHERE clause. It is unclear whether the problem is in constructing the predicate representation or in rendering the representation (or both). Example: {code} SELECT o1.objectId FROM Object o1 WHERE ABS( (scisql_fluxToAbMag(o1.gFlux_PS)-scisql_fluxToAbMag(o1.rFlux_PS)) - (scisql_fluxToAbMag(o1.gFlux_PS)-scisql_fluxToAbMag(o1.rFlux_PS)) ) < 1 {code} Yields: {code} SELECT o1.objectId FROM LSST.Object_100 AS o1 WHERE ABS((VALUE_EXP FACTOR FUNCTION_SPEC scisql_fluxToAbMag(VALUE_EXP FACTOR COLUMN_REF o1.gFlux_PS)-FACTOR FUNCTION_SPEC scisql_fluxToAbMag(VALUE_EXP FACTOR COLUMN_REF o1.rFlux_PS)))<1 {code} I probably left out a more general implementation one/both of those parts of query parsing/analysis.4
888DM-1785Add rotAngle to baseline schemaAdd "rotAngle DOUBLE" to every table that has image ra/decl. 1
889DM-1786Implement using multiple disk spindlesQserv should be able to take advantage of multiple disk spindles (JBOD-type architecture). In practice that means either relying on something like native mysql partitioning, or tweaking loader so that it can distribute chunks across multiple disks (and patch symlinks in mysql data_dir). 20
890DM-1787OpenStack automation via Python scripts : Launch an InstanceIn our introductory work with OpenStack we have been utilizing the Horizon GUI interface for first steps, followed by the use of command line tools (the 'CLI') (e.g., nova, cinder, etc) as shown in DM-1334 DM-1700 , DM-1701. While it is possible to write automation scripts that utilize the CLI, an approach based on 'pure' Python scripting would fit more seamlessly into the LSST software development process. Enabling OpenStack automation via Python offers the opportunity to integrate provisioning of resources into the overall flow of LSST workflow & processing (e.g., DRP.) The OpenStack services expose native Python APIs that expose the same feature set as the command-line tools. The required python packages (python-keystoneclient, python-novaclient, ..) are installed on the head node 'vlad-mgmt' of the NCSA ISL OpenStack, and so initial Python scripting can be executed/tested there. A first Python script will perform required authentication and launch an instance. 4
891DM-1788OpenStack automation via Python scripts : Software installation/test on an LSST nodeThe set of packages that will enable us to write against the native Python APIs of the OpenStack services is {code} python-keystoneclient python-glanceclient python-novaclient python-quantumclient python-cinderclient python-swiftclient {code} We begin testing these in DM-1787 on the NCSA OpenStack head node, but eventual use within LSST orchestrating workflow would entail these being installed on LSST nodes in the LSST stack. In this issue we perform a basic installation of these packages into the system space on an LSST node/VM for testing. These are managed in github, and we install these via 'pip install' onto an LSST VM for initial tests.4
892DM-1789Experiment with afwtable, meas_base, pipe_{tasks, base}NULL4
893DM-1790Produce detailed prototype & accompanying documentationNULL4
894DM-1791Produce straw-man prototypeNULL3
895DM-1792Update documentation and automatic install script w.r.t. new newinstall.sh scriptnewinstall.sh script has evolved and breaks Qserv install procedure.1
896DM-1794Pull distEst package into obs_subaruReducing HSC data requires an estimate of the distortion, which is provided by the HSC package distEst. This can be pulled into obs_subaru to consolidate code and reduce dependencies. I propose to treat distEst as legacy code, which means I will pull it into obs_subaru without major changes to the code style.6
897DM-1795Use anonymous NCSA rsync server to distribute large test datafiles.DM-1755 has been done before this feature was available. It uses rsync over ssh which require use to have an ssh-key on lsst-dev. NSCA rsync server can now be accessed with next syntax: {code:bash} rsync -av lsst-rsync.ncsa.illinois.edu::qserv/qserv_testdata/datasets/case04/data/DeepSource.csv.gz . # LIST FILES AVAILABLE IN THE MODULE NAMED "qserv" rsync lsst-rsync.ncsa.illinois.edu::qserv # To add content to this module/group, you can copy files into the following path: /lsst/rsync/qserv/ {code} rsync over ssh feature should be kept, in order to distribute private data are distributed.4
898DM-1796Improve test coverage for case04Most of queries used in GB-sized case04 return empty results. These queries should be added: {code:bash} fjammes@lsst-db2:~/src/qserv_testdata (u/fjammes/DM-1755) $ mysql --host 127.0.0.1 --port 4040 --user qsmaster qservTest_caseSUI_qserv -e "SELECT count(*) FROM DeepForcedSource" +----------------+ | SUM(QS1_COUNT) | +----------------+ | 33349940 | +----------------+ fjammes@lsst-db2:~/src/qserv_testdata (u/fjammes/DM-1755) $ mysql --host 127.0.0.1 --port 4040 --user qsmaster qservTest_caseSUI_qserv -e "SELECT * FROM DeepForcedSource LIMIT 1" {code} But, even better, SUI team could provide some more interesting query to Qserv team in order to improve case04 quality.3
899DM-1797Package flaskThe Data Access Webservice APIs are relying on flask, so we need to package flask according to the LSST standards. For my initial testing, I just run "sudo aptitude install python-flask". 1
900DM-1798Regression testing of AP SimulatorRun the AP simulator to make sure that none of the changes to the ctrl_events package break anything.1
901DM-1799Regression testing of OrcaDo some test runs using Orca to make sure Orca still works after the the changes to ctrl_events.1
902DM-1802remove unused local typedefsgcc 4.8 now warns about locally-defined typedefs that aren't used. We have a few of these in ndarray and afw::gpu that should be removed.1
903DM-1803S15 Explore Qserv AuthorizationExplore authorization centrally: use information generated by parser. Either generate dummy query and run on mysql that runs near czar, or use info produced by parser to determine if user is authorized. Note, we want to limit this to ~1 week, just to reveal potential problems, or do a quick proof of concept.8
904DM-1804Study the current SUI requirement Study the current requirement carefully to make sure they all make sense and we can do it.4
905DM-1805Study the current SUI requirement NULL4
906DM-1806Study the current SUI requirementNULL2
907DM-1807Study the LSST data products document and give a summary to the teamNULL6
908DM-1808Study the current SUI requirementNULL2
909DM-1809Study SUI requirement and summarize all the input from other team memebersNULL10
910DM-1810segfaults in ip_diffim on gcc 4.8I'm seeing test segfaults in ip_diffim on gcc 4.8, similar to those resolved on DM-1725, but with no similar smoking gun yet. Preliminary indication is that the problem is actually in meas_algorithms.2
911DM-1811Prepare initial contentPrepare LSE-130 content as far as possible without input from the new collimated-projector calibration plan.4
912DM-1812Determine LSE-130 impact of collimated projector calibration planDuring a working meeting with Robert Lupton and Chris Stubbs, determine the impact on LSE-130 of the introduction of the collimated projector for calibration.8
913DM-1813Prepare draft of LSE-130 for Camera and CCB reviewProduce a reviewable draft of LSE-130 based on decisions on calibration operations4
914DM-1814Support Camera CD-2 (mainly re: LSE-130)Provide slides and other information needed for CD-2, mainly relative to the open questions around LSE-1302
915DM-1815Support LSE-130 review by CCB (mainly Camera)Respond to comments, perform revisions to LSE-130 as necessary based on feedback from CCB review of the document4
916DM-1816Convert LSE-130 to SysMLFollowing CCB recommendation of approval of LSE-130 draft, convert Word draft to SysML and provide a docgen to Robert McKercher for final posting. 2
917DM-1817Create and post docgen of LSE-68To support discussions with the Camera, post a provisional docgen of LSE-68 to the appropriate Confluence page. Use knowledge from EA training to improve template.4
918DM-1818Support completion of final documentBased on CCB approval of LSE-72 on 10 October, support the completion of the final copy of the document for posting on Docushare.1
919DM-1819Complete LSE-140 work as needed to produce final documentComplete any review-driven revisions of LSE-140 and support the CCB meeting and following final document preparation.2
920DM-1820LSE-140: Collect desired changes for future releasePrepare for a future revision (Phase 3) of LSE-140. Collect issues to be addressed in the revision. Determine if any affect Phase 2 scope (which would require a prompt revision). It is not anticipated that there will be an actual revision of LSE-140 during the Winter 2015 cycle, because additional detail on calibration requirements will not be available in time.1
921DM-1822Fix czar assertion failureReported by Tatiana: I am encountering this once in a while. qserv-czar.log python: build/rproc/ProtoRowBuffer.cc:69: int lsst::qserv::rproc::escapeString(Iter, CIter, CIter) [with Iter = __gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, CIter = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]: Assertion `srcBegin != srcEnd' failed. Czar is dead and qserv stops responding after that. ---- For more details, search in qserv-l archives mails with "czar assertion failure" subject: https://listserv.slac.stanford.edu/cgi-bin/wa for complete description.4
922DM-1824Define issues to be addressedWork with TCS contacts (Jacques Sebag, Paul Lotz, etc.) to define the principal issues1
923DM-1825Produce draft of LSE-75 with agreed revisionsProduce a draft of LSE-75 with the following agreed revisions: * remove reference to advance notice of pointing, now in LSE-72 * add reference to PSF reporting1
924DM-1826Catch-all epic for essential fixes during DM-W15-1,2,3 NULL10
925DM-1828Create primary calibration pluginsNULL9
926DM-1829Develop General Acceptable Use PolicyDon Petravick and Lee LeClair6
927DM-1830Develop Information Classification PolicyDon Petravick, Lee LeClair6
928DM-1831Develop Incident Response PolicyDon Petravick, Lee LeClair6
929DM-1832Develop Data Management Sub-Project Plan and Risk TableDon Petravick, Frossie Economou6
930DM-1833Develop PMO Sub-Project Plan and Risk TableLee LeClair, Iain Goodenow6
931DM-1834Develop EPO Sub-Project Plan and Risk TableDon Petravick, Frossie Economou6
932DM-1835Develop Camera Sub-Project Plan and Risk TableDon Petravick, Richard Dubois6
933DM-1836Develop Telescope and Site Sub-Project Plan and Risk TableLee LeClair, German Schumacher6
934DM-1837Package ISP Documents into LSST Standard Format for Control and DeliveryRobert McKercher4
935DM-1839Deblend post-merge objectsNULL4
936DM-1840Task-level processing for merged objectsNULL5
937DM-1841Fix query error on case03: "SELECT scienceCcdExposureId FROM Science_Ccd_Exposure_Metadata" Xrootd prevents the worker to return more than 2MB data. On GB-sized data: {code} mysql --host=127.0.0.1 --port=4040 --user=qsmaster --batch -e "SELECT scienceCcdExposureId FROM Science_Ccd_Exposure_Metadata" ERROR 4120 (Proxy) at line 1: Error during execution: -1 Ref=1 Resource(/chk/qservTest_case03_qserv/1234567890): 20150123-16:27:45, Error merging result, 1420, Result message MD5 mismatch (-1) {code} On integration test case 04: {code} qserv@clrinfoport09:~/src/qserv (u/fjammes/DM-1841 *)⟫ mysql --host=127.0.0.1 --port=4040 --user=qsmaster qservTest_case04_qserv -e "SELECT * FROM DeepForcedSource" ERROR 4120 (Proxy) at line 1: Error during execution: -1 Ref=1 Resource(/chk/qservTest_case04_qserv/6970): 20150204-16:23:43, Error merging result, 1420, Result message MD5 mismatch Ref=2 Resource(/chk/qservTest_case04_qserv/7138): 20150204-16:23:43, Error merging result, 1420, Result message MD5 mismatch Ref=3 (-1) {code}5
938DM-1843Permit PropertySets to be represented in event payloadsIn the old marshalling code, property sets were representable within the payload of the event. This was removed in the new marshalling scheme. There are things (ctrl_orca) that still used this, so this needs to be added to the new marshaling code. At the same time, new new filtering code can not allow this to be added, because the JMS headers only take simple data types.2
939DM-1844Test Qserv on SL7Needed to run Qserv on CC-IN2P3 cluster.2
940DM-1845Coordinate implementation of web form for collecting data about existing data setsThe form is being implemented by the DataCat team. Need to coordinate (including with the NCSA team which parts are covered by which team), test, fine tune etc.4
941DM-1847Add support for large results in XrdSsiRequest::GetResponseDataGetResponseData needs to handle data sets beyond 2 MB. The problem is discussed in more details in story DM-184112
942DM-1848SUI work with DB team to define the image query APIIPAC SUI team will work with SLAC database team to define the image query APIs. IPAC needs to make sure the APIs are sufficient to satisfy the UI needs. SLAC will implement them. .10
943DM-1849Study RESTful API and work with SLAC team to define image query APIsNULL2
944DM-1850Discuss, review, and define image query APIs with SLAC teamNULL2
945DM-1851Image query API discussion and reviewNULL2
946DM-1852Image query API discussion NULL1
947DM-1853Image query API discussionNULL1
948DM-1854SUI propose a structure definition for user workspaceWorkspace is an integral part of SUI. We want to start the discussion and definition of workspace concept and structure. SUI team had several discussions and Xiuqin presented the results at the DM AHM at SLAC. The slides and the discussion notes are here: https://confluence.lsstcorp.org/display/DM/Workspace+discussion20
949DM-1855Specify mechanism for periodic (nightly/weekly) build distributionNULL3
950DM-1856Implement nightly/weekly release automatic distribution - Part IThis ticket covers code in sqre-codekit to do migrate as much of the process of special machines, and git tag repos on the basis of eupspkg manifests.4
951DM-1857Github Transition Plan: Write document for CCBNULL7
952DM-1858Release engineering W15 bucketBucket epic for activities related to stack releases during W1524
953DM-1859Publish v10_0 releaseNULL12
954DM-1860Update documentation for v10_0 releaseAll done bar obtaining some release notes. 2
955DM-1861Workflow tool improvements w15 bucketBucket epic for w15 for improvements with JIRA, Hipchat, etc 12
956DM-1862JIRA project for RFCsNULL3
957DM-1864Implement Github transition planNULL10
958DM-1865Review existing Level 3 documentationReview existing requirements in this area. Find all relevant existing project-controlled and other key documents.4
959DM-1866Document as-is Level 3 requirements and conceptual designProduce a single jumping-off point for documentation on all aspects of Level 3, on Confluence. Ensure that flowdown for existing Level 3 requirements in SysML is modeled. Describe the high-level conceptual design.4
960DM-1867tighten control over heterogeneous DictFieldsDM-1218 added support for DictFields with heterogeneous item types, which probably allows a bit too much freedom (the rest of pex_config is much more strongly-typed). Instead of passing None to allow any type to be used, we should pass a tuple of supported types.1
961DM-1868Define JSON Results for Data Access ServicesAs discussed at [Data Access Hangout 2015-02-23|https://confluence.lsstcorp.org/display/DM/Data+Access+Hangout+2015-02-23], we should support json format. This story covers defining structure of JSON results for Data Access Services (dbserv, imgserv, metaserv) 3
962DM-1871SUI requirement refinement to define many unclear areasIn the current SUI requirement document, many areas are not clearly defined. We want to put more description and definition for those areas, and identify and define the missing functions. The goal is to generate a requirement document for DM review and put it under version control. 50
963DM-1872SUI User workspace specificationAt the 2015 Deb DM AHM at SLAC, SUI led a discussion of workspace. https://confluence.lsstcorp.org/display/DM/Workspace+discussion We want to continue the discussion, understand the user needs, identify the DM groups involved. The goal is to generate a document to capture the functions requirement of workspace. The first version of document is here https://confluence.lsstcorp.org/pages/viewpage.action?pageId=4178393130
964DM-1873SUI 2D data visualization (XY plot)Better algorithm in spatial binning to visualize large number of catalog sources Plot histogram for tabular data Plot basic light curve 40
965DM-1874SUI the alert subscription system specificationIdentify parties involved in the alert system generation, broadcast, subscription. Understand the flow of the alert from generation to notifying users. Understand the requirement for SUI subsystem "Alert subscription and notification". 30
966DM-1875SUI infrastructure implementationIdentify the hardware resources needed at NCSA for short term development and Set up the basic git repository and build system Explore multi resolution images display for background iamge40
967DM-1876SUI functional design understand current use cases, collect and define more use cases. Design the major functions of major components in SUI, mainly Firefly package.60
968DM-1877SUI web interface and Python interactionTo facilitate users to interact with Firefly visualization components in IPython notebook, to allow users to control the display with Python script. 60
969DM-1878Collect, understand, and define more use casesThis is an on-going effort. The collected use cases will be posted at confluence page https://confluence.lsstcorp.org/pages/viewpage.action?pageId=41784036. 20
970DM-1880Implement RESTful interfaces for Database (GET)Implement RESTful interfaces for Database (see all D* in https://confluence.lsstcorp.org/display/DM/API), based on the first prototype developed through DM-1695. The work includes adding support for returning appropriately formatted results (support the most common formats). This covers "GET" type requests only, "POST" will be handled separately.5
971DM-1881Improvements to web form NULL5
972DM-1883organize the workspace discussion and present a good proposalSUI team had several discussions and Xiuqin presented the results at the DM AHM at SLAC. The slides and the discussion notes are here: https://confluence.lsstcorp.org/display/DM/Workspace+discussion10
973DM-1884summarize WEBDAV capabilities and past experience using itWEBDAV could be a candidate for managing the user workspace. summarize its capabilities and past experience, collect some use cases will help us to make a better decision.4
974DM-1885Contribute to the workspace capability discussion This include past experience, collection of use cases. 2
975DM-1887HDF5 file format studyXiquin, Loi, Trey, and myself discussed HDF5 as a default format to return result set and metadata from lower-level database services vs. traditional IPAC table. Here is the summary: Advantages of IPAC Table format - Simple and human-readable, contains a single table - Fixed length rows (easy to page through) - Supported by many astronomical tools - Provides a way to pass data type, units, and null values in the header - More metadata can be added through keywords (attributes) Disadvantages of IPAC table format - Steaming can not be started before all data are received – need to know column width before the table can be written (csv is better alternative) - Only alpha-numeric and '_' characters are allowed in column names (small subset of available characters) - Only predefined datatypes and one attribute type (string) - ASCII representation requires about twice as much storage to represent floating-point number data than the binary equivalent. Advantages of HDF5 - Can represent complex data and metadata (according to LOFAR, good to represent time series) - Structured data, arbitrary attribute types, datatypes can be combined to create structured datatypes - Flexible datatypes: can be enumerations, bit strings, pointers, composite datatypes, custom atomic datatypes - Access time and storage space optimizations - Partial I/O: “Chunked” data for faster access - Supports parallel I/O (reading and writing) - Built-in compression (GNU zlib, but can be replaced with others) - Existing inspection and visualization tools (HDFView, MATLAB, etc.) Disadvantages of HDF5 - Complex - Tuned to do efficient I/O and storage for "big" data (hundreds of megabytes and more), not efficient for small reads/writes. - Requires native libraries (available in prepackaged jars, see below) - Not human readable - (?) Not yet widely supported by astronomical tools (counter-examples: AstroPy, IDL, more at hdfgroup site) Tools and Java wrappers: * JHI5 - the low level JNI wrappers: very flexible, but also quite tedious to use. * Java HDF object package - a high-level interface based on JHI5. * HDFView - a Java-based viewer application based on the Java HDF object package. * JHDF5 - a high-level interface building on the JHI5 layer which provides most of the functionality of HDF5 to Java. The API has a shallow learning curve and hides most of the house-keeping work from the developer. You can run the Java HDF object package (and HDFView) on the JHI5 interface that is part of JHDF5, so the two APIs can co-exist within one Java program. (from StackOverflow answer, 2012) * NetCDF-Java is a Pure Java Library, that reads HDF5. However, it's hard to keep pure java version up-to-date with the standard, does not support all the features. A way to set up native libraries (3rd option from JHDF5 FAQ): "Use a library packaged in a jar file and provided as a resource (by putting the jar file on the class path). Internally this uses the same directory structure as method 2., but packaged in a jar file so you don't have to care about it. Jar files with the appropriate structure are cisd-jhdf5-batteries_included.jar and lib/nativejar/.jar (one file for each platform). This is the simplest way to use the library." 1
976DM-1889S15 Butler (v3)Improvements and tweaks to the butler as needed.19
977DM-1890Research support for integrated view of all databasesMetadata Store needs to contain information about all databases (data release databases, Level 1, Level 3 user databases).11
978DM-1891Add support for IPAC table formatImplement support for result formatting in IPAC table format.6
979DM-1893Research supporting cutout from images with overlapsResearch producing cutout from images with overlaps.10
980DM-1894SUI refactor Firefly packageThe team has studied and researched the web UI framework (DM-1148) in W15. A new framework will be decided in February 2015. Many classes in Firefly package need to be refactored to use the the new framework. This epic in S15 will be our first attempt for it. Developers will be involved in this effort: Trey Roby, Loi Ly, Tatiana Goldina, Lijun Zhang, Xiuqin Wu100
981DM-1896Design CSS schema to support table deletionTable/chunk deletion can be an extended process as some worker nodes may be temporarily down. We need to define a process and its supporting structures in CSS to allow gradual deletion of individual chunks and full tables. Deliverable: a design of a system capable of deleting a distributed table (all chunks, all replicas). It should be possible to create a table with the same name after deletion.4
982DM-1897Modify CSS structure to support table deletionModify CSS structures to support DROP TABLE, as defined in DM-1896.2
983DM-1898Consistency checking for table data CSS CSS data on tables/chunks/nodes is supposed to be consistent at all times. Would be nice to have a tool that verifies consistency, probably including checking actual worker state.4
984DM-1899Tool to dump CSS informationCSS information tree may become large and it would be nice to have a tool to examine that tree or parts of it. Something that dumps the tree in user-friendly way and allows filtering or summarizing.2
985DM-1900Worker management service - designWe need to replace direct worker-mysql communication and other administrative channels with a special service which will control all worker communication. Some light-weight service running alongside other worker servers, probably HTTP-based. Data loading, start/stop should be handled by this service.5
986DM-1901Re-implement data loading scripts based on new worker control serviceOnce we have new service that controls worker communication we'll need to reimplement WorkerAdmin class based on that.8
987DM-1903Implementation of calibration transformation frameworkFollowing DM-1598 there will be a detailed design and prototype implementation for the calibration & ingest system. This issue covers cleaning up that code, documenting it, having it reviewed, and merging to master.2
988DM-1904Continued footprint improvementsA redesigned API and support for topological operations within the Footprint class. This continues the work started in DM-1107 in W15. Breakdown: jbosch 15%; swinbank 85%8
989DM-1905QSERV issues when working with scisql_s2PtInCircleThis problem has been adressed un u/fjammes/DM-1841. Here's Tatiana report: {quote} This error happens on all DeepForcedSource queries. (It happens on DeepSource too, but not always.) [2015-01-15 11:02:29] [Proxy][4120] Error during execution: -1 Ref=1 Resource(/chk/LSST/6970): 20150115-11:01:05, Complete (success), 0, Ref=2 Resource(/chk/LSST/7138): 20150115-11:02:19, Complete (success), 0, Ref=3 Resource(/chk/LSST/7140): 20150115-11:02:18, Error merging result, 0, Ref=4 Resource(/chk/LSST/730 (-1) Query examples: select * from DeepForcedSource where ra>0.4 and ra<0.6 and decl>0.9 and decl<1.1; select * from DeepForcedSource where scisql_s2PtInCircle(ra, decl, 0.5, 1.1, 0.138) = 1; {quote}2
990DM-1906Outline an expandable Python framework for advanced users Outline an expandable Python framework for use by advanced users in interactive or batch mode. Many users should be able to contribute software to the framework following simple API guidelines. Also look at configuration and delivery systems for the software. Start by looking for existing Python software that could be used in the areas of: - Database & file access - Data analysis frameworks - Display of data,, especially in an Astronomical context. - Reading and writing data in different formats - Graphing data locally or over the web - Science and astronomy data analysis - Event interfaces - VO functionality and connecting with existing software like DS9,, Aladin, Topcat, etc. - Ways to integrate modules with an LSST focus like AGN Large Scale Structures Galaxies Local Volume Solar System Astrostatistics Stellar Pops Strong Lensing Supernova Transients Weak Lensing Camera - Configuration and delivery system 12
991DM-1907Backport HSC multi-band deblend processingBreakdown: lauren 60%; price 40% We need to transfer the recent HSC-side multi-band deblender changes to the LSST side, including all HSC issues in this query: https://hsc-jira.astro.princeton.edu/jira/issues/?filter=1160335
992DM-1909Interface design for full focal plane PSF estimationBreakdown: swinbank 40%; jbosch 30%; rhl 30% This is mostly design work, but I'd like the goal to be a new Python command-line task that repeats as much of the current ProcessCcd as necessary to run full focal plane PSF estimation, and would serve as a starting point for a future-proof visit processing script. Some issues include: - Gather requirements from e.g. DESC people as to needed inputs and data flow. - Get details of what camera/telescope systems will provide, and figure out how those related to what DESC needs. - Design classes for camera/telescope engineering data and wavefront information. Figure out how they'll be managed on disk (stored with Exposure, part of CameraGeom, with flats, biases, etc.). - Discuss parallelization needs with middleware team, and determine a way forward that lets us design interfaces using future parallelization schemes that don't exist yet. - Design Python task interface for full focal plane PSF estimation. - Implement command-line task that calls the full focal plane PSF estimation task. - Implement placeholder PSF estimation subtask that just uses existing PSF determiners on single CCDs. This may be too ambitious for the 40 story points we've allocated, and should discuss either adding more effort or reducing the scope.45
993DM-1910DRP DM-S15-1,2,3 Bugs and PapercutsBreakdown: jbosch 16%; lauren 16%; rhl 20%; pgee 16%; price 16%; swinbank 16%20
994DM-1912DRP DM-S15-4,5,6 Bugs and PapercutsBreakdown: jbosch 16%; lauren 16%; rhl 20%; pgee 16%; price 16%; swinbank 16%20
995DM-1913Prototype command interaction with FireflyNULL10
996DM-1914Research Javascript Frameworks: Finish new framework proposalNULL18
997DM-1915Create a deployable installation package for FireflyWith Firefly being open-source, we should provide a simple all-in-one installation package so a user can quickly setup and deploy an instance the Firefly Tools web application.10
998DM-1916Fine-tune data access interfacesBrought up by Gregory via comments on the API page. Data release selection in queries: I see that the /db/... queries take a "?" query parameter "db" with an example value of "DR1", i.e., a data release selector. A couple of remarks: * Will this query parameter be provided for all the Level 2 image data products, e.g., for retrievals of coadded images? **If so, then it needs an equivalent to the M4 "GET /meta/v0/db/<type>" query. * I assume the "db" query parameter defaults to the most recent data release. * Will the M4 query return an indication of which "?db=" value is the current default? * I assume that the numeric-identifier components of the various paths are unique only within a single data release. That means that eventually, in user documentation, we should make sure that they understand that they can't scan through different releases' versions of the same image (for example) just by varying the "?db=" parameter. * Are the identifiers also unique within a particular type (i.e., "raw", "template", "coadd", "calexp", etc.)? ----- Distinguishing L1 and L2 versions of reprocessed data products Since most or all of the L1 data products will be regenerated in each data release, the catalog and image APIs should presumably allow the user to distinguish between the two. I see how this could be done for catalogs - the "?db=" parameter presumably allows selecting something like "L1" (for the actively updated Level 1 database) in addition to the above-documented "DR1", "DR2", etc. Will the L2 table names for the reprocessed L1 data products be generally expected to be the same as for L1? (Barring the discovery of a serious issue that requires revision of the schema for the reprocessing.) How will the L1 and reprocessed-L1 image data products be distinguished?9
999DM-1917Fix missing virtual destructorsThe compiler is warning about some derived class hierarchies that are lacking virtual destructors. We should add at least empty implementations to the base classes of these hierarchies.1
1000DM-1918write Unit test and validation classes to validate the FITSreader refactoring NULL8
1001DM-1919Address misc. compiler warningsFix places where compiler is warning about some things we are doing on purpose and which we don't intend to change. This helps keep compiler noise down so its easier to notice "real" warnings.1
1002DM-1920update shapeHSM wrappers to latest external versionThe HSM shape code has undergone many improvements and bug fixes as part of being included in the GalSim package, and we've recently included those in the HSC fork of meas_extensions_shapeHSM (HSC-129, HSC-1093). We should transfer those changes to the LSST side before tackling DM-981 (or at least before finishing it). The story point estimate here is for the work already done on the HSC side (with the usual 50% factor for shared work). The transfer to the LSST side should be essentially no effort. To the extent that EVM cares about this, the credit should go to [~price], even though I ([~jbosch]) am doing the transfer.6
1003DM-1921Make unit tests use shared librariesMany (all?) unit tests are currently built as static executables which include all needed object files. This has several issues associated with it: - many files are compiled twice, once as *.os files for shared libraries, second time as *.o file for unit tests - unit tests do not test actual code in the shared libraries but instead separately-built copy of the same code We should change our procedure and make unit test to link against shared libraries to avoid these problems.4
1004DM-1923Setup network for IPMINULL2
1005DM-1924Setup IPMI bastion hostsNULL5
1006DM-1925Document how to use IPMI with LSST infrastructureNULL1
1007DM-1926Base configuration of NFS serversinstall and configure OS3
1008DM-1927Test new NFS serversTest to confirm servers are configured optimally15
1009DM-1928Deploy first of the NFS serversNULL20
1010DM-1929LOE - Week ending 12/26/14NULL4
1011DM-1930LOE - Week ending 1/9/15NULL8
1012DM-1931LOE - Week ending 1/16/15NULL4
1013DM-1932LOE - Week ending 1/23/15NULL8
1014DM-1934LOE - Week ending 2/6/15NULL8
1015DM-1935LOE - Week ending 2/13/15NULL8
1016DM-1936LOE - Week ending 2/20/15NULL8
1017DM-1937LOE - Week ending 2/27/15NULL8
1018DM-1939Define instrumental inputs to PSF estimationDefine inputs needed to build physically-motivated PSF models beyond what's contained in the image data and the current CameraGeom. This includes: - static engineering data from lab tests - slowly-varying engineering data (measured daily, weekly, etc.) - per-visit auxiliary data from telescope and camera (including, but not limited to wavefront sensor data). The focus here should be on APIs, not the technical details of the data; we want to define class hierarchies (perhaps some polymorphic ones) that can be used to pass this data around in the future. We also want to identify and characterize any preprocessing that needs to be done before they can be used for PSF estimation. Experts who should be consulted include [~gpdf] (who is in charge of making sure the camera and telescope interfaces to DM are well-defined), camera/telescope people he recommends, and people from the LSST DESC who have worked on physical PSF estimation and know something about the things they'll want (e.g. Michael Schneider, Aaron Roodman). This is essentially a requirements-gathering task, so the output should be a confluence page, not code.10
1019DM-1940API for instrumental inputs to PSF estimationFollowing the requirements-gathering in DM-1939, come up with classes that can be used to pass the needed inputs to the PSF estimation code, and at least sketch out roughly how they will need to be managed by the butler and loaded by the framework code. The output of this ticket should be an API design in confluence (possibly on the same page used for DM-1939), and an associated RFC.10
1020DM-1941Organize SUI design discussionsOrganize the SUI team for web UI discussions to capture as much functions and components as possible. A draft design document should be produced out of those discussions. 10
1021DM-1942Test data development and HSC stack integrationBreakdown: price 20%; lauren 80% This epic is focused on general stack testing and integration on HSC data, with a goal of getting LSST-side reductions of HSC data to the same level of quality and robustness currently present on the HSC fork of the stack, which will involve a combination of backporting minor fixes from the HSC codebase and tuning parameters for LSST-side algorithms that supercede their HSC-side counterparts. This will allow science-level algorithms to be tested using HSC data, and will provide functionality important for science-grade tests on other real data (such as the ongoing CFHTLS reprocsessing at IN2P3). This effort will be focused on single-epoch processing (i.e. ProcessCcdTask), with coadd-level processing a stretch goal dependent somewhat on the completion of astrometric calibration work at UW.45
1022DM-1943HSC backport: convert Peak to PeakRecordThis issue covers transferring all changesets from [HSC-1074|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1074] and its subtasks, as well as: - An RFC to propose the API change, and any requested modifications generated by the RFC. - Additional fixes to downstream code that's broken by this change (HSC-side changesets should be present for most of downstream fixes, but perhaps not all).8
1023DM-1944HSC backport: guarantee consistent handling of peaks in deblenderThis issue covers transferring changesets from: - [HSC-134|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-134] - [HSC-1109|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1109] - [HSC-1083|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1083] 4
1024DM-1945HSC backport: multiband processing for coaddsThis issue includes transferring changesets from many HSC issues: - HSC-1060 - HSC-1064 - HSC-1065 - HSC-1061 Most of this is in multiBand.py in pipe_tasks, but there are scattered changes elsewhere (including updates to camera mappers to include the new datasets, for which we'll need to modify more than just obs_subaru). However, before we make these changes, we'll need to open an RFC to gather comments on the design of this task. We should qualify there that this is not a long-term plan for consistent multiband processing (which we'll be starting to design on DM-1908), but a step towards better processing in the interim. Note: while I've assigned this to [~lauren], as I think it will be very helpful for her to get familiar with this code by doing the transfers, the RFC will have to involve a collaboration with [~jbosch], [~price], and Bob Armstrong, as we can't expect someone who wasn't involved in the design to be able to write a document justifying it.8
1025DM-1946HSC backport: low-level Footprint merge codeThis is a transfer of changesets from the follow epics: - [HSC-1020|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1020] - [HSC-1075|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1075]: only the afw changes Because this is purely an addition to the interface, and we're planning to redesign that interface in DM-1904, I don't think we need an RFC here.4
1026DM-1947Add support for async request cancellation to xrdssiNULL12
1027DM-1948S15 Implement Query CancellationAdd support for query cancellation.32
1028DM-1950Add abstraction in czar for unit testsAdd hooks in czar that will let us build unit tests.8
1029DM-1951Unit test for query cancellationNULL8
1030DM-1952Change log priority for message "Unknown column 'whatever' in 'field list'" Next message should be logged with ERROR priority: {code} 0204 15:08:03.748 [0x7f1f4b4f4700] INFO Foreman (build/wdb/QueryAction.cc:250) - [1054] Unknown column 'whatever' in 'field list' {code}1
1031DM-1953Post meas_base move changes to KronThese are to note leftovers from DM-982. They could be done in a single issue. 1. I commented code out referring to correctfluxes, but it will need to be restored once it is available in the new framework. 2. Jim asked me to replace the computeSincFlux which is currently in PsfImage.cc in meas_algorithms with a similar call in meas_base/ApertureFlux.cc. I did not do this because it became rather complicated, and can just as easily be done when the meas_algorithms routine is moved or removed. Basically, the templating in ApertureFlux is on Pixel type, whereas in meas_algorithms it is on ImageT (where ImageT is not necessarily a single class hierarchy -- e.g., Image and MaskedImage). So I left this for now.1
1032DM-1954HSC backport: deblended HeavyFootprints in forced photometryThis is a transfer for changesets for [HSC-1062|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1062]. Unlike most of the HSC backport issues for multiband deblending, these changes will require significant modification the LSST side, because we need to apply them to the new forced measurement framework in meas_base rather than the old, HSC-only one in meas_algorithms and pipe_tasks. Also include [HSC-1256|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1256], [HSC-1218|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1218], [HSC-1235|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1235], [HSC-1216|https://hsc-jira.astro.princeton.edu/jira/browse/HSC-1216].20
1033DM-1955International Network Design and ImplementationFIU/Amlight is expected to provide a full capacity 3 x100 Gbps link by FY17. 12
1034DM-1956REUNA will provide a “pre-operations” link between La Serena and SantiagoREUNA will provide La Serena - Santiago links at full capacity 100 Gbps link by FY17 and a 40 Gbps secondary link by FY20. This link will support testing and development prior to that time.14
1035DM-1957Chilean National Network Design and ImplementationRefer to REUNA MREFC sub award contract for deliverable details. This covers non-contract work by the AURA/LSST.20
1036DM-1959S15 Data Distribution & Replica Mgmt PrototypeThis epic covers building an initial prototype of the Data Distribution and Replication system. The design is covered through DM-106030
1037DM-1961Prepare data set for large scale testsLoad data set for large scale tests (duplicate, partition, load)10
1038DM-1962Run large scale testsCoordinate running large scale tests6
1039DM-1964Parallelization requirements for PSF estimationWe need to gather algorithmic ideas for how full focal plane PSF estimation will work from a parallelization and data flow standpoint, and discuss with the middleware team how these should be handled from an interface standpoint. Questions include: - Will we need to do significant cross-CCD image processing or require significant memory for these tasks? If so, should we structure this via message passing between CCD-level processes, or scatter-gather? - Assuming a scatter-gather approach, will we need multiple scatter/gather iterations when processing a single visit? - How much data will be passed between threads/processes? Would this include complex serializable objects, or just POD arrays? - Will different PSF estimation plugins will have different parallelization requirements? Or, can we define the plugin interfaces at a low-enough level that parallelization can be handled by the framework? If plugins do need to control their own parallelization, how do we make parallelization interfaces accessible to the plugins?8
1040DM-1965Python interface for full-visit PSF estimationCreate a Python interface for a pluggable PSF estimation system that supports algorithms that will operate over full images. This should include a sketch of how a calling command-line task, and placeholders for parallelization interfaces that may not yet be finalized. The output of this issue is a completed RFC on the design.6
1041DM-1966Command-line driver and placeholder implementation for PSF estimationCreate a command-line task that makes use of the new PSF estimation interface, duplicating as much of ProcessCcdTask's functionality as necessary to provide the inputs to PSF estimation (I expect this new task to ultimately replace ProcessCcdTask). This may have to include workarounds or temporary implementations for parallelization features that are not yet available. Create a simple PSF estimation placeholder that simply uses existing single-CCD PSF-determiners.6
1042DM-1968CModel flux validation and testingInvestigate the performance of the new version of the CModel code on various test datasets, including HSC data (following DM-1942), SDSS, and possibly CFHT data. Breakdown: lauren 100%35
1043DM-1969Create a kind of Wcs that encapsulates a TAN WCS and a distortion modelWe can simplify the astrometry solver if we have a Wcs that encapsulates a pure tangent-plane WCS and a distortion model that takes converts between PIXELS and TAN_PIXELS. This is useful because at the early stages of processing raw data we have a TAN WCS from the telescope control system and a pretty good estimate of distortion from the optical model (represented in the camera geometry). The result will be a Wcs whose sky<->pixel transformation is a reasonable approximation of reality (and a much better approximation than the tangent-plane WCS that is currently available. This will potentially eliminate a significant amount of confusing code that attempts to correct for distortion by manually applying the optical distortion model.4
1044DM-1973Build 2015_02 Qserv releaseSee https://confluence.lsstcorp.org/display/DM/Qserv+Release+Procedure for recipe.1
1045DM-1974Fix enclose, escape, and line termination characters in qserv-data-loaderAdd this string to mysql loader 'LOAD DATA INFILE' command: {code} q += "ENCLOSED BY '%s' ESCAPED BY '%s' LINES TERMINATED BY '%s'" % (enclose, escape, newline) {code} and add params in cfg file.2
1046DM-1977S15 Implement Fully-RESTful Data Access Web ServiceImprovements to the skeleton of Data Access Web Service built in W15. Make all responses fully RESTful (including results, and errors, setting response headers). Fine-tune API, add support for versioning, unit testing.39
1047DM-1978Research and Document API VersioningResearch and document versioning of the RESTful API (through flask blueprints). In particular, need to understand how to avoid code duplication between different versions of API.4
1048DM-1979Add SQLite-based v0.1 unit testing for metaservAdd unit tests for the RESTful flask based API. I think it'd be most useful if we could a) load some test data into underlying metaserv b) run programmatically things like "curl -H accept:text/html http://127.0.0.1:5000/meta/v0/db/L2/DC_W13_Stripe82/tables" etc (more examples in dax_*serv/README.txt) and verify that we got what we expected. Do it for both json and html.4
1049DM-1980Add error handling for webservAdd basic error handling for the RESTful flask-based API6
1050DM-1981Improve security for mysql in pythonRevisit all code that talks to mysql from python to use parameter bindings instead of direct string substitutions. In practice: {code} conn.execute("SELECT * FROM t WHERE name=%s" % theName) {code} should be replaced with {code} conn.execute("SELECT * FROM t WHERE name=%s", (theName,)) {code} For details, see http://mysql-python.sourceforge.net/MySQLdb.html#some-examples 5
1051DM-1982Fix JDBC timestamp errorJDBC driver returns an error on next query: {code:sql} sql> select * from Science_Ccd_Exposure [2015-02-06 13:39:37] 1 row(s) retrieved starting from 0 in 927/970 ms [2015-02-06 13:39:37] [S1009] Cannot convert value '0000-00-00 00:00:00' from column 32 to TIMESTAMP. [2015-02-06 13:39:37] [S1009] Value '[B@548997d1' can not be represented as java.sql.Timestamp {code}1
1052DM-1987Redesign/Refactor WCS and Coord%50 KSK, %50 RO Currently WCS is mutable and Coord objects are heavyweight. Refactor WCS to be immutable and make Coord less heavyweight. Include lists of Coord objects. It's possible astropy could inform in that area. Also, remove TanWcs in favor of TanSipWcs since TanWcs can have SIP terms.40
1053DM-1988Update analysis tasks: diffim and snap combination50% KSK 50% RO A small amount of this work is in 02C.03.01 The diffim task needs to be looked at. It needs to be updated to use current mechanisms. It should also be refactored to split out some of the procedural code into methods. In a similar task, the lsstSimIsrTask needs to include a real snap combine step. Currently, one of the snaps is dropped on the floor. For this round just implement naive snap addition and morphological CR rejection.43
1054DM-1989Define API for Stack Astrometric Calibration70% RO 30% KSK This should also include a minimal implementation. This should be done with an eye toward photometric calibration. Prerequisite: Get multi epoch (multi-band?) catalogs of centroids from some trusted source (CFHT, HSC?). 1. Load all stars that overlap a patch for all epochs. 2. Associate all stars on each chip. 2a. Implement K-D tree 3. Fit model for rigid chip system + optics + atmosphere. Eigen for sparse model fitter. 3a. Allow for external catalog. 3b. This could include a class to fit XYTransforms 4. Turn result into WCS. So maybe a down scope for a single cycle epic is to get matches and interfaces for models and solvers. 75
1055DM-1990Research DCR in the context of DiffIm including possible algorithms for mitigation.It is not clear how template coadds will be built. This includes understanding the data necessary to generate a template for the entire sky. This epic is to identify possible techniques as well as the risks associated with each technique. This does not need to pin down the exact algorithm or the specific selections, but should inform what further development is necessary to avoid putting alert generation at risk.19
1056DM-1991Refactor Approximate and Interpolate classes100% RO A base class for this will be created in DM-740 as a part of epic DM-85. This epic is to implement the classes to replace the original functionality.34
1057DM-1992SQuaRE Support50% KSK 50% RO SQuaRE has asked that we leave 20 SP free per Cycle to help out.20
1058DM-1994Story point display and roll-up in epic displayI understand that there is a pending request to display the story points for individual story issues in the mini-table in which they are displayed for an epic. It would also be useful to see a rolled-up total of the story points for the defined set of stories - so that, among other things, this could be compared to the story point value for the epic. Ideally the story points for the roll-up might be displayed as "nn (mm)" where nn is the total points and mm is the number of points remaining to do (or done already - I don't care which as long as the definition is clear).1
1059DM-1996Define faulty/consistent states and recovery processWhiteboard session(s) to gather a list of invariants / principles that define a consistent state, a list of fault conditions, and the steps in failure recovery.12
1060DM-1997Data transport mechanism for data distributionDecide on a transport mechanism for data (bit torrent, scp, or ?). We must take into consideration whether the data source matters in this choice (e.g. tape vs known good node), as well as how to identify that a data source is the correct one (e.g. via checksums and sequence numbers).12
1061DM-1998Architecture for failure detection and resolutionCome up with an architecture for detecting failure or non-nominal conditions (e.g. under replication). The core question to resolve is whether we go with a distributed approach, or with centralized control.16
1062DM-1999Research existing theory and prior artPeruse the distributed systems literature for prior approaches to this problem, and examine existing system implementations for components/ideas we could reuse.10
1063DM-2000Document data distribution/replication planProduce an overview document that explains our definitions, architecture and strategies for dealing with data distribution and replication. 10
1064DM-2001Define strategy for adding and removing data Define a strategy (push/pull distributed/decentralized) for recognizing incoming data and cleaning up/removing stale/deleted data. Is data ingest just another form of failure recovery?10
1065DM-2002Define data distribution/replication testing strategyOnce we decide on a design for data distribution / replication, we should come up with a test plan.4
1066DM-2003Package Reorganization (Science Pipelines)Breakdown: jbosch 50%, swinbank 50%38
1067DM-2005switch ndarray to external packageThere is already an external ndarray project on GitHub (we've been using a fork of that). We should merge the forks and switch to using the external package. 2
1068DM-2006merge "basics" packagesCreate detailed RFC and implement merge of base, utils, and daf_base. See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning2
1069DM-2007separate pex_exceptions from base and renameRemove dependency on base from pex_exceptions and rename to just "exceptions" (after RFC). See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning1
1070DM-2008Move Wcs from afw::image to afw::coordCreate RFC and implement move of Wcs from afw::image to afw::coord. See https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning1
1071DM-2010move Jarvis/shapelet code to legacy packageCreate RFC and remove Jarvis/shapelet package from meas_algorithms, into new legacy sci package. See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning1
1072DM-2011move Psf, Kernel code to new afw::convolution subpackageCreate detailed RFC and implement move for these packages. See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning2
1073DM-2012split pipe_base into command-line and non-command-line componentsCreate detailed RFC and implement package split, to separate basic Tasks (to be used as e.g. subtasks) from CmdLineTask and ArgumentParser. See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning1
1074DM-2013Implement image stitchingThis story involves implementing code that stitches images, simple case that does not involve tract boundaries. More advanced case in covered in separate ticket. We will need to determine WCS information for the target images.6
1075DM-2014Create interface and utility package for single-frame/forced processingCreate detailed RFC and implement move of interface and utility code from multiple existing packages to new package. See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning2
1076DM-2015Design and implement RESTful API for image stitching and rotationNULL4
1077DM-2016Split PSF estimation and PSF model code into separate packageCreate detailed RFC and implement move of concrete PSF estimation code and Psf subclasses from meas_algorithms to separate package. See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning1
1078DM-2017rename packages with minimal reorganizationmeas_deblender, ip_isr, meas_astrom, meas_modelfit, and ip_diffim do not require major refactoring to fit into the new package reorganization, but they should be renamed (with sci_prefixes). See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning1
1079DM-2018Split measurement plugins into separate packagesCreate detailed RFCs and implement splitting measurement plugins into separate package. May want one package for extremely basic plugins, always-used plugins (PixelFlags, TransformedCentroid, etc). See also https://confluence.lsstcorp.org/display/DM/Summer2015+Package+Reorganization+Planning2
1080DM-2019Split coaddition code and single-frame/forced command-line driversThis should split all content in pipe_tasks into two packages (aside from what may have been removed in previous issues).2
1081DM-2020Research how to support L3Research implications of having to deal with updatable Level 3 data.12
1082DM-2021Architecture for supporting small non-partitioned tablesSome tables, like Exposure, provenance, will not be partitioned, and the current plan is to either replicate them on each node, or store on shared file system. Need to decide how it will be dealt with.6
1083DM-2022Research software deployment on the qserv clusterDiscuss and decide how to deploy and upgrade Qserv software10
1084DM-2023Investigate procedures for package reorganizatione.g. develop script to handle bulk namespace changes.4
1085DM-2024DRP S15 support for SQuaREBreakdown: jbosch 16%; lauren 16%; rhl 20%; pgee 16%; price 16%; swinbank 16%20
1086DM-2025FY15 Key Performance MetricsCollect data, compile scripts, perform measurements as necessary to report figures in respect of the FY15 key performance metrics. Breakdown: lauren 50%; rhl 50%16
1087DM-2026Support Exposure Use CasesDevelopment in support of Exposure Use Cases19
1088DM-2027Implementing stitching multiple patches across tract boundaries in a coaddNULL4
1089DM-2030refactor afw Swig to improve build timesI have an idea for how to improve Swig build times that we should get vetted (and possibly improved upon) by a true Swig expert (even if that costs a bit of $$). This issue includes vetting that idea (splitting up classes into multiple per-package module builds), getting it through the RFC process, and implementing it in afw.10
1090DM-2031Add image-query related KPIs to the planExisting plan in LDM-240 does not mention image related KPIs. Need to come up with a road map, and propose KPIs. This should be synchronized what realistically NCSA cluster can deliver in any given FY.5
1091DM-2034FY19 Setup Database for Deep DrillingNULL53
1092DM-2035FY18 Setup Calibration DatabaseNeed to think through issues related to supporting calibration. Schema, requirements that will require special optimizations.39
1093DM-2036S17 Build Prototype of AlertProd and L1 User DatabaseBuild a working, non-optimized prototype of the [Alert Production and L1 User Database|http://ldm-135.readthedocs.org/en/master/#alert-production-and-up-to-date-catalog]. Deliverable: working, non-optimized prototype of AlertProd Database.79
1094DM-2037X16 Revisit Design of AlertProd & L1 DbRevisit the [design of Alert Production Database and Level 1 User database|http://ldm-135.readthedocs.org/en/master/#alert-production-and-up-to-date-catalog], including schema, indexing, partitioning, synchronization, replicating, fail over. Verify that the latest requirements match the design. This epic will likely involve experimenting and light-weight standalone prototyping related to parts of the system that might be non-trivial to scale or to implement. Deliverable: a refreshed design document for Alert Production and L1 User Database.19
1095DM-2038FY17 Design Internal DRP DatabaseInternal DRP DB will be used to store * all bookkeeping (provenance, what run what did not, etc) * intermediate data products (might be larger than final data products), * a subset of data (what we need by DRP), eg foorprints of objects Internal DRP DB might need its own spatial engine. It is expected that SDQA will run on that database. Need to think through issues related to supporting internal Data Release Production. Schema, requirements that will require special optimizations. Need to define reliability requirements. In limited cases pipelines might want to use internal db (instead of files). Example: select all objects from a given region. Need to understand query load and complexity coming from DRP.79
1096DM-2039FY18 Revisit Design of L3 Support in QservNeed to think through issues related to supporting Level 3 databases100
1097DM-2040FY19 Design Next-to-database Data Analysis SystemNeed to design the system that will allow users run their own custom data analysis next to database.100
1098DM-2041FY19 Implement Next-to-database Data AnalysisNeed to implement the system that will allow users run their own custom data analysis next to database.100
1099DM-2042W16 Improve Data Provenance DesignWe have a detailed design of the Provenance, described at https://dev.lsstcorp.org/trac/wiki/db/Provenance. Work covered by this epic involves: 1. Revisiting the design and tweaking it as necessary. In particular: * Describing in more details interactions with key data producers (DRP, AlertProd, Calibration, L3 data brought in by users). * Estimating the size of provenance data * Considering querying the provenance data 2. Evaluating existing off-the-shelf provenance systems/tools. Deliverable: a document describing data provenance architecture / schema supported by a standalone proof-of-concept prototype.69
1100DM-2044Catch all epic for essential fixes in Science Pipelines DM-W15-5NULL10
1101DM-2045server side preparation for histogram plot (1)Convert necessary code to make it possible for a JavaScript component to place a JSON request to the server and to parse the resulting RawDataSet. 6
1102DM-2046Client side plot display for histogram- Create a React JavaScript component, which takes the data and renders histogram. - Make it possible to call this component from GWT code, using experimental JsInterop technology in GWT 2.710
1103DM-2047SUI Investigate L3 data/tools requirements, evaluate potential tools There are many overlap areas in L3 data analysis tools with the general science user tools. We want to identify those requirements and needs to help making SUI components adaptable for L3 data production and analysis.30
1104DM-2048Start requirements gathering for pipeline QA visualization needs Gather use cases for pipeline QA visualization tools. We want to build the SUI components in such a way that they could be used to support QA needs. 36
1105DM-2049SUI Build the visualization components that could be used independentlyCurrently we identified three basic components: Image visualizer, tabular data display, 2D XY Plot. All three could share the data model and provide inter activities between the components. 80
1106DM-2050 Integration and test monitoring architecture Part I[retitled to better capture cycle scope] Develop and deploy a layer to capture the outputs, initially numeric, of integration testing afterburners such as sdss_demo, hsc_demo, and others developed this cycle. Also capture meta-information such as execution time and memory footprint. Propose log format to standardise production of such informations. Investigate notification system based on trending away from expected values. Investigate data provisioning of integration tests such as storage of test data in GithubLFS. [75% JMP 25% JH] 100
1107DM-2051 Firefly-based data display for SQuaSH - Part I[Epic retitled to better reflect cycle scope] This epic covers work relating to working on the visualisation side of the Science QA Analysis Harness. It is a timeboxed effort to come up to speed with Firefly in particular, evaluate it against our needs, and provide any feedback to the Firefly team. Some prototyping of visualising integration dataset products will also be involved. [AF 100%] 45
1108DM-2052Maintain list of OSes that pass build and integration testing Provide an automatiically generated and updated pages showing operating systems that are successfully building and integrating the stack from source. [FE at 75%, JH at 75%]20
1109DM-2053Specify system for performing CI on Docker stack containersInvestigate how we can CI first-party Docker containers with runnable stacks [JH 100%]30
1110DM-2054Release engineering Part OneBucket for public stack releases [FE at 75%, JH at 75%]40
1111DM-2055Miscellaneous service support improvementsJIRA, comm toos, etc for DM and non-DM teams (indicate) In order to avoid fractional story points, some 0 [FE at 75%, JH at 75%]16
1112DM-2057Attend Scale 13x conferenceAttend database talks, in particular the MaxScale proxy talk (http://www.socallinuxexpo.org/scale/13x/presentations/advanced-query-routing-and-proxying-maxscale?utm_campaign=north-american-trade-shows&utm_source=hs_email&utm_medium=email&utm_content=16099082&_hsenc=p2ANqtz-_MFjfxvpCdmV_Ax2RKDdOGypHPQ85UL-UMuy0eRs_MrlJ2qJVp-MXx-g7_-dAQsq0trpA61hkZrzO-3gp6bKVkpK52fQ&_hsmi=16099082). If anyone has questions they would like me to ask, please post them here as well. I will post notes to this issue. 2
1113DM-2058Data loader should always create overlap tables We have discovered that some overlap tables that are supposed to exist were not actually created. It looks like partitioner is not creating overlap files when there is no overlap data and loader is not creating overlap table if there is no input file. Situation is actually symmetric, there could be non-empty overlap table but empty/missing chunk table. When we create one table we should always make another as well. 2
1114DM-2059Clean up QuerySession-related code in czar(created in response to DM-211) This ticket should address the following inelegancies in the qserv-czar. * QuerySession->QueryPipeline. The "session" abstraction has moved to a better place. The iterator portion should be shifted into its own separate class, though perhaps still associated with QueryPipeline. The iterator portion's new home should be amenable to eventually moving the actual query materialization to the worker, though we shouldn't introduce new abstractions until we are actually ready to move the substitution/materialization to the worker. * QueryContext needs to be split into incoming external QueryContext and a sort of QueryClipboard for passing information between analysis/manipulation plugins. Eventually, I imagine a chain/tree of them attached to the select statements themselves in order to represent subquery scope nesting (which is complicated to represent and to reason about--nesting and the resulting namespace resolution is tricky), but I don't think we should try doing the chaining in the first phase. For this ticket, create QueryClipboard to hold the portion for interchange between analysis plugins. Query analysis plugins would then pass this object (which points at an immutable? QueryContext) between themselves. QueryClipboard probably should live in qana, QueryContext in query (unless there is a good reason to move it). 8
1115DM-2060Rename TaskMsgFactory2Rename TaskMsgFactory2 to TaskMsgFactory. Please see DM-211 for more information.1
1116DM-2061Port fault-recovery testing code to XrdSsiPlease see DM-211 for the origin of this ticket. BillC put in code to introduce random errors in query dispatch as part of working on code to recover from faults. In the port to the XrdSsi API, we did not port this code. This story is to introduce the ability (compile-time configurable, if not command-line or dynamically configurable) to simulate these sorts of faults to exercise the fault-recovery (confined to retrying on transient-ish failures) code.12
1117DM-2063Creates overlap tables even if empty while loading dataQuery execution expects all chunk and overlap tables to exist, even if they are empty. In short term, that means loader should: * look at all chunks and add corresponding overlap chunks, * look at overlap chunks and add missing empty chunk table 2
1118DM-2065FY17 Implement Data Verification ToolNeed a tool for verifying whether data is in consistent stage (e.g., right after loading, after some upgrades, in general at any given time). The list of things to check include: * empty chunk file, * xrootd exported DB, * data tables * overlap tables, * data_0123456789 tables * chunkId, subChunkId columns existence Some of the above can be automatically fixed on the spot when problem is discovered.90
1119DM-2066Add test case to catch missing empty chunks or overlapsDiscussed at db hangout 2015-02-18. We need a use case to test for missing empty overlap chunk tables and/or empty chunk tables.2
1120DM-2069FY17 Design L2 Catalog Swap/Release AutomationNeed to think through the issues related to releasing L2 catalog / swapping a new one in place of an old one54
1121DM-2070FY17 Build AP-ready Data Provenance SystemImprovements to the first version of the standalone prototype built through DM-2042. Discussions with the Application Team on capturing provenance and integrating DRP with the provenance system. Add scaffolding / unit tests that will simulate data producers, in particular DRP. Deliverable: DRP-ready System for capturing provenance.79
1122DM-2071FY18 Integrate AlertProd with Data ProvenanceIntegrate Alert Production with the Provenance system.56
1123DM-2072FY17 Implement Async Queries in Data Access Web ServicesWork includes: * asynchronous requests, request status, retrieving results for dbserv and imgserv26
1124DM-2073FY19 Implement Partial Query ResultsNULL100
1125DM-2075S17 Improve ImageServNULL9
1126DM-2077W16 Add Support for Multi-table Shared ScansImplement multi-table shared scans. Ensure that shared-scans are not delaying interactive queries. The baseline architecture of the shares scans are described in [LDM-135 Shared Scanning|http://ldm-135.readthedocs.org/en/master/#shared-scanning].100
1127DM-2078F16 Qserv KPMsNULL24
1128DM-2079F17 Run Large Scale Qserv TestsNULL26
1129DM-2080F18 Run Large Scale Qserv TestsNULL26
1130DM-2081FY19 Implement Missing Features in Qserv for L3Need to think through issues related to supporting Level 3 databases100
1131DM-2082FY20 Improve Design of Next-to-database Data AnalysisNeed to implement the system that will allow users run their own custom data analysis next to database.100
1132DM-2083FY18 Demonstrate Fault ToleranceNULL100
1133DM-2084FY18 Implement Basic Resource Mgmt for DBIncludes things like query throttling per user for all databases (L1, L2, L3)54
1134DM-2085FY19 Optimize Resource Mgmt for DBNULL79
1135DM-2086FY18 Implement Basic Resource Mgmt for ImagesNULL54
1136DM-2087FY19 Optimize Resource Mgmt for ImagesNULL79
1137DM-2088W16 Distributed Loader - ResearchIn production, we will need a distributed loader that will be capable of loading entire data set produced by DRP within 24-48 hours. This epic involves researching all the needs, requirements and constraints, and exploring what the best architecture for a distributed loader would be. Related doc: [LDM-135 §8.15.2|http://ldm-135.readthedocs.org/en/master/#data-loading]28
1138DM-2089W16 Distribution and Replica Mgmt Prototype v2This epic involves building a complete, working prototype of the Qserv data distribution and replica management.100
1139DM-2090FY18 Implement L2 Catalog Swap/Release AutomationNeed to think through the issues related to releasing L2 catalog / swapping a new one in place of an old one100
1140DM-2091FY17 Add Support for Managing Per-user Access for DBNULL53
1141DM-2092FY18 Add Support for Managing Per-user Access for Image and File ArchiveNULL79
1142DM-2093FY18 Integrate Qserv with EFDNULL79
1143DM-2094Port metaREST.py to dbmetaREST_v0.py in metaserv is currently using MySQLdb instead of going through the db API, because we need to use parameter binding for security reasons. We should switch to using db, once the db interfaces will support it. 1
1144DM-2095Port dbREST.py to dbdbREST_v0.py in dbserv is currently using MySQLdb instead of going through the db API, because we need to use parameter binding for security reasons. We should switch to using db, once the db interfaces will support it. 1
1145DM-2096Long term database work planningLong term planning (updating LDM-240).8
1146DM-2097Package andyH xssi fixed version (>2MB answer pb) in eupsSee DM-1847 - Andy made a patch, it'd be good to the xrootd we use for our stack.1
1147DM-2101FY18 Revisit L2 Catalog SchemaRevisit the baseline schema53
1148DM-2103FY18 Implement Internal DRP DatabaseImplement Internal DRP Database as designed in DM-203860
1149DM-2107FY17 Improve ImageServNULL80
1150DM-2108FY19 Demonstrate Qserv Fault ToleranceIncluding multi-master failover100
1151DM-2110FY19 Optimize Partitioning GranularityWe have been always talking about having ~20K chunks per table, and it was driven primarily by spreadsheet-based analysis. We need to look in more details into that, and perhaps even change the model if needed, e.g., introduce different partitioning for larger tables, like ForcedSource.53
1152DM-2111FY17 Improve Query Coverage in QservCurrently Qserv supports only a limited subset of queries. We need to make sure it supports all queries that users need to run.53
1153DM-2112FY18 Improve Query Coverage in QservCurrently Qserv supports only a limited subset of queries. We need to make sure it supports all queries that users need to run.79
1154DM-2113FY17 Support Explain, Show, List CommandsImplement [explain|http://dev.mysql.com/doc/refman/5.0/en/explain.html] and [show|http://dev.mysql.com/doc/refman/5.0/en/show.html] commands for Qserv. Also, commands such as "list tables" will need to be intercepted and overloaded. 53
1155DM-2115FY19 Implement Multi-master for QservNULL100
1156DM-2116FY19 Make Database SecureRevisit security issues, such as sql injections, detecting and shielding from DoS attacks, etc.79
1157DM-2117FY19 Build/Setup Basic Qserv Monitoringfrontend/worker health monitoring (and management?)79
1158DM-2118FY18 Implement Failover for L1 DatabaseNeed to implement and test failover - a failure of the master copy of L1 database, and automatic fail over to a replica. The design of the Alert Production L1 database is covered [here|http://ldm-135.readthedocs.org/en/master/#alert-production-and-up-to-date-catalog].80
1159DM-2119W16 Optimize Secondary Index - ResearchWork on the secondary index (objectId --> chunkId / subChunkId mapping). This needs to be scalable to 40B entries. Since we are planning to ingest all data from DRP in <2 days, building should take <2 days. This epic involves researching applicable technologies (including experimenting with most promising ones). Deliverable: proposed technology / architecture along with measures performance at production scale (40 B entries). 48
1160DM-2123FY18 Add Support for Non-partitioned TablesNon partitioned tables will need special attention. Options include: a. replicating them on each worker node b. keeping them on a shared file system c. federating Need to thing through these issues, pick the best architecture and implement it.79
1161DM-2124FY17 Revisit Qserv Deployment on ClusterNULL60
1162DM-2125FY18 Design Qserv Software UpgradingNeed to understand how to do software update for Qserv 26
1163DM-2129FY19 Improve Query Coverage in QservNULL90
1164DM-2130FY20 Improve Qserv Monitoringfrontend/worker health monitoring (and management?)79
1165DM-2131Resolve compiler warnings in new measurement frameworkWhen building {{meas_base}}, or any other measurement plugins which follow the same interface, with clang, I see a bunch of warnings along the lines of: {code} In file included from src/ApertureFlux.cc:34: include/lsst/meas/base/ApertureFlux.h:197:18: warning: 'lsst::meas::base::ApertureFluxAlgorithm::measure' hides overloaded virtual function [-Woverloaded-virtual] virtual void measure( ^ include/lsst/meas/base/Algorithm.h:183:18: note: hidden overloaded virtual function 'lsst::meas::base::SimpleAlgorithm::measure' declared here: different number of parameters (4 vs 2) virtual void measure( {code} This is an artefact of a [workaround for SWIG issues|https://confluence.lsstcorp.org/pages/viewpage.action?pageId=20284390]; the warnings aren't indicative of a fundamental problem, but if we can avoid them we should. While we're at it, we should also fix: {code} include/lsst/meas/base/ApertureFlux.h:233:1: warning: 'ApertureFluxResult' defined as a struct here but previously declared as a class [-Wmismatched-tags] struct ApertureFluxResult : public FluxResult { ^ include/lsst/meas/base/ApertureFlux.h:65:1: note: did you mean struct here? class ApertureFluxResult; ^~~~~ struct {code}1
1166DM-2136W16 Understand Async Queries in QservUnderstand how disruptive the changes related to implementing asynchronous queries will be for Qserv. Delivarable: brief description outlining changes needed, with story point estimate.10
1167DM-2137Add parameter binding to db interfaceNULL1
1168DM-2138Validate user query in dbRESTNeed to validate query (from security standpoint that user enters through rest api.1
1169DM-2139Support DDL in MetaServ - implementationDDL information is embedded as comments in the master version of the schema (in "cat" repo). Currently we are only using it for schema browser. This story involves building tools that will load the DDL schema into MetaServ. Design aspects are covered in DM-1770.8
1170DM-2141Add meas_extensions_shapeHSM to lsstsw, lsst_distribmeas_extensions_shapeHSM has just been resurrected from bitrot, and should be included in our distribution. Contrary to DM-2140, it should probably not be included in lsst_apps, as it's not clear we want to add a dependency on tmv and GalSim there.1
1171DM-2148General OpenStack LearningNULL6
1172DM-2149Setup spare test hardware for OpenStack testingNULL20
1173DM-2150Test Ubuntu OpenStackNULL6
1174DM-2151Test Mirantis OpenStack & FuelNULL6
1175DM-2152Figure out OpenStack networking (vLAN, routing, etc)NULL6
1176DM-2153Figure out OpenStack integration with LDAPNULL17
1177DM-2155Log fails on uniccode stringLog is currently failing if we pass unicode string, it is easy to reproduce by doing: log.info(u"hello"). It fails with: {code} File "/home/becla/dataArchDev/Linux64/log/master-gfab0203bd3+3/python/lsst/log/log.py", line 103, in info log("", INFO, fmt, *args, depth=2) File "/home/becla/dataArchDev/Linux64/log/master-gfab0203bd3+3/python/lsst/log/log.py", line 94, in log _getFuncName(depth), frame.f_lineno, fmt % args) File "/home/becla/dataArchDev/Linux64/log/master-gfab0203bd3+3/python/lsst/log/logLib.py", line 648, in forcedLog_iface return _logLib.forcedLog_iface(*args) TypeError: in method 'forcedLog_iface', argument 6 of type 'std::string const &' {code}1
1178DM-2157Data loader crashes on uncompressed data.Vaikunth just mentioned to me that the is a crash in data loader when it tries to load uncompressed data: {noformat} root - CRITICAL - Exception occured: local variable 'outfile' referenced before assignment Traceback (most recent call last): File "/home/vaikunth/src/qserv/bin/qserv-data-loader.py", line 312, in <module> sys.exit(loader.run()) File "/home/vaikunth/src/qserv/bin/qserv-data-loader.py", line 248, in run self.loader.load(self.args.database, self.args.table, self.args.schema, self.args.data) File "/home/vaikunth/src/qserv/lib/python/lsst/qserv/admin/dataLoader.py", line 168, in load return self._run(d atabase, table, schema, data) File "/home/vaikunth/src/qserv/lib/python/lsst/qserv/admin/dataLoader.py", line 192, in _run files = self._gunzip(data) File "/home/vaikunth/src/qserv/lib/python/lsst/qserv/admin/dataLoader.py", line 388, in _gunzip result.append(outfile) UnboundLocalError: local variable 'outfile' referenced before assignment {noformat} It looks like we never tested loader on uncompressed data and there is a bug in handling uncompressed data. 1
1179DM-2158Add support for JSON - define structureAs discussed at [Data Access Hangout 2015-02-23|https://confluence.lsstcorp.org/display/DM/Data+Access+Hangout+2015-02-23], we should support json format. This includes defining the exact format, and implementing it. This story covers defining the format.2
1180DM-2159Implement Image Response for ImgServThis story covers implementing proper response, and the header metadata for the fits image response.3
1181DM-2161Setup webserv for SUI testsWe need to setup a service (eg on lsst-dev) that can be used by the IPAC team to play with our webserv/metaserv/dbserv/imgserv. The server runs on lsst-dev machine, port 5000. To ssh-tunnel, try: {code} ssh -L 5000:localhost:5000 lsst-dev.ncsa.illinois.edu {code} An example usage: {code} curl 'http://localhost:5000/db/v0/query?sql=SHOW+DATABASES+LIKE+"%Stripe%"' curl 'http://localhost:5000/db/v0/query?sql=SHOW+TABLES+IN+DC_W13_Stripe82' curl 'http://localhost:5000/db/v0/query?sql=DESCRIBE+DC_W13_Stripe82.DeepForcedSource' curl 'http://localhost:5000/db/v0/query?sql=DESCRIBE+DC_W13_Stripe82.Science_Ccd_Exposure' curl 'http://localhost:5000/db/v0/query?sql=SELECT+deepForcedSourceId,scienceCcdExposureId+FROM+DC_W13_Stripe82.DeepForcedSource+LIMIT+10' curl 'http://localhost:5000/db/v0/query?sql=SELECT+ra,decl,filterName+FROM+DC_W13_Stripe82.Science_Ccd_Exposure+WHERE+scienceCcdExposureId=125230127' curl 'http://localhost:5000/image/v0/raw/cutout?ra=7.90481567257&dec=-0.299951669961&filter=r&width=30.0&height=45.0' {code} 2
1182DM-2163Refactor Geom class in FireflyThe Geom class was ported from C code 20 years ago. It needs to refactor to comply with Java OO design. 8
1183DM-2164Review at DM leadership team meetingreview document with Kantor, KT, Hobblit, and Lambert, including prep time 3
1184DM-2165Refactor document for that specifications are clearer1) Have one basic definition of racks and other components in the specifications. 2) Fully write up first full draft specification for the supporting material handing area.3
1185DM-2166receive / process comments from Jeff Barr areceive edits from Jeff Barr, accept the formatting and mechanical l edits. Compose separate email list issues related to non LSST tenants in the room. 1
1186DM-2167Investigate Commerical vendor to deal with comments on requirements. process email discussion about the need to liaison with the putative Chilean design contractor. Kantor suggests a contractor to support requirements may be apropos. 1
1187DM-2168Work inside NCSA to connect procurement contract Modification to OSPRA contract officetwork Jeff's proposal until it reached university contract officer. -- January meeting -- clarify purchasing rules - Internal discussion of property management, - General work within contract modification process. 6
1188DM-2171Implement JSON Results for MetaServ and DbServImplement JSON results for Metadata Service (see all M* in https://confluence.lsstcorp.org/display/DM/API), and Database Service (see all D*) as defined in DM-18683
1189DM-2173Disable testDbLocal.py in db if auth file not foundtests/testDbLocal.py can easily fail if required mysql authorization file is not found in user home dir. Skip the test instead of failing in such case.1
1190DM-2175Adapt integration test to multi-node setup v2Following DM-595 we can start qserv in multi-node configuration. Next step is to be able to run integration tests in that setup. This needs a bit of understanding how to distribute chunks between all workers in a cluster and how to load data in remote mysql server.10
1191DM-2176Worker management service - implWe need to replace direct worker-mysql communication and other administrative channels with a special service which will control all worker communication. Some light-weight service running alongside other worker servers, probably HTTP-based. Data loading, start/stop should be handled by this service.10
1192DM-2177Implement worker-side squashingIn the port to the new Xrootd Ssi API, worker-side squashing was lost in the shuffle. The plumbing is different, and re-implementing squash functionality is not entirely straightforward, especially because the new API is still missing documentation and examples for implementing cancellation. The consequences of not implementing this are minor--some extra work may be done by the worker, but not a whole lot, because user-level cancellation has not been implemented.12
1193DM-2178Migrate Qserv to external sphgeomMigrating qserv to the new c++ geometry API required porting a fair amount of code from the python layer and updating the plumbing in the czar. During implementation, the sphgeom was in the process of finding a home, so the sg code was temporarily placed under core/modules. This ticket covers: * removing core/modules/sg * updating code to point at the external sphgeom * updating build-logic to properly depend on and link with external sphgeom.4
1194DM-2181S17 Design Prototype EFD Schema for DRPThe epic involves understanding the structure of the EFD database produced by the Engineering and Facility team, and designing schema that will be best suited for Data Release Production. Note that the original EFD database may not even be in MySQL, there were discussions to store it in Postgresql. Deliverable: Alpha version of the EFD database schema for DRP with "real" data loaded (if available).52
1195DM-2182FY18 Design DRP-ready EFD SchemaNULL79
1196DM-2186Move astrometry_net wrapper code from meas_astrom to meas_astrometry_netWe would like to remove all astrometry.net wrapper code from meas_astrom and put it in a new package with a name such as meas_astrometry_net. This will also require moving any abstract task base classes into a lower-level package such as meas_astrom.6
1197DM-2187FY17 Data Loader for Large Tables with No Position InformationWe need to load some tables (e.g., ForcedSource) that lack director positioning, we will only have the director's primary key. The general case is very expensive (lookup position and chunk for each position), however the fact such tables will be spatially-ordered when loading helps.60
1198DM-2188Update the astrometry.net astrometry solver to use the new standard schemaDM-1576 provides a new astrometry solver and a new schema for reference objects. However, the old astrometry.net astrometry solver still uses the old schema. It would be wise to convert the old solver to the new schema so that the match list returned by it is in standard format.4
1199DM-2189Large scale test planningNeed to come up with a plan which data set we will use for large scale tests, and how we will produce it.10
1200DM-2190Documentation for data loaderVaikunth had some "expected" troubles playing with data loader options for his DM-1570 ticket. Main issue I believe is the absence of the documented use cases and their corresponding data loader options. I'll try to add a bunch of common use cases to RST documentation and also verify that all options behave as expected.2
1201DM-2191Define command line tasks for pre-ingest transformationDM-1903 provided a command line task which would transform a {{src}} catalogue into calibrated form. Here, we build on that to provide command line tasks for all source catalogues which will need to be ingested; will include at least {{deepCoadd_src}}, {{goodSeeingCoadd_src}}, {{chiSquaredCoadd_src}}.6
1202DM-2192Provide transformations for "big three" measurementsProvide standard calibration transformations for each of shape, flux and centroid and make sure they are returned as the default transformation for all algorithms measuring those quantities.10
1203DM-2193Add assertXNearlyEqual to afwWe often want to compare two WCS for approximate equality. afw/image/testUtils has similar functions to compare images and masks and I would like to add one for WCS This ended up being expanded to adding functions for many afw classes (not yet including image-like classes, though existing functions in image/testUtils for that purpose should probably be wrapped or rewritten on a different ticket)5
1204DM-2194Ensure proper functioning of HSC distortion correction within obs_subaruThere may be some discrepancy between the pixel units being passed to distest.cc compared to what it is expecting (units of pixels). This needs to be investigated further and remedied in such a way that all other representations (e.g. in camera.py) are consistent with the other obs_XXX representations.6
1205DM-2195Create form framework in ReactWe want to create a new frame work for entering data for forms and dialogs. This is in javascript based on React.js. This is the first step in our javascript conversion.10
1206DM-2197Prototype HTM-based spatial binning to visualize large number of catalog sourcesSee story DM-1551.8
1207DM-2199Build 2015_03 Qserv releaseSee https://confluence.lsstcorp.org/display/DM/Qserv+Release+Procedure for recipe. 1
1208DM-2201Add typemaps for numpy scalarsAdd typemaps so that we can use numpy scalars to call C++ functions that take plain old scalar types (e.g. float, double or int). At present attempting to pass numpy scalars will fail unless the type is one of a restricted subset, e.g. float and numpy.float64 succeed but numpy.float32 is rejected as being an incompatible type, and similarly for integer types.4
1209DM-2202Acquire development dataWe'll need a reference set of data to work against. This could be SDSS, CFHT, or simulated. Should be 10? epochs with realistic atmospheric conditions taken at similar airmass and hour angle. Single band is fine for now.4
1210DM-2203Produce task APIThis will require a new task, so will require a new interface and associated RFCs. The interface should take an arbitrarily large stack of catalogs with or without a reference catalog. It should return a stack ow WCSs that map from the individual coordinate systems to the reference.6
1211DM-2205Break down monster DM-1108 stories[~pgee] -- After finishing the measurement work, your next priority is to get started on DM-1108. However, the stories you have been assigned there are currently too big for useful scheduling (20-30 SPs is a mini-epic; we're looking for less than 10 SPs per story). The first task therefore is to work with [~jbosch], and others if required, to break them down and come up with a set of stories which usefully reflect the work which needs to be done.4
1212DM-2206Deploy and test network emulation for nightly processing testbedDeploy and test network emulation for nightly processing testbed. Assignees: Paul Wefel, Steve Pietrowicz, James Parsons Duration: January - February 201619
1213DM-2207Alert Production SimulatorStart March 2015, finish July 2015 Pietrowicz S - 100%96
1214DM-2208Complex Event ProcessingStart May 2015, finish June 201531
1215DM-2209OCS SoftwareStart July 2015, finish August 2015 Pietrowicz S - 100%10
1216DM-2210Configuration Management (Puppet)Start March 2015, finish May 2015 Mather B - 40%9
1217DM-2211Setup qserv prototype for qserv & SUI teamsStart July 2015, finish August 2015 Glick B - 25% Qserv requirements: - SUI will be testing against lsst10 (or IPAC qserv) for now ? SUI requirements: Xiuqin's 'short term' version: - 1 VM - SUI build server - 4GB memory and 200GB hard disk should be good enough. - 1 VM - Apache server as a proxy and web front end - 4GB memory and 100GB hard disk should be enough - port 80 accessible from outside - 2 VMs - Tomcat servers - each has 16GB memory, access to 1TB of shared hard disk - Port 8080 should be open for Apache server to access - Port 8009 should be open to each other so they can replicate cache. (First 2 VMs are not absolutely needed. We can always use one of the hosts in number 3 to do build and host Apache server.) Trey Roby's 'long term' (in 2+ years) SUI requirements: - 2 vm/machines for Tomcat servers, they are fairly large - each 100 GB mem - each 16 processors - 1 TB disk space shared and accessible between. - 1 vm/machine for Web Server, can be small - 16 GB mem - 30 GB disk - 4 processors - 2 small vm/machines for playing around with workspaces/L3 concepts - each has 8 GB mem - each 10 GB disk - 4 processors - Can share the Tomcat servers disk space10
1218DM-2213Storage Policies and AlignmentStart March 2015, finish August 2015 Freemon M - 100%50
1219DM-2214File System Research and PrototypingStart March 2015, finish September 2015 Freemon M - 100%, Glick B - 25%, Daues G - 40%, Elliot M - 25%100
1220DM-2215File Management TechnologyStart March 2015, finish September 2015 Daues G - 40%, Freemon M - 100%50
1221DM-2216Understand GPFS and commercial filesystems between data centersStart May 2015, finish June 2015 Petravick D - 50%, TBD from SET group6
1222DM-2217Update Sizing ModelStart March 2015, finish September 2015 Alt J - 50%, Petravick D - 10%22
1223DM-2218Base Data Center RequirementsStart March 2015, finish May 2015 Petravick D - 50%18
1224DM-2221Start understanding inheritability and reusability of dataset typesIn order to allow for on-the-fly Task creation of dataset types, the essentials of each type need to be encapsulated in code. That code should be reused across all similar dataset types, and there are opportunities for inheritance and specialization, particularly in cases like simple file-oriented mappers. Investigate this by prototyping a number of possibilities.4
1225DM-2224Wide-Area Network WorkStart March 2015, finish September 2015 Wefel P - 25%20
1226DM-2225LOE - S15 (sys admin)Glick B - 25%, Mather B - 40%, Elliot M - 25%, Freemon M - 100% Wefel P - 25%80
1227DM-2226LOE - S15 (management)Petravick D - 50%, Gelman M - 50%20
1228DM-2227LOE - S15 (misc)All NCSA team10
1229DM-2228LOE - Week ending 3/6/15- backup issues with lsst-stor141 (https://jira.ncsa.illinois.edu/browse/LSST-632) - setup jumbo frames on lsst-xfer (https://jira.ncsa.illinois.edu/browse/LSST-628) - crashplan reconfig on lsst-xfer (https://jira.ncsa.illinois.edu/browse/LSST-629)8
1230DM-2229LOE - Week ending 3/13/15- crashplan issue with lsst-netem (https://jira.ncsa.illinois.edu/browse/LSST-633) - yum/glibc issue with lsst-dbdev1 (https://jira.ncsa.illinois.edu/browse/LSST-631) - account for Jacques Sebag (https://jira.ncsa.illinois.edu/browse/LSST-624)8
1231DM-2230LOE - Week ending 3/20/15- lsst-dbdev2 drive failure (https://jira.ncsa.illinois.edu/browse/LSST-636) - account for Colin Slater (https://jira.ncsa.illinois.edu/browse/LSST-634) - disable Robyn Allsman's accounts (https://jira.ncsa.illinois.edu/browse/LSST-623)26
1232DM-2231LOE - Week ending 3/27/15NULL21
1233DM-2232LOE - Week ending 4/3/15- researched buildbot slowness on lsst-dev <https://jira.lsstcorp.org/browse/DM-2388> - researched buildbot slowness on lsst-dev <https://jira.ncsa.illinois.edu/browse/LSST-638>16
1234DM-2233LOE - Week ending 4/10/15NULL16
1235DM-2234LOE - Week ending 4/17/15NULL17
1236DM-2235LOE - Week ending 4/24/15- Researched how to monitor network drops, errors, etc <https://jira.ncsa.illinois.edu/browse/LSST-641> - Opened up SUI ports on lsst-dev <https://jira.ncsa.illinois.edu/browse/LSST-651> - Moved /nfs/admin/ to /condo/admin/ - Review of EL 6.x kernel security patch - Fixed jumbo frame issues, primarily with old VMs that needed new version of NIC <https://jira.ncsa.illinois.edu/browse/LSST-652>15
1237DM-2236Prototyping with PuppetNULL5
1238DM-2237Test Puppet with base configuration manifestsNULL38
1239DM-2239Develop use cases for TOWGStart March 2015, finish May 2015 Petravick D - 50%, Glick B - 25%, Gruendl R - 5%20
1240DM-2240ISO WorkStart March 2015, finish September 2015 Withers A - 25%40
1241DM-2243Extend API: expose cursorExtend API to expose cursor. This was brought up by Andy in DM-2137. 1
1242DM-2245Define ntermediate plan for MacOSX builds We have 1. Obtain a dedicated colo OSX server 2. Have done some testing using the SQuaRE vagrant-sandbox harness It is therefore a plausible avenue forward to do at least a nightly build/deploy/intgeration-test on OSX pending more extensive arrangements requiring purchase of hardware. 4
1243DM-2246Github transition for DMDM's transition for code repositories to Github is complete. Outstanding are data repositories; a cleanup of contrib/externals; and supporting the Stash move. 10
1244DM-2247Workflow improvements for Sims / PST projectsNew wokflow for Sims Merge of Opsim and CATsim New workflow for PST 5
1245DM-2248Prototype automated system for release preparation builds Prototype an environment that allows automatic - Provisioning of a VM for a certain OS - Install the Stack prerequisites for that OS - Build the stack via newinstall.sh from the production server - Run integration tests (in the curent case the sdss test https://github.com/lsst-sqre/sandbox-stackbuild22
1246DM-2250Galaxy Fitting via "ngmix"Provide wrappers that let us run Erin Sheldon's [ngmix|https://github.com/esheldon/ngmix] as part of the DM pipeline. Issues so far only cover getting the a single-frame (visit or coadd) version of the code running. ngmix can also to simultaneous fitting to multiple exposures, but it's not yet clear how we'll want to handle the I/O and that interacts with a future multifit plugin framework.45
1247DM-2251Implement SExtractor's SPREAD_MODELThe new SExtractor star/galaxy classifier, SPREAD_MODEL, is popular with everyone who has tried it, and should be simple to implement by building on code in meas_modelfit. See definition and discussion here: http://arxiv.org/abs/1306.44462
1248DM-2252Define common interface for star/galaxy classifiersWe need some common fields for star/galaxy classifiers so they can participate in a slots-like mechanism once we have several of them. Most of these can produce a floating point number between 0 and 1 (but sometimes it's not limited to that range), and it's rarely a true probability. We may want to make a boolean that results from a threshold on these be the common interface, but we don't necessarily want to hard-code such a threshold into the processing either - especially when we could also use a FunctorKey to get a boolean from the floating point value.2
1249DM-2253add third-party package builds for ngmix dependenciesIn addition to numpy and scipy, ngmix depends on the emcee and statsmodel packages. While it can build without them, we probably want the full functionality. I also see some undeclared dependencies on the "esutil" and "fitsio" packages (all from esheldon's GitHub), and there may be a few more dependencies on some of his own packages. This issue includes creating a third-party build for ngmix itself.6
1250DM-2254Add SFM plugin for ngmix MCMC samplingAdd an SFM plugin for ngmix MCMC fitting, as in the example in the ngmix README. This should depend on DM-5429 (or a suitably configured modelft_ShapeletPsfApprox) for PSF approximation. For now, we should just take the mean of all parameters in the MCMC samples and write those to the record, as we currently don't have any way to save all of the samples. Testing and tuning this algorithm to get it working well should be deferred to another issue. The only requirement here is that it be able to run without crashing (even if that means setting the number of samples small).10
1251DM-2256make a simple build for Firefly packageWe want to have a out of box build for users of Firefly package. It will include a simple Firefly viewer. 6
1252DM-2257Allow eups xrootd install script to be relocatablexrootd lib/ directory should be s relative symlink to lib64, no a full path link.1
1253DM-2258Setup in2p3 cluster for Qserv team- create accounts - update umask on stack to each account - provide easy ssh config if possible - setup up build procedure (each developer can build Qserv using tag git and 'git' version is set up by default on all the Qserv if ti exists)2
1254DM-2259remove PSFAttributesPSFAttributes has long been deprecated, and we just need a little more work to remove it: - Add an effective area accessor to the Psf interface, and implement it in ImagePsf. - Replace usage of PSFAttributes with usage of Psf accessors. This may require a little work if code depends on the details of how the shape was calculated, as PSFAttributes provided support for more algorithms than we will going forward.2
1255DM-2262Improve build system for sphgeomNULL2
1256DM-2263Create pilot condor jobsCreate long-running jobs to reduce the startup time for new HTCondor jobs. This can be implemented as a parent/child, or as a on_exit_remove=false directive in HTCondor. I suspect it will be a combination of the two.21
1257DM-2264Implement task switching between work job machinesAP requires that jobs are handed off to different worker job clusters as the previous set of images is being worked on.4
1258DM-2265RefactoringThe initial prototype of the AP simulator needs to be refactored to improve how tasks are handled by the components for further development.25
1259DM-2268Implement API for reading simulated camera dataCurrently this is generated by the replicator and sent to the distributor. The idea where is to put the API in place so that the data will be transferred from outside of the replicator to it, and then passed on.10
1260DM-2269Implement file transfer API Create file transfer API so we can easily test different types of file transfer mechanisms to/from the AP.4
1261DM-2270Move VMs to Docker containersWe anticipate being able to move from the VMs that we currently use to using docker. This will require some coordination with Greg Daues to see how HTCondor is configured. 2
1262DM-2272Unify logging strategy for python scripts- add -vvv option - remove default value for configuration file in logger, provide it at each script level (i.e. integration test, data loader). - if it exists, provide configuration file option explicitly to all called submodules which uses it. See admin/python/lsst/qserv/admin/logger.py {code:python} 14 def get_default_log_conf(): 15 default_log_conf = "{0}/.lsst/logging.ini".format(os.path.expanduser('~')) 16 return default_log_conf 17 18 def add_logfile_opt(parser): 19 """ 20 Add option to command line interface in order to set path to standar 21 configuration file for python logger 22 """ 23 24 parser.add_argument("-V", "--log-cfg", dest="log_conf", 25 default=get_default_log_conf(), 26 help="Absolute path to yaml file containing python" + 27 "logger standard configuration file") 28 return parser 29 30 31 def setup_logging(path='logging.ini', 32 default_level=logging.INFO): 33 """ 34 Setup logging configuration from yaml file 35 if the yaml file doesn't exists: 36 - return false 37 - configure logging to default_level 38 """ 39 if os.path.exists(path): 40 with open(path, 'r') as f: 41 logging.config.fileConfig(f) 42 return True 43 else: 44 logging.basicConfig(level=default_level) 45 return False {code}6
1263DM-2277Document HOW-TO setup-up krb5 for easy cluster access{code:bash} su aptitude install krb5-user # edit /etc/krb5.conf w.r.t ccage one # then as desktop user kinit ssh ccqservxxx {code} /etc/krb5.conf {code:bash} [libdefaults] default_realm = IN2P3.FR ... allow_weak_crypto = true ... [realms] IN2P3.FR = { kdc = kerberos-1.in2p3.fr:88 kdc = kerberos-2.in2p3.fr:88 kdc = kerberos-3.in2p3.fr:88 master_kdc = kerberos-admin.in2p3.fr:88 admin_server = kerberos-admin.in2p3.fr kpasswd_server = kerberos-admin.in2p3.fr default_domain = in2p3.fr {code} sshconfig: {code:bash} Host ccqservbuild GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardX11 yes HostName ccqservbuild.in2p3.fr #ProxyCommand ssh -W %h:%p cc Host ccqserv1* GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardX11 yes HostName %h.in2p3.fr ProxyCommand ssh -W %h:%p ccqservbuild {code}2
1264DM-2279Fix problems with mysql timeoutWe added some code for supporting reconnecting (see https://dev.lsstcorp.org/trac/ticket/3042) but clearly not enough to recover from connection timeouts. This needs to be addressed.1
1265DM-2280The TAN_PIXELS cameraGeom coordinate system should be with respect to the center of the focal planeThe TAN_PIXELS cameraGeom coordinate system (the position on a detector if there is no optical distortion) is presently defined with respect to the center of the detector -- i.e. a star at the center of the detector will have the same position in PIXELS and TAN_PIXELS coordinates. That is a mistake. TAN_PIXELS should be defined with respect to the center of the focal plane, since it then reflects the effects of having optical distortion or not. Fixing this will help meas_astrom match stars. The effects of not fixing it are making the matcher search farther for a fit. As long as we allow sufficient offset in the matcher config the current system will work, but it is not ideal.2
1266DM-2281Implement connection poolImplement a class that manages a connection pool, and optionally, if configured, restarts connection as needed in case of timeout.1
1267DM-2282Switch to using db connection poolSwitch to using the db connection pool. Note, in addition to getting auto-reconnect, in metaserv that would handy if we need to talk to multiple database servers simultaneously.1
1268DM-2286Participate in design processParticipate and guide the SUI design process, generate charts and documents as appropriate9
1269DM-2287Move javascript code into firefly repo and begin creating a real input formNULL10
1270DM-2288Work with Camera & Pipeline team to spec out proof of concept toolsNULL14
1271DM-2289Personnell requisitions Work though recruiting for software effort. Investigated and filled the "kenton" recruiting pattern at NCSA -- (few explicit requirements, many desirable) Began discussion to break down hires for "2nd" floor work -- to be in the LSST group v.s support groups -- ADS and Doug's group3
1272DM-2290Arrange for commercial object store presentationarrage for presentations next week w.r.t commercial object store. The vendor in question is know to NCSA and has claims to have produced a commercial object store having both NFS, GPFS and swift interfaces. 1
1273DM-2291Begin WBS review Begin comprehensive review of the WBS. Forced on overall framework and begin workflow systems 1
1274DM-2292Security officer orientationbegin orientation of LSST ISO ALEX Withers. 1
1275DM-2293Internet2 TIER investigationNULL1
1276DM-2294Unable to start cmsd on Qserv worker nodeSome build issues have qlready been fixed in commit: 9dd378829e8751a6852356967411c20580e2a1c3 Here's the log: {code:bash} [fjammes@ccqserv101 ~]$ cat /qserv/qserv-run/var/log/worker/cmsd.log 150309 21:19:46 9794 Starting on Linux 3.10.0-123.8.1.el7.x86_64 Copr. 2004-2012 Stanford University, xrd version v20140617-203cf45 ++++++ cmsd worker@ccqserv101.in2p3.fr initialization started. Config using configuration file /qserv/qserv-run/etc/lsp.cf =====> all.adminpath /qserv/qserv-run/tmp =====> xrd.port 1094 =====> xrd.network nodnr Config maximum number of connections restricted to 4096 Config maximum number of threads restricted to 2048 Copr. 2007 Stanford University/SLAC cmsd. ++++++ worker@ccqserv101.in2p3.fr phase 1 initialization started. =====> all.role server =====> ofs.osslib libxrdoss.so =====> oss.localroot /qserv/qserv-run/xrootd-run =====> cms.space linger 0 recalc 15 min 10m 11m =====> all.pidpath /qserv/qserv-run/var/run =====> all.adminpath /qserv/qserv-run/tmp =====> all.manager ccqserv100.in2p3.fr:2131 =====> all.export / nolock The following paths are available to the redirector: w / ------ worker@ccqserv101.in2p3.fr phase 1 server initialization completed. ++++++ worker@ccqserv101.in2p3.fr phase 2 server initialization started. Plugin Unable to find required version information for XrdOssGetStorageSystem in osslib libxrdoss.so ------ worker@ccqserv101.in2p3.fr phase 2 server initialization failed. 150309 21:19:46 9794 XrdProtocol: Protocol cmsd could not be loaded ------ cmsd worker@ccqserv101.in2p3.fr:1094 initialization failed {code}2
1277DM-2295Read through Don's SCADA notes and commentNULL1
1278DM-2299Revisit db and dbPool, separate connection from utilitiesRevisit whether we need something better than a very basic db connection pool. It may be worth looking at http://docs.sqlalchemy.org/en/rel_0_9/core/pooling.html (or even sqlalchemy in general). Note the Pooling Plain DB-API Connections section - one can use sqlalchemy pooling independently of the other library features. Separate utilities like createDb(), dbExists() and such from core part that deals with connections / sqalchemy.12
1279DM-2300Improve Webserv/MetaservWork includes implementing features requested by SUI (schema metadata, units etc)35
1280DM-2301Support metadata for databases without descriptionThe metaserv should be able to support databases for which we don't have the ascii schema with descriptions and special tokens (ucd, units etc). This story involves implementing it. In practice, the metaserv/bin/metaBackend will need to be extended to implement "ADD DB"4
1281DM-2305Measurement transforms for FluxProvide calibration transforms for flux measurements to magnitudes.3
1282DM-2306Measurement transforms for centroidsProvide calibration transforms for all algorithms measuring centroids.5
1283DM-2307Measurement transforms for shapesProvide calibration transforms for algorithms measuring shapes.2
1284DM-2309Update dev quick-start guide to new git repositoriesThe quick-start documentation for developers still points to the old git repositories. The RST document needs to be updated to the GitHub repos.1
1285DM-2312obs_test's table file is out of dateobs_test's table file is somewhat out of date. Problems include: - afw is required but missing - meas_algorithms and skypix are used by bin/genInputRegistry.py, which is only used to create the input repo so these can be optional - daf_persistence is not used - daf_base is only used by bin/genInputRegistry.py, so it can be optional (though it is presumably setup by daf_butlerUtils in any case)1
1286DM-2314Improve xssi API to send a few bytes with the message informing the client that a response is available on the serverThis would allow Qserv no to send the first protobuf header as a xrootd in-band message, and save some resources (network and CPU due to xrootd/TCP/IP encapsulation)6
1287DM-2316Clarify expectations for unauthenticated user data accessh4. Short version: Clarify what existing community practices, notably including VO interfaces, appear to rely on the availability of unauthenticated access to information in astronomical archives. h4. Details: At the February DM All Hands, [~frossie] raised an objection when it was mentioned that there is a presumption that all user access to LSST data through the DM interfaces (as opposed to through EPO) will be authenticated. We don't appear to have ever documented an explicit requirement that all access be authenticated. The basic controlling requirement is OSS-REQ-0176, "The LSST Data Management System shall provide open access to all LSST Level 1 and Level 2 Data Products, as defined in the LSST System Requirements and herein, in accordance with LSSTC Board approved policies. ...", which was a carefully crafted indirection at a time when the policy for non-US/Chile access was still being developed. However, this presumption has been around for a long time. It is inherent to the project policy that access to the non-Alert data will be limited to individuals who are entitled to it. No matter what we think the final policy might be, we do have to design a system that can be consistent with this policy. [~frossie] stated that the astronomical community relies on certain types of data and metadata - she mentioned coverage maps, among others - being available through unauthenticated interfaces. This ticket is to ask her (and others) to collect documentation of those existing practices, so that we can figure out what the expectations may be and how to respond to them in our design.2
1288DM-2320Remove deprecated merging code: rproc::TableMergerrproc::TableMerger seems to be replaced with rproc::InfileMerger, so this class could certainly be removed easily. 2
1289DM-2322Revisit exceptions in db moduleRevisit db/python/lsst/db/exception.py. Perhaps get rid of the numbers.5
1290DM-2323KT reading list for operational requirementsNULL2
1291DM-2324Observatory site requirements readingNULL2
1292DM-2327Setup hosts for SUI (2x Tomcat, Apache, and build)Xiuqin's 'short term' version: 1 VM - SUI build server 4GB memory and 200GB hard disk should be good enough. 1 VM - Apache server as a proxy and web front end 4GB memory and 100GB hard disk should be enough port 80 accessible from outside 2 VMs - Tomcat servers each has 16GB memory, access to 1TB of shared hard disk Port 8080 should be open for Apache server to access Port 8009 should be open to each other so they can replicate cache. (First 2 VMs are not absolutely needed. We can always use one of the hosts in number 3 to do build and host Apache server.) The 2 Tomcat servers are larger than we can currently support as VMs. We've discussed repurposing 2 of the older LSST "cluster/condor" nodes (e.g. lsst14 & lsst15) for this purpose. But, ideally these could be implemented with the new vSphere hardware if the timeframe works.4
1293DM-2329review ""data center in a box" mali. Recover consultant's contact into reviewed the data center in a box, recovered consultant's name prior to drafting a SOW.1
1294DM-2330 attend DDN WOS briefing, write summary note. as described above. Summary note is attached. also looked for use of this product in DOE labs, who would be consumers of LSST data. Discovered that it had been investigated for use in HEP a few years earlier, but that is was not adopted because, at that time the hardware and software were coupled.1
1295DM-2331misc for week of march 9finalize job descriptions. Meet with kantor additional hour of orientation for the ISO. group meeting Misc.1
1296DM-2334Simplify interactions with XrdOssThe qserv code is still using the old ssi scheme for the cmsd, this needs to be rewritten. For details, see https://listserv.slac.stanford.edu/cgi-bin/wa?A1=ind1503&L=QSERV-L#35
1297DM-2335Setup IRODS zone on ISL OpenStackWe begin an examination of iRODS for managing data collections. We perform initial testing using resources available on NCSA's ISL OpenStack. To mock up a zone or 'data grid' managed by iRODS, we set up an ICAT server, a resource server (this is a data storage resource that does not run the central database), and a client host. 4
1298DM-2336Save iRODS installations/servers as docker imagesWe install and configure iRODS servers (an ICAT server, a resource server, a client host) in docker and make images, pushing the results to a docker hub repository. 4
1299DM-2337develop/propose storage policiesNULL6
1300DM-2338develop/propose storage proceduresNULL10
1301DM-2339develop/propose storage implementationNULL3
1302DM-2340Reprise SDRP processing metricsIn support of an SDRP-based science talk of Yusra AlSayyad, we spent some cycles gathering/summarizing processing middleware results and metrics from the US side of processing of the Split DRP. This information from notes, logs, databases, etc provided contextual information on the processing campaign that produced the SDRP science results. 2
1303DM-2341Use parallel ssh to manage Qserv on IN2P3 clusterIN2P3 sysadmin won't manage Qserv through puppet. So Qserv team has to provide ssh scripts to do this. 5
1304DM-2342Integrate changes from Events code reviewNULL6
1305DM-2343Move afw_extensions_rgb functionality into afw properSee RFC-32 1
1306DM-2347(In)equality semantics of Coords are confusingViz: {code} In [1]: from lsst.afw.coord import Coord In [2]: c1 = Coord("11:11:11", "22:22:22") In [3]: c1 == c1, c1 != c1 Out[3]: (True, False) In [4]: c2 = Coord("33:33:33", "44:44:44") In [5]: c1 == c2, c1 != c2 Out[5]: (False, True) In [6]: c3 = Coord("11:11:11", "22:22:22") In [7]: c1 == c3, c1 != c3 Out[7]: (True, True) {code} {{c1}} is simultaneously equal to *and* not equal to {{c3}}!1
1307DM-2348useValueEquality and usePointerEquality fail to failThese SWIG macros return a class instead of raising an exception instance when the equality operation fails.1
1308DM-2349Add unit tests to SchemaToMetaAdd unit tests, also improve variable names as suggested by K-T in comments in DM-21391
1309DM-2352Install and learn to use iPython notebookNULL4
1310DM-2353Participate in design discussionParticipate in the design discussions three times weekly for two to three months. 9
1311DM-2354Participate in design discussionParticipate in the design discussions three times weekly for two to three months. 9
1312DM-2355Participate in design discussionParticipate in the design discussions three times weekly for two to three months. 9
1313DM-2356Identify the hardware resources needed at NCSA for short term development Supply the hardware resources needed at NCSA for short term development. It is captured in DM-2327 1
1314DM-2357make PixelFlagsAlgorithm fully configurablePixelFlagsAlgorithm currently hard-codes the mask planes it considers. This should be fully configurable instead. It also overloads the "edge" flag to mean both "EDGE mask plane was set" and "centroid was off the edge of the image". These should be different flags. We may also want to have this algorithm use SafeCentroidExtractor.' Finally, the algorithm is woefully undertested.2
1315DM-2358standardize handling of missing peaks in centroidersGaussianCentroid has a NO_PEAK flag that it sets when there is no Peak to use as an input. SdssCentroid does not. This behavior should be standardized. Maybe we should use SafeCentroidExtractor here?1
1316DM-2363RGB code introduces dependency on matplotlibWhile the new RGB code looks like it's just calling NumPy, NumPy is actually delegating to matplotlib under the hood when it writes RGB(A) arrays. It also turns out that code is broken in matplotlib prior to 1.3.1 (though that shouldn't be a problem for anyone but those who - like me - are trying to use slightly older system Python packages). I think think this means we should add an optional dependency on matplotlib to the afw table file, and condition the running of the test code on matplotlib's presence (and, ideally, having the right version). I'm happy to do this myself (since I'm probably the only one affected by it right now).1
1317DM-2364Revisit the choice of using flaskWe should quickly revisit if flask is the right choice for us. Related: reportedly, our simple flask-based webserver is using more CPU in an idle state than expected. It might be useful to profile things, and look into that. 1
1318DM-2367run lsstswBuild.sh in a clean sandboxThe "driver" script, lsstswBuild.sh, used by the buildbot slave on lsst-dev to initiate a "CI run" has a number of environment assumptions (binaries in the $PATH, paths to various components, hostnames, etc.). This prevents it from [easily] being invoked on any other host. As lsstswBuild.sh builds a number of packages that are not in the lsst_distrib product, the os level dependencies for these other products need to be determined. In addition, the current version of lsstswBuild.sh and related scripts on lsst-dev are not version controlled.8
1319DM-2370Move QuerySession::_stmtParallel from query::SelectStmtPtrVector to query::SelectStmtPtrQuerySession::_stmtParallel is a vector but it seems only it's first element is used, so storing it in a vector doesn't seem necessary. Code can be easily simplified here. This should lead to mode understandable code. QuerySession public members and method comments could also be improved here.4
1320DM-2371run lsstswBuild.sh under Jenkins on EL6* Demonstrate lsstswBuild.sh being invoked by jenkins on EL6 (same OS as lsst-dev). * Experiment with a single build slave attached to a jenkins master * Investigate configuration management of jenkins builds.6
1321DM-2373Improve logger use in qservQserv logger must be easily configurable. Next technique, based on log4cxx documentation allows to do it easily. Example: In QuerySession.cc, initialize a static logger: {code:c++} namespace lsst { namespace qserv { namespace qproc { LOG_LOGGER QuerySession::_logger = LOG_GET("lsst.qserv.qproc.QuerySession"); {code} then use it in Query session member functions: {code:c++} if (LOG_CHECK_LVL(_logger, LOG_LVL_DEBUG)) { std::ostringstream stream; _showFinal(stream); LOGF(_logger, LOG_LVL_DEBUG, "Query Plugins applied:\n %1%" % stream.str()); } {code} And use log4cxx.property to easily configure, AT RUNTIME, logging for each Qserv module class: {code} # logger for all module will inherit this one log4j.logger.lsst.qserv=ERROR # this could be generalized to all Qserv modules: log4j.logger.lsst.qserv.qproc=INFO # can also be done at the class level for advanced debugging #log4j.logger.lsst.qserv.qproc.QuerySession=DEBUG {code} And then in the log: {code} /home/qserv/qserv-run/2015_03/var/log/qserv-czar.log:0319 17:08:48.786 [0x7f208da93740] DEBUG lsst.qserv.qproc.QuerySession (build/qproc/QuerySession.cc:118) - Query Plugins applied: {code} This proposal is a draft and should be improved before implementing it.8
1322DM-2375evaluate NCSA proposal to investigate CEPH in the context of NCSA Integrated systems labThe integrated systems lab (ISL) is the orgianizational vehicle used to investigate pre-production technologies at NCSA. Since We still lack the ability to procure goods, I evaluated and commented on an ISL proposal to investigate the CEPH file system for its properties as an alternative to the LSST baseline file system GPFS. 1
The file is too large to be shown. View Raw