Details

      Description

      A useful metrics utility for the Scala API would be to add a Gauge that obtains its value by calling a Scala Function0.

      That way, one can add Gauges in Scala programs using Scala lambda notation or function references.

        Issue Links

          Activity

          Hide
          Zentol Chesnay Schepler added a comment -

          master: 570dbc8d2597ee9688579f399b8743636e70f891

          Show
          Zentol Chesnay Schepler added a comment - master: 570dbc8d2597ee9688579f399b8743636e70f891
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user asfgit closed the pull request at:

          https://github.com/apache/flink/pull/3080

          Show
          githubbot ASF GitHub Bot added a comment - Github user asfgit closed the pull request at: https://github.com/apache/flink/pull/3080
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user zentol commented on the issue:

          https://github.com/apache/flink/pull/3080

          merging.

          Show
          githubbot ASF GitHub Bot added a comment - Github user zentol commented on the issue: https://github.com/apache/flink/pull/3080 merging.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user zentol commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r96228224

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          — End diff –

          I think we can shorten it and borrow something from the jira description:

          ```This class allows the concise definition of a gauge from Scala using lambda notation or function references.```

          Show
          githubbot ASF GitHub Bot added a comment - Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r96228224 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + — End diff – I think we can shorten it and borrow something from the jira description: ```This class allows the concise definition of a gauge from Scala using lambda notation or function references.```
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user heytitle commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r96222848

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          — End diff –

          @zentol What do you think about this definition?
          ```
          ScalaGauge has same functionality as Gauge but it has an advantage
          of creating Gauge in more concise way via Scala’s Function0.
          ```

          Show
          githubbot ASF GitHub Bot added a comment - Github user heytitle commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r96222848 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + — End diff – @zentol What do you think about this definition? ``` ScalaGauge has same functionality as Gauge but it has an advantage of creating Gauge in more concise way via Scala’s Function0. ```
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user zentol commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95773028

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          — End diff –

          Well, it is certainly easy to see what it does rather quickly. For the description i was thinking more about that it allows the concise definition of a Gauge in Scala, which isn't that obvious for non-scala programmers i suppose.

          Show
          githubbot ASF GitHub Bot added a comment - Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95773028 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + — End diff – Well, it is certainly easy to see what it does rather quickly. For the description i was thinking more about that it allows the concise definition of a Gauge in Scala, which isn't that obvious for non-scala programmers i suppose.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user heytitle commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95671339

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          — End diff –

          IMHO, this class is quite small and obvious what it is doing.

          However, if you think it it better to have some explanation, here is my idea.
          ```
          A ScalaGauge is similar to a Gauge in

          {@link Metric}

          but made for Scala API.
          ```
          What do you think?

          Show
          githubbot ASF GitHub Bot added a comment - Github user heytitle commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95671339 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + — End diff – IMHO, this class is quite small and obvious what it is doing. However, if you think it it better to have some explanation, here is my idea. ``` A ScalaGauge is similar to a Gauge in {@link Metric} but made for Scala API. ``` What do you think?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user heytitle commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95666996

          — Diff: flink-scala/src/test/scala/org/apache/flink/api/scala/metrics/ScalaGaugeTest.scala —
          @@ -0,0 +1,48 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +import org.apache.flink.runtime.metrics.

          {MetricRegistry, MetricRegistryConfiguration}

          +import org.apache.flink.runtime.metrics.groups.GenericMetricGroup
          +import org.apache.flink.util.TestLogger
          +import org.junit.Test
          +import org.scalatest.junit.JUnitSuiteLike
          +
          +class ScalaGaugeTest extends TestLogger with JUnitSuiteLike {
          +
          + @Test
          + def testGaugeCorrectValue(): Unit =

          { + val myGauge = ScalaGauge[Long]( () => 4 ) + assert( myGauge.getValue == 4 ) + }

          +
          + @Test
          + def testRegister(): Unit = {
          + val conf = MetricRegistryConfiguration.defaultMetricRegistryConfiguration()
          + val registry = new MetricRegistry(conf)
          + val metricGroup = new GenericMetricGroup(registry, null, "world")
          +
          + val myGauge = ScalaGauge[Long]( () => 4 )
          + val gauge = metricGroup.gauge[Long, Gauge[Long]]("max", myGauge);
          +
          + assert( gauge == myGauge )
          — End diff –

          yeah, that's true. I'll remove it.

          Show
          githubbot ASF GitHub Bot added a comment - Github user heytitle commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95666996 — Diff: flink-scala/src/test/scala/org/apache/flink/api/scala/metrics/ScalaGaugeTest.scala — @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge +import org.apache.flink.runtime.metrics. {MetricRegistry, MetricRegistryConfiguration} +import org.apache.flink.runtime.metrics.groups.GenericMetricGroup +import org.apache.flink.util.TestLogger +import org.junit.Test +import org.scalatest.junit.JUnitSuiteLike + +class ScalaGaugeTest extends TestLogger with JUnitSuiteLike { + + @Test + def testGaugeCorrectValue(): Unit = { + val myGauge = ScalaGauge[Long]( () => 4 ) + assert( myGauge.getValue == 4 ) + } + + @Test + def testRegister(): Unit = { + val conf = MetricRegistryConfiguration.defaultMetricRegistryConfiguration() + val registry = new MetricRegistry(conf) + val metricGroup = new GenericMetricGroup(registry, null, "world") + + val myGauge = ScalaGauge [Long] ( () => 4 ) + val gauge = metricGroup.gauge[Long, Gauge [Long] ]("max", myGauge); + + assert( gauge == myGauge ) — End diff – yeah, that's true. I'll remove it.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user zentol commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95583820

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          — End diff –

          Can you add a brief description what this class is for?

          Show
          githubbot ASF GitHub Bot added a comment - Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95583820 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + — End diff – Can you add a brief description what this class is for?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user zentol commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95583671

          — Diff: flink-scala/src/test/scala/org/apache/flink/api/scala/metrics/ScalaGaugeTest.scala —
          @@ -0,0 +1,48 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +import org.apache.flink.runtime.metrics.

          {MetricRegistry, MetricRegistryConfiguration}

          +import org.apache.flink.runtime.metrics.groups.GenericMetricGroup
          +import org.apache.flink.util.TestLogger
          +import org.junit.Test
          +import org.scalatest.junit.JUnitSuiteLike
          +
          +class ScalaGaugeTest extends TestLogger with JUnitSuiteLike {
          +
          + @Test
          + def testGaugeCorrectValue(): Unit =

          { + val myGauge = ScalaGauge[Long]( () => 4 ) + assert( myGauge.getValue == 4 ) + }

          +
          + @Test
          + def testRegister(): Unit = {
          + val conf = MetricRegistryConfiguration.defaultMetricRegistryConfiguration()
          + val registry = new MetricRegistry(conf)
          + val metricGroup = new GenericMetricGroup(registry, null, "world")
          +
          + val myGauge = ScalaGauge[Long]( () => 4 )
          + val gauge = metricGroup.gauge[Long, Gauge[Long]]("max", myGauge);
          +
          + assert( gauge == myGauge )
          — End diff –

          this assertion is trivially true if the code compiles; it can be removed.

          Show
          githubbot ASF GitHub Bot added a comment - Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95583671 — Diff: flink-scala/src/test/scala/org/apache/flink/api/scala/metrics/ScalaGaugeTest.scala — @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge +import org.apache.flink.runtime.metrics. {MetricRegistry, MetricRegistryConfiguration} +import org.apache.flink.runtime.metrics.groups.GenericMetricGroup +import org.apache.flink.util.TestLogger +import org.junit.Test +import org.scalatest.junit.JUnitSuiteLike + +class ScalaGaugeTest extends TestLogger with JUnitSuiteLike { + + @Test + def testGaugeCorrectValue(): Unit = { + val myGauge = ScalaGauge[Long]( () => 4 ) + assert( myGauge.getValue == 4 ) + } + + @Test + def testRegister(): Unit = { + val conf = MetricRegistryConfiguration.defaultMetricRegistryConfiguration() + val registry = new MetricRegistry(conf) + val metricGroup = new GenericMetricGroup(registry, null, "world") + + val myGauge = ScalaGauge [Long] ( () => 4 ) + val gauge = metricGroup.gauge[Long, Gauge [Long] ]("max", myGauge); + + assert( gauge == myGauge ) — End diff – this assertion is trivially true if the code compiles; it can be removed.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user KurtYoung commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95548172

          — Diff: flink-scala/src/test/scala/org/apache/flink/api/scala/metrics/ScalaGaugeTest.scala —
          @@ -0,0 +1,48 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +import org.apache.flink.runtime.metrics.

          {MetricRegistry, MetricRegistryConfiguration}

          +import org.apache.flink.runtime.metrics.groups.GenericMetricGroup
          +import org.apache.flink.util.TestLogger
          +import org.junit.Test
          +import org.scalatest.junit.JUnitSuiteLike
          +
          +class ScalaGaugeTest extends TestLogger with JUnitSuiteLike {
          +
          + @Test
          + def testGaugeCorrectValue(): Unit = {
          + val myGauge = ScalaGauge[Long]( () => 4 )
          + assert( myGauge.getValue == 4 )
          — End diff –

          same with the asserts, skip the spaces.

          Show
          githubbot ASF GitHub Bot added a comment - Github user KurtYoung commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95548172 — Diff: flink-scala/src/test/scala/org/apache/flink/api/scala/metrics/ScalaGaugeTest.scala — @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge +import org.apache.flink.runtime.metrics. {MetricRegistry, MetricRegistryConfiguration} +import org.apache.flink.runtime.metrics.groups.GenericMetricGroup +import org.apache.flink.util.TestLogger +import org.junit.Test +import org.scalatest.junit.JUnitSuiteLike + +class ScalaGaugeTest extends TestLogger with JUnitSuiteLike { + + @Test + def testGaugeCorrectValue(): Unit = { + val myGauge = ScalaGauge [Long] ( () => 4 ) + assert( myGauge.getValue == 4 ) — End diff – same with the asserts, skip the spaces.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user KurtYoung commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95547940

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          +class ScalaGauge[T]( func: () => T ) extends Gauge[T] {
          + override def getValue: T = {
          + return func()
          — End diff –

          return can be removed

          Show
          githubbot ASF GitHub Bot added a comment - Github user KurtYoung commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95547940 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + +class ScalaGauge [T] ( func: () => T ) extends Gauge [T] { + override def getValue: T = { + return func() — End diff – return can be removed
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user KurtYoung commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95547836

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          +class ScalaGauge[T]( func: () => T ) extends Gauge[T] {
          + override def getValue: T = {
          — End diff –

          extra space before `{`

          Show
          githubbot ASF GitHub Bot added a comment - Github user KurtYoung commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95547836 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + +class ScalaGauge [T] ( func: () => T ) extends Gauge [T] { + override def getValue: T = { — End diff – extra space before `{`
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user KurtYoung commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95547616

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,31 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          +class ScalaGauge[T]( func: () => T ) extends Gauge[T] {
          — End diff –

          i think we can skip the spaces around the parenthesis to make it more consistent with current Scala code style.

          Show
          githubbot ASF GitHub Bot added a comment - Github user KurtYoung commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95547616 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + +class ScalaGauge [T] ( func: () => T ) extends Gauge [T] { — End diff – i think we can skip the spaces around the parenthesis to make it more consistent with current Scala code style.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user KurtYoung commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95375413

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,27 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          +class ScalaGauge[T](value : T) extends Gauge[T] {
          — End diff –

          Yeah that sounds good to me. Let us see what the codes looks like after you modifying this.

          Show
          githubbot ASF GitHub Bot added a comment - Github user KurtYoung commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95375413 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + +class ScalaGauge [T] (value : T) extends Gauge [T] { — End diff – Yeah that sounds good to me. Let us see what the codes looks like after you modifying this.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user heytitle commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95347426

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,27 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          +class ScalaGauge[T](value : T) extends Gauge[T] {
          — End diff –

          @KurtYoung Thank for the comment. I see your point. I'll fix it accordingly.

          Also, I have an idea of having a companion object of `ScalaGauge`. As a result, we can instantiate `ScalaGauge` without calling `new`.

          What do you think?

          Show
          githubbot ASF GitHub Bot added a comment - Github user heytitle commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95347426 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + +class ScalaGauge [T] (value : T) extends Gauge [T] { — End diff – @KurtYoung Thank for the comment. I see your point. I'll fix it accordingly. Also, I have an idea of having a companion object of `ScalaGauge`. As a result, we can instantiate `ScalaGauge` without calling `new`. What do you think?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user KurtYoung commented on a diff in the pull request:

          https://github.com/apache/flink/pull/3080#discussion_r95306713

          — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala —
          @@ -0,0 +1,27 @@
          +/*
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.flink.api.scala.metrics
          +
          +import org.apache.flink.metrics.Gauge
          +
          +class ScalaGauge[T](value : T) extends Gauge[T] {
          — End diff –

          Directly assigning value in constructor is one possible approach to achieve the goal of reducing the minimal code lines needed for registering a Scala gauge. However, when we meet situations like it will contain some logics to calculate the value, this approach will not work.
          One possible solution is to use Scala's Function0 utility to pass in a "value generator" function instead of value itself. Something like this:
          `
          class ScalaGauge[T](func: () => T) extends Gauge[T]
          `
          then one can use the class like this:
          `
          val myGauge = new ScalaGauge(() => 1)
          `
          or
          `
          val myGauge = new ScalaGauge(() =>

          { // codes to calculate the value }

          )
          `
          when we meet some complex situations.

          Here is the Function0 reference which described the usage more clearly:
          http://www.scala-lang.org/api/2.6.0/scala/Function0.html

          Show
          githubbot ASF GitHub Bot added a comment - Github user KurtYoung commented on a diff in the pull request: https://github.com/apache/flink/pull/3080#discussion_r95306713 — Diff: flink-scala/src/main/scala/org/apache/flink/api/scala/metrics/ScalaGauge.scala — @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.api.scala.metrics + +import org.apache.flink.metrics.Gauge + +class ScalaGauge [T] (value : T) extends Gauge [T] { — End diff – Directly assigning value in constructor is one possible approach to achieve the goal of reducing the minimal code lines needed for registering a Scala gauge. However, when we meet situations like it will contain some logics to calculate the value, this approach will not work. One possible solution is to use Scala's Function0 utility to pass in a "value generator" function instead of value itself. Something like this: ` class ScalaGauge [T] (func: () => T) extends Gauge [T] ` then one can use the class like this: ` val myGauge = new ScalaGauge(() => 1) ` or ` val myGauge = new ScalaGauge(() => { // codes to calculate the value } ) ` when we meet some complex situations. Here is the Function0 reference which described the usage more clearly: http://www.scala-lang.org/api/2.6.0/scala/Function0.html
          Hide
          githubbot ASF GitHub Bot added a comment -

          GitHub user heytitle opened a pull request:

          https://github.com/apache/flink/pull/3080

          FLINK-4920 Add a Scala Function Gauge

          Thanks for contributing to Apache Flink. Before you open your pull request, please take the following check list into consideration.
          If your changes take all of the items into account, feel free to open your pull request. For more information and/or questions please refer to the [How To Contribute guide](http://flink.apache.org/how-to-contribute.html).
          In addition to going through the list, please provide a meaningful description of your changes.

          • [x] General
          • The pull request references the related JIRA issue ("[FLINK-XXX] Jira title text")
          • The pull request addresses only one issue
          • Each commit in the PR has a meaningful commit message (including the JIRA id)
          • [x] Documentation
          • Documentation has been added for new functionality
          • Old documentation affected by the pull request has been updated
          • JavaDoc for public methods has been added

          You can merge this pull request into a Git repository by running:

          $ git pull https://github.com/heytitle/flink scala-gauge

          Alternatively you can review and apply these changes as the patch at:

          https://github.com/apache/flink/pull/3080.patch

          To close this pull request, make a commit to your master/trunk branch
          with (at least) the following in the commit message:

          This closes #3080


          commit 1a464e2b74930c63aada3dbae40b74822ccea89c
          Author: heytitle <pat.chormai@gmail.com>
          Date: 2016-12-27T22:21:19Z

          FLINK-4920 Introduce Scala Function Gauge

          commit aa9b7bb435e97687a8d69820579bddf41b1b29a4
          Author: heytitle <pat.chormai@gmail.com>
          Date: 2017-01-07T10:30:40Z

          FLINK-4920 Update gauge document


          Show
          githubbot ASF GitHub Bot added a comment - GitHub user heytitle opened a pull request: https://github.com/apache/flink/pull/3080 FLINK-4920 Add a Scala Function Gauge Thanks for contributing to Apache Flink. Before you open your pull request, please take the following check list into consideration. If your changes take all of the items into account, feel free to open your pull request. For more information and/or questions please refer to the [How To Contribute guide] ( http://flink.apache.org/how-to-contribute.html ). In addition to going through the list, please provide a meaningful description of your changes. [x] General The pull request references the related JIRA issue (" [FLINK-XXX] Jira title text") The pull request addresses only one issue Each commit in the PR has a meaningful commit message (including the JIRA id) [x] Documentation Documentation has been added for new functionality Old documentation affected by the pull request has been updated JavaDoc for public methods has been added [x] Tests & Build [! [Build Status] ( https://travis-ci.org/heytitle/flink.svg?branch=scala-gauge)](https://travis-ci.org/heytitle/flink ) Functionality added by the pull request is covered by tests `mvn clean verify` has been executed successfully locally or a Travis build has passed You can merge this pull request into a Git repository by running: $ git pull https://github.com/heytitle/flink scala-gauge Alternatively you can review and apply these changes as the patch at: https://github.com/apache/flink/pull/3080.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #3080 commit 1a464e2b74930c63aada3dbae40b74822ccea89c Author: heytitle <pat.chormai@gmail.com> Date: 2016-12-27T22:21:19Z FLINK-4920 Introduce Scala Function Gauge commit aa9b7bb435e97687a8d69820579bddf41b1b29a4 Author: heytitle <pat.chormai@gmail.com> Date: 2017-01-07T10:30:40Z FLINK-4920 Update gauge document
          Hide
          StephanEwen Stephan Ewen added a comment -

          Assigned the issue to you.

          Show
          StephanEwen Stephan Ewen added a comment - Assigned the issue to you.
          Hide
          heytitle Pattarawat Chormai added a comment - - edited

          Chesnay Schepler Thanks for your suggestion.

          Stephan Ewen could you please assign me to the issue?

          Show
          heytitle Pattarawat Chormai added a comment - - edited Chesnay Schepler Thanks for your suggestion. Stephan Ewen could you please assign me to the issue?
          Hide
          Zentol Chesnay Schepler added a comment -

          Currently, in order to create a Gauge that simply returns 4 in Scala you have to write the following:

          MetricGroup heap = ...
          heap.gauge[Long, Gauge[Long]]("Max", new Gauge[Long] {
                override def getValue: Long = 4
              })
          

          This issue is about allowing something the following:

          MetricGroup heap = ...
          heap.gauge[Long, Gauge[Long]]("Max", new ScalaGauge[Long](() => 4))
          

          ScalaGauge will implement the Gauge interface.

          The above example should be supportable by adding a constructor like ScalaGauge(fun: () => T).

          But there's probably a lot more wizard stuff you can do with a Scala-specific gauge type; someone else will have to chime in with suggestions.

          Show
          Zentol Chesnay Schepler added a comment - Currently, in order to create a Gauge that simply returns 4 in Scala you have to write the following: MetricGroup heap = ... heap.gauge[ Long , Gauge[ Long ]]( "Max" , new Gauge[ Long ] { override def getValue: Long = 4 }) This issue is about allowing something the following: MetricGroup heap = ... heap.gauge[ Long , Gauge[ Long ]]( "Max" , new ScalaGauge[ Long ](() => 4)) ScalaGauge will implement the Gauge interface. The above example should be supportable by adding a constructor like ScalaGauge(fun: () => T). But there's probably a lot more wizard stuff you can do with a Scala-specific gauge type; someone else will have to chime in with suggestions.
          Hide
          heytitle Pattarawat Chormai added a comment -

          Hi Stephan Ewen,

          I would like to work on this issue, however, I am quite new with both Scala and Flink.
          Could you please explain me a bit more what need be done here?

          Show
          heytitle Pattarawat Chormai added a comment - Hi Stephan Ewen , I would like to work on this issue, however, I am quite new with both Scala and Flink. Could you please explain me a bit more what need be done here?

            People

            • Assignee:
              heytitle Pattarawat Chormai
              Reporter:
              StephanEwen Stephan Ewen
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development