Exception calling "BeginInvoke" with "0" argument(s): "Cannot perform the operation because the runspace pool is not in the 'Opened' state. The current state is 'Closed'." #111

Closed
codykonior opened this Issue Oct 10, 2016 · 24 comments

Projects

None yet

3 participants

@codykonior
Contributor

I'm coming across this issue frequently during development. I have a module I'm working on and often need to Import-Module Blah-Force to bring in the latest changes and test it (like in ISE). This module has a RequiredModules of PoshRSJob and functions which use Start-RSJob and others.

If I run steps manually one by one like so, it works:

Import-Module Blah -Force
...
Start-Command
... Start-RSJob

I realised this is because there is a small delay when you run them like that. If I run them all at once with a delay it works:

Import-Module Blah -Force
Start-Sleep -Seconds 1
Start-Command
... Start-RSJob

But if they execute immediately after each other with no delay I get the above error. Every time!

Import-Module Blah -Force
Start-Command
... Start-RSJob

Any ideas why this is happening?

@proxb
Owner
proxb commented Oct 10, 2016

I'm not quite sure what would be causing that other than the runspacepool cleanup might be disposing of the pool.

PS C:\> $PoshRS_RunspacePoolCleanup

Name                           Value
----                           -----
Runspace                       System.Management.Automation.Runspaces.LocalRunspace
Flag                           True
PowerShell                     System.Management.Automation.PowerShell
Host                           System.Management.Automation.Internal.Host.InternalHost
Timeout                        3000000000
Handle                         System.Management.Automation.PowerShellAsyncResult


PS C:\> $PoshRS_RunspacePools


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 5
MaxJobs        : 5
LastActivity   : 10/10/2016 6:28:23 PM
RunspacePoolID : e23487d9-9a2d-4b49-924b-1eef918d2c5e
CanDispose     : False

Do you have any code that I could look at to reproduce this issue?

@proxb proxb added the question label Oct 13, 2016
@proxb proxb self-assigned this Oct 13, 2016
@codykonior
Contributor
codykonior commented Oct 19, 2016 edited

I can't give you any code to reproduce it but I get it a lot when running interactively. I'm not sure what debugging information I can gather for you when it does happen? I gathered this during a long run of it... but it cleared up almost instantly afterwards... so I'm not sure. I will try to capture it again next time.

$PoshRS_RunspacePoolCleanup

Runspace System.Management.Automation.Runspaces.LocalRunspace
Flag True
PowerShell System.Management.Automation.PowerShell
Host System.Management.Automation.Internal.Host.InternalHost
Timeout 3000000000
Handle System.Management.Automation.PowerShellAsyncResult

$PoshRS_RunspacePools

RunspacePool : System.Management.Automation.Runspaces.RunspacePool
State : Opened
AvailableJobs : 4
MaxJobs : 4
LastActivity : 19/10/2016 10:58:31 AM
RunspacePoolID : a0ce6ed0-d81b-4837-8131-8e7369312daf
CanDispose : False

RunspacePool : System.Management.Automation.Runspaces.RunspacePool
State : Opened
AvailableJobs : 4
MaxJobs : 4
LastActivity : 19/10/2016 11:01:01 AM
RunspacePoolID : e0250143-3f07-4ee1-b848-e517a2e173d7
CanDispose : False

I think it has something to do when I've modified whatever module I'm working on and have done an Import-Module -Force on it. I'm not sure if that then force reloads your module (which is in the RequiredModules collection).

I am using -Batch parameters though, so, I thought each batch has its own runspace, and so that this shouldn't happen.

@codykonior
Contributor
codykonior commented Nov 6, 2016 edited

Still dealing with this a lot every day. Would really love to help finding a cause/solution.

> Get-Runspace

 Id Name            ComputerName    Type          State         Availability   
 -- ----            ------------    ----          -----         ------------   
  1 Runspace1       localhost       Local         Opened        Busy           
  2 Runspace2       localhost       Local         Opened        Busy           
  3 Runspace3       localhost       Local         Opened        Busy           
  5 Runspace5       localhost       Local         Opened        Busy           
  6 Runspace6       localhost       Local         Opened        Busy           
 15 Runspace15      localhost       Local         Opened        Busy           
 16 Runspace16      localhost       Local         Opened        Busy           
 17 Runspace17      localhost       Local         Opened        Available      
 18 Runspace18      localhost       Local         Opened        Busy           
 19 Runspace19      localhost       Local         Opened        Busy           
 20 Runspace20      localhost       Local         Opened        Available      
 21 Runspace21      localhost       Local         Opened        Available      
 24 Runspace24      localhost       Local         Opened        Available      
 27 Runspace27      localhost       Local         Opened        Busy           
 28 Runspace28      localhost       Local         Opened        Busy           



