olingo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Bolz (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OLINGO-1063) Thread safetiness in org.apache.olingo.odata2.core.edm.provider.EdmStructuralTypeImplProv
Date Tue, 20 Dec 2016 18:53:59 GMT

    [ https://issues.apache.org/jira/browse/OLINGO-1063?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15764945#comment-15764945

Michael Bolz commented on OLINGO-1063:

Hello [~bodos],

AFAIK the {{Edm}} parts are not intended to be used parallel (and thus they are not thread-safe).

However the {{getPropertyNames}} should be implemented like this:
  public List<String> getPropertyNames() throws EdmException {
    if (edmPropertyNames == null) {
      final List<String> temp = new ArrayList<String>();
      if (edmBaseType != null) {
      if (structuralType.getProperties() != null) {
        for (final Property property : structuralType.getProperties()) {
      edmPropertyNames = temp;

    return edmPropertyNames;

Then in the worst parallel case it is initialised more then once, but you will never get a
list which gets modified after you get it.

Would this solution be sufficient for you?

Best regards, Michael

> Thread safetiness in org.apache.olingo.odata2.core.edm.provider.EdmStructuralTypeImplProv
> -----------------------------------------------------------------------------------------
>                 Key: OLINGO-1063
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1063
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata2-core
>    Affects Versions: V2 2.0.7
>            Reporter: Stefan Bodenstein
> The method getPropertyNames in EdmStructuralTypeImplProv is not thread safe. It potentially
returns a non initialized list, which is modified while iterating over it. This is not only
theoretically, but already appeared in our application. 
> Please make the method synchronized or synchronize the initialization of the list unsing
double checked locking.
> Best Regards 
> Stefan 

This message was sent by Atlassian JIRA

View raw message