You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by Marshall Schor <ms...@schor.com> on 2019/03/30 17:59:53 UTC

[VOTE] Uimaj 3.1.0 rc2

Hi,

uimaj-3.1.0 rc2 is posted and ready for voting.

This is the rc2 for 3.0.2 rc1, and incorporates the idea of boosting the release
number to 3.1.0 to signal that the exception thrown from cas.getView() changed
from a runtime exception to a checked exception (unfortunately, likely requiring
a new "throws" clause in methods using getView, if one wasn't already there).

This change was due to Jira issue
https://issues.apache.org/jira/browse/UIMA-5869; the javadoc said it threw a
checked exception, but the impl needed changing to do this.

The other changes from rc1: The implementation of Subiterator was refactored and
corrected in several edge cases.  Just to give an idea: one of the edge cases
involved a coveredBy iteration, without type-priority, where the flag to skip
over the same begin/end/type annotations if found.  This had incorrectly assumed
these were at the beginning of the iteration, but in this case, you could have
multiple items, then skip over maybe multiple items which are equal (same
begin/end/type) to the bounding annotation, followed by more items.

With the subiterator fixed (there were some edge case bugs), I have run a large
system using v2 and v3, and compared the results, and found them to be the same.

The CasCompare routine, used in debugging differences between v2 and v3 output,
was improved to fix a bug in handling sorting of some collections, and to only
display root-causes of differences.

The issues fixed are here:

https://issues.apache.org/jira/projects/UIMA/versions/12344592

The source and binary tars/zips are here:
https://dist.apache.org/repos/dist/dev/uima/uv3/uimaj/3.1.0-rc2/artifacts/

The eclipse update subsite is here:
https://dist.apache.org/repos/dist/dev/uima/uv3/uimaj/3.1.0-rc2/eclipse-update-site-v3/

The maven staging repo is here:
https://repository.apache.org/content/repositories/orgapacheuima-1223/

The SVN tag: https://svn.apache.org/repos/asf/uima/uv3/uimaj-v3/tags/uimaj-3.1.0/

Please vote on release:

[ ] +1 OK to release
[ ] 0   Don't care
[ ] -1 Not OK to release, because ...

Thanks.

-Marshall


Re: [VOTE] [CANCELLED] Uimaj 3.1.0 rc2

Posted by Marshall Schor <ms...@schor.com>.
in v3, it doesn't matter.   And, in v3, the temporary fs gets garbage-collected,
too.
-M

On 4/1/2019 10:18 AM, Richard Eckart de Castilho wrote:
> On 1. Apr 2019, at 15:46, Marshall Schor <ms...@schor.com> wrote:
>> The way this works, with the default, is as follows:
>>      a) imagine a bunch of annotations A1, A2, ... An, all in the annotation index
>>      b) imagine the bounding annotation is A2
>>      c) make a copy of A2, but don't add it to the index.  Call it A2copy. 
>>
>> Now, when you iterate, use A2copy as the "bounding annotation.  The test which
>> says to skip if the Annotation is "identical" (meaning, has the same internal
>> Feature Structure ID) to the bounding Annotation  won't ever be true, because
>> the bounding Annotation has a unique ID, and isn't in the index.
>>
>> Does that make sense? 
> Yes. Basically "create a temporary annotation (not added to the index) and us
> it to scope the select. 
>
> Is it better to create a temporary annotation or to scope by offsets -- or does
> it not matter? In v2, scoping by offsets was typically slower.
>
> -- Richard
>
>

Re: [VOTE] [CANCELLED] Uimaj 3.1.0 rc2

Posted by Richard Eckart de Castilho <re...@apache.org>.
On 1. Apr 2019, at 15:46, Marshall Schor <ms...@schor.com> wrote:
> 
> The way this works, with the default, is as follows:
>      a) imagine a bunch of annotations A1, A2, ... An, all in the annotation index
>      b) imagine the bounding annotation is A2
>      c) make a copy of A2, but don't add it to the index.  Call it A2copy. 
> 
> Now, when you iterate, use A2copy as the "bounding annotation.  The test which
> says to skip if the Annotation is "identical" (meaning, has the same internal
> Feature Structure ID) to the bounding Annotation  won't ever be true, because
> the bounding Annotation has a unique ID, and isn't in the index.
> 
> Does that make sense? 

