Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Implement missing optimizations

This commit introduces some missing union optimizations during

exclude rule merging. Those weren't implemented because we didn't

see them in our test cases, but we had customer logs showing such

operations.

It's worth noting this commit adds an utility class which transforms

a JSON dump from a log entry into code which can be used to create

test cases.

    • -27
    • +184
    ./NormalizingExcludeFactoryTest.groovy
  1. … 4 more files in changeset.
Implement missing optimizations

This commit introduces some missing union optimizations during

exclude rule merging. Those weren't implemented because we didn't

see them in our test cases, but we had customer logs showing such

operations.

It's worth noting this commit adds an utility class which transforms

a JSON dump from a log entry into code which can be used to create

test cases.

    • -27
    • +184
    ./NormalizingExcludeFactoryTest.groovy
  1. … 4 more files in changeset.
Add more missing optimizations

    • -1
    • +1
    ./NormalizingExcludeFactoryTest.groovy
  1. … 1 more file in changeset.
Add more missing optimizations

    • -1
    • +1
    ./NormalizingExcludeFactoryTest.groovy
  1. … 1 more file in changeset.
Optimize A ∩ (B ∪ C)

-> (A ∩ B) ∪ (A ∩ C)

User data shows this can often be reduced to an empty set because

distribution will compute empty sets on both sides.

  1. … 1 more file in changeset.
Optimize A ∩ (B ∪ C)

-> (A ∩ B) ∪ (A ∩ C)

User data shows this can often be reduced to an empty set because

distribution will compute empty sets on both sides.

  1. … 1 more file in changeset.
Optimize A ∩ (B ∪ C)

-> (A ∩ B) ∪ (A ∩ C)

User data shows this can often be reduced to an empty set because

distribution will compute empty sets on both sides.

  1. … 1 more file in changeset.
Add missing optimization of intersection

when module ids are different

  1. … 1 more file in changeset.
Add missing optimization of intersection

when module ids are different

  1. … 1 more file in changeset.
Add missing optimization of intersection

  1. … 1 more file in changeset.
Add missing optimization of intersection

  1. … 1 more file in changeset.
Add test coverage for intersections of 3 elements

and add more test coverage for unions

    • -10
    • +39
    ./NormalizingExcludeFactoryTest.groovy
  1. … 1 more file in changeset.
Add test coverage for intersections of 3 elements

and add more test coverage for unions

    • -10
    • +39
    ./NormalizingExcludeFactoryTest.groovy
  1. … 1 more file in changeset.
Add randomization of sets

  1. … 1 more file in changeset.
Add randomization of sets

  1. … 1 more file in changeset.
Rework test setup for exclude merging

    • -0
    • +99
    ./ExcludeTestSupport.groovy
    • -56
    • +8
    ./NormalizingExcludeFactoryTest.groovy
Rework test setup for exclude merging

    • -0
    • +99
    ./ExcludeTestSupport.groovy
    • -56
    • +8
    ./NormalizingExcludeFactoryTest.groovy
Fix incorrect reduction of intersections

Simplification of intersections in the normalizing exclude

factory is done by pairs. There was a bug in the reduction

algorithm, that would cause the reduction result to be

wrong because we used the wrong, non simplified, exclude spec

for merging whenever a merge occured, to reduce on the next

item in a list.

    • -7
    • +7
    ./NormalizingExcludeFactoryTest.groovy
  1. … 1 more file in changeset.
Fix incorrect reduction of intersections

Simplification of intersections in the normalizing exclude

factory is done by pairs. There was a bug in the reduction

algorithm, that would cause the reduction result to be

wrong because we used the wrong, non simplified, exclude spec

for merging whenever a merge occured, to reduce on the next

item in a list.

    • -1
    • +1
    ./NormalizingExcludeFactoryTest.groovy
  1. … 1 more file in changeset.
Fix incorrect reduction of intersections

Simplification of intersections in the normalizing exclude

factory is done by pairs. There was a bug in the reduction

algorithm, that would cause the reduction result to be

wrong because we used the wrong, non simplified, exclude spec

for merging whenever a merge occured, to reduce on the next

item in a list.

    • -1
    • +1
    ./NormalizingExcludeFactoryTest.groovy
  1. … 1 more file in changeset.
Optimize a couple more cases

Optimize intersect(group, module) -> moduleId(group, module)

Optimize intersect(group, module names) -> moduleIdSet(group + name...)

  1. … 1 more file in changeset.
Optimize a couple more cases

Optimize intersect(group, module) -> moduleId(group, module)

Optimize intersect(group, module names) -> moduleIdSet(group + name...)

  1. … 1 more file in changeset.
Optimize a couple more cases

Optimize intersect(group, module) -> moduleId(group, module)

Optimize intersect(group, module names) -> moduleIdSet(group + name...)

  1. … 1 more file in changeset.
Fix incorrect simplification of intersection of unions

The result of simplification was only correct if there was one

item not in common on both hands of the intersection.

Fixes #9718

  1. … 2 more files in changeset.
Fix incorrect simplification of intersection of unions

The result of simplification was only correct if there was one

item not in common on both hands of the intersection.

Fixes #9718

  1. … 2 more files in changeset.
Fix incorrect simplification of intersection of unions

The result of simplification was only correct if there was one

item not in common on both hands of the intersection.

Fixes #9718

  1. … 2 more files in changeset.
Add exclude intersection normalization

This commit introduces exclude intersection normalization.

This is done to avoid the "exclusion explosion" in case:

- we have 2 incoming edges to the same node

- those edges have different excludes

- the different edge excludes cannot be merged (e.g having a `group` and `moduleId` exclude on each)

    • -0
    • +153
    ./IntersectionsTest.groovy
    • -16
    • +17
    ./NormalizingExcludeFactoryTest.groovy
  1. … 2 more files in changeset.
Optimize flattening

This commit optimizes flattening by avoiding the creation of intermediate

data structures. In particular using lists we were converting from and to

sets unnecessarily.

    • -1
    • +0
    ./NormalizingExcludeFactoryTest.groovy
  1. … 13 more files in changeset.
Optimize flattening

This commit optimizes flattening by avoiding the creation of intermediate

data structures. In particular using lists we were converting from and to

sets unnecessarily.

    • -5
    • +4
    ./NormalizingExcludeFactoryTest.groovy
  1. … 13 more files in changeset.
Optimize flattening

This commit optimizes flattening by avoiding the creation of intermediate

data structures. In particular using lists we were converting from and to

sets unnecessarily.

    • -5
    • +4
    ./NormalizingExcludeFactoryTest.groovy
  1. … 13 more files in changeset.