Phil As we approach time for some house cleaning in a nifi 2.0 world such a model/idea will be important for sure.
Mark Breaking old behavior would be problematic. And I think youre right that only sorta clunky options exist with the current one. I was thinking you could do something with dependent properties to make it cleaner but not sure. I was initially thinking ‘no way’ to a new processor for just this but as I was replying it might be the cleanest option. Maybe call it ThrottleData and use the same tags as control rate. Others might have a different take obviously. Thanks On Sat, Oct 8, 2022 at 2:22 PM Phil H <gippyp...@gmail.com> wrote: > It might be too much to do prior to solving this problem, but for the > general case, but could NiFi benefit from a @Depricated annotation (or > similar) on PropertyDescriptor. This could be read only, requiring the > admin to change to the new property. > > Alternatively, the deprecated property could be hidden if a new method was > implemented in a processor that changed old property values to new ones (in > this case converting 10 to “10 Mb”. > > Just a thought. > > On Sun, 9 Oct 2022 at 02:57, Mark Bean <mark.o.b...@gmail.com> wrote: > > > I am working on NIFI-10243 [1]. The goal is to allow ControlRate to > > throttle based on both data rate and FlowFile count. If either rate is > > exceeded, throttling occurs. > > > > Currently, throttling occurs in only one mode. Therefore, a single > > property, Maximum Rate, is overloaded to accept either a size limit or a > > count limit. Changing how this property is used could become a breaking > > change. However, keeping backward compatibility makes the property usage > > less logical. > > > > It makes good sense to have two properties, one for data rate, e.g. "1 > MB", > > and one for count rate, e.g. "10". Unfortunately, this implementation > would > > break current instantiations of the processor since an integer value in > the > > existing attribute would not be accepted any longer. > > > > It is possible to keep the functionality the same and introduce a new > > "Maximum Count Rate" property which is to be used _only_ when the Rate > > Control Criteria is the new 'data rate and flowfile count'. I don't feel > > this makes the processor property usage easy to understand though. The > > flowfile count rate would be provided in the existing Maximum Rate > property > > if the criteria is 'flowfile count', but it would have to be specified > in a > > new property if the criteria is 'data rate and flowfile count'. This is > > inconsistent and confusing. > > > > Perhaps, "Maximum Rate" property could be overloaded to accept a byte > > value, an integer value or a comma-separated list of both, depending on > the > > selected rate control criteria. It's clunky, but could work. > > > > Another alternative to avoid a breaking change is to introduce a new > > processor, ExtendedControlRate, which allows for the new Rate Control > > Criteria and redefined rate properties. > > > > So, the choices are: > > 1) Breaking change aligning properties with their purpose in an easy to > > understand manner > > 2) Backward compatible where flowfile count is specified in different > > properties depending on rate control criteria > > 3) Backward compatible where Maximum Rate accepts a string, an integer or > > both (comma-separated) > > 4) Introduce a new processor > > > > I think option 1 makes the most sense, but I'm concerned about the > breaking > > nature of the approach. Looking for suggestions on how to proceed. > > > > [1] https://issues.apache.org/jira/browse/NIFI-10243 > > >