Äcdocutils.nodes
document
q)Åq}q(U	nametypesq}q(X���loggingschema.htmlqàX���installationqNX���example queriesqNX
���solr indexq	NX���introductionq
NX���system metadata updatesqNX���usagestatistics.htmlqàX���log recovery processingq
NX���solr query processingqNX���log harvest processingqNX���log aggregation overviewqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU
decorationqNUautofootnote_startqKUnameidsq}q(hUloggingschema-htmlqhUinstallationqhUexample-queriesqh	U
solr-indexqh
UintroductionqhUsystem-metadata-updatesqhUusagestatistics-htmlq h
Ulog-recovery-processingq!hUsolr-query-processingq"hUlog-harvest-processingq#hUlog-aggregation-overviewq$uUchildrenq%]q&(cdocutils.nodes
block_quote
q')Åq(}q)(U	rawsourceq*U�Uparentq+hUsourceq,NUtagnameq-Ublock_quoteq.U
attributesq/}q0(Udupnamesq1]Uclassesq2]Ubackrefsq3]Uidsq4]Unamesq5]uUlineq6NUdocumentq7hh%]q8cdocutils.nodes
comment
q9)Åq:}q;(h*Xõ��@startuml images/log-aggregation-activity.png
  skinparam {
      titleFofntColor black
              titleFontSize 16
              titleFontStyle normal
              titleFontName Lucida Bright
      }
title: Log Aggregation Overview
(*) -down-> Initialization
-down-> recover recent data from other CNs
-down-> Register log index top listener
-down-> register systemmetadata listener
-down-> Loop through MNs
if "More MNs to harvest" then
-down->[true] "get log records from MN"
-down-> "add data from systemmetadata"
-down-> "add location data"
-down-> send entries to Solr
-right-> Loop through MNs
else
-->[false] ===foo===
endif

===foo=== -down-> (*)
@endumlh/}q<(U	xml:spaceq=Upreserveq>h4]h3]h1]h2]h5]uh+h(h%]q?cdocutils.nodes
Text
q@Xõ��@startuml images/log-aggregation-activity.png
  skinparam {
      titleFofntColor black
              titleFontSize 16
              titleFontStyle normal
              titleFontName Lucida Bright
      }
title: Log Aggregation Overview
(*) -down-> Initialization
-down-> recover recent data from other CNs
-down-> Register log index top listener
-down-> register systemmetadata listener
-down-> Loop through MNs
if "More MNs to harvest" then
-down->[true] "get log records from MN"
-down-> "add data from systemmetadata"
-down-> "add location data"
-down-> send entries to Solr
-right-> Loop through MNs
else
-->[false] ===foo===
endif

===foo=== -down-> (*)
@endumlqAÖÅqB}qC(h*U�h+h:ubah-UcommentqDubaubh9)ÅqE}qF(h*X��@startuml images/log-aggregation-sequence.png
skinparam {
      sequenceTitleFontColor black
              sequenceTitleFontSize 16
              sequenceTitleFontStyle normal
              sequenceTitleFontName Lucida Bright
      }
      title: Log Aggregation Processing

      LogAggregationScheduleMananger -> LogAggregationScheduleMananger : addHarvest()
      activate LogAggregationScheduleMananger
      LogAggregationScheduleMananger -> LogAggregationHarvestJob : execute()
      deactivate LogAggregationScheduleMananger
      activate LogAggregationHarvestJob
      LogAggregationHarvestJob -> LogAggregatorTask : call()
      deactivate LogAggregationHarvestJob
      activate LogAggregatorTask
      LogAggregatorTask -> LogAggregatorTask : retrieve()
      LogAggregatorTask -> MNode : getLogRecords()
      activate MNode
      MNode -> LogAggregatorTask : Log
      deactivate MNode
      LogAggregatorTask -> "hzLogEntryTopic : ITopic" : publish(solrItemList)
              deactivate LogAggregatorTask
      activate "hzLogEntryTopic : ITopic"
      deactivate MNode
      "hzLogEntryTopic : ITopic" -> LogEntryTopicListener : onMessage()
      deactivate "hzLogEntryTopic : ITopic"
      activate LogEntryTopicListener
      LogEntryTopicListener -> indexLogEntryQueue
      deactivate LogEntryTopicListener
      activate indexLogEntryQueue
      indexLogEntryQueue -> indexLogEntryQueue : offer()
indexLogEntryQueue -> indexLogEntryQueue : poll()
      indexLogEntryQueue -> LogEntryQueueTask
      deactivate indexLogEntryQueue
      activate LogEntryQueueTask
      LogEntryQueueTask -> LogEntryIndexTask : call()
      deactivate LogEntryQueueTask
      activate LogEntryIndexTask
      LogEntryIndexTask -> solrServer : addbeans()
      deactivate LogEntryIndexTask

@endumlh+hh,Xi���/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/LogAggregator.txtqGh-hDh/}qH(h=h>h4]h3]h1]h2]h5]uh6KJh7hh%]qIh@X��@startuml images/log-aggregation-sequence.png
skinparam {
      sequenceTitleFontColor black
              sequenceTitleFontSize 16
              sequenceTitleFontStyle normal
              sequenceTitleFontName Lucida Bright
      }
      title: Log Aggregation Processing

      LogAggregationScheduleMananger -> LogAggregationScheduleMananger : addHarvest()
      activate LogAggregationScheduleMananger
      LogAggregationScheduleMananger -> LogAggregationHarvestJob : execute()
      deactivate LogAggregationScheduleMananger
      activate LogAggregationHarvestJob
      LogAggregationHarvestJob -> LogAggregatorTask : call()
      deactivate LogAggregationHarvestJob
      activate LogAggregatorTask
      LogAggregatorTask -> LogAggregatorTask : retrieve()
      LogAggregatorTask -> MNode : getLogRecords()
      activate MNode
      MNode -> LogAggregatorTask : Log
      deactivate MNode
      LogAggregatorTask -> "hzLogEntryTopic : ITopic" : publish(solrItemList)
              deactivate LogAggregatorTask
      activate "hzLogEntryTopic : ITopic"
      deactivate MNode
      "hzLogEntryTopic : ITopic" -> LogEntryTopicListener : onMessage()
      deactivate "hzLogEntryTopic : ITopic"
      activate LogEntryTopicListener
      LogEntryTopicListener -> indexLogEntryQueue
      deactivate LogEntryTopicListener
      activate indexLogEntryQueue
      indexLogEntryQueue -> indexLogEntryQueue : offer()
indexLogEntryQueue -> indexLogEntryQueue : poll()
      indexLogEntryQueue -> LogEntryQueueTask
      deactivate indexLogEntryQueue
      activate LogEntryQueueTask
      LogEntryQueueTask -> LogEntryIndexTask : call()
      deactivate LogEntryQueueTask
      activate LogEntryIndexTask
      LogEntryIndexTask -> solrServer : addbeans()
      deactivate LogEntryIndexTask

@endumlqJÖÅqK}qL(h*U�h+hEubaubh9)ÅqM}qN(h*X2��@startuml images/systemmetadata-listener-activity.png
  skinparam {
      titleFofntColor black
              titleFontSize 16
              titleFontStyle normal
              titleFontName Lucida Bright
      }
title: System Metadata Listener
(*) -down-> sysmeta entry added
-down-> ===process_sysmeta===
(*) -down-> sysmeta entry updated
 --> ===process_sysmeta===
-down-> retrieve Solr entries for updated/added pid
-down-> update permission fields
-down-> update location fields
-down-> update spatial field
-down-> publish to index processing queue
@endumlh+hh,hGh-hDh/}qO(h=h>h4]h3]h1]h2]h5]uh6K^h7hh%]qPh@X2��@startuml images/systemmetadata-listener-activity.png
  skinparam {
      titleFofntColor black
              titleFontSize 16
              titleFontStyle normal
              titleFontName Lucida Bright
      }
title: System Metadata Listener
(*) -down-> sysmeta entry added
-down-> ===process_sysmeta===
(*) -down-> sysmeta entry updated
 --> ===process_sysmeta===
