Skip to content

Commit

Permalink
Assorted formatting cleanup stuff
Browse files Browse the repository at this point in the history
Issue WASdev#4 - Missing section header 10.5 skews section number afterwards
-> Fixed by putting a blank line before section header

Issue WASdev#3 - Section numbers only go down 3 levels
-> Fixed by specifying :sectnumlevels: 5 in the main doc.  Note that this is an undocumented option Google found for me in a forum post from 2015 (https://discuss.asciidoctor.org/Section-Numbering-Levels-td3879.html)

Section 1 - License - lettered bullet list items are all 'a'
-> Fixed by changing to a,b,c,d

Section 8.2.6 Partitioning - XML sample not formatted, "Syntax:" not on its own line
-> Added blank lines before "Syntax:" and before the xml

Section 8.4.1 Split Termination Processing Incomplete - "Incomplete" was not part of the title
-> Removed line break between "Processing" and "Incomplete"

Section 8.7.1 - Strikethrough sentence shouldn't be bolded
-> changed asterisks around strikethrough text to pound signs (* to #)
This was mentioned in issue WASdev#1 along with a reference to section 9.6 missing a space which was already fixed.

Sections 8.6.1, 8.6.2, and 8.6.4 examples aren't formatted
-> Either move the open '<' out of column one or add [source,xml] before XML delimited by four dashes '----'

Under Section 8.8.81 in subsections "jobProperties Substitution Operator" and "partitionPlan Substitution Operator"
-> Reformatted XML with better indention.
-> Also removed an extraneous </properties> from the jobProperties example that had been there forever (in original)

Section 8.8.2 - examples of property substitution
-> formatting was honoring line breaks so name and value were on separate lines, merged 'em together so they fit on one line making it more readable

Section 8.9.4 - paragraphs aren't numbered as an ordered list so references to rule WASdev#2 is meaningless
-> Added ". " before paragraphs to trigger numbering and a ".. " before the note under item 2 to sublist as 'a'.

Section 8.9.5 - the word 'Undefined' should have been part of the title but was on the next line
-> removed line break
-> Also cleaned up formatting of JSL

Section 9.1.2 - At the end of the Batchlet interface there was an embedded image with text about batchlet stop processing
-> The image had an unresolved reference in it and just looked silly.  Made it into a TIP: with a link/ref to the Stop section.

Section 9.3.1 (@BatchProperty) - A 'Note' paragraph was in a gray box for no reason
-> Removed the space before 'Note' that made it an example

Section 9.3.1 (@BatchProperty) - The MyItemReaderImpl sample code block has an extraneous '\' after the class name
-> Removed it.  Wasn't in the original..

Section 9.3.2 - 'Injection' should be part of the title but is on the next line
-> Removed extraneous line break
-> Also cleaned up XML sample indention

Section 9.4.1.1 has an item list of JobContext and StepContext.  StepContext had a '+' at the end
-> put there to force a line break, there was no space between the 't' and the '+'.  Added one.

Section 9.5 - Partitioned/Concurrent sections need to be numbered with inner list ordered with letters
-> Changed number to the '. ' and '.. ' syntax with a '+' on blank lines to continue list paragraphs.

Section 10.9.9 (JobExecution) - getCreateTime has an extraneous 'updated' in the javadoc
-> Removed it (this was in the original spec too), mentioned in Issue WASdev#1

Lifecycle flows have some errors
-> In Partitioned Batchlet Processsing, in the original PDF steps 8, 10, and 12 are indented but numbered
as part of the main sequence (showing they are part of the conditional in the line above).  In the asciidoc
in lines 8 and 10 we indented these with a '..' which threw off the numbering, so I removed the extra dot.
This left things numbered right, but we lost the indentation for the conditional (this step is the 'then' of an 'if').
I used five non-blank-space elements ({nbsp}{nbsp}{nbsp}{nbsp}{nbsp}) to scoot it over a little.
-> In Regular Chunk Processing step 9.b.i was missing a space after the dots so it got folded into 9.b.  Added a space
-> Note also that four layers in (9.b.i.1 in the original) uses letters so 9.b.i.A.  Didn't try to fix this.
-> In Partitioned Chunk Processing there's a comment after step 5 but the '+' to put it on a separate line was missing
a leading space so it was taken literally.  Added a space.
-> Also items 5.e.v and vi were run into the prior item due to missing spaces after the dots, added a space
-> And some more non-blank-spaces added to get indention
-> In "Chunk with Listeners (except RetryListener)" a whole block was indented one too many levels..backed it out one
-> In Chunk with RetryListener one line split throwing the count off, merged that..and then a lot of the nbsp stuff
to try to get the indentations right
-> In Chunk with Custom Checkpoint Processing more indentation level problems

Throughout - numerous reuses of the app-listing block identifier
-> Tacked on the name of the block it was identifying (e.g. app-listing.ItemReader.java)
-> Also fixed the PartitionAnalyzer block name which mis-identified it as a PartitionCollector

Throughout - XML sample indention needs tidying up
-> Some are specified above, but touched up a bunch of other ones

Throughout - XML blocks aren't tagged that way..seems to default properly
-> but thought I'd be complete and mark 'em all...
  • Loading branch information
follis committed Oct 29, 2019
1 parent 3dc368e commit 5d85bfd
Show file tree
Hide file tree
Showing 11 changed files with 9,754 additions and 324 deletions.
9,317 changes: 9,317 additions & 0 deletions specification/latest/jsr352_1_0_a.html

Large diffs are not rendered by default.

Binary file modified specification/latest/jsr352_1_0_a.pdf
Binary file not shown.
144 changes: 68 additions & 76 deletions specification/src/main/asciidoc/batch_programming_model.adoc

Large diffs are not rendered by default.

44 changes: 20 additions & 24 deletions specification/src/main/asciidoc/batch_runtime_spec.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ pattern:
JobOperator jobOper = BatchRuntime.getJobOperator();

See section 10.9.5 for details on the BatchRuntime class.

=== Batch Artifact Loading

All batch artifacts comprising a batch application are loadable by the
Expand Down Expand Up @@ -130,6 +131,7 @@ under the `META-INF` directory. For .jar files it is the standard `META-INF`
directory. For .war files it is the `WEB-INF/classes/META-INF` directory.
The format and content of the `batch.xml` file follows:

[source,xml]
----
<batch-artifacts xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<ref id="<reference-name>" class="<impl-class-name>" />
Expand Down Expand Up @@ -344,25 +346,19 @@ E.g., the following must hold:

Earlier Execution:
----
partitionPlanProps[] =
mapper.getPartitionPlan().getPartitionProperties();
partitionPlanProps[] = mapper.getPartitionPlan().getPartitionProperties();
partitionPlanProps[0] ---maps to---> partition leaving off at
checkpoints R0, W0
partitionPlanProps[0] ---maps to---> partition leaving off at checkpoints R0, W0
partitionPlanProps[1] ---maps to---> partition leaving off at
checkpoints R1, W1
partitionPlanProps[1] ---maps to---> partition leaving off at checkpoints R1, W1
----
Current Execution:
----
newPartitionPlanProps[] =
mapper.getPartitionPlan().getPartitionProperties();
newPartitionPlanProps[] = mapper.getPartitionPlan().getPartitionProperties();
newPartitionPlanProps[0] ---maps to---> partition resuming at
checkpoints R0, W0
newPartitionPlanProps[0] ---maps to---> partition resuming at checkpoints R0, W0
newPartitionPlanProps [1] ---maps to---> partition resuming at
checkpoints R1, W1
newPartitionPlanProps [1] ---maps to---> partition resuming at checkpoints R1, W1
----
In the shorthand above, "maps to" simply means that the Properties
object on the left is used to potentially resolve the 'partitionPlan'
Expand All @@ -380,7 +376,7 @@ resolve 'partitionPlan' substitutions.
=== Supporting Classes

==== JobContext
[[app-listing]]
[[app-listing.JobContext.java]]
[source,java]
.JobContext.java
----
Expand Down Expand Up @@ -470,7 +466,7 @@ public interface JobContext
----

==== StepContext
[[app-listing]]
[[app-listing.StepContext.java]]
[source,java]
.StepContext.java
----
Expand Down Expand Up @@ -591,7 +587,7 @@ public interface StepContext

==== Metric

[[app-listing]]
[[app-listing.Metric.Java]]
[source,java]
.Metric.java
----
Expand Down Expand Up @@ -627,7 +623,7 @@ public interface Metric


==== PartitionPlan
[[app-listing]]
[[app-listing.PartitionPlan.java]]
[source,java]
.PartitionPlan.java
----
Expand Down Expand Up @@ -746,7 +742,7 @@ public interface PartitionPlan



[[app-listing]]
[[app-listing.PartitionPlanImpl.java]]
[source,java]
.PartitionPlanImpl.java
----
Expand Down Expand Up @@ -809,7 +805,7 @@ public class PartitionPlanImpl implements PartitionPlan

==== BatchRuntime

[[app-listing]]
[[app-listing.BatchRuntime.java]]
[source,java]
.BatchRuntime.java
----
Expand Down Expand Up @@ -841,7 +837,7 @@ public class BatchRuntime


==== BatchStatus
[[app-listing]]
[[app-listing.BatchStatus.java]]
[source,java]
.BatchStatus.java
----
Expand All @@ -860,7 +856,7 @@ public enum BatchStatus
----

==== JobOperator
[[app-listing]]
[[app-listing.JobOperator.java]]
[source,java]
.JobOperator.java
----
Expand Down Expand Up @@ -1086,7 +1082,7 @@ public interface JobOperator
----

==== JobInstance
[[app-listing]]
[[app-listing.JobInstance.java]]
[source,java]
.JobInstance.java
----
Expand All @@ -1108,7 +1104,7 @@ public interface JobInstance

==== JobExecution

[[app-listing]]
[[app-listing.JobExecution.java]]
[source,java]
.JobExecution.java
----
Expand Down Expand Up @@ -1153,7 +1149,7 @@ public interface JobExecution
*/
public Date getCreateTime();
/**
* Get time execution was last updated updated.
* Get time execution was last updated.
* *@return* date (time)
*/
public Date getLastUpdatedTime();
Expand All @@ -1167,7 +1163,7 @@ public interface JobExecution

==== StepExecution

[[app-listing]]
[[app-listing.StepExecution.java]]
[source,java]
.StepExecution.java
----
Expand Down
2 changes: 1 addition & 1 deletion specification/src/main/asciidoc/batch_xml_xsd.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
== Batch XML XSD

[[app-listing]]
[[app-listing.batch_xml_xsd]]
[source,xml]
----
<xml version="1.0" encoding="UTF-8">
Expand Down
Binary file removed specification/src/main/asciidoc/images/image010.png
Binary file not shown.
145 changes: 70 additions & 75 deletions specification/src/main/asciidoc/job_runtime_lifecycle.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ processing and exist until deleted by an implementation provided means.
.. < - >[Batchlet.stop] // thread Py, StepContext is available
.. < - >[PartitionCollector.collectPartitionData] // thread Px
. // when collector payload arrives:
.. < - >[PartitionAnalyzer.analyzeCollectorData] // thread A
. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[PartitionAnalyzer.analyzeCollectorData] // thread A
. // when partition ends:
.. < - >[PartitionAnalyzer.analyzeStatus] // thread A
. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[PartitionAnalyzer.analyzeStatus] // thread A
. // if rollback condition occurs:
. < - >[PartitionReducer.rollbackPartitionedStep] // thread A
. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[PartitionReducer.rollbackPartitionedStep] // thread A
. < - >[PartitionReducer.beforePartitionedStepCompletion] // thread A
. < - >[PartitionReducer.afterPartitionedStepCompletion] // thread A
. < - >[StepListener.afterStep...] // thread A
Expand All @@ -97,7 +97,7 @@ processing and exist until deleted by an implementation provided means.
. <repeat until no more items (i.e. while readItem hasn't returned 'null') > \{
.. <begin checkpoint interval [<begin chunk transaction>]>
.. <repeat until checkpoint criteria reached OR readItem returns `null`> \{
...< - >ItemReader.readItem // thread A
... < - >ItemReader.readItem // thread A
... // if readItem returns non-null
.... < - >ItemProcessor.processItem // thread A
.... // if processItem returns non-null, <add item to writeItems
Expand Down Expand Up @@ -125,7 +125,7 @@ buffer>
. <Store step level properties in StepContext>
. < - >[StepListener.beforeStep...] // thread A
. < - >[PartitionReducer.beginPartitionedStep] // thread A
. < - >[PartitionMapper.mapPartitions] // thread A+
. < - >[PartitionMapper.mapPartitions] // thread A +
// per partition - on thread Px:
.. [<begin transaction> ]
.. < - >ItemReader.open // thread Px
Expand All @@ -141,9 +141,9 @@ buffer>
..... //if processItem returns non-null, <add item to writeItems buffer>
... }
... //if at least one non-null value has been successfully read in this partition of the present chunk
.... < - >ItemWriter.writeItems // thread Px
...< - >[ItemReader.checkpointInfo] // thread Px
...< - >[ItemWriter.checkpointInfo] // thread Px
.... < - >ItemWriter.writeItems // thread Px
... < - >[ItemReader.checkpointInfo] // thread Px
... < - >[ItemWriter.checkpointInfo] // thread Px
... <Store (partition-local) StepContext persistent area>
... [<commit chunk transaction>]
... < - >[PartitionCollector.collectPartitionData] // thread Px
Expand All @@ -155,13 +155,13 @@ buffer>
. [<begin transaction> ] // thread A
. // Actions 9-12 run continuously until all partitions end.
. // when collector payload arrives:
.. < - >[PartitionAnalyzer.analyzeCollectorData] // thread A
. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[PartitionAnalyzer.analyzeCollectorData] // thread A
. // when partition ends:
.. < - >[PartitionAnalyzer.analyzeStatus] // thread A
. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[PartitionAnalyzer.analyzeStatus] // thread A
. // Remaining actions run after all partitions end:
. // if rollback condition occurs:
.. < - >[PartitionReducer.rollbackPartitionedStep] // thread A
.. [<rollback transaction >]
. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[PartitionReducer.rollbackPartitionedStep] // thread A
. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}[<rollback transaction >]
. // else not rollback
. < - >[PartitionReducer.beforePartitionedStepCompletion] // thread A
. [<commit transaction> ] // thread A
Expand Down Expand Up @@ -190,7 +190,7 @@ buffer>
... < - >ItemReader.readItem // thread A
... < - >[ItemReadListener.afterRead] // thread A
... // or:
... \{
... {
... < - >[ItemReadListener.onReadError] // thread A
... < - >[SkipListener.onSkipReadItem] // thread A
... }
Expand All @@ -200,20 +200,20 @@ buffer>
.... < - >[ItemProcessListener.afterProcess] // thread A
.... //if processItem returns non-null,< add item to writeItems buffer>
.... // or:
.... \{
.... {
.... < - >[ItemProcessListener.onProcessError] // thread A
.... < - >[SkipListener.onSkipProcessItem] // thread A
.... }
... }
... //if at least one non-null value has been successfully read in
.. }
.. //if at least one non-null value has been successfully read in
the present chunk
.... < - >[ItemWriteListener.beforeWrite] // thread A
.... < - >ItemWriter.writeItems // thread A
.... < - >[ItemWriteListener.afterWrite] // thread A
.... // or:
.... {
.... < - >[ItemWriteListener.onWriteError] // thread A
.... < - >[SkipListener.onSkipWriteItems] // thread A
... < - >[ItemWriteListener.beforeWrite] // thread A
... < - >ItemWriter.writeItems // thread A
... < - >[ItemWriteListener.afterWrite] // thread A
... // or:
... {
... < - >[ItemWriteListener.onWriteError] // thread A
... < - >[SkipListener.onSkipWriteItems] // thread A
... }
.. < - >[ChunkListener.afterChunk] // thread A
.. < - >[ItemReader.checkpointInfo] // thread A
Expand Down Expand Up @@ -251,59 +251,56 @@ Note rollback processing is also depicted in this section.
... S2:
... < - >ItemReader.readItem // thread A
... // if exception
... < - >[ItemReadListener.onReadErrror] // thread A
... < - >[RetryReadListener.onRetryReadException] // thread A
... // if retryable exception
... // if no-rollback exception
... resume S2:
... // else
... <end repeat>
... // else
... <end repeat>
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[ItemReadListener.onReadErrror] // thread A
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[RetryReadListener.onRetryReadException] // thread A
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if retryable exception
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if no-rollback exception
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}resume S2:
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}<end repeat>
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}<end repeat>
... S3:
... // if readItem
... returns non-null
... < - >ItemProcessor.processItem // thread A
... // if exception
... < - >[ItemProcessListener.onProcessErrror] // thread A
... < - >[RetryProcessListener.onRetryProcessException] // thread A
... // if retryable exception
... // if no-rollback exception
... resume S3:
... // else
... <end repeat>
... // else
... <end repeat>
... // if readItem returns non-null
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >ItemProcessor.processItem // thread A
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if exception
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[ItemProcessListener.onProcessErrror] // thread A
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[RetryProcessListener.onRetryProcessException] // thread A
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if retryable exception
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if no-rollback exception
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}resume S3:
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}<end repeat>
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else
... {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}<end repeat>
... // if processItem returns non-null, <add item to writeItems buffer>
.. }
.. // if rollback exception, execute rollback procedure (below) and
resume at S1 with item-count=1
.. S4:
.. // if at least one non-null value has been successfully read in
the present chunk
.. < - >ItemWriter.writeItems (buffer) //
thread A
.. // if exception
.. < - >[ItemWriteListener.onWriteErrror] // thread A
.. < - >[RetryWriteListener.onRetryWriteException] // thread A
.. // if retryable exception
.. // if no-rollback exception
.. resume S4:
.. // else
.. execute rollback procedure (below) and resume S1:
.. // else execute rollback procedure (below) and resume S1:
.. < - >[ItemReader.checkpointInfo] // thread A
.. // if at least one non-null value has been successfully read in the present chunk
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >ItemWriter.writeItems (buffer) // thread A
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if exception
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[ItemWriteListener.onWriteErrror] // thread A
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}< - >[RetryWriteListener.onRetryWriteException] // thread A
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if retryable exception
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if no-rollback exception
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}resume S4:
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}execute rollback procedure (below) and resume S1:
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else execute rollback procedure (below) and resume S1:
.. < - >[ItemReader.checkpointInfo] // thread A
.. < - >[ItemWriter.checkpointInfo] // thread A
.. <Store StepContext persistent area> // thread A
.. S5:
.. [<commit chunk transaction>] // thread A
.. // if exception
.. // if retryable exception
.. // if no-rollback exception:
.. resume S5:
.. // else
.. execute rollback procedure (below) and resume S1:
.. // else execute rollback procedure (below) and resume S1:
.. // if exception
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if retryable exception
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// if no-rollback exception:
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}resume S5:
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}{nbsp}execute rollback procedure (below) and resume S1:
.. {nbsp}{nbsp}{nbsp}{nbsp}{nbsp}// else execute rollback procedure (below) and resume S1:
. }
. [<begin transaction> ]
. < - >ItemWriter.close // thread A
Expand Down Expand Up @@ -346,18 +343,16 @@ info
.. < - >[CheckpointAlgorithm.beginCheckpoint] // thread A
.. <begin checkpoint interval [<begin chunk transaction>]>
.. ]
.. <repeat until isReadyToCheckpoint returns 'true' OR readItem
returns 'null'> \{
.. < - >ItemReader.readItem // thread A
.. // if readItem returns non-null
. < - >ItemProcessor.processItem // thread A
. //if processItem returns non-null, <add item to writeItems
buffer>
.. < - >CheckpointAlgorithm.isReadyToCheckpoint // thread A
.. <repeat until isReadyToCheckpoint returns 'true' OR readItem returns 'null'> \{
... < - >ItemReader.readItem // thread A
... // if readItem returns non-null
.... < - >ItemProcessor.processItem // thread A
.... //if processItem returns non-null, <add item to writeItems buffer>
... < - >CheckpointAlgorithm.isReadyToCheckpoint // thread A
.. }
.. //if at least one non-null value has been successfully read in
the present chunk
.. < - >ItemWriter.writeItems // thread A
... < - >ItemWriter.writeItems // thread A
.. < - >[ItemReader.checkpointInfo] // thread A
.. < - >[ItemWriter.checkpointInfo] // thread A
.. <Store StepContext persistent area>
Expand Down
Loading

0 comments on commit 5d85bfd

Please sign in to comment.