Yes. Basically "create a temporary annotation (not added to the index) and us
it to scope the select. 

Is it better to create a temporary annotation or to scope by offsets -- or does
it not matter? In v2, scoping by offsets was typically slower.

-- Richard


Re: [VOTE] [CANCELLED] Uimaj 3.1.0 rc2

Posted by Marshall Schor <ms...@schor.com>.
CasCompare is still kind of a work in progress;  I think eventually it might
become "reusable" but that would take more investment than it's had so far.

A lot of the debugging things are there because of the state of the code; I've
put most of these (I believe) under the control of some early static final
boolean flag, normally turned off.

re: the note in uv3.select.xml:  I'll expand on this.
I needed to include that this only works when you're using the select default
for "skipWhenSameBeginEndType".  If you specify skipWhenSameBeginEndType, then
all annotations with the same begin, end, and type as the bounding one are skipped.

The way this works, with the default, is as follows:
     a) imagine a bunch of annotations A1, A2, ... An, all in the annotation index
     b) imagine the bounding annotation is A2
     c) make a copy of A2, but don't add it to the index.  Call it A2copy. 

Now, when you iterate, use A2copy as the "bounding annotation.  The test which
says to skip if the Annotation is "identical" (meaning, has the same internal
Feature Structure ID) to the bounding Annotation  won't ever be true, because
the bounding Annotation has a unique ID, and isn't in the index.

Does that make sense? 

-Marshall

On 4/1/2019 9:11 AM, Richard Eckart de Castilho wrote:
> On 1. Apr 2019, at 14:57, Marshall Schor <ms...@schor.com> wrote:
>> :-)  Thanks for the quick response! -M
> Well, your mail came when I was just about to review 3.1.0 :)
>
> So while I'm at it, here are some comments I had already noted down (non-blockers):
>
> - CasCompare is in src/main/java but seems to contain quite a bit 
>   of debugging code / debugging messages that go directly to
>   System.out. If it is a test utility, then it would probably be good
>   to move it to the `uimaj-test-util` module so it can be used for testing
>   across different core modules. If it is meant to be
>   reusable, then it should make proper use of SLF4J to logging.
>
> - I don't understand the this in "uv3.select.xml":
>
>   ... _id()) with the bounding Annotation, it is always skipped. (Note: if you do not want this,
>   just make a temporary annotation with the begin/end/type you want, and don't add it to the index;
>   it will never be found while iterating.)
>
>   How does creating a temporary annotation disable identical annotations not being skipped,
>   in particular if the temporary annotation shouldn't even be added to the index?
>
> I guess I'll revert the changes in uimaFIT v3 related to UIMA-5869 as well.
>
> -- Richard

Re: [VOTE] [CANCELLED] Uimaj 3.1.0 rc2

Posted by Richard Eckart de Castilho <re...@apache.org>.
On 1. Apr 2019, at 14:57, Marshall Schor <ms...@schor.com> wrote:
> 
> :-)  Thanks for the quick response! -M

Well, your mail came when I was just about to review 3.1.0 :)

So while I'm at it, here are some comments I had already noted down (non-blockers):

- CasCompare is in src/main/java but seems to contain quite a bit 
  of debugging code / debugging messages that go directly to
  System.out. If it is a test utility, then it would probably be good
  to move it to the `uimaj-test-util` module so it can be used for testing
  across different core modules. If it is meant to be
  reusable, then it should make proper use of SLF4J to logging.

- I don't understand the this in "uv3.select.xml":

  ... _id()) with the bounding Annotation, it is always skipped. (Note: if you do not want this,
  just make a temporary annotation with the begin/end/type you want, and don't add it to the index;
  it will never be found while iterating.)

  How does creating a temporary annotation disable identical annotations not being skipped,
  in particular if the temporary annotation shouldn't even be added to the index?