> Get-RSJob

# Nothing

> $poshrs_runspacepools


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 6/11/2016 11:48:51 AM
RunspacePoolID : a9ab86d2-5d6d-48aa-8966-ddb9beeee0df
CanDispose     : False

@proxb
Owner
proxb commented Nov 7, 2016

if you can find anything that might be causing this, please let me know. I haven't been able to reproduce this yet in testing so troubleshooting this has been kind of hard.

@codykonior
Contributor
codykonior commented Nov 8, 2016 edited

I can reproduce it some of the time with this script on a 4 core machine with nothing else going on.

1..100 | %{
    $batch = [Guid]::NewGuid()
    $jobs = 1..10 | Start-RSJob -Batch $batch -Script { "Hi" }
    $jobs | Wait-RsJob | Remove-RsJob

    "Finished loop $_"
}

The first time it failed at loop 12 (all later loops completed fine). On another run it failed at loop 22 (again with later loops completing fine). On three later runs they all completed with no errors. On a new PowerShell session it started failing at ~22 again.

Have you noticed that by default a single runspace is open, and after a single Start-RsJob you now have 4 runspaces open; plus one for each additional batch (the last bit is expected, but they never seem to get re-used, or closed). It could be related.

Because I use many

@proxb
Owner
proxb commented Nov 9, 2016

One you import the module, there should be 2 additional runspaces opened up (1 to support the background job cleanup when it has been completed and another 1 to perform the runspacepool cleanup actions). I have noticed additional runspaces being created randomly and am starting to dive deeper into what those actually are and if they are related to the module.

@proxb
Owner
proxb commented Nov 9, 2016

I think I solved the issue with multiple runspaces being created after using Start-RSJob. For some reason, if Remove-Variable throws an error about the variable doesn't exist then it will magically spawn a new runspace (that eventually goes away). Setting this to SilentlyContinue seems to solve this issue.

@codykonior
Contributor

Were you able to reproduce the overall issue?

@proxb
Owner
proxb commented Nov 10, 2016

Yes, it was sporadic but I did see the issue pop up a few times. I didn't dive much into that as i wanted to knock out the issue with the excessive runspaces being created, but will now take a look at the overall issue and see what I can do for it.

@proxb
Owner
proxb commented Nov 10, 2016

From the error stack:

$error[-4]|Select-Object -Property *


PSMessageDetails      :
Exception             : System.Management.Automation.MethodInvocationException: Exception calling "BeginInvoke" with
                        "0" argument(s): "Cannot perform the operation because the runspace pool is not in the
                        'Opened' state. The current state is 'Closing'." --->
                        System.Management.Automation.Runspaces.InvalidRunspacePoolStateException: Cannot perform the
                        operation because the runspace pool is not in the 'Opened' state. The current state is
                        'Closing'.
                           at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.AssertPoolIsOpen()
                           at
                        System.Management.Automation.PowerShell.CoreInvokeAsync[TInput,TOutput](PSDataCollection`1
                        input, PSDataCollection`1 output, PSInvocationSettings settings, AsyncCallback callback,
                        Object state, PSDataCollection`1 asyncResultOutput)
                           at System.Management.Automation.PowerShell.BeginInvoke[T](PSDataCollection`1 input,
                        PSInvocationSettings settings, AsyncCallback callback, Object state)
                           at CallSite.Target(Closure , CallSite , Object )
                           --- End of inner exception stack trace ---
                           at
                        System.Management.Automation.ExceptionHandlingOps.ConvertToMethodInvocationException(Exception
                        exception, Type typeToThrow, String methodName, Int32 numArgs, MemberInfo memberInfo)
                           at CallSite.Target(Closure , CallSite , Object )
                           at Start-RSJob<End>(Closure , FunctionContext )
TargetObject          :
CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
FullyQualifiedErrorId : InvalidRunspacePoolStateException
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at Start-RSJob<End>,
                        C:\Users\proxb\Documents\WindowsPowerShell\Modules\PoshRSJob\Public\Start-RSJob.ps1: line 504
                        at <ScriptBlock>, <No file>: line 4
                        at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}
$error[-4].Exception|Select-Object -Property *


