shunfan-shao opened a new pull request #473:
URL: https://github.com/apache/cayenne/pull/473


   # Description
   Test `org.apache.cayenne.reflect.PojoMapperTest.testObjectCreation` will 
fail under [NonDex](https://github.com/TestingResearchIllinois/NonDex) which 
detects flakiness under non-deterministic environment. 
   
   To reproduce:
   ```
   mvn edu.illinois:nondex-maven-plugin:1.1.2:nondex \
       -pl cayenne-server \
       -Dtest=org.apache.cayenne.reflect.PojoMapperTest#testObjectCreation
   ```
   
   # Issue
   In `testObjectCreation`, the object creation depends on the following logic:
   ```java
   Field[] declaredFields = type.getDeclaredFields();
   this.setters = new MethodHandle[declaredFields.length];
   int i = 0;
   for(Field field : declaredFields) {
           ...
           setters[i++] = lookup.unreflectSetter(field);
   }
   ```
   
   However, according to the documentation of 
[getDeclaredFields](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getDeclaredFields--),
 the function does not guarantee the order of fields and may be different on 
different JVM. 
   
   Simply applying sorting on the fields could guarantee correctness in the 
testing environment. 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@cayenne.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to