Geneva Patch 6 Hot Fix 1

Geneva Patch 6 Hot Fix 1 provides fixes for the Geneva release.

For Geneva Patch 6 Hot Fix 1:
Build date: 05-04-2016_1141
Build tag: glide-geneva-08-25-2015__patch6-hotfix1-04-29-2016

For more information about how to upgrade an instance, see Upgrade to Geneva.

For more information about the release cycle, see the ServiceNow Release Cycle. For a downloadable, sortable version of Geneva fixed problems, see KB0598265.

Note: This version is approved for FedRAMP.

Fixed problems in Geneva Patch 6 Hot Fix 1

Problem Short description Description Steps to reproduce
Platform Security

PRB674503

Performance degradation of REST APIs for a table with variables Users are experiencing performance issues while accessing data via REST service from a table that has variable fields. Slowness occurs while evaluating ACLs using GlideRecordSecure.
Service Catalog

PRB649987

PriceGenerator code gets called regardless of Cart Layout settings Many unnecessary calls are being made to the PriceGenerator code for service catalog items, even when their cart layouts are defined to specifically omit the prices. This issue was originally opened as PRB628164 (the GlideappCatalogPriceGenerator gets called unconditionally, even if glide.sc.price.display=never), and the problem was closed. However, the code still demonstrates the same behavior: regardless of whether we display the price or not, we always calculate the price. Catalog items are rendering slowly because of unnecessary function calls that include DB queries.
  1. Navigate to System Diagnostics > Session Debug > Debug SQL (Detailed).
  2. Navigate to System Properties > Service Catalog.
    • Ensure that the "Use the sc_layout driven cart macros (default true)" checkbox is checked (i.e., glide.sc.use_cart_layouts = true).
    • Ensure that the "When to show prices and sub-totals on the Service Catalog Cart (Overrides sc_layout record settings):" is set to "Never Show Prices" (i.e., the glide.sc.price.display = )
    • If either value was changed, click Save.
  3. Navigate to Service Catalog > Catalog Definitions > Maintain Cart Layouts.
    • Click the Order Status Screen cart layout.
    • Click Components. Uncheck the "Frequency Subtotal" and "Total" checkboxes.
    • Click Columns. Uncheck the "Price column" and "Total column" checkboxes.
    • Update.
  4. Navigate to Service Catalog > Catalog Definitions > Maintain Cart Layouts.
    • Click the Shopping Cart Widget cart layout.
    • Click Components. Uncheck the "Price", "Recurring Price" and "Subtotal" checkboxes.
    • Update.
  5. Navigate to Service Catalog > Catalog Definitions > Maintain Cart Layouts.
    • Click the Item Ordering Widget cart layout.
    • Click Components tab. Uncheck the "Price", "Recurring Price", "Subtotal" and "Recurring Subtotal" checkboxes.
    • Update.
  6. Navigate to Service Catalog > Catalog Definitions > Maintain Items.
    • Find and click the Finishing Services Catalog Item.
    • Click Additional actions > Configure > Form Layout.
    • Add the Use cart Layout field to the form.
    • Save.
    • Ensure "Use cart layout" is checked for the record.
    • Save.
  7. Navigate to Self-Service > Service Catalog.
    • Click the Office category.
    • Click the Services related category.
    • Click the Finishing Services catalog item.
Regardless of whether the cost is displayed or not, it is calculated.
Note the many queries related to item_option_new, sc_cart_item, sc_item_option, sc_cat_item, fx_price, etc. Click the + sign at the end of the queries to expand the stack trace and make note of the stack traces:
com.glide.script.GlideRecord.query(GlideRecord.java:2707)
com.glideapp.servicecatalog.Cart.remove(Cart.java:452)
com.glideapp.servicecatalog.pricing.PriceGenerator.calc
  InitialPrice(PriceGenerator.java:94)
com.glideapp.servicecatalog.pricing.PriceGenerator.init(Price
  Generator.java:73)
com.glideapp.servicecatalog.pricing.PriceGenerator.(Price
  Generator.java:66)
com.glideapp.servicecatalog.ServiceCatalogLayoutService.
  getItemPrices(ServiceCatalogLayoutService.java:348)
com.glideapp.servicecatalog.tags.CatalogCartTag.initialize
  JellyContext(CatalogCartTag.java:117)
com.glideapp.servicecatalog.tags.CartTag.doTag
  (CartTag.java:31)
and
com.glideapp.servicecatalog.pricing.PriceGenerator.getDisplay
  PriceFromCartItem(PriceGenerator.java:153)
com.glideapp.servicecatalog.pricing.PriceGenerator.calcDisplay
  Price(PriceGenerator.java:145)
com.glideapp.servicecatalog.pricing.PriceGenerator.calcTotal
  AndDisplay(PriceGenerator.java:126)
com.glideapp.servicecatalog.pricing.PriceGenerator.getPrice
  FromCartorRequestItem(PriceGenerator.java:104)
com.glideapp.servicecatalog.pricing.PriceGenerator.calcInitial
  Price(PriceGenerator.java:93)
com.glideapp.servicecatalog.pricing.PriceGenerator.init(Price
  Generator.java:73)
com.glideapp.servicecatalog.pricing.PriceGenerator.(PriceGenerator.java:66)
com.glideapp.servicecatalog.ServiceCatalogLayoutService.get
  ItemPrices(ServiceCatalogLayoutService.java:348)
com.glideapp.servicecatalog.tags.CatalogCartTag.initialize
  JellyContext(CatalogCartTag.java:117)
com.glideapp.servicecatalog.tags.CartTag.doTag(CartTag.
  java:31)
Service Catalog

PRB670617

servicecatalog_ checkout_view_v2 generates too many requests to sc_layout For a single item in checkout, around 77 identical queries are generated. When more items are added to checkout, the number of queries also increases. In a Fuji or Geneva instance:
  1. Ensure that checkout_view_2 is enabled (not 1) and SQL debug is enabled.
  2. Navigate to Service Catalog > Hardware > Apple iPhone 5.
  3. Make sure quantity is set to 1.
  4. Click Add to Cart 10 times (we want 10 separate line items, not a single line item of quantity 10).
  5. Check out and ensure that you are navigated to the UI page servicecatalog_checkout_view_v2.
Instead of the query being made only once, each line item in the checkout view causes 50 - 100 identical queries to sc_layout:
SELECT ... FROM (sc_layout sc_layout0 INNER JOIN
  sys_metadata sys_metadata0 ON sc_layout0.`sys_id` =
  sys_metadata0.`sys_id` ) WHERE sc_layout0.`target` =
  'order_status' AND sc_layout0.`active` = 1

Fixes included with Geneva Patch 6 Hot Fix 1

* Unless any exceptions are noted, you can safely upgrade to this release version from any of the versions listed below. These prior versions contain PRB fixes that are also included with this release. Be sure to upgrade to the latest listed patch that includes all of the PRB fixes you are interested in.