ErrorRecord                 : Exception calling "BeginInvoke" with "0" argument(s): "Cannot perform the operation
                              because the runspace pool is not in the 'Opened' state. The current state is 'Closing'."
WasThrownFromThrowStatement : False
Message                     : Exception calling "BeginInvoke" with "0" argument(s): "Cannot perform the operation
                              because the runspace pool is not in the 'Opened' state. The current state is 'Closing'."
Data                        : {}
InnerException              : System.Management.Automation.Runspaces.InvalidRunspacePoolStateException: Cannot perform
                              the operation because the runspace pool is not in the 'Opened' state. The current state
                              is 'Closing'.
                                 at
                              System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.AssertPoolIsOpen()
                                 at System.Management.Automation.PowerShell.CoreInvokeAsync[TInput,TOutput](PSDataColle
                              ction`1 input, PSDataCollection`1 output, PSInvocationSettings settings, AsyncCallback
                              callback, Object state, PSDataCollection`1 asyncResultOutput)
                                 at System.Management.Automation.PowerShell.BeginInvoke[T](PSDataCollection`1 input,
                              PSInvocationSettings settings, AsyncCallback callback, Object state)
                                 at CallSite.Target(Closure , CallSite , Object )
TargetSite                  : Void ConvertToMethodInvocationException(System.Exception, System.Type, System.String,
                              Int32, System.Reflection.MemberInfo)
StackTrace                  :    at System.Management.Automation.ExceptionHandlingOps.ConvertToMethodInvocationExceptio
                              n(Exception exception, Type typeToThrow, String methodName, Int32 numArgs, MemberInfo
                              memberInfo)
                                 at CallSite.Target(Closure , CallSite , Object )
                                 at Start-RSJob<End>(Closure , FunctionContext )
HelpLink                    :
Source                      : System.Management.Automation
HResult                     : -2146233087
$error[-4].Exception.innerexception|Select-Object -Property *


CurrentState   : Closing
ExpectedState  : Opened
Message        : Cannot perform the operation because the runspace pool is not in the 'Opened' state. The current
                 state is 'Closing'.
Data           : {}
InnerException :
TargetSite     : Void AssertPoolIsOpen()
StackTrace     :    at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.AssertPoolIsOpen()
                    at System.Management.Automation.PowerShell.CoreInvokeAsync[TInput,TOutput](PSDataCollection`1
                 input, PSDataCollection`1 output, PSInvocationSettings settings, AsyncCallback callback, Object
                 state, PSDataCollection`1 asyncResultOutput)
                    at System.Management.Automation.PowerShell.BeginInvoke[T](PSDataCollection`1 input,
                 PSInvocationSettings settings, AsyncCallback callback, Object state)
                    at CallSite.Target(Closure , CallSite , Object )
HelpLink       :
Source         : System.Management.Automation
HResult        : -2146233087
@codykonior
Contributor

I've been banging away on the new version all day with no failures so I think you've solved it, thanks.

@codykonior codykonior closed this Nov 11, 2016
@codykonior
Contributor
codykonior commented Nov 22, 2016 edited

