Composite Components - quality-manager/onboarding GitHub Wiki
Composite Components: FGC
This is currently a set of unorganized notes that will be later organized.
Background
There has been significant work done in the past on FGC. Much has changed since planning for the next phase of FGC. Foundation has created a new API and architecture to support composite components. I am now starting from a clean slate to understand this architecture and the adoption required for QM.
Tasks
- Review prior work in discussions and code
- Re-evaluate issues and adoption based on new Foundation Composite API's and architecture
Notes
-
enable composites system property:
com.ibm.team.repository.service.internal.dataaccess.composite.compositesSupported
-
Composite is set using
oslc_config.context
or headerConfiguration-Context
with composite ID URI or composite UUID- Note, the UUID on the composite ID URI is not the same as the composite UUID. The composite ID URI must be a GC URL
- A composite can only be resolved by providing the list of contributing configurations.
- AbstractTeamServerServlet gets the list of contributions from GC using composite URI(GC URI)
-
Setting write configuration in composite
- header
Configuration-Context-Write
with configuration URI or UUID - Long running processes must use UUID to ensure consistency, this will prevent using GC as lookup for the composite contributions to identify the composite UUID
- header
-
survey of existing QM Component code can be found by searching
isFgcEnabled
in Java and JS- note, this is hard coded to true. All these checks should be removed
-
survey of prior aggregate component work can be found by searching
isMultiFGCEnabled
in Java and JS- This was enabled via system property. See
com.ibm.team.repository.service.SimpleServerDescription.FINE_GRAINED_COMPONENTS_ENABLE_PROPERTY_NAME
- I'm assuming this work is no longer relevant or must change with the new Jazz Composite API
- This was enabled via system property. See
-
QM Assumes configurations are always associated to a component. Composites have null as component
- This probably breaks the use of component in QM everywhere
-
Composites can compose both streams and baselines. This will create issues where we normally make all of QM readonly for baselines, but with composites, this should be per item. However, information about which artifact comes from baseline is not available
-
DNG found issues using stream priority for skew resolution. They will be going back to skew prevention.
-
AbstractOslcService.handleOslcRequest - needs to handle composite resolution
-
major issues from discussion with Paul T
- how to handle version skew
- on fetch
- on query
- JAF Answer: handled by using the order of Composite contributions. You will never have duplicates in fetch or query
- cross component linking
- dangling ref
- QM did first pass to prevent blow up
- life cycle issue
- changes to Composite components during operations
- JAF Answer: Composites are immutable so long running operations are not affected
- clone / refactor
- make availale in different component
- creates new version, version is not shared
- Don't know who is using clone today
- Refactor needed to fix existing customers
- how to handle version skew