-down-> retrieve Solr entries for updated/added pid
-down-> update permission fields
-down-> update location fields
-down-> update spatial field
-down-> publish to index processing queue
@endumlqQÖÅqR}qS(h*U�h+hMubaubcdocutils.nodes
section
qT)ÅqU}qV(h*U�h+hh,hGh-UsectionqWh/}qX(h1]h2]h3]h4]qYh$ah5]qZhauh6K`h7hh%]q[(cdocutils.nodes
title
q\)Åq]}q^(h*X���Log Aggregation Overviewq_h+hUh,hGh-Utitleq`h/}qa(h1]h2]h3]h4]h5]uh6K`h7hh%]qbh@X���Log Aggregation OverviewqcÖÅqd}qe(h*h_h+h]ubaubh9)Åqf}qg(h*U�h+hUh,hGh-hDh/}qh(h=h>h4]h3]h1]h2]h5]uh6Kbh7hh%]ubh')Åqi}qj(h*U�h+hUh,hGh-h.h/}qk(h1]h2]h3]h4]h5]uh6Nh7hh%]qlcdocutils.nodes
paragraph
qm)Åqn}qo(h*X,���See subversion log for revision information.qph+hih,hGh-U	paragraphqqh/}qr(h1]h2]h3]h4]h5]uh6Kdh%]qsh@X,���See subversion log for revision information.qtÖÅqu}qv(h*hph+hnubaubaubhT)Åqw}qx(h*U�h+hUh,hGh-hWh/}qy(h1]h2]h3]h4]qzhah5]q{h
auh6Kgh7hh%]q|(h\)Åq}}q~(h*X���Introductionqh+hwh,hGh-h`h/}qÄ(h1]h2]h3]h4]h5]uh6Kgh7hh%]qÅh@X���IntroductionqÇÖÅqÉ}qÑ(h*hh+h}ubaubhm)ÅqÖ}qÜ(h*XÆ��The Log Aggregation Facility (LAF) harvests event log information from all Member Nodes registered with a Coordinating Node
and aggregates this information into a Solr index that contains information from all member nodes. The Solr index can
be queried to create reports of usage statistics for the DataONE network or individual Member Nodes.
A description of the data harvested from MNs is described here: `<LoggingSchema.html>`_h+hwh,hGh-hqh/}qá(h1]h2]h3]h4]h5]uh6Kih7hh%]qà(h@Xó��The Log Aggregation Facility (LAF) harvests event log information from all Member Nodes registered with a Coordinating Node
and aggregates this information into a Solr index that contains information from all member nodes. The Solr index can
be queried to create reports of usage statistics for the DataONE network or individual Member Nodes.
A description of the data harvested from MNs is described here: qâÖÅqä}qã(h*Xó��The Log Aggregation Facility (LAF) harvests event log information from all Member Nodes registered with a Coordinating Node
and aggregates this information into a Solr index that contains information from all member nodes. The Solr index can
be queried to create reports of usage statistics for the DataONE network or individual Member Nodes.
A description of the data harvested from MNs is described here: h+hÖubcdocutils.nodes
reference
qå)Åqç}qé(h*X���`<LoggingSchema.html>`_h/}qè(UnameX���LoggingSchema.htmlqêUrefuriqëhêh4]h3]h1]h2]h5]uh+hÖh%]qíh@X���LoggingSchema.htmlqìÖÅqî}qï(h*U�h+hçubah-U	referenceqñubcdocutils.nodes
target
qó)Åqò}qô(h*X���<LoggingSchema.html>U
referencedqöKh+hÖh-Utargetqõh/}qú(Urefurihêh4]qùhah3]h1]h2]h5]qûhauh%]ubeubhm)Åqü}q†(h*Xå���LAF relies on several
technologies: Quartz Scheduler, Hazelcast Data Distribution, Metacat
Repository Storage, and the Solr Search platform.q°h+hwh,hGh-hqh/}q¢(h1]h2]h3]h4]h5]uh6Knh7hh%]q£h@Xå���LAF relies on several
technologies: Quartz Scheduler, Hazelcast Data Distribution, Metacat
Repository Storage, and the Solr Search platform.q§ÖÅq•}q¶(h*h°h+hüubaubhm)Åqß}q®(h*X)���The DataONE use cases are described here:q©h+hwh,hGh-hqh/}q™(h1]h2]h3]h4]h5]uh6Krh7hh%]q´h@X)���The DataONE use cases are described here:q¨ÖÅq≠}qÆ(h*h©h+hßubaubcdocutils.nodes
compound
qØ)Åq∞}q±(h*U�h+hwh,hGh-Ucompoundq≤h/}q≥(h1]h2]q¥Utoctree-wrapperqµah3]h4]h5]uh6Nh7hh%]q∂csphinx.addnodes
toctree
q∑)Åq∏}qπ(h*U�h+h∞h,hGh-Utoctreeq∫h/}qª(UnumberedqºK�U
includehiddenqΩâh+X���design/LogAggregatorqæUcaptionqøNUglobq¿âh4]h3]U
titlesonlyq¡âh1]h2]h5]Uentriesq¬]q√(NX���design/UseCases/16_ucqƒÜq≈NX���design/UseCases/17_ucq∆Üq«eUhiddenq»âUincludefilesq…]q (hƒh∆eUmaxdepthqÀKuh6Kth%]ubaubhm)ÅqÃ}qÕ(h*XN���An overview of LAF processing is shown in *Figure 1: Log Aggregation Overview*qŒh+hwh,hGh-hqh/}qœ(h1]h2]h3]h4]h5]uh6Kzh7hh%]q–(h@X*���An overview of LAF processing is shown in q—ÖÅq“}q”(h*X*���An overview of LAF processing is shown in h+hÃubcdocutils.nodes
emphasis
q‘)Åq’}q÷(h*X$���*Figure 1: Log Aggregation Overview*h/}q◊(h1]h2]h3]h4]h5]uh+hÃh%]qÿh@X"���Figure 1: Log Aggregation OverviewqŸÖÅq⁄}q€(h*U�h+h’ubah-Uemphasisq‹ubeubhm)Åq›}qfi(h*X$���*Figure 1.* Log Aggregation Overviewqflh+hwh,hGh-hqh/}q‡(h1]h2]h3]h4]h5]uh6K|h7hh%]q·(h‘)Åq‚}q„(h*X���*Figure 1.*h/}q‰(h1]h2]h3]h4]h5]uh+h›h%]qÂh@X	���Figure 1.qÊÖÅqÁ}qË(h*U�h+h‚ubah-h‹ubh@X��� Log Aggregation OverviewqÈÖÅqÍ}qÎ(h*X��� Log Aggregation Overviewh+h›ubeubcdocutils.nodes
figure
qÏ)ÅqÌ}qÓ(h*U�h+hwh,hGh-UfigureqÔh/}q(h1]h2]h3]h4]h5]uh6Kh7hh%]qÒcdocutils.nodes
image
qÚ)ÅqÛ}qÙ(h*X0���.. figure:: images/log-aggregation-activity.png
h+hÌh,hGh-Uimageqıh/}qˆ(UuriX*���design/images/log-aggregation-activity.pngq˜h4]h3]h1]h2]U
candidatesq¯}q˘U*h˜sh5]uh6Kh%]ubaubeubhT)Åq˙}q˚(h*U�h+hUh,hGh-hWh/}q¸(h1]h2]h3]h4]q˝hah5]q˛hauh6KÅh7hh%]qˇ(h\)År���}r��(h*X���Installationr��h+h˙h,hGh-h`h/}r��(h1]h2]h3]h4]h5]uh6KÅh7hh%]r��h@X���Installationr��ÖÅr��}r��(h*j��h+j���ubaubhm)År��}r	��(h*X`���LAF software is installed from the dataone-cn-processdaemon and dataone-cn-solr Debian packages.r
��h+h˙h,hGh-hqh/}r��(h1]h2]h3]h4]h5]uh6KÉh7hh%]r��h@X`���LAF software is installed from the dataone-cn-processdaemon and dataone-cn-solr Debian packages.r
��ÖÅr��}r��(h*j
��h+j��ubaubhm)År��}r��(h*X0��LAF is started when the Unix service /etc/init.d/d1_processing is launched.
LogAggregationScheduleManager is initialized by Spring when d1_processing runs the bootstrap class org.dataone.cn.batch.daemon.SchedulerDaemon.
All LAF related beans are configured in /etc/dataone/process/applicationContext.xml.r��h+h˙h,hGh-hqh/}r��(h1]h2]h3]h4]h5]uh6KÖh7hh%]r��h@X0��LAF is started when the Unix service /etc/init.d/d1_processing is launched.
LogAggregationScheduleManager is initialized by Spring when d1_processing runs the bootstrap class org.dataone.cn.batch.daemon.SchedulerDaemon.
All LAF related beans are configured in /etc/dataone/process/applicationContext.xml.r��ÖÅr��}r��(h*j��h+j��ubaubhm)År��}r��(h*Xá���LAF does not require any manual configuration before it can be run, however Metacat must be installed and configured before LAF starts.r��h+h˙h,hGh-hqh/}r��(h1]h2]h3]h4]h5]uh6Kâh7hh%]r��h@Xá���LAF does not require any manual configuration before it can be run, however Metacat must be installed and configured before LAF starts.r��ÖÅr��}r��(h*j��h+j��ubaubhm)År ��}r!��(h*X;��Several LDAP attributes are used to control the execution of LAF, so
if necessary the following LDAP entries can be manually edited to alter execution of LAF. This may be useful for testing purposes. Table 1 shows
the LDAP attributes in the directory dc=dataone,dc=org,cn=urn:node:<nodeName> directory that LAF usesr"��h+h˙h,hGh-hqh/}r#��(h1]h2]h3]h4]h5]uh6Kãh7hh%]r$��h@X;��Several LDAP attributes are used to control the execution of LAF, so
if necessary the following LDAP entries can be manually edited to alter execution of LAF. This may be useful for testing purposes. Table 1 shows
the LDAP attributes in the directory dc=dataone,dc=org,cn=urn:node:<nodeName> directory that LAF usesr%��ÖÅr&��}r'��(h*j"��h+j ��ubaubhm)År(��}r)��(h*X���*Table 1* LDAP entriesr*��h+h˙h,hGh-hqh/}r+��(h1]h2]h3]h4]h5]uh6Kèh7hh%]r,��(h‘)År-��}r.��(h*X	���*Table 1*h/}r/��(h1]h2]h3]h4]h5]uh+j(��h%]r0��h@X���Table 1r1��ÖÅr2��}r3��(h*U�h+j-��ubah-h‹ubh@X
��� LDAP entriesr4��ÖÅr5��}r6��(h*X
��� LDAP entriesh+j(��ubeubh')År7��}r8��(h*U�h+h˙h,hGh-h.h/}r9��(h1]h2]h3]h4]h5]uh6Nh7hh%]r:��cdocutils.nodes
table
r;��)År<��}r=��(h*U�h/}r>��(h1]h2]h3]h4]h5]uh+j7��h%]r?��cdocutils.nodes
tgroup
r@��)ÅrA��}rB��(h*U�h/}rC��(h4]h3]h1]h2]h5]UcolsKuh+j<��h%]rD��(cdocutils.nodes
colspec
rE��)ÅrF��}rG��(h*U�h/}rH��(h4]h3]h1]h2]h5]UcolwidthKuh+jA��h%]h-UcolspecrI��ubjE��)ÅrJ��}rK��(h*U�h/}rL��(h4]h3]h1]h2]h5]UcolwidthK
uh+jA��h%]h-jI��ubjE��)ÅrM��}rN��(h*U�h/}rO��(h4]h3]h1]h2]h5]UcolwidthK'uh+jA��h%]h-jI��ubcdocutils.nodes
thead
rP��)ÅrQ��}rR��(h*U�h/}rS��(h1]h2]h3]h4]h5]uh+jA��h%]rT��cdocutils.nodes
row
rU��)ÅrV��}rW��(h*U�h/}rX��(h1]h2]h3]h4]h5]uh+jQ��h%]rY��(cdocutils.nodes
entry
rZ��)År[��}r\��(h*U�h/}r]��(h1]h2]h3]h4]h5]uh+jV��h%]r^��hm)År_��}r`��(h*X���Attribute Namera��h+j[��h,hGh-hqh/}rb��(h1]h2]h3]h4]h5]uh6Kíh%]rc��h@X���Attribute Namerd��ÖÅre��}rf��(h*ja��h+j_��ubaubah-Uentryrg��ubjZ��)Årh��}ri��(h*U�h/}rj��(h1]h2]h3]h4]h5]uh+jV��h%]rk��hm)Årl��}rm��(h*X���Valuern��h+jh��h,hGh-hqh/}ro��(h1]h2]h3]h4]h5]uh6Kíh%]rp��h@X���Valuerq��ÖÅrr��}rs��(h*jn��h+jl��ubaubah-jg��ubjZ��)Årt��}ru��(h*U�h/}rv��(h1]h2]h3]h4]h5]uh+jV��h%]rw��hm)Årx��}ry��(h*X���Purposerz��h+jt��h,hGh-hqh/}r{��(h1]h2]h3]h4]h5]uh6Kíh%]r|��h@X���Purposer}��ÖÅr~��}r��(h*jz��h+jx��ubaubah-jg��ubeh-UrowrÄ��ubah-UtheadrÅ��ubcdocutils.nodes
tbody
rÇ��)ÅrÉ��}rÑ��(h*U�h/}rÖ��(h1]h2]h3]h4]h5]uh+jA��h%]rÜ��(jU��)Årá��}rà��(h*U�h/}râ��(h1]h2]h3]h4]h5]uh+jÉ��h%]rä��(jZ��)Årã��}rå��(h*U�h/}rç��(h1]h2]h3]h4]h5]uh+já��h%]ré��hm)Årè��}rê��(h*X���d1NodeAggregateLogsrë��h+jã��h,hGh-hqh/}rí��(h1]h2]h3]h4]h5]uh6Kîh%]rì��h@X���d1NodeAggregateLogsrî��ÖÅrï��}rñ��(h*jë��h+jè��ubaubah-jg��ubjZ��)Åró��}rò��(h*U�h/}rô��(h1]h2]h3]h4]h5]uh+já��h%]rö��hm)Årõ��}rú��(h*X
���TRUE or FALSErù��h+jó��h,hGh-hqh/}rû��(h1]h2]h3]h4]h5]uh6Kîh%]rü��h@X
���TRUE or FALSEr†��ÖÅr°��}r¢��(h*jù��h+jõ��ubaubah-jg��ubjZ��)År£��}r§��(h*U�h/}r•��(h1]h2]h3]h4]h5]uh+já��h%]r¶��hm)Årß��}r®��(h*X'���Enable/Disable this node for harvestingr©��h+j£��h,hGh-hqh/}r™��(h1]h2]h3]h4]h5]uh6Kîh%]r´��h@X'���Enable/Disable this node for harvestingr¨��ÖÅr≠��}rÆ��(h*j©��h+jß��ubaubah-jg��ubeh-jÄ��ubjU��)ÅrØ��}r∞��(h*U�h/}r±��(h1]h2]h3]h4]h5]uh+jÉ��h%]r≤��(jZ��)År≥��}r¥��(h*U�h/}rµ��(h1]h2]h3]h4]h5]uh+jØ��h%]r∂��hm)År∑��}r∏��(h*X���d1NodeLogLastAggregatedrπ��h+j≥��h,hGh-hqh/}r∫��(h1]h2]h3]h4]h5]uh6Kïh%]rª��h@X���d1NodeLogLastAggregatedrº��ÖÅrΩ��}ræ��(h*jπ��h+j∑��ubaubah-jg��ubjZ��)Årø��}r¿��(h*U�h/}r¡��(h1]h2]h3]h4]h5]uh+jØ��h%]r¬��hm)År√��}rƒ��(h*X
���ISO 8601 dater≈��h+jø��h,hGh-hqh/}r∆��(h1]h2]h3]h4]h5]uh6Kïh%]r«��h@X
���ISO 8601 dater»��ÖÅr…��}r ��(h*j≈��h+j√��ubaubah-jg��ubjZ��)ÅrÀ��}rÃ��(h*U�h/}rÕ��(h1]h2]h3]h4]h5]uh+jØ��h%]rŒ��hm)Årœ��}r–��(h*X���Last time this MN was harvestedr—��h+jÀ��h,hGh-hqh/}r“��(h1]h2]h3]h4]h5]uh6Kïh%]r”��h@X���Last time this MN was harvestedr‘��ÖÅr’��}r÷��(h*j—��h+jœ��ubaubah-jg��ubeh-jÄ��ubeh-Utbodyr◊��ubeh-Utgrouprÿ��ubah-UtablerŸ��ubaubeubhT)År⁄��}r€��(h*U�h+hUh,hGh-hWh/}r‹��(h1]h2]h3]h4]r›��h!ah5]rfi��h
auh6Kôh7hh%]rfl��(h\)År‡��}r·��(h*X���Log Recovery Processingr‚��h+j⁄��h,hGh-h`h/}r„��(h1]h2]h3]h4]h5]uh6Kôh7hh%]r‰��h@X���Log Recovery ProcessingrÂ��ÖÅrÊ��}rÁ��(h*j‚��h+j‡��ubaubhm)ÅrË��}rÈ��(h*Xı���The Java class LogAggregationScheduleManager coordinates all scheduling of jobs for LAF. This class first checks if any other CN has more
current log information and if so a recovery job is scheduled to query the other CNs for newer log records.rÍ��h+j⁄��h,hGh-hqh/}rÎ��(h1]h2]h3]h4]h5]uh6Köh7hh%]rÏ��h@Xı���The Java class LogAggregationScheduleManager coordinates all scheduling of jobs for LAF. This class first checks if any other CN has more
current log information and if so a recovery job is scheduled to query the other CNs for newer log records.rÌ��ÖÅrÓ��}rÔ��(h*jÍ��h+jË��ubaubeubhT)År��}rÒ��(h*U�h+hUh,hGh-hWh/}rÚ��(h1]h2]h3]h4]rÛ��h#ah5]rÙ��hauh6Kûh7hh%]rı��(h\)Årˆ��}r˜��(h*X���Log Harvest Processingr¯��h+j��h,hGh-h`h/}r˘��(h1]h2]h3]h4]h5]uh6Kûh7hh%]r˙��h@X���Log Harvest Processingr˚��ÖÅr¸��}r˝��(h*j¯��h+jˆ��ubaubhm)År˛��}rˇ��(h*X≥���Then LogAggregationScheduleManager schedules recurring Quartz job (every 24 hours) for LogAggregationHarvestJob which handles running the
tasks that harvest log data from the MNs.r���h+j��h,hGh-hqh/}r��(h1]h2]h3]h4]h5]uh6Küh7hh%]r��h@X≥���Then LogAggregationScheduleManager schedules recurring Quartz job (every 24 hours) for LogAggregationHarvestJob which handles running the
tasks that harvest log data from the MNs.r��ÖÅr��}r��(h*j���h+j˛��ubaubhm)År��}r��(h*X∂���Next a Hazelcast listener is registered for the top thehzLogEntryTopic. When log entries are returned from MNs they will posted to
Hazelcast so that they are distributed to every CN.r��h+j��h,hGh-hqh/}r	��(h1]h2]h3]h4]h5]uh6K¢h7hh%]r
��h@X∂���Next a Hazelcast listener is registered for the top thehzLogEntryTopic. When log entries are returned from MNs they will posted to
Hazelcast so that they are distributed to every CN.r��ÖÅr��}r
��(h*j��h+j��ubaubhm)År��}r��(h*Xò���A Hazelcast systemmetadata listener is also registered so that certain changes to mutable systemmetata fields (see System Metadata
Updates for details).r��h+j��h,hGh-hqh/}r��(h1]h2]h3]h4]h5]uh6K•h7hh%]r��h@Xò���A Hazelcast systemmetadata listener is also registered so that certain changes to mutable systemmetata fields (see System Metadata
Updates for details).r��ÖÅr��}r��(h*j��h+j��ubaubhm)År��}r��(h*XÀ���The queue indexLogEntryQueue is then setup when the listener LogEntryTopicListener is called. This queue is how tasks that perform the log aggregation
and tasks that perform the log indexing communicate.r��h+j��h,hGh-hqh/}r��(h1]h2]h3]h4]h5]uh6K®h7hh%]r��h@XÀ���The queue indexLogEntryQueue is then setup when the listener LogEntryTopicListener is called. This queue is how tasks that perform the log aggregation
and tasks that perform the log indexing communicate.r��ÖÅr��}r��(h*j��h+j��ubaubhm)År��}r��(h*XÚ���LogAggregationHarvestJob runs the task LogAggregatorTask that queries each MN by calling mn.getLogRecords and retrieving up to 1000 event log records at a
time, starting after the last date retrieved that was recorded by the last run, if any.r ��h+j��h,hGh-hqh/}r!��(h1]h2]h3]h4]h5]uh6K´h7hh%]r"��h@XÚ���LogAggregationHarvestJob runs the task LogAggregatorTask that queries each MN by calling mn.getLogRecords and retrieving up to 1000 event log records at a
time, starting after the last date retrieved that was recorded by the last run, if any.r#��ÖÅr$��}r%��(h*j ��h+j��ubaubhm)År&��}r'��(h*X,��LogAggregatorTask then modifies
each harvested record by adding the following fields: isPublic, dateAggregated, nodeId, readPermissions, formatId, formatType, size,
rightsHolder, country, region, city, geohash_1 - geohash_9, location. These records are then published to the Hazelcast topic
hzLogEntryTopic so that each CN that is running LAF will have it's LogEntryTopicListener fire, which published them to the queue indexLogEntryQueue.
In this way one CN harvests a single MN at a time, and the processing of those records is synced with the other CNs.r(��h+j��h,hGh-hqh/}r)��(h1]h2]h3]h4]h5]uh6KÆh7hh%]r*��h@X,��LogAggregatorTask then modifies
each harvested record by adding the following fields: isPublic, dateAggregated, nodeId, readPermissions, formatId, formatType, size,
rightsHolder, country, region, city, geohash_1 - geohash_9, location. These records are then published to the Hazelcast topic
hzLogEntryTopic so that each CN that is running LAF will have it's LogEntryTopicListener fire, which published them to the queue indexLogEntryQueue.
In this way one CN harvests a single MN at a time, and the processing of those records is synced with the other CNs.r+��ÖÅr,��}r-��(h*j(��h+j&��ubaubhm)År.��}r/��(h*X��On the indexing side of processing, LogEntryQueuManager is initialized by Spring when d1_processing init script is run executes
the task LogEntryQueueTask that reads and processes entries from the logEntrySolrItemList when this queue has accumulated 100 entries.r0��h+j��h,hGh-hqh/}r1��(h1]h2]h3]h4]h5]uh6K¥h7hh%]r2��h@X��On the indexing side of processing, LogEntryQueuManager is initialized by Spring when d1_processing init script is run executes
the task LogEntryQueueTask that reads and processes entries from the logEntrySolrItemList when this queue has accumulated 100 entries.r3��ÖÅr4��}r5��(h*j0��h+j.��ubaubhm)År6��}r7��(h*X^���LogEntryQueueTask then starts task LogEntryIndexTask which sends entries to Solr for indexing.r8��h+j��h,hGh-hqh/}r9��(h1]h2]h3]h4]h5]uh6K∑h7hh%]r:��h@X^���LogEntryQueueTask then starts task LogEntryIndexTask which sends entries to Solr for indexing.r;��ÖÅr<��}r=��(h*j8��h+j6��ubaubhm)År>��}r?��(h*X&���*Figure 2.* Log Aggregation Processingr@��h+j��h,hGh-hqh/}rA��(h1]h2]h3]h4]h5]uh6Kπh7hh%]rB��(h‘)ÅrC��}rD��(h*X���*Figure 2.*h/}rE��(h1]h2]h3]h4]h5]uh+j>��h%]rF��h@X	���Figure 2.rG��ÖÅrH��}rI��(h*U�h+jC��ubah-h‹ubh@X��� Log Aggregation ProcessingrJ��ÖÅrK��}rL��(h*X��� Log Aggregation Processingh+j>��ubeubhÏ)ÅrM��}rN��(h*U�h+j��h,hGh-hÔh/}rO��(h1]h2]h3]h4]h5]uh6Kºh7hh%]rP��hÚ)ÅrQ��}rR��(h*X0���.. figure:: images/log-aggregation-sequence.png
h+jM��h,hGh-hıh/}rS��(UuriX*���design/images/log-aggregation-sequence.pngrT��h4]h3]h1]h2]h¯}rU��U*jT��sh5]uh6Kºh%]ubaubeubhT)ÅrV��}rW��(h*U�h+hUh,hGh-hWh/}rX��(h1]h2]h3]h4]rY��hah5]rZ��hauh6Kæh7hh%]r[��(h\)År\��}r]��(h*X���System Metadata Updatesr^��h+jV��h,hGh-h`h/}r_��(h1]h2]h3]h4]h5]uh6Kæh7hh%]r`��h@X���System Metadata Updatesra��ÖÅrb��}rc��(h*j^��h+j\��ubaubhm)Ård��}re��(h*XF��In addition to processing harvested records, when an entry in the Hazelcast Systemmetadata map is added or updated,
SystemMetadataEntryListener runs. This may happen when one of the mutable fields in systemmetadata changes, such as
formatId. In this event, all event log records for that pid must be updated, so SystemMetadataEntryListener
retrieves these records, updates them with the current information in systemmetadata and then updates
the entries and then publishes them to the IndexLogEntrySolrItem queue, so that they are processed in the same
way as new Event Log records.rf��h+jV��h,hGh-hqh/}rg��(h1]h2]h3]h4]h5]uh6Køh7hh%]rh��h@XF��In addition to processing harvested records, when an entry in the Hazelcast Systemmetadata map is added or updated,
SystemMetadataEntryListener runs. This may happen when one of the mutable fields in systemmetadata changes, such as
formatId. In this event, all event log records for that pid must be updated, so SystemMetadataEntryListener
retrieves these records, updates them with the current information in systemmetadata and then updates
the entries and then publishes them to the IndexLogEntrySolrItem queue, so that they are processed in the same
way as new Event Log records.ri��ÖÅrj��}rk��(h*jf��h+jd��ubaubhm)Årl��}rm��(h*X$���*Figure 3.* System Metadata Listenerrn��h+jV��h,hGh-hqh/}ro��(h1]h2]h3]h4]h5]uh6K∆h7hh%]rp��(h‘)Årq��}rr��(h*X���*Figure 3.*h/}rs��(h1]h2]h3]h4]h5]uh+jl��h%]rt��h@X	���Figure 3.ru��ÖÅrv��}rw��(h*U�h+jq��ubah-h‹ubh@X��� System Metadata Listenerrx��ÖÅry��}rz��(h*X��� System Metadata Listenerh+jl��ubeubhÏ)År{��}r|��(h*U�h+jV��h,hGh-hÔh/}r}��(h1]h2]h3]h4]h5]uh6K…h7hh%]r~��hÚ)År��}rÄ��(h*X8���.. figure:: images/systemmetadata-listener-activity.png
h+j{��h,hGh-hıh/}rÅ��(UuriX2���design/images/systemmetadata-listener-activity.pngrÇ��h4]h3]h1]h2]h¯}rÉ��U*jÇ��sh5]uh6K…h%]ubaubeubhT)ÅrÑ��}rÖ��(h*U�h+hUh,hGh-hWh/}rÜ��(h1]h2]h3]h4]rá��hah5]rà��h	auh6KÀh7hh%]râ��(h\)Årä��}rã��(h*X
���Solr Indexrå��h+jÑ��h,hGh-h`h/}rç��(h1]h2]h3]h4]h5]uh6KÀh7hh%]ré��h@X
���Solr Indexrè��ÖÅrê��}rë��(h*jå��h+jä��ubaubhm)Årí��}rì��(h*X>���Table 2 shows the fields contained in the Event Log Solr indexrî��h+jÑ��h,hGh-hqh/}rï��(h1]h2]h3]h4]h5]uh6KÃh7hh%]rñ��h@X>���Table 2 shows the fields contained in the Event Log Solr indexró��ÖÅrò��}rô��(h*jî��h+jí��ubaubhm)Årö��}rõ��(h*X���*Table 2.* Solr index schemarú��h+jÑ��h,hGh-hqh/}rù��(h1]h2]h3]h4]h5]uh6KŒh7hh%]rû��(h‘)Årü��}r†��(h*X
���*Table 2.*h/}r°��(h1]h2]h3]h4]h5]uh+jö��h%]r¢��h@X���Table 2.r£��ÖÅr§��}r•��(h*U�h+jü��ubah-h‹ubh@X��� Solr index schemar¶��ÖÅrß��}r®��(h*X��� Solr index schemah+jö��ubeubj;��)År©��}r™��(h*U�h+jÑ��h,cdocutils.nodes
reprunicode
r´��X%���source/design/EventLogIndexSchema.txtr¨��ÖÅr≠��}rÆ��bh-jŸ��h/}rØ��(h1]h2]h3]h4]r∞��Uid1r±��ah5]uh6Nh7hh%]r≤��(h\)År≥��}r¥��(h*X���Solr index schemarµ��h/}r∂��(h1]h2]h3]h4]h5]uh+j©��h%]r∑��h@X���Solr index schemar∏��ÖÅrπ��}r∫��(h*jµ��h+j≥��ubah-h`ubj@��)Årª��}rº��(h*U�h/}rΩ��(h4]h3]h1]h2]h5]UcolsKuh+j©��h%]ræ��(jE��)Årø��}r¿��(h*U�h/}r¡��(h4]h3]h1]h2]h5]UcolwidthKuh+jª��h%]h-jI��ubjE��)År¬��}r√��(h*U�h/}rƒ��(h4]h3]h1]h2]h5]UcolwidthK
uh+jª��h%]h-jI��ubjE��)År≈��}r∆��(h*U�h/}r«��(h4]h3]h1]h2]h5]UcolwidthKOuh+jª��h%]h-jI��ubjP��)År»��}r…��(h*U�h/}r ��(h1]h2]h3]h4]h5]uh+jª��h%]rÀ��jU��)ÅrÃ��}rÕ��(h*U�h/}rŒ��(h1]h2]h3]h4]h5]uh+j»��h%]rœ��(jZ��)År–��}r—��(h*U�h/}r“��(h1]h2]h3]h4]h5]uh+jÃ��h%]r”��hm)År‘��}r’��(h*X���Namer÷��h+j–��h,j≠��h-hqh/}r◊��(h1]h2]h3]h4]h5]uh6Kh%]rÿ��h@X���NamerŸ��ÖÅr⁄��}r€��(h*j÷��h+j‘��ubaubah-jg��ubjZ��)År‹��}r›��(h*U�h/}rfi��(h1]h2]h3]h4]h5]uh+jÃ��h%]rfl��hm)År‡��}r·��(h*X	���Solr Typer‚��h+j‹��h,j≠��h-hqh/}r„��(h1]h2]h3]h4]h5]uh6Kh%]r‰��h@X	���Solr TyperÂ��ÖÅrÊ��}rÁ��(h*j‚��h+j‡��ubaubah-jg��ubjZ��)ÅrË��}rÈ��(h*U�h/}rÍ��(h1]h2]h3]h4]h5]uh+jÃ��h%]rÎ��hm)ÅrÏ��}rÌ��(h*X���CommentrÓ��h+jË��h,j≠��h-hqh/}rÔ��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���CommentrÒ��ÖÅrÚ��}rÛ��(h*jÓ��h+jÏ��ubaubah-jg��ubeh-jÄ��ubah-jÅ��ubjÇ��)ÅrÙ��}rı��(h*U�h/}rˆ��(h1]h2]h3]h4]h5]uh+jª��h%]r˜��(jU��)År¯��}r˘��(h*U�h/}r˙��(h1]h2]h3]h4]h5]uh+jÙ��h%]r˚��(jZ��)År¸��}r˝��(h*U�h/}r˛��(h1]h2]h3]h4]h5]uh+j¯��h%]rˇ��hm)År���}r��(h*X���idr��h+j¸��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���idr��ÖÅr��}r��(h*j��h+j���ubaubah-jg��ubjZ��)År��}r	��(h*U�h/}r
��(h1]h2]h3]h4]h5]uh+j¯��h%]r��hm)År��}r
��(h*X���stringr��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���stringr��ÖÅr��}r��(h*j��h+j��ubaubah-jg��ubjZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j¯��h%]r��hm)År��}r��(h*X���added after harvestr��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���added after harvestr��ÖÅr��}r��(h*j��h+j��ubaubah-jg��ubeh-jÄ��ubjU��)År ��}r!��(h*U�h/}r"��(h1]h2]h3]h4]h5]uh+jÙ��h%]r#��(jZ��)År$��}r%��(h*U�h/}r&��(h1]h2]h3]h4]h5]uh+j ��h%]r'��hm)År(��}r)��(h*X���dateAggregatedr*��h+j$��h,j≠��h-hqh/}r+��(h1]h2]h3]h4]h5]uh6Kh%]r,��h@X���dateAggregatedr-��ÖÅr.��}r/��(h*j*��h+j(��ubaubah-jg��ubjZ��)År0��}r1��(h*U�h/}r2��(h1]h2]h3]h4]h5]uh+j ��h%]r3��hm)År4��}r5��(h*X���dater6��h+j0��h,j≠��h-hqh/}r7��(h1]h2]h3]h4]h5]uh6Kh%]r8��h@X���dater9��ÖÅr:��}r;��(h*j6��h+j4��ubaubah-jg��ubjZ��)År<��}r=��(h*U�h/}r>��(h1]h2]h3]h4]h5]uh+j ��h%]r?��hm)År@��}rA��(h*X���added after harvestrB��h+j<��h,j≠��h-hqh/}rC��(h1]h2]h3]h4]h5]uh6Kh%]rD��h@X���added after harvestrE��ÖÅrF��}rG��(h*jB��h+j@��ubaubah-jg��ubeh-jÄ��ubjU��)ÅrH��}rI��(h*U�h/}rJ��(h1]h2]h3]h4]h5]uh+jÙ��h%]rK��(jZ��)ÅrL��}rM��(h*U�h/}rN��(h1]h2]h3]h4]h5]uh+jH��h%]rO��hm)ÅrP��}rQ��(h*X���isPublicrR��h+jL��h,j≠��h-hqh/}rS��(h1]h2]h3]h4]h5]uh6Kh%]rT��h@X���isPublicrU��ÖÅrV��}rW��(h*jR��h+jP��ubaubah-jg��ubjZ��)ÅrX��}rY��(h*U�h/}rZ��(h1]h2]h3]h4]h5]uh+jH��h%]r[��hm)År\��}r]��(h*X���booleanr^��h+jX��h,j≠��h-hqh/}r_��(h1]h2]h3]h4]h5]uh6Kh%]r`��h@X���booleanra��ÖÅrb��}rc��(h*j^��h+j\��ubaubah-jg��ubjZ��)Ård��}re��(h*U�h/}rf��(h1]h2]h3]h4]h5]uh+jH��h%]rg��hm)Årh��}ri��(h*X1���added after harvest, obtained from systemmetadatarj��h+jd��h,j≠��h-hqh/}rk��(h1]h2]h3]h4]h5]uh6Kh%]rl��h@X1���added after harvest, obtained from systemmetadatarm��ÖÅrn��}ro��(h*jj��h+jh��ubaubah-jg��ubeh-jÄ��ubjU��)Årp��}rq��(h*U�h/}rr��(h1]h2]h3]h4]h5]uh+jÙ��h%]rs��(jZ��)Årt��}ru��(h*U�h/}rv��(h1]h2]h3]h4]h5]uh+jp��h%]rw��hm)Årx��}ry��(h*X���readPermissionrz��h+jt��h,j≠��h-hqh/}r{��(h1]h2]h3]h4]h5]uh6K	h%]r|��h@X���readPermissionr}��ÖÅr~��}r��(h*jz��h+jx��ubaubah-jg��ubjZ��)ÅrÄ��}rÅ��(h*U�h/}rÇ��(h1]h2]h3]h4]h5]uh+jp��h%]rÉ��hm)ÅrÑ��}rÖ��(h*X���stringrÜ��h+jÄ��h,j≠��h-hqh/}rá��(h1]h2]h3]h4]h5]uh6K	h%]rà��h@X���stringrâ��ÖÅrä��}rã��(h*jÜ��h+jÑ��ubaubah-jg��ubjZ��)Årå��}rç��(h*U�h/}ré��(h1]h2]h3]h4]h5]uh+jp��h%]rè��hm)Årê��}rë��(h*XH���added after harvest, obtained from systemmetadata, filtered during queryrí��h+jå��h,j≠��h-hqh/}rì��(h1]h2]h3]h4]h5]uh6K	h%]rî��h@XH���added after harvest, obtained from systemmetadata, filtered during queryrï��ÖÅrñ��}ró��(h*jí��h+jê��ubaubah-jg��ubeh-jÄ��ubjU��)Årò��}rô��(h*U�h/}rö��(h1]h2]h3]h4]h5]uh+jÙ��h%]rõ��(jZ��)Årú��}rù��(h*U�h/}rû��(h1]h2]h3]h4]h5]uh+jò��h%]rü��hm)År†��}r°��(h*X���entryIdr¢��h+jú��h,j≠��h-hqh/}r£��(h1]h2]h3]h4]h5]uh6K
h%]r§��h@X���entryIdr•��ÖÅr¶��}rß��(h*j¢��h+j†��ubaubah-jg��ubjZ��)År®��}r©��(h*U�h/}r™��(h1]h2]h3]h4]h5]uh+jò��h%]r´��hm)År¨��}r≠��(h*X���stringrÆ��h+j®��h,j≠��h-hqh/}rØ��(h1]h2]h3]h4]h5]uh6K
h%]r∞��h@X���stringr±��ÖÅr≤��}r≥��(h*jÆ��h+j¨��ubaubah-jg��ubjZ��)År¥��}rµ��(h*U�h/}r∂��(h1]h2]h3]h4]h5]uh+jò��h%]r∑��hm)År∏��}rπ��(h*X���obtained from MN event logr∫��h+j¥��h,j≠��h-hqh/}rª��(h1]h2]h3]h4]h5]uh6K
h%]rº��h@X���obtained from MN event logrΩ��ÖÅræ��}rø��(h*j∫��h+j∏��ubaubah-jg��ubeh-jÄ��ubjU��)År¿��}r¡��(h*U�h/}r¬��(h1]h2]h3]h4]h5]uh+jÙ��h%]r√��(jZ��)Årƒ��}r≈��(h*U�h/}r∆��(h1]h2]h3]h4]h5]uh+j¿��h%]r«��hm)År»��}r…��(h*X���pidr ��h+jƒ��h,j≠��h-hqh/}rÀ��(h1]h2]h3]h4]h5]uh6Kh%]rÃ��h@X���pidrÕ��ÖÅrŒ��}rœ��(h*j ��h+j»��ubaubah-jg��ubjZ��)År–��}r—��(h*U�h/}r“��(h1]h2]h3]h4]h5]uh+j¿��h%]r”��hm)År‘��}r’��(h*X���stringr÷��h+j–��h,j≠��h-hqh/}r◊��(h1]h2]h3]h4]h5]uh6Kh%]rÿ��h@X���stringrŸ��ÖÅr⁄��}r€��(h*j÷��h+j‘��ubaubah-jg��ubjZ��)År‹��}r›��(h*U�h/}rfi��(h1]h2]h3]h4]h5]uh+j¿��h%]rfl��hm)År‡��}r·��(h*X1���added after harvest, obtained from systemmetadatar‚��h+j‹��h,j≠��h-hqh/}r„��(h1]h2]h3]h4]h5]uh6Kh%]r‰��h@X1���added after harvest, obtained from systemmetadatarÂ��ÖÅrÊ��}rÁ��(h*j‚��h+j‡��ubaubah-jg��ubeh-jÄ��ubjU��)ÅrË��}rÈ��(h*U�h/}rÍ��(h1]h2]h3]h4]h5]uh+jÙ��h%]rÎ��(jZ��)ÅrÏ��}rÌ��(h*U�h/}rÓ��(h1]h2]h3]h4]h5]uh+jË��h%]rÔ��hm)År��}rÒ��(h*X	���ipAddressrÚ��h+jÏ��h,j≠��h-hqh/}rÛ��(h1]h2]h3]h4]h5]uh6Kh%]rÙ��h@X	���ipAddressrı��ÖÅrˆ��}r˜��(h*jÚ��h+j��ubaubah-jg��ubjZ��)År¯��}r˘��(h*U�h/}r˙��(h1]h2]h3]h4]h5]uh+jË��h%]r˚��hm)År¸��}r˝��(h*X���stringr˛��h+j¯��h,j≠��h-hqh/}rˇ��(h1]h2]h3]h4]h5]uh6Kh%]r���h@X���stringr��ÖÅr��}r��(h*j˛��h+j¸��ubaubah-jg��ubjZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+jË��h%]r��hm)År��}r	��(h*X1���obtained from MN event log, filtered during queryr
��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X1���obtained from MN event log, filtered during queryr
��ÖÅr��}r��(h*j
��h+j��ubaubah-jg��ubeh-jÄ��ubjU��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+jÙ��h%]r��(jZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j��h%]r��hm)År��}r��(h*X	���userAgentr��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6K
h%]r��h@X	���userAgentr��ÖÅr��}r��(h*j��h+j��ubaubah-jg��ubjZ��)År ��}r!��(h*U�h/}r"��(h1]h2]h3]h4]h5]uh+j��h%]r#��hm)År$��}r%��(h*X���stringr&��h+j ��h,j≠��h-hqh/}r'��(h1]h2]h3]h4]h5]uh6K
h%]r(��h@X���stringr)��ÖÅr*��}r+��(h*j&��h+j$��ubaubah-jg��ubjZ��)År,��}r-��(h*U�h/}r.��(h1]h2]h3]h4]h5]uh+j��h%]r/��hm)År0��}r1��(h*X���obtained from MN event logr2��h+j,��h,j≠��h-hqh/}r3��(h1]h2]h3]h4]h5]uh6K
h%]r4��h@X���obtained from MN event logr5��ÖÅr6��}r7��(h*j2��h+j0��ubaubah-jg��ubeh-jÄ��ubjU��)År8��}r9��(h*U�h/}r:��(h1]h2]h3]h4]h5]uh+jÙ��h%]r;��(jZ��)År<��}r=��(h*U�h/}r>��(h1]h2]h3]h4]h5]uh+j8��h%]r?��hm)År@��}rA��(h*X���subjectrB��h+j<��h,j≠��h-hqh/}rC��(h1]h2]h3]h4]h5]uh6Kh%]rD��h@X���subjectrE��ÖÅrF��}rG��(h*jB��h+j@��ubaubah-jg��ubjZ��)ÅrH��}rI��(h*U�h/}rJ��(h1]h2]h3]h4]h5]uh+j8��h%]rK��hm)ÅrL��}rM��(h*X���stringrN��h+jH��h,j≠��h-hqh/}rO��(h1]h2]h3]h4]h5]uh6Kh%]rP��h@X���stringrQ��ÖÅrR��}rS��(h*jN��h+jL��ubaubah-jg��ubjZ��)ÅrT��}rU��(h*U�h/}rV��(h1]h2]h3]h4]h5]uh+j8��h%]rW��hm)ÅrX��}rY��(h*X1���obtained from MN event log, filtered during queryrZ��h+jT��h,j≠��h-hqh/}r[��(h1]h2]h3]h4]h5]uh6Kh%]r\��h@X1���obtained from MN event log, filtered during queryr]��ÖÅr^��}r_��(h*jZ��h+jX��ubaubah-jg��ubeh-jÄ��ubjU��)År`��}ra��(h*U�h/}rb��(h1]h2]h3]h4]h5]uh+jÙ��h%]rc��(jZ��)Ård��}re��(h*U�h/}rf��(h1]h2]h3]h4]h5]uh+j`��h%]rg��hm)Årh��}ri��(h*X���eventrj��h+jd��h,j≠��h-hqh/}rk��(h1]h2]h3]h4]h5]uh6Kh%]rl��h@X���eventrm��ÖÅrn��}ro��(h*jj��h+jh��ubaubah-jg��ubjZ��)Årp��}rq��(h*U�h/}rr��(h1]h2]h3]h4]h5]uh+j`��h%]rs��hm)Årt��}ru��(h*X���stringrv��h+jp��h,j≠��h-hqh/}rw��(h1]h2]h3]h4]h5]uh6Kh%]rx��h@X���stringry��ÖÅrz��}r{��(h*jv��h+jt��ubaubah-jg��ubjZ��)År|��}r}��(h*U�h/}r~��(h1]h2]h3]h4]h5]uh+j`��h%]r��hm)ÅrÄ��}rÅ��(h*X���obtained from MN event logrÇ��h+j|��h,j≠��h-hqh/}rÉ��(h1]h2]h3]h4]h5]uh6Kh%]rÑ��h@X���obtained from MN event logrÖ��ÖÅrÜ��}rá��(h*jÇ��h+jÄ��ubaubah-jg��ubeh-jÄ��ubjU��)Årà��}râ��(h*U�h/}rä��(h1]h2]h3]h4]h5]uh+jÙ��h%]rã��(jZ��)Årå��}rç��(h*U�h/}ré��(h1]h2]h3]h4]h5]uh+jà��h%]rè��hm)Årê��}rë��(h*X
���dateLoggedrí��h+jå��h,j≠��h-hqh/}rì��(h1]h2]h3]h4]h5]uh6Kh%]rî��h@X
���dateLoggedrï��ÖÅrñ��}ró��(h*jí��h+jê��ubaubah-jg��ubjZ��)Årò��}rô��(h*U�h/}rö��(h1]h2]h3]h4]h5]uh+jà��h%]rõ��hm)Årú��}rù��(h*X���daterû��h+jò��h,j≠��h-hqh/}rü��(h1]h2]h3]h4]h5]uh6Kh%]r†��h@X���dater°��ÖÅr¢��}r£��(h*jû��h+jú��ubaubah-jg��ubjZ��)År§��}r•��(h*U�h/}r¶��(h1]h2]h3]h4]h5]uh+jà��h%]rß��hm)År®��}r©��(h*X���obtained from MN event logr™��h+j§��h,j≠��h-hqh/}r´��(h1]h2]h3]h4]h5]uh6Kh%]r¨��h@X���obtained from MN event logr≠��ÖÅrÆ��}rØ��(h*j™��h+j®��ubaubah-jg��ubeh-jÄ��ubjU��)År∞��}r±��(h*U�h/}r≤��(h1]h2]h3]h4]h5]uh+jÙ��h%]r≥��(jZ��)År¥��}rµ��(h*U�h/}r∂��(h1]h2]h3]h4]h5]uh+j∞��h%]r∑��hm)År∏��}rπ��(h*X���nodeIdr∫��h+j¥��h,j≠��h-hqh/}rª��(h1]h2]h3]h4]h5]uh6Kh%]rº��h@X���nodeIdrΩ��ÖÅræ��}rø��(h*j∫��h+j∏��ubaubah-jg��ubjZ��)År¿��}r¡��(h*U�h/}r¬��(h1]h2]h3]h4]h5]uh+j∞��h%]r√��hm)Årƒ��}r≈��(h*X���stringr∆��h+j¿��h,j≠��h-hqh/}r«��(h1]h2]h3]h4]h5]uh6Kh%]r»��h@X���stringr…��ÖÅr ��}rÀ��(h*j∆��h+jƒ��ubaubah-jg��ubjZ��)ÅrÃ��}rÕ��(h*U�h/}rŒ��(h1]h2]h3]h4]h5]uh+j∞��h%]rœ��hm)År–��}r—��(h*X���obtained from MN event logr“��h+jÃ��h,j≠��h-hqh/}r”��(h1]h2]h3]h4]h5]uh6Kh%]r‘��h@X���obtained from MN event logr’��ÖÅr÷��}r◊��(h*j“��h+j–��ubaubah-jg��ubeh-jÄ��ubjU��)Årÿ��}rŸ��(h*U�h/}r⁄��(h1]h2]h3]h4]h5]uh+jÙ��h%]r€��(jZ��)År‹��}r›��(h*U�h/}rfi��(h1]h2]h3]h4]h5]uh+jÿ��h%]rfl��hm)År‡��}r·��(h*X���rightsHolderr‚��h+j‹��h,j≠��h-hqh/}r„��(h1]h2]h3]h4]h5]uh6Kh%]r‰��h@X���rightsHolderrÂ��ÖÅrÊ��}rÁ��(h*j‚��h+j‡��ubaubah-jg��ubjZ��)ÅrË��}rÈ��(h*U�h/}rÍ��(h1]h2]h3]h4]h5]uh+jÿ��h%]rÎ��hm)ÅrÏ��}rÌ��(h*X���stringrÓ��h+jË��h,j≠��h-hqh/}rÔ��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���stringrÒ��ÖÅrÚ��}rÛ��(h*jÓ��h+jÏ��ubaubah-jg��ubjZ��)ÅrÙ��}rı��(h*U�h/}rˆ��(h1]h2]h3]h4]h5]uh+jÿ��h%]r˜��hm)År¯��}r˘��(h*XH���added after harvest, obtained from systemmetadata, filtered during queryr˙��h+jÙ��h,j≠��h-hqh/}r˚��(h1]h2]h3]h4]h5]uh6Kh%]r¸��h@XH���added after harvest, obtained from systemmetadata, filtered during queryr˝��ÖÅr˛��}rˇ��(h*j˙��h+j¯��ubaubah-jg��ubeh-jÄ��ubjU��)År���}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+jÙ��h%]r��(jZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j���h%]r��hm)År��}r	��(h*X���formatIdr
��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���formatIdr
��ÖÅr��}r��(h*j
��h+j��ubaubah-jg��ubjZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j���h%]r��hm)År��}r��(h*X���stringr��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���stringr��ÖÅr��}r��(h*j��h+j��ubaubah-jg��ubjZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j���h%]r��hm)År ��}r!��(h*X1���added after harvest, obtained from systemmetadatar"��h+j��h,j≠��h-hqh/}r#��(h1]h2]h3]h4]h5]uh6Kh%]r$��h@X1���added after harvest, obtained from systemmetadatar%��ÖÅr&��}r'��(h*j"��h+j ��ubaubah-jg��ubeh-jÄ��ubjU��)År(��}r)��(h*U�h/}r*��(h1]h2]h3]h4]h5]uh+jÙ��h%]r+��(jZ��)År,��}r-��(h*U�h/}r.��(h1]h2]h3]h4]h5]uh+j(��h%]r/��hm)År0��}r1��(h*X
���formatTyper2��h+j,��h,j≠��h-hqh/}r3��(h1]h2]h3]h4]h5]uh6Kh%]r4��h@X
���formatTyper5��ÖÅr6��}r7��(h*j2��h+j0��ubaubah-jg��ubjZ��)År8��}r9��(h*U�h/}r:��(h1]h2]h3]h4]h5]uh+j(��h%]r;��hm)År<��}r=��(h*X���stringr>��h+j8��h,j≠��h-hqh/}r?��(h1]h2]h3]h4]h5]uh6Kh%]r@��h@X���stringrA��ÖÅrB��}rC��(h*j>��h+j<��ubaubah-jg��ubjZ��)ÅrD��}rE��(h*U�h/}rF��(h1]h2]h3]h4]h5]uh+j(��h%]rG��hm)ÅrH��}rI��(h*X1���added after harvest, obtained from systemmetadatarJ��h+jD��h,j≠��h-hqh/}rK��(h1]h2]h3]h4]h5]uh6Kh%]rL��h@X1���added after harvest, obtained from systemmetadatarM��ÖÅrN��}rO��(h*jJ��h+jH��ubaubah-jg��ubeh-jÄ��ubjU��)ÅrP��}rQ��(h*U�h/}rR��(h1]h2]h3]h4]h5]uh+jÙ��h%]rS��(jZ��)ÅrT��}rU��(h*U�h/}rV��(h1]h2]h3]h4]h5]uh+jP��h%]rW��hm)ÅrX��}rY��(h*X���sizerZ��h+jT��h,j≠��h-hqh/}r[��(h1]h2]h3]h4]h5]uh6Kh%]r\��h@X���sizer]��ÖÅr^��}r_��(h*jZ��h+jX��ubaubah-jg��ubjZ��)År`��}ra��(h*U�h/}rb��(h1]h2]h3]h4]h5]uh+jP��h%]rc��hm)Ård��}re��(h*X���slongrf��h+j`��h,j≠��h-hqh/}rg��(h1]h2]h3]h4]h5]uh6Kh%]rh��h@X���slongri��ÖÅrj��}rk��(h*jf��h+jd��ubaubah-jg��ubjZ��)Årl��}rm��(h*U�h/}rn��(h1]h2]h3]h4]h5]uh+jP��h%]ro��hm)Årp��}rq��(h*X1���added after harvest, obtained from systemmetadatarr��h+jl��h,j≠��h-hqh/}rs��(h1]h2]h3]h4]h5]uh6Kh%]rt��h@X1���added after harvest, obtained from systemmetadataru��ÖÅrv��}rw��(h*jr��h+jp��ubaubah-jg��ubeh-jÄ��ubjU��)Årx��}ry��(h*U�h/}rz��(h1]h2]h3]h4]h5]uh+jÙ��h%]r{��(jZ��)År|��}r}��(h*U�h/}r~��(h1]h2]h3]h4]h5]uh+jx��h%]r��hm)ÅrÄ��}rÅ��(h*X���countryrÇ��h+j|��h,j≠��h-hqh/}rÉ��(h1]h2]h3]h4]h5]uh6Kh%]rÑ��h@X���countryrÖ��ÖÅrÜ��}rá��(h*jÇ��h+jÄ��ubaubah-jg��ubjZ��)Årà��}râ��(h*U�h/}rä��(h1]h2]h3]h4]h5]uh+jx��h%]rã��hm)Årå��}rç��(h*X���stringré��h+jà��h,j≠��h-hqh/}rè��(h1]h2]h3]h4]h5]uh6Kh%]rê��h@X���stringrë��ÖÅrí��}rì��(h*jé��h+jå��ubaubah-jg��ubjZ��)Årî��}rï��(h*U�h/}rñ��(h1]h2]h3]h4]h5]uh+jx��h%]ró��hm)Årò��}rô��(h*X.���added after harvest, determined from ipAddressrö��h+jî��h,j≠��h-hqh/}rõ��(h1]h2]h3]h4]h5]uh6Kh%]rú��h@X.���added after harvest, determined from ipAddressrù��ÖÅrû��}rü��(h*jö��h+jò��ubaubah-jg��ubeh-jÄ��ubjU��)År†��}r°��(h*U�h/}r¢��(h1]h2]h3]h4]h5]uh+jÙ��h%]r£��(jZ��)År§��}r•��(h*U�h/}r¶��(h1]h2]h3]h4]h5]uh+j†��h%]rß��hm)År®��}r©��(h*X���regionr™��h+j§��h,j≠��h-hqh/}r´��(h1]h2]h3]h4]h5]uh6Kh%]r¨��h@X���regionr≠��ÖÅrÆ��}rØ��(h*j™��h+j®��ubaubah-jg��ubjZ��)År∞��}r±��(h*U�h/}r≤��(h1]h2]h3]h4]h5]uh+j†��h%]r≥��hm)År¥��}rµ��(h*X���stringr∂��h+j∞��h,j≠��h-hqh/}r∑��(h1]h2]h3]h4]h5]uh6Kh%]r∏��h@X���stringrπ��ÖÅr∫��}rª��(h*j∂��h+j¥��ubaubah-jg��ubjZ��)Årº��}rΩ��(h*U�h/}ræ��(h1]h2]h3]h4]h5]uh+j†��h%]rø��hm)År¿��}r¡��(h*X.���added after harvest, determined from ipAddressr¬��h+jº��h,j≠��h-hqh/}r√��(h1]h2]h3]h4]h5]uh6Kh%]rƒ��h@X.���added after harvest, determined from ipAddressr≈��ÖÅr∆��}r«��(h*j¬��h+j¿��ubaubah-jg��ubeh-jÄ��ubjU��)År»��}r…��(h*U�h/}r ��(h1]h2]h3]h4]h5]uh+jÙ��h%]rÀ��(jZ��)ÅrÃ��}rÕ��(h*U�h/}rŒ��(h1]h2]h3]h4]h5]uh+j»��h%]rœ��hm)År–��}r—��(h*X���cityr“��h+jÃ��h,j≠��h-hqh/}r”��(h1]h2]h3]h4]h5]uh6Kh%]r‘��h@X���cityr’��ÖÅr÷��}r◊��(h*j“��h+j–��ubaubah-jg��ubjZ��)Årÿ��}rŸ��(h*U�h/}r⁄��(h1]h2]h3]h4]h5]uh+j»��h%]r€��hm)År‹��}r›��(h*X���stringrfi��h+jÿ��h,j≠��h-hqh/}rfl��(h1]h2]h3]h4]h5]uh6Kh%]r‡��h@X���stringr·��ÖÅr‚��}r„��(h*jfi��h+j‹��ubaubah-jg��ubjZ��)År‰��}rÂ��(h*U�h/}rÊ��(h1]h2]h3]h4]h5]uh+j»��h%]rÁ��hm)ÅrË��}rÈ��(h*X.���added after harvest, determined from ipAddressrÍ��h+j‰��h,j≠��h-hqh/}rÎ��(h1]h2]h3]h4]h5]uh6Kh%]rÏ��h@X.���added after harvest, determined from ipAddressrÌ��ÖÅrÓ��}rÔ��(h*jÍ��h+jË��ubaubah-jg��ubeh-jÄ��ubjU��)År��}rÒ��(h*U�h/}rÚ��(h1]h2]h3]h4]h5]uh+jÙ��h%]rÛ��(jZ��)ÅrÙ��}rı��(h*U�h/}rˆ��(h1]h2]h3]h4]h5]uh+j��h%]r˜��hm)År¯��}r˘��(h*X	���geohash_1r˙��h+jÙ��h,j≠��h-hqh/}r˚��(h1]h2]h3]h4]h5]uh6Kh%]r¸��h@X	���geohash_1r˝��ÖÅr˛��}rˇ��(h*j˙��h+j¯��ubaubah-jg��ubjZ��)År���}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j��h%]r��hm)År��}r��(h*X���stringr��h+j���h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X���stringr	��ÖÅr
��}r��(h*j��h+j��ubaubah-jg��ubjZ��)År��}r
��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j��h%]r��hm)År��}r��(h*X.���added after harvest, determined from ipAddressr��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X.���added after harvest, determined from ipAddressr��ÖÅr��}r��(h*j��h+j��ubaubah-jg��ubeh-jÄ��ubjU��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+jÙ��h%]r��(jZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j��h%]r��hm)År ��}r!��(h*X	���geohash_2r"��h+j��h,j≠��h-hqh/}r#��(h1]h2]h3]h4]h5]uh6Kh%]r$��h@X	���geohash_2r%��ÖÅr&��}r'��(h*j"��h+j ��ubaubah-jg��ubjZ��)År(��}r)��(h*U�h/}r*��(h1]h2]h3]h4]h5]uh+j��h%]r+��hm)År,��}r-��(h*X���stringr.��h+j(��h,j≠��h-hqh/}r/��(h1]h2]h3]h4]h5]uh6Kh%]r0��h@X���stringr1��ÖÅr2��}r3��(h*j.��h+j,��ubaubah-jg��ubjZ��)År4��}r5��(h*U�h/}r6��(h1]h2]h3]h4]h5]uh+j��h%]r7��hm)År8��}r9��(h*X.���added after harvest, determined from ipAddressr:��h+j4��h,j≠��h-hqh/}r;��(h1]h2]h3]h4]h5]uh6Kh%]r<��h@X.���added after harvest, determined from ipAddressr=��ÖÅr>��}r?��(h*j:��h+j8��ubaubah-jg��ubeh-jÄ��ubjU��)År@��}rA��(h*U�h/}rB��(h1]h2]h3]h4]h5]uh+jÙ��h%]rC��(jZ��)ÅrD��}rE��(h*U�h/}rF��(h1]h2]h3]h4]h5]uh+j@��h%]rG��hm)ÅrH��}rI��(h*X	���geohash_3rJ��h+jD��h,j≠��h-hqh/}rK��(h1]h2]h3]h4]h5]uh6Kh%]rL��h@X	���geohash_3rM��ÖÅrN��}rO��(h*jJ��h+jH��ubaubah-jg��ubjZ��)ÅrP��}rQ��(h*U�h/}rR��(h1]h2]h3]h4]h5]uh+j@��h%]rS��hm)ÅrT��}rU��(h*X���stringrV��h+jP��h,j≠��h-hqh/}rW��(h1]h2]h3]h4]h5]uh6Kh%]rX��h@X���stringrY��ÖÅrZ��}r[��(h*jV��h+jT��ubaubah-jg��ubjZ��)År\��}r]��(h*U�h/}r^��(h1]h2]h3]h4]h5]uh+j@��h%]r_��hm)År`��}ra��(h*X.���added after harvest, determined from ipAddressrb��h+j\��h,j≠��h-hqh/}rc��(h1]h2]h3]h4]h5]uh6Kh%]rd��h@X.���added after harvest, determined from ipAddressre��ÖÅrf��}rg��(h*jb��h+j`��ubaubah-jg��ubeh-jÄ��ubjU��)Årh��}ri��(h*U�h/}rj��(h1]h2]h3]h4]h5]uh+jÙ��h%]rk��(jZ��)Årl��}rm��(h*U�h/}rn��(h1]h2]h3]h4]h5]uh+jh��h%]ro��hm)Årp��}rq��(h*X	���geohash_4rr��h+jl��h,j≠��h-hqh/}rs��(h1]h2]h3]h4]h5]uh6Kh%]rt��h@X	���geohash_4ru��ÖÅrv��}rw��(h*jr��h+jp��ubaubah-jg��ubjZ��)Årx��}ry��(h*U�h/}rz��(h1]h2]h3]h4]h5]uh+jh��h%]r{��hm)År|��}r}��(h*X���stringr~��h+jx��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]rÄ��h@X���stringrÅ��ÖÅrÇ��}rÉ��(h*j~��h+j|��ubaubah-jg��ubjZ��)ÅrÑ��}rÖ��(h*U�h/}rÜ��(h1]h2]h3]h4]h5]uh+jh��h%]rá��hm)Årà��}râ��(h*X.���added after harvest, determined from ipAddressrä��h+jÑ��h,j≠��h-hqh/}rã��(h1]h2]h3]h4]h5]uh6Kh%]rå��h@X.���added after harvest, determined from ipAddressrç��ÖÅré��}rè��(h*jä��h+jà��ubaubah-jg��ubeh-jÄ��ubjU��)Årê��}rë��(h*U�h/}rí��(h1]h2]h3]h4]h5]uh+jÙ��h%]rì��(jZ��)Årî��}rï��(h*U�h/}rñ��(h1]h2]h3]h4]h5]uh+jê��h%]ró��hm)Årò��}rô��(h*X	���geohash_5rö��h+jî��h,j≠��h-hqh/}rõ��(h1]h2]h3]h4]h5]uh6Kh%]rú��h@X	���geohash_5rù��ÖÅrû��}rü��(h*jö��h+jò��ubaubah-jg��ubjZ��)År†��}r°��(h*U�h/}r¢��(h1]h2]h3]h4]h5]uh+jê��h%]r£��hm)År§��}r•��(h*X���stringr¶��h+j†��h,j≠��h-hqh/}rß��(h1]h2]h3]h4]h5]uh6Kh%]r®��h@X���stringr©��ÖÅr™��}r´��(h*j¶��h+j§��ubaubah-jg��ubjZ��)År¨��}r≠��(h*U�h/}rÆ��(h1]h2]h3]h4]h5]uh+jê��h%]rØ��hm)År∞��}r±��(h*X.���added after harvest, determined from ipAddressr≤��h+j¨��h,j≠��h-hqh/}r≥��(h1]h2]h3]h4]h5]uh6Kh%]r¥��h@X.���added after harvest, determined from ipAddressrµ��ÖÅr∂��}r∑��(h*j≤��h+j∞��ubaubah-jg��ubeh-jÄ��ubjU��)År∏��}rπ��(h*U�h/}r∫��(h1]h2]h3]h4]h5]uh+jÙ��h%]rª��(jZ��)Årº��}rΩ��(h*U�h/}ræ��(h1]h2]h3]h4]h5]uh+j∏��h%]rø��hm)År¿��}r¡��(h*X	���geohash_6r¬��h+jº��h,j≠��h-hqh/}r√��(h1]h2]h3]h4]h5]uh6Kh%]rƒ��h@X	���geohash_6r≈��ÖÅr∆��}r«��(h*j¬��h+j¿��ubaubah-jg��ubjZ��)År»��}r…��(h*U�h/}r ��(h1]h2]h3]h4]h5]uh+j∏��h%]rÀ��hm)ÅrÃ��}rÕ��(h*X���stringrŒ��h+j»��h,j≠��h-hqh/}rœ��(h1]h2]h3]h4]h5]uh6Kh%]r–��h@X���stringr—��ÖÅr“��}r”��(h*jŒ��h+jÃ��ubaubah-jg��ubjZ��)År‘��}r’��(h*U�h/}r÷��(h1]h2]h3]h4]h5]uh+j∏��h%]r◊��hm)Årÿ��}rŸ��(h*X.���added after harvest, determined from ipAddressr⁄��h+j‘��h,j≠��h-hqh/}r€��(h1]h2]h3]h4]h5]uh6Kh%]r‹��h@X.���added after harvest, determined from ipAddressr›��ÖÅrfi��}rfl��(h*j⁄��h+jÿ��ubaubah-jg��ubeh-jÄ��ubjU��)År‡��}r·��(h*U�h/}r‚��(h1]h2]h3]h4]h5]uh+jÙ��h%]r„��(jZ��)År‰��}rÂ��(h*U�h/}rÊ��(h1]h2]h3]h4]h5]uh+j‡��h%]rÁ��hm)ÅrË��}rÈ��(h*X	���geohash_7rÍ��h+j‰��h,j≠��h-hqh/}rÎ��(h1]h2]h3]h4]h5]uh6Kh%]rÏ��h@X	���geohash_7rÌ��ÖÅrÓ��}rÔ��(h*jÍ��h+jË��ubaubah-jg��ubjZ��)År��}rÒ��(h*U�h/}rÚ��(h1]h2]h3]h4]h5]uh+j‡��h%]rÛ��hm)ÅrÙ��}rı��(h*X���stringrˆ��h+j��h,j≠��h-hqh/}r˜��(h1]h2]h3]h4]h5]uh6Kh%]r¯��h@X���stringr˘��ÖÅr˙��}r˚��(h*jˆ��h+jÙ��ubaubah-jg��ubjZ��)År¸��}r˝��(h*U�h/}r˛��(h1]h2]h3]h4]h5]uh+j‡��h%]rˇ��hm)År���}r��(h*X.���added after harvest, determined from ipAddressr��h+j¸��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6Kh%]r��h@X.���added after harvest, determined from ipAddressr��ÖÅr��}r��(h*j��h+j���ubaubah-jg��ubeh-jÄ��ubjU��)År��}r	��(h*U�h/}r
��(h1]h2]h3]h4]h5]uh+jÙ��h%]r��(jZ��)År��}r
��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j��h%]r��hm)År��}r��(h*X	���geohash_8r��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6K h%]r��h@X	���geohash_8r��ÖÅr��}r��(h*j��h+j��ubaubah-jg��ubjZ��)År��}r��(h*U�h/}r��(h1]h2]h3]h4]h5]uh+j��h%]r��hm)År��}r��(h*X���stringr��h+j��h,j≠��h-hqh/}r��(h1]h2]h3]h4]h5]uh6K h%]r ��h@X���stringr!��ÖÅr"��}r#��(h*j��h+j��ubaubah-jg��ubjZ��)År$��}r%��(h*U�h/}r&��(h1]h2]h3]h4]h5]uh+j��h%]r'��hm)År(��}r)��(h*X.���added after harvest, determined from ipAddressr*��h+j$��h,j≠��h-hqh/}r+��(h1]h2]h3]h4]h5]uh6K h%]r,��h@X.���added after harvest, determined from ipAddressr-��ÖÅr.��}r/��(h*j*��h+j(��ubaubah-jg��ubeh-jÄ��ubjU��)År0��}r1��(h*U�h/}r2��(h1]h2]h3]h4]h5]uh+jÙ��h%]r3��(jZ��)År4��}r5��(h*U�h/}r6��(h1]h2]h3]h4]h5]uh+j0��h%]r7��hm)År8��}r9��(h*X	���geohash_9r:��h+j4��h,j≠��h-hqh/}r;��(h1]h2]h3]h4]h5]uh6K!h%]r<��h@X	���geohash_9r=��ÖÅr>��}r?��(h*j:��h+j8��ubaubah-jg��ubjZ��)År@��}rA��(h*U�h/}rB��(h1]h2]h3]h4]h5]uh+j0��h%]rC��hm)ÅrD��}rE��(h*X���stringrF��h+j@��h,j≠��h-hqh/}rG��(h1]h2]h3]h4]h5]uh6K!h%]rH��h@X���stringrI��ÖÅrJ��}rK��(h*jF��h+jD��ubaubah-jg��ubjZ��)ÅrL��}rM��(h*U�h/}rN��(h1]h2]h3]h4]h5]uh+j0��h%]rO��hm)ÅrP��}rQ��(h*X.���added after harvest, determined from ipAddressrR��h+jL��h,j≠��h-hqh/}rS��(h1]h2]h3]h4]h5]uh6K!h%]rT��h@X.���added after harvest, determined from ipAddressrU��ÖÅrV��}rW��(h*jR��h+jP��ubaubah-jg��ubeh-jÄ��ubjU��)ÅrX��}rY��(h*U�h/}rZ��(h1]h2]h3]h4]h5]uh+jÙ��h%]r[��(jZ��)År\��}r]��(h*U�h/}r^��(h1]h2]h3]h4]h5]uh+jX��h%]r_��hm)År`��}ra��(h*X���locationrb��h+j\��h,j≠��h-hqh/}rc��(h1]h2]h3]h4]h5]uh6K"h%]rd��h@X���locationre��ÖÅrf��}rg��(h*jb��h+j`��ubaubah-jg��ubjZ��)Årh��}ri��(h*U�h/}rj��(h1]h2]h3]h4]h5]uh+jX��h%]rk��hm)Årl��}rm��(h*X���locationrn��h+jh��h,j≠��h-hqh/}ro��(h1]h2]h3]h4]h5]uh6K"h%]rp��h@X���locationrq��ÖÅrr��}rs��(h*jn��h+jl��ubaubah-jg��ubjZ��)Årt��}ru��(h*U�h/}rv��(h1]h2]h3]h4]h5]uh+jX��h%]rw��hm)Årx��}ry��(h*X.���added after harvest, determined from ipAddressrz��h+jt��h,j≠��h-hqh/}r{��(h1]h2]h3]h4]h5]uh6K"h%]r|��h@X.���added after harvest, determined from ipAddressr}��ÖÅr~��}r��(h*jz��h+jx��ubaubah-jg��ubeh-jÄ��ubjU��)ÅrÄ��}rÅ��(h*U�h/}rÇ��(h1]h2]h3]h4]h5]uh+jÙ��h%]rÉ��(jZ��)ÅrÑ��}rÖ��(h*U�h/}rÜ��(h1]h2]h3]h4]h5]uh+jÄ��h%]rá��hm)Årà��}râ��(h*X���inFullRobotListrä��h+jÑ��h,j≠��h-hqh/}rã��(h1]h2]h3]h4]h5]uh6K#h%]rå��h@X���inFullRobotListrç��ÖÅré��}rè��(h*jä��h+jà��ubaubah-jg��ubjZ��)Årê��}rë��(h*U�h/}rí��(h1]h2]h3]h4]h5]uh+jÄ��h%]rì��hm)Årî��}rï��(h*X���booleanrñ��h+jê��h,j≠��h-hqh/}ró��(h1]h2]h3]h4]h5]uh6K#h%]rò��h@X���booleanrô��ÖÅrö��}rõ��(h*jñ��h+jî��ubaubah-jg��ubjZ��)Årú��}rù��(h*U�h/}rû��(h1]h2]h3]h4]h5]uh+jÄ��h%]rü��hm)År†��}r°��(h*XN���added after harvest, determined based on log processing for COUNTER compliancer¢��h+jú��h,j≠��h-hqh/}r£��(h1]h2]h3]h4]h5]uh6K#h%]r§��h@XN���added after harvest, determined based on log processing for COUNTER compliancer•��ÖÅr¶��}rß��(h*j¢��h+j†��ubaubah-jg��ubeh-jÄ��ubjU��)År®��}r©��(h*U�h/}r™��(h1]h2]h3]h4]h5]uh+jÙ��h%]r´��(jZ��)År¨��}r≠��(h*U�h/}rÆ��(h1]h2]h3]h4]h5]uh+j®��h%]rØ��hm)År∞��}r±��(h*X���inPartialRobotListr≤��h+j¨��h,j≠��h-hqh/}r≥��(h1]h2]h3]h4]h5]uh6K$h%]r¥��h@X���inPartialRobotListrµ��ÖÅr∂��}r∑��(h*j≤��h+j∞��ubaubah-jg��ubjZ��)År∏��}rπ��(h*U�h/}r∫��(h1]h2]h3]h4]h5]uh+j®��h%]rª��hm)Årº��}rΩ��(h*X���booleanræ��h+j∏��h,j≠��h-hqh/}rø��(h1]h2]h3]h4]h5]uh6K$h%]r¿��h@X���booleanr¡��ÖÅr¬��}r√��(h*jæ��h+jº��ubaubah-jg��ubjZ��)Årƒ��}r≈��(h*U�h/}r∆��(h1]h2]h3]h4]h5]uh+j®��h%]r«��hm)År»��}r…��(h*XN���added after harvest, determined based on log processing for COUNTER compliancer ��h+jƒ��h,j≠��h-hqh/}rÀ��(h1]h2]h3]h4]h5]uh6K$h%]rÃ��h@XN���added after harvest, determined based on log processing for COUNTER compliancerÕ��ÖÅrŒ��}rœ��(h*j ��h+j»��ubaubah-jg��ubeh-jÄ��ubjU��)År–��}r—��(h*U�h/}r“��(h1]h2]h3]h4]h5]uh+jÙ��h%]r”��(jZ��)År‘��}r’��(h*U�h/}r÷��(h1]h2]h3]h4]h5]uh+j–��h%]r◊��hm)Årÿ��}rŸ��(h*X
���isRepeatVisitr⁄��h+j‘��h,j≠��h-hqh/}r€��(h1]h2]h3]h4]h5]uh6K%h%]r‹��h@X
���isRepeatVisitr›��ÖÅrfi��}rfl��(h*j⁄��h+jÿ��ubaubah-jg��ubjZ��)År‡��}r·��(h*U�h/}r‚��(h1]h2]h3]h4]h5]uh+j–��h%]r„��hm)År‰��}rÂ��(h*X���booleanrÊ��h+j‡��h,j≠��h-hqh/}rÁ��(h1]h2]h3]h4]h5]uh6K%h%]rË��h@X���booleanrÈ��ÖÅrÍ��}rÎ��(h*jÊ��h+j‰��ubaubah-jg��ubjZ��)ÅrÏ��}rÌ��(h*U�h/}rÓ��(h1]h2]h3]h4]h5]uh+j–��h%]rÔ��hm)År��}rÒ��(h*XN���added after harvest, determined based on log processing for COUNTER compliancerÚ��h+jÏ��h,j≠��h-hqh/}rÛ��(h1]h2]h3]h4]h5]uh6K%h%]rÙ��h@XN���added after harvest, determined based on log processing for COUNTER compliancerı��ÖÅrˆ��}r˜��(h*jÚ��h+j��ubaubah-jg��ubeh-jÄ��ubeh-j◊��ubeh-jÿ��ubeubeubhT)År¯��}r˘��(h*U�h+hUh,hGh-hWh/}r˙��(h1]h2]h3]h4]r˚��h"ah5]r¸��hauh6K”h7hh%]r˝��(h\)År˛��}rˇ��(h*X���Solr Query Processingr���h+j¯��h,hGh-h`h/}r��(h1]h2]h3]h4]h5]uh6K”h7hh%]r��h@X���Solr Query Processingr��ÖÅr��}r��(h*j���h+j˛��ubaubhm)År��}r��(h*Xƒ���The Event Log Solr index can be queried from the service endpoint https://cn.dataone.org/cn/v1/query/logsolr, for example, the following query
will return read counts for each node in the network:h+j¯��h,hGh-hqh/}r��(h1]h2]h3]h4]h5]uh6K’h7hh%]r	��(h@XB���The Event Log Solr index can be queried from the service endpoint r
��ÖÅr��}r��(h*XB���The Event Log Solr index can be queried from the service endpoint h+j��ubhå)År
��}r��(h*X*���https://cn.dataone.org/cn/v1/query/logsolrr��h/}r��(Urefurij��h4]h3]h1]h2]h5]uh+j��h%]r��h@X*���https://cn.dataone.org/cn/v1/query/logsolrr��ÖÅr��}r��(h*U�h+j
��ubah-hñubh@XX���, for example, the following query
will return read counts for each node in the network:r��ÖÅr��}r��(h*XX���, for example, the following query
will return read counts for each node in the network:h+j��ubeubcdocutils.nodes
literal_block
r��)År��}r��(h*X\���https://cn.dataone.org/cn/v1/query/logsolr/select?q=event:read&facet=true&facet.field=nodeIdh+j¯��h,hGh-U
literal_blockr��h/}r��(h=h>h4]h3]h1]h2]h5]uh6Mh7hh%]r��h@X\���https://cn.dataone.org/cn/v1/query/logsolr/select?q=event:read&facet=true&facet.field=nodeIdr��ÖÅr��}r ��(h*U�h+j��ubaubhm)År!��}r"��(h*Xî���The Event Log Solr index requires authenticated access, because some fields in the log entries contain sensitive information, as
shown in *Table 2*.h+j¯��h,hGh-hqh/}r#��(h1]h2]h3]h4]h5]uh6K‹h7hh%]r$��(h@Xä���The Event Log Solr index requires authenticated access, because some fields in the log entries contain sensitive information, as
shown in r%��ÖÅr&��}r'��(h*Xä���The Event Log Solr index requires authenticated access, because some fields in the log entries contain sensitive information, as
shown in h+j!��ubh‘)År(��}r)��(h*X	���*Table 2*h/}r*��(h1]h2]h3]h4]h5]uh+j!��h%]r+��h@X���Table 2r,��ÖÅr-��}r.��(h*U�h+j(��ubah-h‹ubh@X���.ÖÅr/��}r0��(h*X���.h+j!��ubeubhm)År1��}r2��(h*X��Solr queries are inspected and rewritten by SolrLoggingHandler such that counts for Solr entries will be included only if the entries are
publicly accessible, or the user is a CN administrator or the caller's identify has access privileges to the pids of the entries.r3��h+j¯��h,hGh-hqh/}r4��(h1]h2]h3]h4]h5]uh6Kflh7hh%]r5��h@X��Solr queries are inspected and rewritten by SolrLoggingHandler such that counts for Solr entries will be included only if the entries are
publicly accessible, or the user is a CN administrator or the caller's identify has access privileges to the pids of the entries.r6��ÖÅr7��}r8��(h*j3��h+j1��ubaubhm)År9��}r:��(h*X*��If the requesting session has a certificate then a list of authorized subjects is obtained from LDAP and access is based on
the authorized subjects. Since the Solr index contains access information from systemmetadata, the same access rules that apply to
systemmetadata will apply to the event log.r;��h+j¯��h,hGh-hqh/}r<��(h1]h2]h3]h4]h5]uh6K‚h7hh%]r=��h@X*��If the requesting session has a certificate then a list of authorized subjects is obtained from LDAP and access is based on
the authorized subjects. Since the Solr index contains access information from systemmetadata, the same access rules that apply to
systemmetadata will apply to the event log.r>��ÖÅr?��}r@��(h*j;��h+j9��ubaubhm)ÅrA��}rB��(h*XÇ���If the authenticated user is the CN administrator then the entire contents of each SOLR document are available in the SOLR result.rC��h+j¯��h,hGh-hqh/}rD��(h1]h2]h3]h4]h5]uh6KÊh7hh%]rE��h@XÇ���If the authenticated user is the CN administrator then the entire contents of each SOLR document are available in the SOLR result.rF��ÖÅrG��}rH��(h*jC��h+jA��ubaubeubhT)ÅrI��}rJ��(h*U�h+hUh,hGh-hWh/}rK��(h1]h2]h3]h4]rL��hah5]rM��hauh6KÈh7hh%]rN��(h\)ÅrO��}rP��(h*X���Example QueriesrQ��h+jI��h,hGh-h`h/}rR��(h1]h2]h3]h4]h5]uh6KÈh7hh%]rS��h@X���Example QueriesrT��ÖÅrU��}rV��(h*jQ��h+jO��ubaubhm)ÅrW��}rX��(h*Xj���A description of how to query the Event Log Solr Index, please see the document `<UsageStatistics.html>`_.rY��h+jI��h,hGh-hqh/}rZ��(h1]h2]h3]h4]h5]uh6KÎh7hh%]r[��(h@XP���A description of how to query the Event Log Solr Index, please see the document r\��ÖÅr]��}r^��(h*XP���A description of how to query the Event Log Solr Index, please see the document h+jW��ubhå)År_��}r`��(h*X���`<UsageStatistics.html>`_h/}ra��(UnameX���UsageStatistics.htmlrb��hëjb��h4]h3]h1]h2]h5]uh+jW��h%]rc��h@X���UsageStatistics.htmlrd��ÖÅre��}rf��(h*U�h+j_��ubah-hñubhó)Årg��}rh��(h*X���<UsageStatistics.html>höKh+jW��h-hõh/}ri��(Urefurijb��h4]rj��h ah3]h1]h2]h5]rk��hauh%]ubh@X���.ÖÅrl��}rm��(h*X���.h+jW��ubeubeubeubeh*U�Utransformerrn��NU
footnote_refsro��}rp��Urefnamesrq��}rr��Usymbol_footnotesrs��]rt��Uautofootnote_refsru��]rv��Usymbol_footnote_refsrw��]rx��U	citationsry��]rz��h7hUcurrent_liner{��NUtransform_messagesr|��]r}��Ureporterr~��NUid_startr��KU
autofootnotesr��]r��U
citation_refsr��}r��Uindirect_targetsr��]r��Usettingsr��(cdocutils.frontend
Values
rá��orà��}râ��(Ufootnote_backlinksrä��KUrecord_dependenciesrã��NUrfc_base_urlrå��Uhttps://tools.ietf.org/html/rç��U	tracebackré��àUpep_referencesrè��NUstrip_commentsrê��NU
toc_backlinksr�jg��U
language_coderí��Uenrì��U	datestamprî��NUreport_levelrï��KU_destinationrñ��NU
halt_levelró��KU
strip_classesrò��Nh`NUerror_encoding_error_handlerrô��Ubackslashreplacerö��Udebugrõ��NUembed_stylesheetrú��âUoutput_encoding_error_handlerrù��Ustrictrû��U
sectnum_xformrü��KUdump_transformsr†��NU
docinfo_xformr°��KUwarning_streamr¢��NUpep_file_url_templater£��Upep-%04dr§��Uexit_status_levelr•��KUconfigr¶��NUstrict_visitorrß��NUcloak_email_addressesr®��àUtrim_footnote_reference_spacer©��âUenvr™��NUdump_pseudo_xmlr´��NUexpose_internalsr¨��NUsectsubtitle_xformr≠��âUsource_linkrÆ��NUrfc_referencesrØ��NUoutput_encodingr∞��Uutf-8r±��U
source_urlr≤��NUinput_encodingr≥��U	utf-8-sigr¥��U_disable_configrµ��NU	id_prefixr∂��U�U	tab_widthr∑��KUerror_encodingr∏��UUTF-8rπ��U_sourcer∫��hGUgettext_compactrª��àU	generatorrº��NUdump_internalsrΩ��NUsmart_quotesræ��âUpep_base_urlrø��U https://www.python.org/dev/peps/r¿��Usyntax_highlightr¡��Ulongr¬��Uinput_encoding_error_handlerr√��jû��Uauto_id_prefixrƒ��Uidr≈��Udoctitle_xformr∆��âUstrip_elements_with_classesr«��NU
_config_filesr»��]Ufile_insertion_enabledr…��àUraw_enabledr ��KU
dump_settingsrÀ��NubUsymbol_footnote_startrÃ��K�UidsrÕ��}rŒ��(hhòhh˙h jg��hhwh$hUhjÑ��j±��j©��hjV��hjI��h!j⁄��h#j��h"j¯��uUsubstitution_namesrœ��}r–��h-h7h/}r—��(h1]h4]h3]UsourcehGh2]h5]uU	footnotesr“��]r”��Urefidsr‘��}r’��ub.