I guess I'll revert the changes in uimaFIT v3 related to UIMA-5869 as well.

-- Richard

Re: [VOTE] [CANCELLED] Uimaj 3.1.0 rc2

Posted by Marshall Schor <ms...@schor.com>.
:-)  Thanks for the quick response! -M



Re: [VOTE] [CANCELLED] Uimaj 3.1.0 rc2

Posted by Richard Eckart de Castilho <re...@apache.org>.
> On 1. Apr 2019, at 14:41, Marshall Schor <ms...@schor.com> wrote:
> 
> So, unless there are objections, I plan to change UIMA-5869 to fix the javadocs, and put the revision back to 3.0.2.

Fine by me.

-- Richard

Re: [VOTE] [CANCELLED] Uimaj 3.1.0 rc2

Posted by Marshall Schor <ms...@schor.com>.
Hi,

After thinking about this, I've come to the conclusion that we did the wrong fix
for

https://issues.apache.org/jira/browse/UIMA-5869

We should have changed the javadocs to match the implementation, rather than vice-versa, because the there's likely no incremental positive value from making this change the way it was done, and there is a large negative value from doing this, because it 
  a) broke working implementations, for no added value
  b) made us up the rc from 3.0.2 to 3.1.0

So, unless there are objections, I plan to change UIMA-5869 to fix the javadocs, and put the revision back to 3.0.2.

-Marshall


Re: [VOTE] Uimaj 3.1.0 rc2

Posted by Marshall Schor <ms...@schor.com>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
 
3.1.0-rc2
signatures OK
compare source-release with svn tag : OK
issues-fixed report: OK
api-change reports: OK
build from sources: OK
ran document analyzer from bin package, viewed results- OK
installed plugins into Eclipse 2019-03 OK
imported example project into Eclipse, it built OK, ran document analyzer: OK
made new type system descriptor, ran JCasGen: OK
compare licenses with 3.0.2 - no change
spot check licenses in staging repo: OK

[X] +1 OK to release

- -Marshall Schor

-----BEGIN PGP SIGNATURE-----
 
iQIzBAEBCgAdFiEEOn/mVSh3S1eNEDz+zHYv/c0Ez9YFAlyhKOUACgkQzHYv/c0E
z9avNhAAgQFeC0X+ZiWvFdlSpTUYAjtoH04axlqP/n1j6AYZe29TPI3QAcSxKkwn
brNwgMYz0YsmtVCpnT/aP9VWX6rB+gWPQXtu0J8k+K70z3N4RsE8V60wpt9cVCcP
ggSbse3X4ENbK3exj2D665EuB32SK0EGX8xPkUzq4o9UgziGjblFqoiDQpfTbZtz
GlAbX+0tXutm7P2KZbmUe6mkJ/+RJF0CimOLpDWHPRP97Ka+M7spTfPpf6RF02Jb
mdWB2GkW8E5T+HTgNAqY8SSNuN82ffccx48bnzItHrpDghPpDqt7MLjGTxXOd3kT
37rr3QcDaiJW57ql137VoWzS3HdfjT/DaFi8gFC9RdziTqbGHBlQqlXZCTihGrdn
Dw6uS230n1nbB9hdcL89PifeSyLENX+yIpWzCev1fUksJxBbkgud0mEdjsObjT8Z
FGGw5/xcaCV98wrdv00C+d+DBxzoomAS2XQ/6KzrPZR19/4W5mRIX1wNj6C0/GE1
Bg+l7w0aHBUzXBTxa+O//b2NBig8oK6z8IihRnZ1w5EBzoYpzTWMMAQQkYONURpg
Qp7AJ4WCtoO1JNAPI5WcgyxPQwPjFBHNqW2SQNhhMWYZDksRM8gfic2bjimQxowO
JgRC16N3pJ9U82GEL4tLaoDmyEx35NmhwuMDsMoMgPd7gY957Ks=
=xwpp
-----END PGP SIGNATURE-----