The issue still exists :-( I am getting it all the time. I haven't been able to make the simple test script I provided before fail anymore though, so it seems the problem can be triggered by something a bit more complicated than that.

@codykonior codykonior reopened this Nov 22, 2016
@codykonior
Contributor
codykonior commented Nov 22, 2016 edited

Here's a test I've done (though you won't be able to reproduce it) dumping out details at each step. I'm calling a function, which generates a batch number (with a throttle of 4). In this case it's then running a single job on that batch. The function completes, and I repeat exactly as before with a new batch number and a single job. On the 5th run it fails.

In a fresh session:

1..10 | %{
    "Run $_"
    $PoshRS_RunspacePools
    "Starting"
    Test-DbSqlServerConnection ...
}

And the result.

Run 1
Starting

--- My result                   

Run 2

RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:49 AM
RunspacePoolID : 123ee133-6237-4f03-b34c-193fddbbce54
CanDispose     : False

Starting

--- My result                                      

Run 3

RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:49 AM
RunspacePoolID : 123ee133-6237-4f03-b34c-193fddbbce54
CanDispose     : False


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:53 AM
RunspacePoolID : 69351fd7-6d13-459e-9e6d-2227abadb265
CanDispose     : False

Starting

--- My result                                      

Run 4

RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:49 AM
RunspacePoolID : 123ee133-6237-4f03-b34c-193fddbbce54
CanDispose     : False


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:53 AM
RunspacePoolID : 69351fd7-6d13-459e-9e6d-2227abadb265
CanDispose     : False


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:57 AM
RunspacePoolID : 82fca9df-bddf-4e44-b32d-11c0e5b98a03
CanDispose     : False

Starting

--- My result                   
                   
Run 5

RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:49 AM
RunspacePoolID : 123ee133-6237-4f03-b34c-193fddbbce54
CanDispose     : False


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:53 AM
RunspacePoolID : 69351fd7-6d13-459e-9e6d-2227abadb265
CanDispose     : False


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:09:57 AM
RunspacePoolID : 82fca9df-bddf-4e44-b32d-11c0e5b98a03
CanDispose     : False


RunspacePool   : System.Management.Automation.Runspaces.RunspacePool
State          : Opened
AvailableJobs  : 4
MaxJobs        : 4
LastActivity   : 22/11/2016 10:10:01 AM
RunspacePoolID : 0e373492-5087-49b7-beb2-bd9643bd4ef4
CanDispose     : False

Starting
Exception calling "BeginInvoke" with "0" argument(s): "Cannot perform the operation because the runspace pool is not in the 'Opened' state. The current state is 'Closing'."
At C:\XXX\PowerShell\Modules\PoshRSJob\Public\Start-RSJob.ps1:505 char:17
+                 $Handle = $PowerShell.BeginInvoke()
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidRunspacePoolStateException

And the detail from the error

CurrentState   : Closing
ExpectedState  : Opened
Message        : Cannot perform the operation because the runspace pool is not in the 'Opened' state. The current state is 'Closing'.
Data           : {}
InnerException : 
TargetSite     : Void AssertPoolIsOpen()
StackTrace     :    at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.AssertPoolIsOpen()
                    at System.Management.Automation.PowerShell.CoreInvokeAsync[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings, AsyncCallback callback, Object state, 
                 PSDataCollection`1 asyncResultOutput)
                    at System.Management.Automation.PowerShell.BeginInvoke[T](PSDataCollection`1 input, PSInvocationSettings settings, AsyncCallback callback, Object state)
                    at CallSite.Target(Closure , CallSite , Object )
HelpLink       : 
Source         : System.Management.Automation
HResult        : -2146233087




*****


ErrorRecord                 : Exception calling "BeginInvoke" with "0" argument(s): "Cannot perform the operation because the runspace pool is not in the 'Opened' state. The current state is 'Closing'."
StackTrace                  :    at System.Management.Automation.ExceptionHandlingOps.ConvertToMethodInvocationException(Exception exception, Type typeToThrow, String methodName, Int32 numArgs, MemberInfo memberInfo)
                                 at CallSite.Target(Closure , CallSite , Object )
                                 at System.Management.Automation.Interpreter.DynamicInstruction`2.Run(InterpretedFrame frame)
                                 at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
WasThrownFromThrowStatement : False
Message                     : Exception calling "BeginInvoke" with "0" argument(s): "Cannot perform the operation because the runspace pool is not in the 'Opened' state. The current state is 'Closing'."
Data                        : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException              : System.Management.Automation.Runspaces.InvalidRunspacePoolStateException: Cannot perform the operation because the runspace pool is not in the 'Opened' state. The current state is 
                              'Closing'.
                                 at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.AssertPoolIsOpen()
                                 at System.Management.Automation.PowerShell.CoreInvokeAsync[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings, AsyncCallback callback, 
                              Object state, PSDataCollection`1 asyncResultOutput)
                                 at System.Management.Automation.PowerShell.BeginInvoke[T](PSDataCollection`1 input, PSInvocationSettings settings, AsyncCallback callback, Object state)
                                 at CallSite.Target(Closure , CallSite , Object )
TargetSite                  : Void ConvertToMethodInvocationException(System.Exception, System.Type, System.String, Int32, System.Reflection.MemberInfo)
HelpLink                    : 
Source                      : System.Management.Automation
HResult                     : -2146233087




*****


MyCommand             : 
BoundParameters       : {}
UnboundArguments      : {}
ScriptLineNumber      : 505
OffsetInLine          : 17
HistoryId             : -1
ScriptName            : C:\XXX\PowerShell\Modules\PoshRSJob\Public\Start-RSJob.ps1
Line                  :                 $Handle = $PowerShell.BeginInvoke()
                        
PositionMessage       : At C:\XXX\PowerShell\Modules\PoshRSJob\Public\Start-RSJob.ps1:505 char:17
                        +                 $Handle = $PowerShell.BeginInvoke()
                        +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PSScriptRoot          : C:\XXX\PowerShell\Modules\PoshRSJob\Public
PSCommandPath         : C:\XXX\PowerShell\Modules\PoshRSJob\Public\Start-RSJob.ps1
InvocationName        : 
PipelineLength        : 0
PipelinePosition      : 0
ExpectingInput        : False
CommandOrigin         : Internal
DisplayScriptPosition : 




*****


PSMessageDetails      : 
Exception             : System.Management.Automation.MethodInvocationException: Exception calling "BeginInvoke" with "0" argument(s): "Cannot perform the operation because the runspace pool is not in the 'Opened' 
                        state. The current state is 'Closing'." ---System.Management.Automation.Runspaces.InvalidRunspacePoolStateException: Cannot perform the operation because the runspace pool is not in the 
                        'Opened' state. The current state is 'Closing'.
                           at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.AssertPoolIsOpen()
                           at System.Management.Automation.PowerShell.CoreInvokeAsync[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings, AsyncCallback callback, Object 
                        state, PSDataCollection`1 asyncResultOutput)
                           at System.Management.Automation.PowerShell.BeginInvoke[T](PSDataCollection`1 input, PSInvocationSettings settings, AsyncCallback callback, Object state)
                           at CallSite.Target(Closure , CallSite , Object )
                           --- End of inner exception stack trace ---
                           at System.Management.Automation.ExceptionHandlingOps.ConvertToMethodInvocationException(Exception exception, Type typeToThrow, String methodName, Int32 numArgs, MemberInfo memberInfo)
                           at CallSite.Target(Closure , CallSite , Object )
                           at System.Management.Automation.Interpreter.DynamicInstruction`2.Run(InterpretedFrame frame)
                           at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
TargetObject          : 
CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
FullyQualifiedErrorId : InvalidRunspacePoolStateException
ErrorDetails          : 
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at Start-RSJob<End>, C:\XXX\PowerShell\Modules\PoshRSJob\Public\Start-RSJob.ps1: line 505
                        at Start-DbParallel<Process>, C:\XXX\PowerShell\Modules\DbOps\Test\Start-DbParallel.ps1: line 79
                        at Test-DbSqlServerConnection<Process>, C:\XXX\PowerShell\Modules\DbOps\Test\Critical\Test-DbSqlServerConnection.ps1: line 36
                        at <ScriptBlock>, <No file>: line 9
                        at <ScriptBlock>, <No file>: line 5
PipelineIterationInfo : {}
@proxb
Owner
proxb commented Nov 22, 2016

I found one line that stands out to me where an initial runspacepool is being created. Unlike where I use an existing runspacepool, the LastActivity property is not updated to show a date of 5 minutes ahead and instead shows the default datestamp of 1/1/0001 12:00:00 AM which, to me, would pose an issue if the runspacepool cleanup just happens to hit the runspacepool on creation but before it has a chance to update the property until after a job is started. Being that it is hard to reproduce this, I will probably make the update and push out a commit and see if that has any effect.

@codykonior
Contributor

Sounds good to me, I will be able to verify it pretty quickly if it works or not :)

@proxb
Owner
proxb commented Nov 22, 2016

Ok, the latest files are out there. I only updated Start-RSJob and haven't added this as a release yet, so you will have to download the Zip file from the main page.

@codykonior
Contributor

Looks really good to me so far. No speed regressions, and the error isn't occurring.

@codykonior codykonior closed this Nov 22, 2016
@loku02
loku02 commented Dec 14, 2016

Is the version on PowerShell gallery going to be updated soon with this fix?

@proxb
Owner
proxb commented Dec 14, 2016

Yes. I was hoping to include an additional update as well, but implementing it has taken longer than expected. I will most likely update the gallery version by the end of the week, if not earlier.

@loku02
loku02 commented Jan 4, 2017

Happy New Year! Any signs of the new version in PowerShell Gallery?

@proxb
Owner
proxb commented Jan 4, 2017

@loku02 I'm hoping to have it by this weekend. I've been sick and also trying to fit another big bug/feature issue into that release as well which has pushed that date back from when I initially wanted to do it.

@loku02
loku02 commented Jan 9, 2017

I hope you feel better now! Looking forward for the new version.

@proxb proxb added a commit that referenced this issue Jan 14, 2017
@proxb Updates to module
#119 #95 #111 resolved
d63d68c
@proxb
Owner
proxb commented Jan 15, 2017

@loku02 Update is now live

@loku02
loku02 commented Jan 16, 2017

@proxb Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment