Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-36419

git plugin 2.5.1 breaks multibranch pipeline if using github source control

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Blocker
    • Resolution: Fixed
    • git-plugin
    • None
    • Jenkins 1.651.3, ubuntu 14.04, Oracle Java 7

    Description

      Once I updated to 2.5.1, I couldn't index the branches anymore in my pipeline projects which use github as their source control rather than git. Going back to 2.5.0 makes it work again. It also works if I use the "git" section instead of the "github" section for source control.

      The exception in the log is

      Executor threw an exception
      java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
      	at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
      	at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
      	at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
      	at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
      	at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
      	at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
      	at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
      	at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
      	at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
      	at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
      	at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
      	at hudson.model.ResourceController.execute(ResourceController.java:98)
      	at hudson.model.Executor.run(Executor.java:410)
      

      Attachments

        Issue Links

          Activity

            vladdu Vlad Dumitrescu created issue -
            markewaite Mark Waite added a comment - - edited

            Thanks for reporting the problem. Can you provide more details on your system configuration? A support bundle would be ideal, since it provides lots of information in a single package that is easy to collect and easy to upload?

            My reading of that exception in the JDK 7 javadoc shows

            Thrown when an application tries to call an abstract method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of some class has incompatibly changed since the currently executing method was last compiled

            . I think that must mean that I inadvertently changed a method signature of a method in a class that extends an Abstract class, or I changed an Abstract method definition.

            I'm especially perplexed why I didn't see the problem in my testing before release, since I tested with JDK 8 + Jenkins 1.651.3 + Debian and I tested with JDK 7 + Jenkins 1.609.3 + Debian.

            After installing the new version of the git plugin, did you restart your Jenkins instance?

            There is a change/addition from wadahiro in AbstractGitSCMSource to add many more git options to the multi-branch plugin and the literate plugin (and anything else that uses the SCMSource interface). That change, and its successors 1, 2, 3, and the merge 4 (add tests, refine the code, etc.) worked well in my tests.

            Are any of your pipeline plugins out of date?

            Any other areas which you think might have relevant differences?

            markewaite Mark Waite added a comment - - edited Thanks for reporting the problem. Can you provide more details on your system configuration? A support bundle would be ideal, since it provides lots of information in a single package that is easy to collect and easy to upload? My reading of that exception in the JDK 7 javadoc shows Thrown when an application tries to call an abstract method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of some class has incompatibly changed since the currently executing method was last compiled . I think that must mean that I inadvertently changed a method signature of a method in a class that extends an Abstract class, or I changed an Abstract method definition. I'm especially perplexed why I didn't see the problem in my testing before release, since I tested with JDK 8 + Jenkins 1.651.3 + Debian and I tested with JDK 7 + Jenkins 1.609.3 + Debian. After installing the new version of the git plugin, did you restart your Jenkins instance? There is a change/addition from wadahiro in AbstractGitSCMSource to add many more git options to the multi-branch plugin and the literate plugin (and anything else that uses the SCMSource interface). That change, and its successors 1 , 2 , 3 , and the merge 4 (add tests, refine the code, etc.) worked well in my tests. Are any of your pipeline plugins out of date? Any other areas which you think might have relevant differences?
            vladdu Vlad Dumitrescu made changes -
            Field Original Value New Value
            Attachment support_2016-07-04_17.46.31.zip [ 33206 ]
            vladdu Vlad Dumitrescu added a comment - - edited

            I always restart after instaling/uninstalling plugins.
            I have all plugins updated to the latest available.

            support_2016-07-04_17.46.31.zip
            This is with 2.5.0, do you get better information if I install 2.5.1, let it fail and then gather the bundle?

            vladdu Vlad Dumitrescu added a comment - - edited I always restart after instaling/uninstalling plugins. I have all plugins updated to the latest available. support_2016-07-04_17.46.31.zip This is with 2.5.0, do you get better information if I install 2.5.1, let it fail and then gather the bundle?
            markewaite Mark Waite added a comment -

            Thanks for the support bundle. The information you've provided is great. No need to show the failure (at least not yet). I need to see if I can duplicate the failure.

            Is the failing job type a "Freestyle multi-branch project", a "Maven multi-branch project", a "Multi-configuration multi-branch project", a "Multibranch Pipeline", or something completely different?

            If you're willing, can you upload the config.xml file (job definition file) from the job which is failing? You may need to obscure substitute sensitive information (like hostnames) before you upload.

            markewaite Mark Waite added a comment - Thanks for the support bundle. The information you've provided is great. No need to show the failure (at least not yet). I need to see if I can duplicate the failure. Is the failing job type a "Freestyle multi-branch project", a "Maven multi-branch project", a "Multi-configuration multi-branch project", a "Multibranch Pipeline", or something completely different? If you're willing, can you upload the config.xml file (job definition file) from the job which is failing? You may need to obscure substitute sensitive information (like hostnames) before you upload.

            It's a multibranch pipeline. A regular pipeline works, but there I get to configure the git repository URL myself. The config.xml is below, it's at default values except for the repository, as I deleted the old job.

            <?xml version='1.0' encoding='UTF-8'?>
            <org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.8">
              <actions/>
              <description></description>
              <properties/>
              <views>
                <hudson.model.AllView>
                  <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../../.."/>
                  <name>All</name>
                  <filterExecutors>false</filterExecutors>
                  <filterQueue>false</filterQueue>
                  <properties class="hudson.model.View$PropertyList"/>
                </hudson.model.AllView>
              </views>
              <viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
              <healthMetrics>
                <com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@5.12"/>
              </healthMetrics>
              <icon class="org.jenkinsci.plugins.orgfolder.github.GitHubRepoIcon" plugin="github-organization-folder@1.3"/>
              <orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@5.12">
                <pruneDeadBranches>true</pruneDeadBranches>
                <daysToKeep>45</daysToKeep>
                <numToKeep>100</numToKeep>
              </orphanedItemStrategy>
              <triggers>
                <com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger plugin="cloudbees-folder@5.12">
                  <spec>H * * * *</spec>
                  <interval>3600000</interval>
                </com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger>
              </triggers>
              <sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@1.10">
                <data>
                  <jenkins.branch.BranchSource>
                    <source class="org.jenkinsci.plugins.github_branch_source.GitHubSCMSource" plugin="github-branch-source@1.7">
                      <id>cfc000cc-b0fd-4329-844e-cf215d846fbe</id>
                      <checkoutCredentialsId>SAME</checkoutCredentialsId>
                      <scanCredentialsId>...</scanCredentialsId>
                      <repoOwner>vladdu</repoOwner>
                      <repository>erlide_eclipse</repository>
                      <includes>*</includes>
                      <excludes></excludes>
                    </source>
                    <strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
                      <properties class="empty-list"/>
                    </strategy>
                  </jenkins.branch.BranchSource>
                </data>
                <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
              </sources>
              <factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
                <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
              </factory>
            </org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
            
            
            vladdu Vlad Dumitrescu added a comment - It's a multibranch pipeline. A regular pipeline works, but there I get to configure the git repository URL myself. The config.xml is below, it's at default values except for the repository, as I deleted the old job. <?xml version='1.0' encoding='UTF-8'?> <org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.8"> <actions/> <description></description> <properties/> <views> <hudson.model.AllView> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../../.."/> <name>All</name> <filterExecutors>false</filterExecutors> <filterQueue>false</filterQueue> <properties class="hudson.model.View$PropertyList"/> </hudson.model.AllView> </views> <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> <healthMetrics> <com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@5.12"/> </healthMetrics> <icon class="org.jenkinsci.plugins.orgfolder.github.GitHubRepoIcon" plugin="github-organization-folder@1.3"/> <orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@5.12"> <pruneDeadBranches>true</pruneDeadBranches> <daysToKeep>45</daysToKeep> <numToKeep>100</numToKeep> </orphanedItemStrategy> <triggers> <com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger plugin="cloudbees-folder@5.12"> <spec>H * * * *</spec> <interval>3600000</interval> </com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger> </triggers> <sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@1.10"> <data> <jenkins.branch.BranchSource> <source class="org.jenkinsci.plugins.github_branch_source.GitHubSCMSource" plugin="github-branch-source@1.7"> <id>cfc000cc-b0fd-4329-844e-cf215d846fbe</id> <checkoutCredentialsId>SAME</checkoutCredentialsId> <scanCredentialsId>...</scanCredentialsId> <repoOwner>vladdu</repoOwner> <repository>erlide_eclipse</repository> <includes>*</includes> <excludes></excludes> </source> <strategy class="jenkins.branch.DefaultBranchPropertyStrategy"> <properties class="empty-list"/> </strategy> </jenkins.branch.BranchSource> </data> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> </sources> <factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory"> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> </factory> </org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
            markewaite Mark Waite added a comment - - edited

            I see from comparing your job definition and my initial test job definition that you're using the github plugin to provide source control, rather than the git plugin. Is that intentional?

            Is there a particular benefit you gain from using the github plugin for source control rather than the git plugin?

            When I switch to use github to provide source control rather than git, I can see the same error. Thanks very much for your patience reporting it. Unfortunately, I don't know how to resolve it. I'll need to spend more time researching the interaction between the git plugin, the github plugin, and the multi-branch pipeline job type.

            Jul 04, 2016 12:45:12 PM hudson.model.Executor finish1
            SEVERE: Executor threw an exception
            java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
                    at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
                    at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
                    at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
                    at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
                    at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
                    at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
                    at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
                    at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
                    at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
                    at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
                    at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
                    at hudson.model.ResourceController.execute(ResourceController.java:98)
                    at hudson.model.Executor.run(Executor.java:410)
            
            markewaite Mark Waite added a comment - - edited I see from comparing your job definition and my initial test job definition that you're using the github plugin to provide source control, rather than the git plugin. Is that intentional? Is there a particular benefit you gain from using the github plugin for source control rather than the git plugin? When I switch to use github to provide source control rather than git, I can see the same error. Thanks very much for your patience reporting it. Unfortunately, I don't know how to resolve it. I'll need to spend more time researching the interaction between the git plugin, the github plugin, and the multi-branch pipeline job type. Jul 04, 2016 12:45:12 PM hudson.model.Executor finish1 SEVERE: Executor threw an exception java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List; at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305) at jenkins.scm.api.SCMSource.build(SCMSource.java:283) at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267) at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82) at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297) at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285) at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256) at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146) at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294) at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157) at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:410)
            markewaite Mark Waite made changes -
            Summary git plugin 2.5.1 breaks multibranch pipeline git plugin 2.5.1 breaks multibranch pipeline if using github source control
            markewaite Mark Waite made changes -
            Description Once I updated to 2.5.1, I couldn't index the branches anymore in my pipeline projects. Going back to 2.5.0 makes it work again.

            The exception in the log is

            {noformat}
            Executor threw an exception
            java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
            at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
            at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
            at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
            at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
            at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
            at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
            at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
            at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
            at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
            at hudson.model.ResourceController.execute(ResourceController.java:98)
            at hudson.model.Executor.run(Executor.java:410)
            {noformat}
            Once I updated to 2.5.1, I couldn't index the branches anymore in my pipeline projects which use github as their source control rather than git. Going back to 2.5.0 makes it work again. It also works if I use the "git" section instead of the "github" section for source control.

            The exception in the log is

            {noformat}
            Executor threw an exception
            java.lang.AbstractMethodError: jenkins.plugins.git.AbstractGitSCMSource.getExtensions()Ljava/util/List;
            at jenkins.plugins.git.AbstractGitSCMSource.build(AbstractGitSCMSource.java:305)
            at jenkins.scm.api.SCMSource.build(SCMSource.java:283)
            at jenkins.branch.MultiBranchProject.newBranch(MultiBranchProject.java:267)
            at jenkins.branch.MultiBranchProject.access$000(MultiBranchProject.java:82)
            at jenkins.branch.MultiBranchProject$1.observe(MultiBranchProject.java:297)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.doRetrieve(GitHubSCMSource.java:285)
            at org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:256)
            at jenkins.scm.api.SCMSource.fetch(SCMSource.java:146)
            at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:294)
            at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:157)
            at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:122)
            at hudson.model.ResourceController.execute(ResourceController.java:98)
            at hudson.model.Executor.run(Executor.java:410)
            {noformat}
            oleg_nenashev Oleg Nenashev added a comment - - edited

            I see the issue.

            GitHubSCMSource implements AbstractGitSCMSource, but does not implement getExtensions(), List<GitSCMExtension> getExtensions(). This method has been implemented in https://github.com/jenkinsci/git-plugin/pull/350 in a backward-incompatible way. It was released as git-2.5.1

            Working on the fix

            oleg_nenashev Oleg Nenashev added a comment - - edited I see the issue. GitHubSCMSource implements AbstractGitSCMSource, but does not implement getExtensions(), List<GitSCMExtension> getExtensions(). This method has been implemented in https://github.com/jenkinsci/git-plugin/pull/350 in a backward-incompatible way. It was released as git-2.5.1 Working on the fix
            oleg_nenashev Oleg Nenashev added a comment - - edited

            markewaite Are you fine if I take it?

            oleg_nenashev Oleg Nenashev added a comment - - edited markewaite Are you fine if I take it?
            oleg_nenashev Oleg Nenashev made changes -
            Priority Major [ 3 ] Blocker [ 1 ]
            markewaite Mark Waite added a comment - - edited

            Yes, absolutely. My apologies that I didn't realize PR350 was backwards incompatible. I missed testing the case with github as source control, and would likely have missed it writing that to the log file.

            I assume that means that AbstractGitSCMSource is the definition of the API as used by any other plugin which provides an implementation of AbstractGitSCMSource. My apologies that I didn't consider that case!

            markewaite Mark Waite added a comment - - edited Yes, absolutely. My apologies that I didn't realize PR350 was backwards incompatible. I missed testing the case with github as source control, and would likely have missed it writing that to the log file. I assume that means that AbstractGitSCMSource is the definition of the API as used by any other plugin which provides an implementation of AbstractGitSCMSource. My apologies that I didn't consider that case!
            oleg_nenashev Oleg Nenashev made changes -
            Assignee Mark Waite [ markewaite ] Oleg Nenashev [ oleg_nenashev ]
            oleg_nenashev Oleg Nenashev made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            markewaite Mark Waite added a comment -

            oleg_nenashev I'm willing to revert the entire change from PR350 and release a new git plugin 2.5.2 rather than break compatibility for downstream consumers of the AbstractGitSCMSource interface.

            markewaite Mark Waite added a comment - oleg_nenashev I'm willing to revert the entire change from PR350 and release a new git plugin 2.5.2 rather than break compatibility for downstream consumers of the AbstractGitSCMSource interface.
            oleg_nenashev Oleg Nenashev added a comment -

            markewaite I'm working on a more graceful PR, but it's up to you

            oleg_nenashev Oleg Nenashev added a comment - markewaite I'm working on a more graceful PR, but it's up to you
            oleg_nenashev Oleg Nenashev added a comment -

            In my PR there won't be compatibility breakage. To be submitted in 20 minutes

            oleg_nenashev Oleg Nenashev added a comment - In my PR there won't be compatibility breakage. To be submitted in 20 minutes

            markewaite Thanks for updating the details about github/git source. I believe it's now rolling.

            vladdu Vlad Dumitrescu added a comment - markewaite Thanks for updating the details about github/git source. I believe it's now rolling.
            oleg_nenashev Oleg Nenashev added a comment - https://github.com/jenkinsci/git-plugin/pull/420
            oleg_nenashev Oleg Nenashev added a comment -

            markewaite So the PR is under review

            oleg_nenashev Oleg Nenashev added a comment - markewaite So the PR is under review
            markewaite Mark Waite added a comment -

            oleg_nenashev yes, I've been running tests on the change for the last few hours using my Docker instance and multiple slaves. I specifically checked this problem is fixed and have been doing additional exploratory testing. I intend to release git plugin 2.5.2 before end of the day today so that it will be visible in the update center before U.S. users return from their independence day holiday tomorrow.

            markewaite Mark Waite added a comment - oleg_nenashev yes, I've been running tests on the change for the last few hours using my Docker instance and multiple slaves. I specifically checked this problem is fixed and have been doing additional exploratory testing. I intend to release git plugin 2.5.2 before end of the day today so that it will be visible in the update center before U.S. users return from their independence day holiday tomorrow.
            markewaite Mark Waite added a comment -

            Fix in git plugin 2.5.2 released 4 Jul 2016.

            markewaite Mark Waite added a comment - Fix in git plugin 2.5.2 released 4 Jul 2016.
            markewaite Mark Waite made changes -
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Resolved [ 5 ]

            Excellent, thank you very much!

            vladdu Vlad Dumitrescu added a comment - Excellent, thank you very much!

            \o/ great job. Congratulations.

            leandro_freitas_softdevelop Leandro Kersting de Freitas added a comment - \o/ great job. Congratulations.
            jglick Jesse Glick made changes -
            Link This issue relates to JENKINS-31924 [ JENKINS-31924 ]
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 173126 ] JNJira + In-Review [ 199399 ]
            markewaite Mark Waite made changes -
            Status Resolved [ 5 ] Closed [ 6 ]

            People

              oleg_nenashev Oleg Nenashev
              vladdu Vlad Dumitrescu
              Votes:
              2 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: